Automated Client Onboarding
One command, an interview on WhatsApp, and a client account exists.
Architecture, agent design, implementation
112s
14
2
Before
- A web form most clients never filled in
- An external workflow on someone else's infrastructure
- Answers copied between spreadsheets by hand
- ~20 setup steps on a checklist
- No way to tell which steps had already run
After
- A conversation on WhatsApp, where clients already are
- Native code in our own deployed container
- One database as the source of truth
- 14 steps, all recorded
- A ledger — so a retry re-runs only what failed
How it runs
- 01human
Slack command
one line, by a named person
- 02repeats
Interview on WhatsApp
until a validator says nothing is missing
- 03human
Review card
approve, or cancel
- 04
Provisioning
14 steps · 112 seconds
- 05human
Handoffs
4 asks, to the people who own them
The interview, as the client sees it
One run, fourteen steps
- 01CRM account
- 02client record
- 03knowledge base
- 04shared drive
- 05chat channels
- 06wire channel IDs
- 07API token
- 08CRM fields
- 09calendars
- 10dialer list
- 11caller access
- 12workspace
- 13chat groups
- 14handoffs
Keeping strangers out
- 01
Any inbound message
patients, vendors, staff, clients
- 02
Resolve the sender
WhatsApp now hides the phone number
- 03human
Enrolled by a person?
no session → recorded and ignored
- 04
Interview
only numbers someone put on the list
Where it got hard
- A vendor API gated without saying so
- User endpoints 403, behind a validation error about a different field. Those paths go through browser automation.
- A plural field that isn't
- Opening hours are accepted one day at a time; the same day sent twice is silently deduped, halving a doctor's availability.
- ₹1.5 lakh is not ₹15
- Stripping non-digits would have written a ₹150,000 budget as ₹15. Lakh, crore and Indian grouping are parsed explicitly.
- Photos arrive unasked
- Filing every image as the logo made one client's payment QR their brand mark. Routing now uses what was last asked for.
- Schedules arrive as prose
- "Mon to Fri 10 to 2" is re-derived in Python. Anything that won't parse is flagged, never guessed.
- Timeouts and edge rules
- Calendars needed 120s, an older API version, and a non-default user-agent to get past the vendor's edge.
Where it honestly stands
Proven, and not
- 112 seconds
- Account, client record, knowledge base, drive, three channels, token and 18 CRM fields — measured on the first live run.
- 12 manual steps removed
- Of the old checklist. Four handoffs and the final smoke test are still deliberately a person's job.
- Sample size is one
- Every timing and failure mode above comes from a single real client.
- One path unproven
- No client has yet dictated a schedule over WhatsApp and had a calendar come out. The chain exists; it hasn't been exercised.
The interesting part isn't that an agent can hold a conversation. It's that the conversation decides almost nothing — a validator says when it's done, a person says whether it runs, and a ledger says what a retry may touch.