Founders

How to Choose an AI Model for Your CRM Notes

Antonio Evans7 min read

A split-screen workspace: on the left, a long investor call transcript with highlighted sentences; on the right, a pipeline spreadsheet with columns for stage, amount, and next step.
Key points

Key points

  1. 1Build a labeled test set of 100 to 200 of your own call transcripts before you compare any models.
  2. 2Score candidates on three numbers: cost per 1,000 notes, median upload-to-write latency, and field-level accuracy after one retry.
  3. 3Output token pricing usually dominates the bill on summarization work, and reasoning tokens bill at output rates.
  4. 4Pick the cheapest model that clears your accuracy bar, then hold back a human review sample on every batch.

Start with the job, not the model

Two CRM jobs look similar and behave very differently under testing. The first is summarization: take a 30 to 60 minute investor call transcript and produce a short note with the round size, stage, lead investor, next step and sentiment. The second is structured extraction and writing: turn that note into specific fields in your pipeline sheet, with types and allowed values that your database and downstream reports can trust. The second job fails more loudly, because a wrong stage or a hallucinated check size corrupts your pipeline forecast rather than just reading badly.

Investor pipeline discipline gives you the field list. A pipeline is a funnel with clear stages and gates, and funds that do not reply should be left alone per OpenVC's pipeline guide. Techstars recommends logging each investor against fund name, ticket size, contact, intro status and notes in its pipeline worksheet. Those are exactly the fields your model has to fill, so copy the schema from your CRM rather than inventing one. A 12 column spreadsheet with priority, status and comments is a common starting shape as Dex lays out.

Because the output must be machine readable, structured outputs matter more than prose quality. Schema-constrained generation and function calling exist precisely to stop a model renaming a field or returning a string where you need an enum as this structured outputs guide explains. Practitioners have also flagged the difference between strict structured outputs and classic function calling, which is the distinction you will hit when a model "mostly" follows your JSON in the OpenAI developer discussion. Decide up front which fields must be schema-enforced and which can be free text.

Build a small labeled test set from your own calls

Do not evaluate on public transcripts or synthetic calls. Your calls have your vocabulary: SAFEs versus priced rounds, extension rounds, pro rata, bridge notes. A SAFE is a simple agreement for future equity that became the default early stage instrument partly because it avoids agreeing a pre-money valuation according to Wyrick's SAFE deep dive. If your model does not know that, it will mislabel a SAFE as a priced round and your pipeline will show a wrong stage.

Steps that work in practice:

  1. Export the last 150 to 200 call transcripts, prioritizing calls where your team already wrote a note by hand.
  2. Have one person label the required fields for each call, from the transcript, not from the existing note. Where the call is genuinely ambiguous, mark the field as null and record why.
  3. Freeze a dev split of 50 calls and a held-out test split of 100 to 150. Tune prompts on dev only.
  4. Write down the acceptance bar in numbers before you run anything, for example "stage and round size must be 98 percent correct, next step 95 percent, sentiment 90 percent."

Label quality sets your ceiling. If two people disagree on 10 percent of stage labels, no model can score above roughly 90 percent against that ground truth. Run a 20 call double-label check first and fix the schema where humans disagree.

Also decide what counts as a note. If your team wants a 120 word summary plus five structured fields, benchmark that exact output. Changing the output shape between models makes the comparison meaningless.

Define the three numbers you will compare

MetricHow to measure itWhy it decides the choice
Cost per 1,000 notesTotal input and output tokens for the frozen test set, multiplied to 1,000, priced at published ratesSeparates a $3 a month habit from a $300 a month one at scale
Median latencySeconds from transcript upload to successful CRM write, median of the test set, one retry allowedSame day pipeline updates need minutes, not hours
Field-level accuracyCorrect fields divided by total labeled fields, scored after one automatic retryAccuracy on the fields you actually write to the CRM

A worked example makes the cost math concrete. Assume a typical transcript is 12,000 input tokens and the note plus JSON is 600 output tokens. That is 12 million input tokens and 0.6 million output tokens per 1,000 notes. At published rates of $2.00 per million input and $10.00 per million output, a mid-tier model costs about $24 for input and $6 for output, so roughly $30 per 1,000 notes using CostGoat's listed rates. A budget tier at $0.10 input and $0.50 output would come to about $1.50, and a frontier tier at $10 input and $50 output about $150. Same transcripts, a hundredfold spread.

That is why list price alone cannot pick a winner. Input and output prices vary widely by tier, and output rates are typically several times input rates as Amnic's cost comparison shows. More important, reasoning tokens bill as output. A model that "thinks" before answering can turn an expected bill into several times that figure according to the developer cost breakdown cited in Amnic's analysis. Turn reasoning off for extraction if the vendor allows it, or measure it.

Latency is the number teams forget. Test it end to end: upload, transcribe if needed, model call, schema validation, CRM write. A batch API is cheaper but unsuitable if your analysts expect pipeline updates within the same call. Measure at your real concurrency, because ten parallel calls behave differently from one. Use the median, and check the 95th percentile too so one slow call does not block a partner meeting.

Accuracy is the number that actually constrains cost. Score per field, not per note. A model can score 90 percent per note while getting round size wrong on the largest checks, which are the ones your partners read. Weight fields by how much damage a wrong value does.

Run the bake-off and read the results

Run every candidate on the held-out set, twice, and average the two runs to smooth variance. Use temperature zero or the lowest setting available. Keep the prompt identical across models, with only the schema and output mechanics adjusted to what each provider enforces. Log raw outputs so you can audit failures later.

A decision rule that survives contact with real data:

  • Drop any model below your stage and round size accuracy bar. Those fields gate everything else.
  • Among survivors, drop any model above your latency ceiling for same day updates.
  • Rank the rest by cost per 1,000 notes and pick the cheapest whose accuracy bar you can defend with a human review sample of 10 to 20 percent of notes.

Then look at the errors that remain. If most failures are sentiment (a soft "let's keep in touch" read as a pass), a cheaper model plus a tightened enum may close the gap. If failures are round size, no prompt tweak saves you; step up a tier. Be careful with the accuracy bar itself: benchmarks are not your job. Published quality scores are useful for shortlisting but should never replace your own labeled set, which is why CostGoat separates quality scores from value scores in its comparison.

A small JSON contract in your application keeps the comparison honest and makes swapping models cheap:

{
  "type": "object",
  "properties": {
    "investor_name": {"type": "string"},
    "round_size_usd": {"type": ["number", "null"]},
    "stage": {"type": "string", "enum": ["pre-seed", "seed", "series-a", "series-b", "other"]},
    "next_step": {"type": "string"},
    "due_date": {"type": ["string", "null"]},
    "sentiment": {"type": "string", "enum": ["hot", "warm", "neutral", "cold"]}
  },
  "required": ["investor_name", "stage", "next_step", "sentiment"]
}

Validate the response against the schema before any CRM write. Reject and retry once, then route to a human queue. That single rule counted for one of the three metrics; do not let retries go uncounted.

Instrument cost and accuracy after launch

The model you pick is a hypothesis. Instrument the pipeline so you can test it every month without another bake-off. Log token counts, retries, schema rejections and human corrections per note. Corrections are your cheapest ongoing accuracy signal: if analysts override the stage on 4 percent of notes, that is a real, current number.

Watch three cost traps that rate cards hide. First, tokenizers differ by vendor, so the same transcript can split into different token counts, with documentation noting some tokenizers consume noticeably more tokens for the same text as Amnic reports from provider docs. Second, caching changes the economics: repeated instructions and schema can be cached at a fraction of input rates, which matters when every call shares the same long system prompt CostGoat lists batch and cache tiers side by side. Third, prompt bloat: every field you add to the schema, every example you paste, inflates input on every call. Audit the prompt monthly.

You may find the best result is not one model. A cheap tier for routine calls, a stronger tier when the transcript mentions a term sheet or a number outside your expected range. Report both cost and corrections to the person who owns the CRM, weekly, in one table. Fundraising volume is lumpy: one team reached out to more than 100 VC firms, met 80, sent documents to 16 and got 7 offers per the Fidelity session recap. At that volume, a $30 per 1,000 notes model costs single digit dollars a month. The decision is almost entirely about accuracy and latency, not budget.

When you are ready to run the bake-off without wiring a separate SDK per vendor, one API key across text models simplifies the comparison and keeps the prompt and schema identical through Quanta Inference.

A short comparison of what different tiers buy you

TierTypical strengthTypical weakness on CRM notesWhen to choose it
Budget tierVery low cost per note, fastMisses implied meaning, weaker on long transcriptsHigh volume, simple schema, human review every batch
Mid tierBalance of cost and accuracyOccasional misses on sentiment and ambiguous stageDefault for most teams
Frontier tierBest on messy calls and reasoningHighest cost, sometimes slowerComplex rounds, term sheet language, ambiguous next steps

Treat the table as a hypothesis to test, not a ranking. Your labeled set decides.

FAQ

FAQ

How many transcripts do I need for a reliable comparison?

Aim for at least 100 labeled calls in the held-out set and keep tuning data separate. Below that, a single unusual call can swing accuracy by several points. If labels are expensive, label fewer calls but more fields per call, and double-label a 20 call sample to check human agreement first. Write the acceptance bar before you look at any model output.

Should I compare on cost per note or cost per month?

Compare on cost per 1,000 notes, then multiply by your real monthly volume. Cost per note is stable and comparable across vendors, while monthly cost hides your volume assumptions. Build the estimate from measured tokens on your own transcripts plus published rates, and add retries and cached input. Re-run the estimate when your prompt or schema changes.

Why does output token pricing matter more than input pricing?

Summarization and structured extraction usually generate a short output, so input should dominate. But output rates are several times input rates, and reasoning tokens bill as output as this cost analysis explains. If a model reasons before answering, that hidden thinking can dwarf the visible note. Measure total billed output per note rather than trusting a list price.

How do I keep the pipeline sheet from being corrupted by a bad extraction?

Enforce a schema and validate every response before writing. Reject anything that fails validation, retry once, then send it to a human queue. Mark low-confidence fields for review rather than writing them silently. Log every rejection and correction so you can see whether the problem is the model, the prompt, or an ambiguous call.

What accuracy bar should I set for stage and round size?

Set it high, because those fields drive forecasts and partner decisions. A practical starting point is 98 percent on stage and round size, 95 percent on next step and due date, and 90 percent on sentiment, measured on your own labels. Adjust only after you see your human label disagreement rate, since labels set the ceiling.

Sources

Sources

  1. How to Build an Investor Pipeline for Startup Fundraising - OpenVC
  2. Build Your Investor Pipeline Worksheet
  3. How To Create Your Own Investor Pipeline - Dex
  4. The guide to structured outputs and function calling with ...
  5. Difference between Structured Outputs and function calling ...
  6. SAFE Financing, a Deep Dive on the Evolution of the SAFE
  7. LLM API Pricing Comparison & Cost Guide (Oct 2026) - CostGoat
  8. LLM Cost Comparison: OpenAI vs Claude vs Gemini vs Mistral - Amnic
  9. Startup Fundraising: How to Manage Your Investor Pipeline
About the author

About the author

Antonio Evans
Antonio Evans

Antonio Evans is the founder of Quanta Intelligence and a fractional CTO who builds HIPAA-ready AI systems for health and life-science companies. Before that he was technical co-founder of FriendsEAT for twenty years, CEO of Socialdraft, and a data engineer at IBM. Antonio lives with his dog Santino in Lisbon, Portugal.

All articles