Skip to main content

Post-Call Analysis

Turn transcripts into structured, measurable data.

8 min read

Post-Call Analysis is how you turn raw conversations into measurable answers. After every call ends, the platform reads the transcript and fills in structured fields you defined — "did they book?", "what was the budget?", "did they sound frustrated?" — without you ever listening to the recording.

Why this matters more than transcripts. A transcript tells you what was said. Post-call analysis tells you what happened. If you're running 1,000 calls a week, nobody is going to read 1,000 transcripts — but everyone can read a dashboard showing "62% booked, 18% disqualified, 20% need follow-up." Set this up before you launch anything serious.

The good news: it's the easiest part of the platform to configure. Five minutes of setup gives you metrics for life.


Where to configure

From the dashboard: View All Finn → click your Finn → EditPost-Call Analysis tab.

You'll see a list of fields you've already defined (empty if this is a new Finn) and an Add Field button.


How it works

After every call:

  1. The platform takes the full transcript of the conversation.
  2. It runs an AI pass that reads the transcript and answers each question you defined.
  3. The answers get saved to the call's record and shown in Analytics.
  4. They're also available via webhook or API for downstream automation.

This happens automatically. You don't trigger anything — every completed call gets analyzed within a minute or two of hanging up.


Defining a field

Each field has three parts:

PartWhat it doesExample
Field nameThe internal key used in analytics and exports. Use snake_case.appointment_booked
Question to AIWhat you want the AI to figure out from the transcript. Phrase it as a natural question."Did the caller successfully book an appointment?"
Answer typeWhat kind of value you expect back. The AI is constrained to return this type.Yes/No

The clearer your question, the better the answer. "Did the caller successfully book an appointment?" is way better than "Booking?".


Answer types

TypeWhat you getWhen to use
Yes / Notrue or falseDid something specific happen?
EnumOne of N choices you definedCategorize into known buckets (intent, sentiment, urgency level)
Free textWhatever the caller said (or whatever the AI inferred)Open-ended captures — pain points, preferred callback time, names
NumberA numeric valueScores, quantities, prices mentioned
DateA date or date+timeWhen did the caller want their appointment? When did the issue start?

A worked example — sales qualification

You're running an outbound qualifier campaign. After each call, you want to know:

FieldQuestionType
qualifiedBased on company size and existing operations, does the caller meet our qualification criteria?Yes / No
company_sizeHow many employees did the caller mention their company has?Free text
decision_makerDid the caller indicate they are the decision-maker?Yes / No
budget_rangeWhat budget range did the caller mention, if any?Free text
timelineWhat buying timeline did they mention?Enum: immediate / this quarter / this year / no timeline
pain_pointWhat's the main operational pain point they mentioned?Free text
meeting_bookedDid the caller agree to a follow-up meeting with a human rep?Yes / No
objection_raisedDid the caller raise an objection? If so, what was it?Free text (nullable)

After 100 calls run through this, you can answer questions like:

  • "What % of leads were qualified?"
  • "Of qualified leads, what % booked a meeting?"
  • "What's the most common objection?"
  • "Which timeline bucket converts best?"

You'd never get this from listening to calls one at a time.


Practical tips

Start with 5 fields, not 20

Tempting to define every possible question upfront. Don't. Start with the 3-5 fields you actually need to make decisions. You can add more later, and they'll be populated for all future calls.

One question per field

Don't combine questions. "Did they book and what time?" should be two fields: booked (yes/no) and booking_time (date). Combined questions confuse the AI and produce messy data.

Be specific about success criteria

"Was the call successful?" is too vague. The AI's answer depends on what "successful" means — which the AI doesn't know. Replace with "Did the caller agree to a follow-up?" or "Did the caller make a purchase commitment?" — concrete, measurable.

Phrase yes/no questions as yes/no

"Did X happen?" → reliable yes/no. "How did X go?" → free text, harder to analyze.

If you want a yes/no answer, ask a yes/no question.

Use enum for known categories

Don't use free text for things that fall into clear categories. Use an enum.

Bad: free text field intent — you'll get "booking", "Book", "wants appointment", "appointment booking", "want to book" all as different values, impossible to chart.

Good: enum field intent with values book / reschedule / cancel / question / complaint / other. Now you can chart it.


Editing fields after launch

You can add, edit, or remove post-call analysis fields at any time.

ChangeWhat happens
Add a new fieldPopulated for all calls completed after the field was added. Older calls remain blank for it.
Edit a field's questionFuture calls use the new question. Past calls keep their old extracted value (not re-extracted).
Remove a fieldStops being extracted. Historical values remain in the data unless you also delete the call records.

If you want to backfill a new field across historical calls, contact support — we can run a one-off re-analysis pass.


Where the results appear

In Analytics

Deployment Analytics → [your deployment] shows aggregate distributions for every field:

  • Yes/No fields → bar chart of true vs false counts
  • Enum fields → stacked bar of each category
  • Number fields → histogram + median
  • Free text → word cloud + sample of 5
  • Date fields → timeline distribution

In the per-call sidebar

Click any call to open the Data Extractor Sidebar. Every post-call field is listed with its extracted value. If a value looks wrong, click it to see the AI's reasoning + the transcript snippet it relied on.

In exports

CSV exports include every field as a column. PDF reports show top-line distributions.

In webhooks

The call.analyzed webhook event includes all post-call fields in its payload. Wire this up to push results into your data warehouse, CRM, or alerting system. See Integrations → Webhooks.


Confidence + accuracy

The AI isn't always right. A few things to know:

  • Confidence scores — every extracted value has a confidence score. Low-confidence values are flagged in the sidebar. You can filter exports to only include high-confidence rows.
  • Failed extractions — if the transcript doesn't contain enough information to answer the question, the field is marked as "extraction failed" rather than guessed. Common reason: the call ended before the topic came up.
  • Hallucination protection — for free-text fields, the AI is constrained to use exact quotes from the transcript where possible, not invent new content.
  • Manual override — for any critical decision, you can edit the extracted value manually from the sidebar. Edits are flagged as human-corrected in exports.

Cost

Post-call analysis is included in every plan. No extra charge per field, no surcharge per call.

You can define unlimited fields per Finn (up to a soft cap of 50 — beyond that, contact support to enable higher limits).


Common patterns by use case

Lead qualifier

  • qualified (yes/no)
  • budget_range (free text)
  • decision_maker (yes/no)
  • meeting_booked (yes/no)
  • objection (free text, nullable)

Receptionist

  • intent (enum: book / reschedule / question / complaint / other)
  • appointment_booked (yes/no)
  • transferred (yes/no)
  • caller_sentiment (enum: positive / neutral / negative)
  • follow_up_needed (yes/no)

Appointment reminder

  • confirmed (yes/no)
  • rescheduled (yes/no)
  • cancelled (yes/no)
  • opt_out (yes/no)

Customer satisfaction survey

  • nps_score (number, 0-10)
  • top_positive (free text)
  • top_negative (free text)
  • would_recommend (yes/no)

Debt collection

  • outcome (enum: paid / payment-plan / dispute / refusal / no-answer)
  • amount_paid (number)
  • disputed (yes/no)
  • callback_scheduled (yes/no, date)

Common mistakes

MistakeWhy it failsFix
Too many fieldsCognitive overhead, harder to spot what mattersStart with 5
Combined questionsAI gives messy or empty answersOne question per field
Vague success metrics"Was the call successful?" depends on interpretationDefine success concretely
Free text for enumsImpossible to chart or filter cleanlyUse enum with explicit options
Adding fields mid-campaign and expecting backfillOnly future calls get the new fieldAdd fields before launch

Next

Was this page helpful?

Still stuck or have feedback?

Email support@hirefinn.ai or use the chat bubble in the bottom-right corner — it's a Finn that knows the Academy cold.