Sales Ops

Turning sales call transcripts into structured CRM data automatically

By Varun Bagrodia·Mar 2026·6 min read
Sales Ops
$ mkdir seller comms extraction

Valuable insights from sales calls get trapped in recordings, inaccessible and unsearchable. We built a workflow that ingests Fireflies and Sybill transcripts, extracts 21 structured deal fields using GPT-4o, and writes them back to HubSpot custom properties, no manual entry required.

What's covered

  • >Ingesting and normalizing transcripts from Fireflies and Sybill
  • >Prompting GPT-4o to extract 21 structured fields from unstructured calls
  • >Auto-populating HubSpot custom properties from extracted data

Tools used

n8nGPT-4oHubSpotFirefliesSybill

Sales calls hold real signal about a deal: objections raised, a timeline mentioned, a competitor named, a stakeholder who needs to sign off. That signal stays trapped in a recording nobody replays. We built a workflow that reads Fireflies and Sybill transcripts as soon as a call ends, extracts 21 structured deal fields with GPT-4o, and writes them directly into the client's HubSpot custom properties, with no manual note-taking required.

Why call notes never actually make it into the CRM

Reps take notes in whatever tool is fastest in the moment, a notebook, a personal doc, a quick memory before the next call starts, and most of that never gets typed into the CRM in a usable form. Typing structured notes after every call is real work on top of an already full day, so it gets skipped or shortened. The result is a CRM full of deals with a stage and a dollar amount but none of the context that explains why the deal is stuck or what it will actually take to close it.

What kind of fields does the model actually pull out?

The model is prompted to extract 21 structured fields per call, covering the categories that actually matter to a deal: budget signals, timeline, the stakeholders mentioned, objections raised, competitors that came up, and the agreed next step. Because the prompt targets specific fields rather than asking for a free-form summary, the output lands in a consistent shape every time, which is what makes it safe to write straight into HubSpot properties instead of a free-text notes field someone still has to read.

How the pipeline moves from recording to CRM field

  • >A call ends and Fireflies or Sybill finishes generating the transcript
  • >The workflow ingests the transcript and normalizes it into one common format
  • >GPT-4o runs a structured extraction prompt against the normalized transcript
  • >Extracted fields are validated and written to the matching HubSpot custom properties
  • >The deal record is updated with no rep involvement

Why normalizing two transcript formats first matters

Fireflies and Sybill structure their transcript output differently, different speaker labels, different timestamp formats, different metadata around each call. Feeding both formats straight into the same extraction prompt without normalizing first produces inconsistent results, because the model is reacting to formatting differences instead of the actual conversation. Normalizing both sources into one common shape before extraction is what keeps the 21 fields reliable regardless of which tool recorded the call.

What happens when a field simply isn't in the call?

Not every call covers budget, timeline, and every stakeholder in one conversation, and the workflow has to handle that honestly. The prompt is built to leave a field blank rather than guess, so a missing data point stays missing instead of getting filled in with something that sounds plausible but isn't true. A CRM field that's empty is a known gap. A CRM field that's confidently wrong is worse than no automation at all.

Why this beats a generic call summary tool

A generic call summary tool gives you a paragraph describing what happened on a call, which is useful for a quick memory jog but useless as CRM data, because nothing about a paragraph of prose is queryable or reportable. Extracting 21 discrete fields instead of one summary is what lets a sales manager filter every deal where budget wasn't confirmed, or every account where a specific competitor came up, across the whole pipeline at once. Structured data compounds in value as it accumulates. A pile of separate summaries never does.

Where this workflow stands today

This system is currently in validation with the client, being checked field by field against real call outcomes before it runs unsupervised across every deal. That's a deliberate step, not a delay. Extraction pipelines that write directly into a CRM need to earn trust on accuracy before they run without a human checking the output, and validation is where that trust gets built.

Is this worth building for your sales team?

If your reps are already recording calls through a transcription tool, the raw material for this kind of pipeline already exists, it's just sitting unused. The build is worth it once your team has more calls happening than anyone has time to manually review and log.

See how mkdir turns call recordings into structured CRM data automatically.

Explore custom AI

$ mkdir meetings

New customers, without hiring a salesperson.

Book a free 30 minute call. We will show you exactly which companies we would go after for you, and what it would take.

Book a call