AI ProgramsRetreat
AboutCareersBook a Conversation
Workflows/Revenue

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.

Source Lark Calendar + MinutesCadence Daily, 6am and 6pmHuman touchpoints The call, the send

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.

01Scheduling link
Booking Lands
System
026am daily
Lead Created
Claude
03Recorded in Lark
The Call Happens
Owner
04Automatic
Transcript Lands
System
056pm daily
CRM Caught Up
Claude
06Never auto-sent
Follow-up Drafted
Claude
07One Lark message
Report + Coaching
System

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.

nocan't tellyesnoyesyesnoyesno6:00 the scheduler firesdaily, while the machine is awakelist the next 14 days of bookingsexternal guest?skip: internal eventunclear: flag, create nothingguest email already in CRM?create person, company,lead, inquiryfree-mail: person onlyactive lead or client already?enrich only: log the meetingnever demoteadd lead row: meeting bookedno SLA on a booked meetinglogged this event before?no-opwrite interaction + transitionLark DM: created, skipped, flaggedno external bookings: silence
The morning agent. Green boxes write to the CRM; the red path ends by telling a human instead of guessing.
schedule firesdecisionCRM writeflag a humanquiet endhuman touchpoint

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.

noyesyesnonoyesnewno matchyesyesno18:00 the scheduler firesafter the day's callslist today's recordings,owner + participantexternal sales call?skip: 1-1s, internalseen this recording before?no-optranscript ready?still processing: flag,catch next runspeaker matchesa CRM person?create person +company firstskip + flag in the DM,never guessmeeting + full transcriptsummary from the raw talkadvance lead + transitiontruthful stage onlypriced opportunity discussed?open deal: sized,staged, dateddraft follow-up emaildraft only, never sendsone DM: outcomes, CRM links,coaching notesDM fails: print and finish
The evening agent. The amber pill defers to the next run; both red paths surface in the DM rather than guessing.
decisionCRM writeretry next runflag a humanhuman touchpoint

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.

outreachreplybooks a callcall held, no dealdeal createddealhuman onlyclosesnewattemptingconnectedmeeting booked6am agentcreates herenurtureunqualifiedopen dealwon / lost liveon the deal
Green arrows are agent moves; dashed arrows are human-only. Cold inbound enters at new (with a 4-hour SLA) via the site's lead capture workflow; nurture and unqualified are reachable from any active state, always by a human.
agent may movehuman only (dashed)

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.

ConditionWhat happensWhere you hear about it
Booking has no guest emailSkipped, nothing createdMorning DM, with the event named
Guest uses a free-mail addressPerson and lead created, no company inventedMorning DM
Guest is already an active lead or clientRecord enriched, meeting logged, status untouchedMorning DM, listed as skipped
Lark auth or scope failureRun aborts before any writeTask run log; the missing DM is the tell
Call was not recordedNo transcript exists; CRM entry falls to the humanEvening DM names the gap
Transcript still processing at 6pmFlagged, retried on the next runEvening DM
Speaker matches nobody confidentlyCall skipped entirely, never guessedEvening DM, flagged for manual triage
Transcript garbles names (ASR)Names normalized against the CRM before writingNoted on the meeting record
The DM itself fails to sendSummary printed to the run log; writes are already safeTask run log
Same event or recording seen againNo-op by key, never a duplicateNowhere, 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.

01 TriggerMachine

Time, twice a day. 6am catches the bookings that arrived overnight; 6pm catches the calls that happened since.

02 InputsMachine

Calendar events with external guests, and the day’s meeting transcripts from Lark Minutes. Both already exist; nobody types anything.

03 DecisionBoth

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.

04 RoutingMachine

Internal meetings and 1-1s are filtered out. Only genuine external conversations reach the CRM.

05 OutputMachine

CRM rows: person, company, lead, meeting with full transcript, interactions, lifecycle transitions. Plus one drafted follow-up email per call.

06 DeliveryMachine

A morning Lark message listing new leads, and an evening one per day with calls: CRM links, the waiting draft, and two coaching notes.

07 MeasurementHuman

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.