Introduction
Interactive Demo

Meet Betty

Betty is an AI voice companion for long-haul truck drivers. She proactively calls drivers when safety systems detect fatigue or risky driving, having real conversations that save lives.
Built with Google Gemini Live API · Real-time bidirectional voice · Cross-call memory
📞

Proactive Calling

Betty calls the driver — not the other way around. When a fatigue camera detects drowsy eyes or a telematics system flags erratic driving, Betty picks up the phone.

🧠

Cross-Call Memory

Betty remembers previous conversations within a shift. If she called about fatigue an hour ago, she'll reference it: "Last time we spoke you were looking tired..."

🛑

Smart Escalation

If a driver refuses to pull over, Betty escalates to the fleet manager with context — what happened, what she tried, and why she's concerned.

🖼️

Visual Cards

Betty sends visual cards to the driver's dashboard — rest stop recommendations with AI-generated backgrounds, shift wellness summaries, and incident reports.

How this demo works: Each page demonstrates a key feature. You'll trigger real AI conversations and see Betty respond in real-time. All calls are simulated — an AI driver persona talks to Betty so no microphone is needed.
Step 1 of 5

Fatigue Detection

When an in-cab camera detects signs of fatigue — droopy eyes, yawning, or head nodding — Betty receives the video feed and calls the driver to check on them.
What happens: A fatigue camera event fires. Betty receives video frames showing the driver's fatigue behaviour, then calls to have a caring conversation about pulling over for a rest.

In-Cab Fatigue Camera Feed

Sample fatigue camera footage — droopy eyes detected

Frames Sent to Betty

These JPEG frames are extracted at 1fps and sent to Betty's Gemini session via send_realtime_input(video=...) so she can see what the camera detected.
Extracting frames...

Try it — trigger a fatigue event

Press the button to trigger a fatigue event
00:00
Conversation will appear here...
Step 2 of 5

Smart Escalation

When a driver shows dangerous behaviour and Betty can't convince them to stop, she escalates to the fleet manager with a detailed incident report.
What happens: A high-severity head-nod (microsleep) event fires. The simulated driver is stubborn and refuses to pull over. Betty escalates and generates an incident report card.

Try it — trigger a microsleep with a stubborn driver

Press the button to trigger a microsleep event
00:00
Conversation will appear here...
Step 3 of 5

Cross-Call Memory

Betty remembers what happened in previous calls within a driver's shift. If she called about fatigue earlier, she'll reference it in the next conversation.
What happens: First, a check-in call establishes context. Then a second fatigue event fires — listen for Betty referencing the earlier conversation. Memory is encrypted with AES-256-GCM and auto-expires after 14 hours.

Try it — two calls, same shift

Start with Call 1 — a friendly check-in
00:00
Conversation will appear here...
Step 4 of 5

Shift Summary

At the end of a shift, Betty generates visual summary cards — wellness reports with shift timelines, rest stop recommendations with AI-generated scenic backgrounds, and incident reports for the fleet manager.

Try it — generate visual cards

Rest stop cards use Gemini Flash + Google Search grounding to describe the real location, then Imagen 4 generates a scenic background photograph.
Step 5 of 5

How It Works

Betty is built entirely on Google's AI stack — Gemini Live API for voice, Gemini Flash for grounding, and Imagen 4 for visual card generation.

Voice Call Flow

Safety Trigger Risk Scoring Gemini Live API WebSocket Bridge Driver (Browser/Phone)

Visual Card Pipeline

Rest Stop Name Gemini Flash + Search Grounding Imagen 4 Scenic Background Pillow Renderer

Gemini Live API

Real-time bidirectional audio streaming. Betty hears the driver, responds naturally, and can call tools mid-conversation (check hours, escalate, send cards).

Function Calling

6 tool declarations: get_driver_hours, get_recent_events, escalate_to_manager, log_conversation_summary, assess_driver_mood, send_rest_stop_card.

Encrypted Memory

AES-256-GCM encrypted SQLite store with per-driver key derivation (HKDF). 14-hour TTL with automatic hard deletion of expired entries.

Video Understanding

Fatigue camera footage is sent as JPEG frames to Betty's Gemini session. She can see what the camera detected and reference it in conversation.

Tech Stack

Gemini 2.5 Flash (Native Audio) Gemini 2.0 Flash (Grounding) Imagen 4 FastAPI WebSocket Web Audio API Pillow Cloud Run