Growth-stageAI & Machine Learning

Turning every sales call into proposed CRM updates, with the rep approving in chat, not in the CRM

The pipeline works end to end and was demoed live

SalesforceFireflies.ain8nSlackClaudeClay
Play leadSamuelSenior GTM Engineer · LeanScale

The problem

A small full-cycle sales team was carrying the whole post-call burden by hand: re-typing what was said into CRM fields, writing the follow-up email, and remembering what the previous call on the same opportunity had established. The call-recording tool could generate notes and attach them to records, but it could not evaluate the company's own qualification criteria and could not write values into specific fields.

The play

  1. 1
    Put an orchestration layer between the recorder and the CRM

    The call-recording tool fires a webhook when a transcript completes. A workflow-automation platform is the infrastructural layer: it receives that event, pulls the transcript back, runs the analysis, proposes the field updates and the email draft, and handles all interaction through a custom chat app.

  2. 2
    Constrain the field surface deliberately

    The agent writes to an explicit, enumerated list of roughly twenty opportunity fields, the qualification criteria the business actually runs on, rather than being handed the object.

  3. 3
    Write the prompt as a set of precedence rules, not a description

    The extraction agent runs on stated rules: blank fields are prioritised; populated fields are only changed if the transcript adds genuinely new or contradictory information; output must conform to a fixed format. Structured output parsers sit on each agent with an explicit schema declaring which CRM fields are expected and their types.

  4. 4
    Make chat the interface, and make it revisableMake

    The proposed updates post into chat showing the current value beside the proposed one. The rep can approve in a sentence, or push back in plain language and get a revised proposal, looping as many times as needed inside a bounded conversation context. The bot only responds when mentioned rather than watching the whole channel, so it does not become noise.

  5. 5
    Solve the missing-history problem with a snapshot object

    The CRM caps how many fields can have native history tracking, which is fewer than the qualification model needs. A custom object stores a snapshot record per pipeline run, carrying the prior values and a long-text field for the transcript itself.

  6. 6
    Draft the follow-up email, and never send it

    A parallel branch generates the follow-up email in the tone the rep used on the call, writes it to a document, and sends the rep a direct message with a link to the draft and a link back to the recording. It does not send, does not post, and does not touch the CRM.

  7. 7
    Choose the cheapest model that clears the bar, and configure a fallback

    The whole pipeline runs on the smallest model in the family, roughly a fifth the cost per interaction of the mid-tier model, because the task is structured extraction against an explicit schema, not open-ended reasoning. A fallback model is configured in the workflow after a provider incident took the primary one down mid-build.

What it moved

The pipeline works end to end and was demoed live

Transcript ingestion, structured extraction, chat-based review with a revision loop, and programmatic write-back to the opportunity plus creation of the snapshot record all ran in a demo against pinned data.

From a LeanScale case studyRead the full case study →

More from Samuel