LOUD
ENOUGH

You don’t have to know how to say it.

Say it badly. Leave with something you can send.

Ready when you are.

What you get

A messy explanation in. A message you can send out.

Most voice apps either cut you off or turn the conversation into a form. Talk it through out of order, double back, and interrupt. What comes back uses only your words.

What you said

“There’s this leak, I told them three times, and now there’s mold, and they just — I need them to actually fix it and write me back.”

What you can send

I’ve reported a water leak three times. Mold is forming. I’m asking for a repair and a written reply.

The date was never said, so it stays [DATE OF FIRST REPORT]

The demo plays this situation out loud. The transcript and the message are produced live from that audio — this is the shape of the result, including the gap.

How it works

01

Listen

Speech in and speech out over one WebSocket. Trailing off mid-thought doesn't end your turn — and the moment you talk over a reply, playback stops, so it stays a conversation instead of a recording.

02

Understand

The agent calls a real tool the moment it can name the problem and what you want. That call is what draws the brief on screen — the structure you see is the tool's arguments, not a second model summarising the first.

03

Verify

Every field arrives with a verbatim quote, and each quote is checked against the transcript before it is displayed. Anything that doesn't match is flagged on screen and withheld from the draft — the agent is told, so it can correct itself.

04

Act

A second tool writes the message from verified fields only. Details you never gave become bracketed gaps rather than plausible inventions, so nothing goes out that you didn't say.

Built with

  • AssemblyAI Voice Agent APIspeech, turn-taking, tool calling
  • Claude Sonnet 5drafting, from verified fields only
  • Next.js · TypeScriptapp, token minting, drafting route
  • Web Audio APIcapture, resampling, playback, amplitude

The permanent API key stays on the server; the browser connects with a single-use token minted per session. Nothing is stored — close the tab and the conversation is gone.