Geotab Vibe Coding Competition · Feb–Mar 2026

FleetHappens

Fleet route intelligence, contextual stop briefings, vehicle analytics, comic-style trip storytelling, composable report building, and Slack/Teams sharing — built on the Geotab Direct API and Geotab Ace, deployed on Google Cloud Run.

For the best experience, set the video quality to 1080p HD via the gear icon in the player.

Core Features

Fleet Pulse

Company-wide KPI dashboard with group drill-down, regional vehicle map, ranked tables, daily AI digest, and fleet trend analytics, powered by Geotab Ace.

Route Context Briefing

Tap any stop on a trip map and get an LLM-narrated area guide combining reverse-geocoded place data, nearby amenities, Ace fleet visit history, and a persistent location dossier.

Vehicle Intelligence

Per-vehicle analytics cards — trip profile, route fingerprint, driving behavior, and anomaly detection — computed client-side from trip history. No extra API calls.

Comic Trip Recap

Generate a 4-panel visual story from a trip's GPS breadcrumbs, enriched by stop context briefings. Three tones: Guidebook, Playful, Cinematic. Export as PDF.

AI Fleet Assistant

Natural-language Cmd+K command palette for querying fleet data across all integrated APIs — Geotab Direct, Ace, context briefings, and next-stop predictions.

Report Builder

Composable PDF reports with toggleable sections, shareable to Slack (Block Kit messages or PDF upload) and Microsoft Teams (Adaptive Cards with time-limited PDF download links).

Tech Stack

Next.js 14 (App Router)TypeScriptTailwind CSSshadcn/uiLeafletVertex AI GeminiClaudeOpenAIBigQueryGoogle Cloud Run

By the Numbers

22+
API routes
40+
components
3
LLM providers chained
10k+
lines of TypeScript

Behind the Build

My Vibe Coding Journey

Built for the Geotab Vibe Coding Competition, Feb–Mar 2026. From a blank idea doc to a production-deployed fleet intelligence app.

The Starting Point

It began with a blank Markdown file — MY_PROJECT.md — and a question: what if fleet data could tell stories?

Geotab gives you trips, GPS breadcrumbs, and raw telemetry. What it doesn't give you is meaning. A driver stops at a location 14 times in 90 days, and no one notices. A fleet manager wants to brief a driver about an unfamiliar area, and there's nothing to reach for. A tourism operator wants to share a route with passengers, and the best they have is a spreadsheet.

That observation became the kernel. The idea: FleetHappens — a full-stack web app that reads Geotab data and layers on context, intelligence, and narrative. Think of it as giving a fleet a voice.

The Vibe Coding Approach

This wasn't built line by line. It was built with AI, using a deliberate multi-agent architecture inside Cursor.

The process started with a Technical Writer + Solution Architect agent that read every competition resource and sharpened the project spec. That spec became the single source of truth. From there, a Tech Lead / Orchestrator Agent broke the work into parallel tracks and assigned them to specialist agents:

  • Frontend / UX Agent — Next.js pages, Tailwind layouts, component shells
  • Geotab Direct API Agent — auth, devices, trips, GPS breadcrumbs, device status
  • Ace Integration Agent — the async create-chat → send-prompt → poll loop
  • Context Briefing Agent — geocoding, Places API, LLM narration
  • Story Generation Agent — LLM comic generation, tone system, PDF export

Each agent had its own prompt, its own file ownership boundaries, and a clear set of deliverables. The orchestrator kept them coherent. I acted as the human in the loop — tuning prompts, reviewing outputs, and enforcing quality.

The Build Timeline

Stage 1: Scaffolded the entire project from scratch. Vehicle selector, trip map with GPS breadcrumbs, Geotab Direct API integration, basic dashboard. Got to a working “select a vehicle, see its trips on a map” in a single day.

Stage 2: Upgraded story generation, integrated Ace with proper polling and retry logic, set up BigQuery for caching Ace results and storing comic stories. Added per-user Geotab authentication. By end of day the app was running on Google Cloud Run.

Stage 3: Added Fleet Pulse dashboard, vehicle intelligence cards, next-stop prediction, location dossiers, Street View, text-to-speech narration, PDF export, and a natural-language AI assistant. Zero to production in a matter of days.

What Vibe Coding Actually Felt Like

There's a version of vibe coding that's just autocomplete. This wasn't that.

The meaningful parts were the decisions that couldn't be delegated:

  • Recognizing that Ace's 30–90 second latency would kill the stop-click experience — and designing a two-phase briefing that makes Phase 1 feel instant
  • Figuring out that Geotab uses x for longitude and y for latitude, and centralizing that normalization before it could infect every component
  • Deciding that the LLM is never the source of truth for coordinates, distances, or fleet data — it only generates narrative from structured inputs
  • Choosing withFallback() as a universal wrapper so the demo could survive a network outage at the presentation

The agents wrote the code. I wrote the architecture, the constraints, the prompt engineering, and the integration rules. The interesting part of the journey wasn't the typing — it was the thinking.

What I'd Tell Someone Starting Now

  1. Start with a spec, not a scaffold. The time spent on MY_PROJECT.md before writing a line of code paid back tenfold.
  2. Design for demo reliability first. Every API route wrapped with a fallback. The live demo can fail gracefully without anyone noticing.
  3. Treat the AI like a junior engineer, not a magic box. The agents needed boundaries: file ownership, interface contracts, explicit rules about which APIs handle which data.
  4. The “wow moment” is worth protecting. The stop-click → context briefing flow was the single interaction worth fighting for. When scope creep threatened the timeline, asking “does this protect the wow moment?” was the right filter.
  5. Vibe coding doesn't mean low standards. It means high velocity. The AI handles the boilerplate so you can spend your limited time on the parts that actually matter.

Credits

Acknowledgements

Built for the Geotab Vibe Coding Competition, Feb–Mar 2026.

Thanks to the Geotab team for the Direct API, Ace, and the competition brief that sparked the idea. Thanks to Google Cloud for Vertex AI, BigQuery, Cloud TTS, and Cloud Run. Thanks to Anthropic and OpenAI as fallback LLM providers. Thanks to the open-source ecosystem: Next.js, Tailwind CSS, shadcn/ui, Leaflet, jsPDF, and Radix UI.

Special thanks to Cursor and Claude for being genuinely useful collaborators — not autocomplete, but thinking partners.

FleetHappens · The real product was the process.