Anja Gutierrez
Case study

Tour Route Planner

Iconic Pathways — AI road-trip planning that asks a question instead of guessing.

React 18TypeScriptViteFirebase AuthFirestoreLeafletGemini Vision
5Confidence-scored fields
60%Clarification threshold
3Persistence modes
ARTrail scanning

What it is

A road-trip planner built around one interaction: you type “3-day coastal trip from LA” and get a real itinerary with waypoints, attractions, charging stops, and camping spots.

Around that sits interactive mapping, route optimization, drag-and-drop itinerary editing, Firebase Auth, a voice assistant for hands-free navigation, and a PathScanner AR feature that analyzes a trail in real time using the device camera, GPS, and Gemini Vision.

The design problem

Natural-language trip planning fails in a specific way: the parser extracts something plausible, the app commits to it, and the user gets a confident itinerary for the wrong place. A single overall confidence score doesn't help either — knowing a prompt is “62% understood” tells you nothing about which part to ask about.

So every field is scored on its own, and the app only asks about the fields that actually came out weak. Confident destination but vague duration? One question about duration. Nothing else.

The code

Pulled straight from the production codebase — unedited except for trimming.

src/utils/promptParser.ts typescript
Per-field confidence, then targeted clarification. Each extracted field carries its own score, and anything below 0.6 generates a question with concrete suggestions attached — the suggestions matter, because an open question about “interests” gets a worse answer than five tappable options. The result is a planner that degrades into a short conversation instead of a wrong answer.
  // Generate clarifying questions when confidence is low
  static generateClarificationQuestions(parsed: ParsedPreferences): ClarificationQuestion[] {
    const questions: ClarificationQuestion[] = [];
    const threshold = 0.6; // Ask for clarification below 60% confidence

    if (parsed.confidence.destination < threshold) {
      questions.push({
        field: 'destination',
        question: "Where would you like to go? I wasn't sure about the destination.",
        suggestions: ['California', 'Pacific Northwest', 'New England', 'Southwest USA', 'Florida'],
        priority: 'high'
      });
    }

    if (parsed.confidence.duration < threshold) {
      questions.push({
        field: 'duration',
        question: "How many days do you have for this trip?",
        suggestions: ['2-3 days (weekend)', '4-6 days (long trip)', '7+ days (extended journey)'],
        priority: 'high'
      });
    }

    if (parsed.confidence.interests < threshold) {

Screens

From the running application.

Tour Route Planner dashboard with an active trip
Trip dashboard — active route, itinerary, and map.

Want to see more of this one?

The repository is private, but I'm glad to walk through the codebase live — architecture, tradeoffs, the parts that went wrong first.