How we built an AI outreach engine for WuKong Chinese.
WuKong Chinese (悟空中文) is a leading global online Chinese-education brand for families. Golden Elite built the system that finds their prospects in the wild, opens a conversation in the prospect's own language, sells with an AI agent, and tracks every step to conversion — across TikTok, Instagram, and WhatsApp. This is how it works, in detail.
The challenge
Reach the right families, at scale, without looking like a robot.
WuKong's buyers are parents and learners of Chinese, scattered across dozens of countries and languages. They aren't sitting in a neat database — they're leaving comments under Chinese-learning videos on TikTok, Instagram, YouTube and Reddit. The opportunity is enormous, but three things make it hard:
- Intent is buried in noise. For every genuine parent, there are creators, bots, and casual scrollers. You have to tell them apart before you spend a message.
- Platforms fight automation. Unofficial APIs and emulators get detected and banned quickly, and DMs carrying links are suppressed outright.
- Every prospect speaks a different language — and expects a human, helpful reply, not a template blast.
The brief was to turn all of that into a dependable, measurable pipeline — one system, running every day, that a team could trust and improve.
The system
An eight-stage pipeline, from a public comment to a booked trial.
Every prospect flows through the same path. Each stage is independent and logged, so we can measure and optimize any step in isolation.
Source comment mining
We mine the comment sections of Chinese-learning content across TikTok, Instagram, YouTube and Reddit — a public comment is the strongest intent signal there is. Prospects are pulled at scale using a mix of managed data actors and a warmed, logged-in browser session that calls each platform's own in-page endpoints, so we collect clean data without fragile scraping.
Score LLM classification
Every prospect is read by a large language model and labelled with a role (parent vs. self-learner) and a purchase-intent score from 1 to 5. The comment text does the heavy lifting — it tells us who is genuinely in-market. Everything lands in a structured leads database.
Select dedup by person
We select only high-intent, right-persona leads and split them into per-channel send lists — deduplicated so one real person is contacted once, even if they appear on more than one platform. A stable per-account identity means a username change never creates a duplicate.
Generate reasoning LLM
For each prospect, a reasoning LLM writes a single, self-contained opening message in the prospect's own language — we auto-detect and mirror English, Chinese, Vietnamese, Indonesian, Spanish and more. The copy is governed by hard rules: disclose honestly where we found them, never invent a child's age or a price, and never include a link, handle, or contact detail (platforms suppress and ban link-carrying DMs). The call to action is simply "reply here." A post-processor strips any stray URL as a safety net.
Send real iPhone via WebDriverAgent
This is where most outreach tools get their accounts banned — and where ours doesn't. Instead of unofficial APIs or emulators, we send every DM by physically driving a real iPhone through WebDriverAgent. The automation warms up by browsing, searches the exact handle (and skips anything that isn't an exact match, so we never message the wrong person), follows first, then sends. It behaves like a human because it is operating a human's device. Safety rails: a hard cap of about 20 DMs per account per day, randomized 90–240-second gaps, automatic skipping of private accounts, and a screenshot of every step for audit.
Converse stateful AI sales agent
When a prospect replies, a stateful AI sales agent takes over. It answers in short, natural messages and moves through a defined funnel — greeting, discovery, recommendation, value, objection-handling, and a booking CTA — filling in a structured lead profile as it goes (child's age, level, interests, contact). Deterministic guardrails keep it safe: a language lock (it regenerates if it drifts), an honesty guard (on our owned channels it never denies being an assistant if asked), and a claims guard (it won't state a promotion that isn't valid). The instant a lead turns hot — a booking or a shared contact — it stops and hands the conversation to a human.
Sync single source of truth
Every action and message is synced to a central database — an append-only event log plus one conversation record per person — so nothing is lost and every number is reconstructable from raw events.
Track live funnel dashboard
A live dashboard reads that database and shows the full funnel — per channel and per sending account, with account-health and ban-risk alerting. Qualified leads flow onward to booking and the client's outbound team.
Engineering decisions
Four choices that made it work.
A real phone beats a clever API.
The tempting path is an unofficial API — until the account gets banned. We chose the harder, more durable route: automate a genuine iOS device, driven by gestures rather than queries that stall inside social apps. It behaves like a person tapping a screen, which is what makes it survive platform anti-fraud. It is slower per message — and that constraint is a feature, because human-paced sending is what keeps accounts alive.
Honesty is the highest-converting policy.
Cold outreach usually leans on tricks. We banned them in code. The first message openly says where we found the prospect, never fabricates details, and carries no links — enforced by both the prompt and a filter. The honest, link-free, “reply here” message is also the one platforms don’t punish and people actually answer.
The AI knows when to stop.
The sales agent is designed to hand off, not to close at all costs. Hard guardrails cap the conversation, lock its language, forbid invalid promises, and flag any hot lead for a human immediately. An AI that qualifies and warms — then steps aside — outperforms one that tries to do everything.
A funnel that can’t lie.
Reporting is only useful if it’s trustworthy. The funnel is six strictly-ordered stages — reached → delivered → read → replied → engaged → converted — where each stage mathematically implies the one before it. It can never invert or overcount, so the dashboard reflects reality, not wishful math.
The results
Channel matters more than volume.
Across a tracked window, the deduplicated funnel looked like this — and it surfaced the single most valuable insight of the engagement.
WhatsApp replied at 35.7% and converted 25.5% of replies.
Though smaller in reach than the social channels, WhatsApp out-replied them by more than 10× and drove 13 of the 14 conversions in the window. The lesson wasn't "send more" — it was "send where the conversation is welcome." That finding now shapes how we prioritize channels for every client, WuKong included.
Figures are from a single tracked window during the build-out and reflect deduplicated, real (non-test) outreach. Social channels under-report "read" by design — cold DMs to non-followers rarely return read receipts — which is one more reason we weight replies and conversions over vanity metrics.
The live dashboard — a strictly-ordered funnel, per-channel comparison, and 30-day trend, read straight from the event log.
Architecture
How the system fits together.
Five layers, one direction of travel — from a public signal to a qualified conversation on a human's calendar.
The stack
What it's built on.
A pragmatic, production stack — chosen for durability under platform pressure, not novelty.
Device automation
WebDriverAgent driving a real iPhone, via facebook-wda and pymobiledevice3 — the most human-like footprint, hardest to detect.
AI & language
A reasoning LLM for message generation and the conversation agent; a lighter model for lead scoring. Multilingual by design.
Data model
MySQL with an append-only event log and one conversation record per person — every metric reconstructable from raw events.
Backend
Python 3.12, FastAPI and SQLAlchemy serving a read-only metrics API over the funnel.
Dashboard
Next.js + React + TypeScript + Tailwind — a hand-built funnel and trend view, no black-box chart library.
Messaging & ops
WhatsApp Cloud API for conversational messaging; Docker and scheduled sweeps (15–30 min) keeping the pipeline live.
Want an engine like this for your business?
We build multi-channel AI outreach systems end to end — sourcing, messaging, conversation, and tracking. Tell us your market and we'll scope it.