Geotab Geoff — AI Fleet Safety Coach with Lip-Synced Avatar (Vibe Coding Competition) #463
robertlagrasse
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
What I Built
Geotab Geoff is an AI-powered fleet safety coaching platform where a lip-synced avatar named Geoff has voice conversations with drivers about their actual shift data. Built for the Geotab Vibe Coding Competition 2026.
Live demo: geotab-geoff.web.app | Repo: github.com/robertlagrasse/geotab-geoff | Demo video: YouTube
How It Uses the Geotab APIs
Geoff uses all three Geotab data channels:
1. MyGeotab API (mg-api-js SDK v3.0.0)
ExceptionEvent- fetches safety events (speeding, harsh braking, acceleration)Driver- maps events to driversLogRecord- GPS coordinates for each eventGetRoadMaxSpeeds- posted speed limits for context ("12 mph over in a 35 zone" vs just "speeding")2. Ace AI (GetAceResults)
CreateAceChatAsyncthenGetAceResultsthen poll until complete3. OData Data Connector
fleetAnalyticsCloud FunctionArchitecture
The Interesting Parts
Shift-level coaching, not event-level alerts. Geoff aggregates all events for a driver's shift and looks for patterns. GPS clustering via Haversine distance detects location patterns. Four speeding events at the same intersection means a signage problem, not a driver problem.
Three-tier escalation system. Data-driven (5+ events, 15+ mph over), conversation-driven (road rage, impairment, intentional violations), and driver-requested. Server-side safety net forces escalation when boolean flags fire, even if the LLM says do not escalate.
Cost: approximately $0.05 per coaching session. Gemini + TTS + GPU + STT + storage = about $1/driver/month for 100% coaching coverage. That is 500x cheaper than a human safety coach.
Built in approximately 48 hours with Claude Code. One developer, no team, no prior Geotab API experience. Full vibe coding journey here.
Beta Was this translation helpful? Give feedback.
All reactions