The situation
The client sells complex engineering work. Every deal starts as a conversation, and every conversation contained the qualification — who the champion was, what the project actually was, whether budget had been discussed, what would happen next.
None of it reached the CRM. It reached a transcript nobody read, and a rep’s memory, which is not a database. The pipeline was built from whatever survived the drive home.
The brief was not “summarise our calls.” Summaries are a demo. The brief was: turn the conversation into structured, queryable properties, and let the system decide whether a deal exists.
What RevOps XL built
1. Capture, then a deliberate fork
A meeting recorder joins the call and transcribes it. From there the system splits, because two different problems need two different tools.
The straightforward extractions — buying role, intent rating, budget discussed, next steps agreed — run natively inside the CRM: keyword listening enrols the contact into a segment, and segment enrolment fires a workflow that writes the property. No external dependency, nothing to maintain, and it survives anyone leaving.
The extractions a keyword can’t do — what this person actually needs, what’s driving their urgency, which services the work would require — go out to an orchestration layer, through a model, and back in via the API. That path exists precisely because the native tool has a ceiling, and pretending otherwise is how projects fail.
2. Roughly fifty workflows, and one that matters
Nine workflows for buying role. Sixteen for project type. Thirteen for project stage. Three for intent. Two each for budget, next steps and whether AI is in scope.
Then one workflow that reads all of them and creates a deal — but only when high or medium intent coincides with agreed next steps and an identified champion. Three conditions. All three, or nothing happens.
That last workflow is the entire product. The other forty-eight are plumbing that feed it.
3. The guardrails are the engineering
Anyone can pipe a transcript into a model. The work is stopping it from ruining your CRM by Friday.
Meeting-type isolation. A working session is not a sales call. Properties only populate on sales and discovery calls, or your delivery meetings quietly rewrite the pipeline.
Deal-flood prevention. A deal is created only if no open deal already exists on that account. Without it, every good call spawns a duplicate and the forecast doubles overnight.
A ninety-day recency rule. Properties update only if empty or untouched for ninety days — so a throwaway line on call six doesn’t overwrite what was carefully established on call one.
Internal-meeting bypass. Staff domains are excluded on both paths. Otherwise the team qualifies itself, enthusiastically, all week.
4. Identity resolution, before anything is written
Every write is preceded by a lookup: find the record by email, take its internal ID, then upsert against the ID. Never match on a string.
It sounds pedantic. It is the difference between enriching a contact and creating their evil twin.
Where it landed
The system is in production. Deals now appear because three qualification conditions were met in a real conversation, not because someone remembered to log one.
The honest measure isn’t the number of deals created. It’s that the ones created are defensible: every property on them can be traced to a sentence somebody actually said.
What made it work
The unglamorous half. A model turned a conversation into fields. Deterministic rules decided whether those fields meant anything. A human still runs the call.
The AI does the one thing a rule cannot — read language and decide what it meant. Everything either side of that is boring logic, which is why it still works on a Tuesday.