← all builds

What Did We Agree

callssalesverification
Download .md

A sanitised reference implementation. Drop it into Claude Code, point it at your own call recordings, adapt the headings. Generic on purpose, with no business specifics and no real calls.

The problem

After a good call you remember the gist, not the detail. Who promised what, which price, which date, what was left hanging. Notes taken during the call are partial, and memory quietly rewrites things by the next morning. An AI summary can be worse, because it sounds right and can still be wrong. A figure gets stitched together from a garbled sentence. Your own "what if we did this" gets written down as the other side's commitment. A polite "yeah, yeah" gets logged as a yes.

The idea

Record the call and transcribe it on your own computer with a local speech model, so the audio never leaves the machine and costs nothing. Then pull out every promise, price, date and open question, and make each one carry the exact words from the transcript, who said them and roughly where in the call. Then hand those claims to a separate checker whose only job is to try to kill each one against the transcript. Only what survives goes into the debrief.

recording ──> [local transcription] ──> transcript
                                            │
                                            v
                  [pull out claims, each with its exact quote and speaker]
                                            │
                                            v
                  [a separate checker tries to kill every claim]
                                            │
                                            v
      one page. Agreed. Promised by you. Promised by them. Still open.

Minimal reference implementation

# what_did_we_agree.py, reference only. Transcription runs on your own machine.
import whisper   # pip install openai-whisper

def transcribe(path, model_name="turbo"):
    """Local speech to text. Nothing is uploaded. Use a large model for real
    calls, because a small one garbles names and numbers."""
    model = whisper.load_model(model_name)
    return model.transcribe(path)["text"]
EVERY CLAIM CARRIES FIVE THINGS
    Claim      what was said, agreed or promised
    Quote      the exact words from the transcript
    Speaker    who said them
    Where      roughly how far into the call
    Verdict    set by the checker, never by whoever found the claim

THE CHECKER'S VERDICTS
    CONFIRMED       the quote is real, the speaker is right, the meaning is not stretched
    OVERSTATED      the substance is real but a detail was invented, so keep the
                    substance and drop the detail
    MISATTRIBUTED   it was your own words or your own what if, not theirs
    UNGROUNDED      it cannot be found in the transcript, so it goes

THE CHECKER'S BRIEF
    Try to kill every claim. Watch for numbers stitched from unclear speech,
    agreement read into politeness, and your own framing echoed back as theirs.
    No quote, no claim.

Why it works

Adapt it

Built for my own calls with customers and suppliers, and this is the generalised version. Take it, run it on your next call, tell me what it catches.