What post-call analysis does
After a call ends, Finn reads the transcript and answers questions you set on the Finn: "did they book?", "what budget did they mention?", "did they agree to a follow-up?". You get structured answers without reading or listening to the call.
At 1,000 calls a week nobody reads 1,000 transcripts, but anyone can read "62% booked". Set your questions up before you launch anything serious.
Where to set it up
In the dashboard, click Edit on the Finn's builder page and open the Post-call analysis tab. Click Add question and pick a type.
Each question has:
| Part | What it does |
|---|---|
| Question label | The question's key. It comes back as question_name in analysis results, exports and webhooks. |
| Instruction prompt | What you want answered, in plain language. This is what the analyzer works from. Sent as description in the API. |
| Format examples | Optional. Examples of the answer shape you want. |
| Choices | Selector only. The values the answer must come from. |
You can also set the questions through the API, as the post_call_analysis array on a Finn (up to 50 questions). See api-finns.
Answer types
| Type | What you get | Use it for |
|---|---|---|
| Text | Free text | Open captures: pain points, names, callback times, dates |
| Selector | One of your choices | Known buckets: intent, outcome, urgency |
| Yes/No | true or false | Did one specific thing happen |
| Number | A number | Scores, quantities, prices mentioned |
There's no date type. Capture dates as Text. For wording advice and starter sets, see analysis fields.
When answers arrive
- The call ends and the transcript is saved.
- The analyzer answers each question from the transcript.
- Answers are saved to the call and appear in the dashboard and in
GET /calls/{call_uuid}. - The
call.completedwebhook is sent with the answers in itsanalysisarray.
This usually takes about 5 minutes. If no analysis has arrived after about an hour, call.completed is sent anyway with whatever analysis exists, which can be none. Answers that arrive later are in GET /calls/{call_uuid}. Calls that didn't connect have no transcript, so they get no answers. See webhook-post-call.
Analysis doesn't depend on the recording add-on. It runs whether or not the call is recorded.
What each answer carries
| Field | Meaning |
|---|---|
question_name | The question's name. |
question_type | The question's type. |
answer | The answer, always as a string, even for Yes/No and Number. Convert it yourself. |
needs_review | true when the analyzer marked the answer as uncertain. Shown as Needs Review in the dashboard. |
reasoning | Why the analyzer chose the answer. |
extracted_at | When the answer was extracted. |
There is no confidence score. Use needs_review and reasoning to decide which answers a person should check.
Each call also gets user_sentiment and call_successful, the analysis's own judgment of whether the call met its goal. These come from the analysis, not from one of your questions. See metrics.
Where answers appear
| Place | What you see |
|---|---|
| Call detail sidebar | The Post-Call Analysis tab: every question with its answer, review marker and reasoning. See call logs. |
| Call log CSV | One column per question. See exports. |
| Analytics → Merged report | Select several deployments and merge their post-call analysis into one report. |
call.completed and GET /calls/{call_uuid} | The analysis array. |
Changing questions after launch
| Change | Effect |
|---|---|
| Add a question | Answered for calls that end after you add it. Older calls have no answer for it. |
| Edit a question | Future calls use the new wording. Past answers stay as they were. |
| Remove a question | It stops being asked. Past answers stay on those calls. |
Answers aren't re-extracted for past calls, so plan your questions before the calls you want to measure.
Accuracy
The analyzer can be wrong. When an answer looks off, open the call and read the transcript. Usually either the transcript doesn't contain the information (the call ended before the topic came up), or the question is vague. Tighten the description and give a format example.
A question that is blank on most calls usually points at the agent, not the analyzer: if budget_range is empty on 80% of calls, the agent isn't asking about budget. See agents-prompting.
Related
- Analysis fields: wording questions that extract reliably.
- Call outcomes: connection versus achievement.
- Evaluations: testing a Finn before it goes live.
- Webhook events: the
call.completedpayload.