type: entity

observations: current_task = BUG #27: Voice Assistant button not working

observations: relevant_lesson = SILENCE_TIMEOUT too aggressive (5s)

observations: hypothesis = CONFIRMED: Web Speech API fails on iOS Safari PWA but code doesn't fallback to Whisper

observations: root_cause = recognition.start() fails silently on iOS PWA, no fallback to Whisper transcription

observations: solution = Wrap recognition.start() in try-catch with fallback to MediaRecorder+Whisper

observations: fix_verified = Pushed to main, awaiting Railway deploy

observations: test_required = iOS Safari PWA: tap Voice Assistant, speak command

observations: SECOND FIX: Android Chrome early cutoff (3-5s)

observations: root_cause_2 = Android Chrome fires onend after brief pause even with continuous=true

observations: solution_2 = Auto-restart recognition in onend if no command processed and not manually stopped


entityType: task

observations: FEATURE: Rivet Voice Assistant - Inbound Calls + Task Delegation


stage

entityType: workflow

observations: Findings: No existing Vapi integration - Twilio infrastructure exists

observations: Existing VoiceAssistant is frontend component not phone system

observations: Need: Vapi webhook, task parser, async execution, callback system