How often should you review conversations?

Read every new conversation daily in the first week after you switch on customer calls, then weekly once the same questions stop surprising you. Give the job to someone who can change the knowledge base, so each finding becomes a fix the same week.

1. Find the conversations worth reading.

Open Conversations. Filter by agent with Support calls or Sales calls, and by outcome with Completed, Escalated or Interrupted. Escalated means the caller chose Talk to a human and the handover call to your team started. It doesn’t confirm that someone answered, and you’ll only see it if you’ve turned on human handover, which is an early release.

Search looks in the topic each caller typed and in the summary line, which is the first 700 characters of what the caller said. Searching for a feature name finds calls that mention it in the topic or early in what the caller said.

Your own dashboard tests appear in the list too, and the export marks them. Interrupted calls deserve a look even when they’re short: the call didn’t close normally, which can point to a microphone, network or browser problem rather than a gap in your docs. Calls refused as they start, such as after the free conversations are used, show as Interrupted too.

2. Read each transcript and give it one label.

Open a conversation to see its transcript, with Customer and Your agent lines, and any feedback. Feedback captured in the list means the caller pressed That was helpful or asked the agent to note something, and the conversation shows which.

Unlike chatbot transcripts, which hold exactly what visitors typed, a voice transcript is speech turned into text. Read the Customer lines first: if they aren’t what the caller meant, the problem is hearing, and a new article won’t fix it. Then give each conversation the first label that fits.

  • Answered: correct and complete, from your approved knowledge.
  • Partly answered: the right direction, but missing a step, a condition or the next action.
  • Didn’t know: the agent said it didn’t know. Each one names an article to write.
  • Referred: the agent rightly sent the caller to your team, through your contact options or a handover, because only your team could help.
  • Wrong: the agent said something untrue. Fix these first.
  • Misheard: the Customer lines show the words were transcribed wrongly.
A review log to copy into a spreadsheet
date,channel,topic,label,question in the caller's words,fix,source changed,retested
2026-10-07,support,Exporting reports,didn't know,Can I export a report to CSV?,Write an export article,Exports: CSV and PDF,yes
2026-10-07,sales,Plans,partly answered,Is there a discount for charities?,Add the charity policy to the pricing note,Pricing and plans,

3. Fix the cause behind each label.

Work through the wrong answers first, then the gaps, then the rest.

  • Didn’t know: write the missing article, with the caller’s words in its first line, and approve it.
  • Partly answered: add the missing step or condition. If the article is long, split it so the answer starts near the top of its own source.
  • Wrong: find the source that taught it. Replace a pasted document with a corrected one and remove the old version, or fix a GitHub file and re-sync it. If no source says it, tighten the instructions.
  • Referred: check that the route the agent gave is the right one for that question.
  • Misheard: check the caller’s microphone and background noise first. If one product name is misheard again and again, add the misheard form to the article’s other words, so a search for it still finds the article.
  • Re-test each fix with the caller’s own question in a dashboard test call, and mark it as retested in the log.

4. Look for patterns across the week.

Count the labels each week. A falling share of didn’t-know conversations suggests new articles are being found. The same question under didn’t know twice usually means the article you wrote doesn’t use the caller’s words.

The Insights tab does part of this for you. For each agent, it groups recurring questions, reported issues and themes from what customers said in up to your latest 30 completed calls over 30 days, with quotes from the transcripts. Dashboard tests are left out, and it’s a sample rather than every call, so use it to choose which transcripts to read, not instead of reading them. It doesn’t judge whether the agent’s answers were right, so your labels still matter. Scripts can read the same report with GET /api/manage/insights, or /api/manage/insights?channel=sales for the sales agent, and through the conversation_insights MCP tool.

Read the feedback the agent noted, such as bug reports and feature requests, and pass it to your product team. Nobody is emailed when a caller leaves feedback, so the review is how it reaches them.

How do you pull transcripts in bulk?

The dashboard opens transcripts one at a time, and Export leaves them out. The REST API returns each one with GET /api/manage/conversations/{id}, so a short script can fetch the latest 100 and flag those where the agent said it didn’t know.

The script below uses only Python’s standard library and reads a workspace token from an environment variable. Its phrases are a starting point: read a few flagged transcripts and adjust them to how your agent speaks.

flag_misses.py: list conversations the agent couldn’t answer
"""List recent conversations where the voice agent said it didn't know.

Set KAWLNOW_TOKEN in your environment, then run: python3 flag_misses.py
"""
import json
import os
import re
import urllib.request

API = "https://app.kawlnow.com/api/manage"
TOKEN = os.environ["KAWLNOW_TOKEN"]
MISS = re.compile(r"\b(don.t|do not|doesn.t|does not) (know|have)|\bnot sure\b", re.I)


def get(path):
    request = urllib.request.Request(
        f"{API}/{path}", headers={"Authorization": f"Bearer {TOKEN}"}
    )
    with urllib.request.urlopen(request, timeout=30) as response:
        return json.load(response)


for row in get("workspace")["conversations"]:
    if row.get("is_test") or row["status"] not in ("ended", "escalated"):
        continue
    call = get(f"conversations/{row['id']}")
    misses = [
        turn["text"]
        for turn in call["transcript"]
        if turn["role"] == "agent" and MISS.search(turn["text"])
    ]
    if misses:
        print(f"{call['created_at'][:10]}  {call['channel']:<7}  {call['topic'][:60]}")
        print(f"    agent: {misses[0][:160]}")

Handle transcripts with care.

Transcripts hold whatever callers said, which can include names, email addresses and account details. Limit who reads them, and remove personal details before you copy a caller’s words into an article. There’s no automatic deletion yet, so ask us when a caller wants a conversation removed.

Common questions

Can I export full transcripts?

Not in bulk from the dashboard. Export downloads your latest 100 conversations as JSON without transcripts. Open each transcript on the Conversations tab, or fetch it with GET /api/manage/conversations/{id} and a Kawl Now workspace token.

What is the summary line in the conversation list?

The first 700 characters of what the caller said during the call, or the topic they typed if they said nothing. Kawl Now doesn’t write it with AI, so it shows the caller’s own words.

How often should you review voice agent conversations?

Daily for the first week after you switch on customer calls, then weekly. Read every conversation while volumes are low, give each one an outcome label and fix the source behind every miss before the next review.