Lark Scheduler to CRM Updates
A prospect books a call, the call happens, and the pipeline quietly falls behind the calendar unless someone types it all in. Two scheduled agents close that gap. This page documents the workflow the way it actually runs: every branch, every failure path, and the state machine underneath, not just the happy path.
Two agents, bracketing the call
This rail is the orientation, not the workflow. Real life branches, fails, and loops; the diagrams below are the truth, drawn branch by branch.
Booking to lead, every branch
Seven boxes in the rail; four decisions, three write paths, and two quiet endings in reality. The interesting work is in the branches: recognising who is already known, refusing to demote anyone, and ending in silence when there is nothing to say.
Call to CRM, every branch
The evening agent runs four gates before it writes anything: external, unseen, transcribed, matched. Only then does the transcript become CRM records, and only a priced opportunity becomes a deal. The follow-up is drafted, never sent; the day ends in one message to the owner.
What the agents may do to a lead
Underneath both agents sits one entity with rules: the lead. The agents may create a lead at meeting booked, step it to connected after a held call, and open it into a deal. Everything else, outreach, nurture, disqualification, is a human move. The forbidden move matters most: nothing ever goes backwards.
Every exception has an owner
An automation is defined by what happens off the happy path. Each row here is a real condition the agents hit, what they do about it, and where a human hears about it. Silence is only ever by design.
| Condition | What happens | Where you hear about it |
|---|---|---|
| Booking has no guest email | Skipped, nothing created | Morning DM, with the event named |
| Guest uses a free-mail address | Person and lead created, no company invented | Morning DM |
| Guest is already an active lead or client | Record enriched, meeting logged, status untouched | Morning DM, listed as skipped |
| Lark auth or scope failure | Run aborts before any write | Task run log; the missing DM is the tell |
| Call was not recorded | No transcript exists; CRM entry falls to the human | Evening DM names the gap |
| Transcript still processing at 6pm | Flagged, retried on the next run | Evening DM |
| Speaker matches nobody confidently | Call skipped entirely, never guessed | Evening DM, flagged for manual triage |
| Transcript garbles names (ASR) | Names normalized against the CRM before writing | Noted on the meeting record |
| The DM itself fails to send | Summary printed to the run log; writes are already safe | Task run log |
| Same event or recording seen again | No-op by key, never a duplicate | Nowhere, by design |
Data, timing, and how we know it works
Reads and writes
- Reads: 14 days of calendar events; the day’s recordings and transcripts; existing people and leads
- Writes: people, companies, leads, inquiries, meetings with transcripts, interactions, deals, lifecycle transitions, one mail draft per call
- Idempotency keys: the person’s email, the calendar event id, the recording token
- Re-running any day is a no-op: every write checks its key first
Timing model
- 6am: before the first call of the day, so every caller is already a lead
- 6pm: after the day’s calls, before the evening review
- The 14-day horizon re-verifies future bookings daily, so reschedules and cancellations surface
- Transcripts lag calls by minutes; anything unfinished at 6pm is caught next run
- Runs live on a workstation schedule: a missed run executes at next wake, keys make that safe
How we know it works
- Days with no external activity are silent, so every message means something
- Every DM lists what was skipped and why, so gaps are visible daily
- A day with calls but no evening DM is itself the alarm
- Weekly eyeball: leads without sources, deals without dated next steps. Zero of each is the target
The seven elements
Every workflow we document has the same anatomy: seven elements, each assigned to a human, a machine, or both. This is the Centaur Map from our workflow design method.
Time, twice a day. 6am catches the bookings that arrived overnight; 6pm catches the calls that happened since.
Calendar events with external guests, and the day’s meeting transcripts from Lark Minutes. Both already exist; nobody types anything.
The agents decide what is external, who matches whom, and how a lead advances. Anything uncertain is skipped and flagged for the human, never guessed.
Internal meetings and 1-1s are filtered out. Only genuine external conversations reach the CRM.
CRM rows: person, company, lead, meeting with full transcript, interactions, lifecycle transitions. Plus one drafted follow-up email per call.
A morning Lark message listing new leads, and an evening one per day with calls: CRM links, the waiting draft, and two coaching notes.
The pipeline is inspectable at any hour: every lead has a source, every deal has a next step with a date, every call has a transcript behind it.
This workflow replaced our earlier Sales Call Intelligence pipeline: same philosophy, now running end to end on scheduled agents, and documented at the level a developer could rebuild it from. It feeds the same pipeline as Lead Capture to CRM.