Product & feature status

The feature set, as built

A category-by-category rundown of what the agent actually does and how it's delivered β€” no roadmap items, no aspirational copy. The one thing not fully closed out is called out explicitly below.

πŸ’°

Smart Date, Budget & Accommodation Optimization

5 features
🌀️
Seasonality awareness

The system prompt drives seasonality reasoning with the current date injected; the agent verifies crowd and weather peaks via grounded web search and surfaces them as scenario highlights.

πŸ“…
Date recommendations

find_cheapest_dates samples a whole month with concurrent flex-window searches and renders the cheapest windows in the dates card.

πŸ’Έ
Live price integration

Structured flight prices from the Kiwi.com MCP (no API key) and lodging from SerpApi Google Hotels; grounded web search is the universal price fallback. A deterministic mock mode (MCP_MODE=mock) protects the SerpApi quota in dev.

🧾
Comprehensive cost tracking

CostBreakdown gives transportation and accommodation subtotals plus a grand total; the scenario tool recomputes totals from parts so numbers always add up.

🏨
Hotel availability checking

Live hotels/rentals for the exact stay dates with nightly + total rates, ratings, amenities, and booking links; min_rating / max_price honor taste and budget.

Phase 6
πŸš†

Intelligent Transportation Logistics

5 features
🚒
Multi-modal transport

Legs support flight, train, bus, ferry, and car; search_ground_transport provides grounded routing (operators, times, duration, fares) for non-flight legs.

Phase 7
🎯
Convenience filtering

direct_flights_only and preferred transit modes are gathered once and honored by every flight search.

πŸ”—
Detailed route sequencing

Ground legs are sequenced after flights with the onward departure aligned to arrival plus a realistic transfer buffer; tight and overnight connections are flagged.

Phase 7
❓
User preference gathering

The agent asks one focused question at a time through the interactive clarifying-question card (options + free-text "Other"), then persists preferences. Baselines are editable up-front in settings.

Phase 10
⏱️
Transit synchronization

Connection buffers are enforced in the system prompt; risky connections surface in stress factors and timeline chips.

Phase 7
βš–οΈ

Scenario Comparison & Scoring

2 features
πŸ—‚οΈ
Side-by-side scenario generation

generate_scenarios renders 2–3 cards side-by-side with best-value and lowest-stress badges. Input validation enforces 2–3 scenarios and a complete day-by-day plan.

Phase 5
😌
Qualitative stress scoring

A 1–5 stress score backed by structured factors (layovers, overnight travel, tight connections, total hours), shown as a 5-pip gauge from Relaxed to Intense.

🧭

Activity & Destination Discovery

3 features
✨
Vibe-based recommendations

The agent learns the desired vibe through clarifying questions and stores vibe tags in preferences.

βœ‹
Manual overrides

"I already have flights" β†’ the agent skips that data tool, zeroes its cost, and plans only the rest, honoring scope limits and hard constraints (system-prompt directive 9).

Phase 10
πŸ”
Iterative refinement

Refine one scenario by its label ("make Scenario B direct-only") β€” the tool is re-called once with the full set, carrying the others over unchanged.

Phase 10
πŸ–₯️

User Interface & Output Formats

7 features
πŸƒ
Visual & textual summaries

Conversational text plus generative-UI cards for preferences, clarifying questions, flights, dates, accommodations, research, ground transport, and scenario comparison.

πŸ–ΌοΈ
Trip vibe background image

A fire-and-forget sub-agent turns the conversation + vibe tags into a scene and renders it with a Gemini image model once a destination is known; fades in behind the sidebar row and the scenario-detail header. Optional (BACKGROUND_IMAGE_ENABLED).

πŸ“‹
Detailed views & tables

The scenario detail modal shows the cost breakdown, stress factors, per-direction travel timeline, accommodation list, and an expandable day-by-day itinerary with Expand-all/Collapse-all.

Phase 5+10
πŸ™‹
Interactive clarifying questions

A human-in-the-loop card pauses the run with concrete option buttons plus an always-present free-text field, then resumes with the answer (which rehydrates on reload).

Phase 10
πŸ’«
Streaming UX polish

Animated candy search-progress pills, a styled collapsible reasoning bubble, shimmer skeletons, and rose-tinted error cards plus a dismissible run-failure toast.

Phase 9
πŸ“±
Responsive design

Desktop keeps the 3-pane split; on smaller screens the chat is full-width, the sidebar becomes an off-canvas drawer, and modals become bottom-sheets.

Phase 10
πŸ—ΊοΈ
Interactive map

A persistent split-panel plots the active scenario's route: numbered stops, stay markers, and mode-colored legs with auto-fit bounds.

Phase 8
🧠

Session Management & Memory

4 features
πŸ”„
Iterative workflow

The agent runs each turn and appends to persisted history β€” feedback loops in naturally.

πŸ’Ύ
Trip-specific memory

Full AG-UI message history is persisted per trip, so generative-UI cards rehydrate exactly as they were when you resume from the sidebar.

Phase 3
πŸ‘€
Global user profile

A singleton profile persists preferences across trips and loads as the baseline each run; the gear-button settings modal edits it directly.

Phase 3+10
πŸ”–
Saved scenarios

"Save this trip" bookmarks a scenario; the Saved tab lists and reopens them β€” even after the original conversation is deleted.

πŸ“‘

Observability & Quality

3 areas
πŸ”­
Agent tracing

Langfuse v4 / OpenTelemetry traces every PydanticAI run β€” LLM requests, tool calls, inputs and outputs β€” grouped per trip thread; a silent no-op when keys are absent.

πŸ§ͺ
Automated tests

Backend pytest (domain, DI, persistence, agent, REST routes on an isolated DB), frontend Vitest unit tests, and Playwright e2e specs for API, persistence, saved scenarios, and settings.

Phase 10
🧭
LLM agent eval suite

A 30-case golden dataset run headless against the real agent with deterministic fakes for flights/hotels/research; 10 evaluators (7 deterministic + 3 LLM-as-judge) score tool selection, constraint adherence, anti-fabrication, HITL behavior, and vibe/recommendation quality, plus a live dashboard. See evals.html.

Mostly implemented