Inspiration

Exploring a new place is more enjoyable when you understand what is around you, but constantly checking a map or searching landmarks breaks the flow. Flit was inspired by the idea of a friendly, voice-first companion that makes routes feel more personal, informative, and accessible.

What it does

Flit plans a route from a user’s current location to a chosen destination, then discovers notable places near that route, including landmarks, restaurants, stores, and hospitals.

Users can navigate, drive, run, or simulate the route on an interactive map. Flit narrates nearby places, shows photos and details, displays remaining distance and ETA, and supports natural voice commands. Users can also ask follow-up questions about places on their active route.

How we built it

We built Flit with React Router, React, Tailwind CSS, Leaflet, and Cloudflare Workers.

Google Places powers destination autocomplete, place discovery, photos, and details, while Google Routes provides walking and driving route geometry, distance, and duration. Gemini powers the route assistant, place narration, contextual chat, and Google Search grounding. Speech capabilities use configurable providers: ElevenLabs or Google for text-to-speech, and ElevenLabs or Groq for transcription.

Cloudflare D1 and Drizzle store users, route history, cached place information, and text-to-speech conversions. Generated audio is cached in R2 to avoid regenerating the same response.

Challenges we ran into

Voice interaction is much harder than adding a microphone button. We had to handle silence detection, background noise, playback interruption, continuous listening, and making sure a user’s next question is not lost after interrupting Flit.

We also worked through keeping route narration orderly when several places are close together, limiting discovery to places genuinely near the route, and ensuring the assistant only discusses places relevant to the user’s current journey.

Accomplishments that we're proud of

  • A voice-first route experience that supports interruptions naturally.
  • Route-aware place discovery with map indicators, photos, filters, and narration.
  • Contextual conversation that remembers recent exchanges.
  • Grounded place chat restricted to locations on the active route.
  • A persistent animated Flit guide that communicates listening, thinking, and speaking states.
  • Cached speech generation and stored place summaries to reduce repeated API work.
  • Route history that lets users quickly repeat previous journeys.

What we learned

We learned that strong agent experiences depend on state management as much as model quality. Keeping the current route, discovered places, conversation history, playback state, and voice state aligned is essential.

We also learned that voice UX needs deliberate safeguards: stable account-creation flows, typed passwords, validation for spoken emails, visible processing states, and reliable ways to recover when speech is unclear.

What's next for Flit: Your tour guide AI agent

Next, Flit can become a richer real-time travel companion: live GPS progress, smarter personalization based on place preferences, multi-language narration, accessibility-focused route guidance, saved tours, collaborative routes, and deeper verified place research.

The long-term goal is simple: turn any journey into a conversation with the city around you.

Built With

Share this project:

Updates