Tap the mic again to stop
"just left Big Box Audio, met with Scott and Fady — went over the new Sonance Blaze Amps, looked really good, and um also talked about the new Sony uh BRAVIA RGB TVs and their demo program, oh and ask the office to send the Blaze transition chart and the Sony demo details to them"
Met with Scott and Fady at Big Box Audio; reviewed Sonance Blaze Amps and Sony BRAVIA RGB TVs. Sent materials requests to the office.
Reviewed the new Blaze Amps line with Scott and Fady at Big Box Audio.
Discussed Sony BRAVIA RGB TVs and Demo program — dealer is exploring the Sony Demo program for the showroom.
Rep taps the mic. No entity pre-selected — the CRM doesn't need to know where to file this yet. That's the magic: the AI figures it out. MediaRecorder starts collecting audio chunks, and the live raw transcript panel shows exactly what's being captured — filler words, "um", "uh", all of it.
While the rep talks, the CRM silently pre-fetches every dealer, vendor, and contact name to build a vocabulary primer for Whisper. By the time recording stops, the primer is ready — zero extra latency.
"The speaker is a sales rep at MTA. Vocabulary: Big Box Audio, Sonance, Sony, Scott Foco, Fady, AV King, …" // 244-token soft cap (OpenAI limit)
Rep taps stop. The audio blob POSTs to transcribe-voice-note along with the vocabulary primer. OpenAI Whisper returns in ~1.4s — and this is where the first transformation happens.
All the "uh", "um", and filler words are gone. Proper nouns come back correctly spelled — "Sonance" not "Sonans", "BRAVIA" not "braviah". The primer did its job. The rep never has to see or fix the messy version.
POST transcribe-voice-note audio: voice-note.webm // 23s · ~180KB prompt: "…Vocabulary: Big Box Audio…" ↳ Whisper returns in ~1.4s transcript: "Visited Big Box Audio today…"
The cleaned transcript lands in the review screen instantly. The rep can read it and tap Save right now if they want — no waiting. Simultaneously, the transcript fires to analyze-voice-note in the background.
Skeleton loaders show the AI cards are loading. No blocking spinner, no layout shift when results arrive. The full team roster is sent so Claude knows who "the office" refers to.
transcript: "Visited Big Box Audio…" users: [{name:"Brenda", aliases:["the office"]}, {name:"Alison", aliases:["the office"]}, …// full 8-person MTA roster]
Claude returned 6 structured fields using forced tool use — it can't drift back to plain text. It detected 2 distinct vendor topics and triggered the multi-vendor split. It also inferred in_person from "Visited" and pre-selected the method picker.
The review screen now shows a summary, the 2-vendor split ✦ badge, entity chips, and task suggestions. The rep can confirm this is right before hitting Submit.
suggested_method: "in_person" // ← "Visited" mentioned_entities: // 5 detected dealer: Big Box Audio contact: Scott, Fady vendor: Sonance, Sony sub_notes: 2 // triggers split wrap_up_body: "Visited Big Box Audio…"
One recording, one sentence about each vendor — and the CRM automatically creates separate, clean notes for each brand. This is the core intelligence of the system: a rep never has to think about how to file multi-vendor visits.
Each vendor card shows its own body + task. "The office" in both tasks is a single alias that fans out to both Brenda and Alison on approve — 2 task rows per task entry. The dealer wrap-up row ties the whole visit together on the dealer page.
sub_notes: [ { vendor_name: "Sonance", body: "Reviewed Blaze Amps…", tasks: [{assignees: ["the office"]}] }, { vendor_name: "Sony", body: "Discussed BRAVIA…", tasks: [{assignees: ["the office"]}] } ] // "the office" → Brenda + Alison
This is what the rep sees when they open a queue item. Every AI-generated field has an inline edit link — wrong dealer, change it; bad task wording, fix it; wrong entity tagged, remove it. Nothing is locked. The rep has full control before a single permanent row is written.
The Dealer and Method fields are shown as editable chips up top so the rep can immediately see and confirm the key routing fields. The sticky action bar at the bottom offers exactly two outcomes:
Reject → status = "rejected" → optional rejection_note saved → no rows written, nothing lost Approve → Write 3 rows → 3 activity INSERT (atomic) → 4 task INSERTs (2 tasks × 2 reps) → activity_mentions rows written → status = "approved"
Rep taps Approve. Three activity rows are created and pending_approvals is marked approved. Two tasks are fanned out to both Brenda and Alison (from "the office" alias resolution).
Tasks go to Brenda and Alison's lists. The phone shows Big Box Audio's Activity tab with all three entries live.