Redirect
An autonomous passenger recovery agent that turns flight chaos into calm.
Inspiration
It started with a missed connection in Charlotte.
One of our team members' friends was stranded in Charlotte after a two-hour tarmac delay cascaded into a canceled onward flight. The gate agent line stretched around the terminal. The airline app offered a single, suboptimal rebooking with no explanation. Hundreds of passengers were all racing to find alternatives at the same time — opening multiple browser tabs, calling customer service, comparing prices on Google Flights — all while their window to get home was closing.
That experience crystallized a deceptively simple question: why does the passenger have to do any of this manually?
Airlines know your itinerary. They know when a flight is disrupted. They have access to alternatives. Yet the recovery workflow is pushed entirely onto the traveler — at the worst possible moment, under the worst possible conditions. We wanted to fix that.
What It Does
Redirect is an autonomous flight disruption recovery agent. When a traveler's plans fall apart, Redirect takes over.
A user enters their trip details — origin, destination, travel date, number of passengers — along with personal preferences:
- Maximum acceptable price
- Preferred airline
- Cabin class
- Maximum number of stops
- Priority weighting: time vs. cost vs. balance
Redirect then autonomously navigates live flight search portals, scrapes and normalizes available alternatives, and returns a ranked list of FlightOption results — each tagged with meaningful badges like best-price, fastest-arrival, or balanced-choice.
The full user journey is:
$$\text{Trip Details} \xrightarrow{\text{/run}} \text{Live Search} \xrightarrow{\text{/results}} \text{Ranked Options} \xrightarrow{\text{/results/[id]}} \text{Flight Detail}$$
The goal: reduce rebooking time from tens of minutes to under 2 minutes, with zero manual searching required.
How We Built It
Redirect is a full-stack application built on two tightly coupled services.
Frontend — Next.js Web App
We built a clean, multi-step web UI in Next.js that walks the traveler through a guided flow. The interface collects both hard constraints (origin, destination, date) and soft preferences (airline, cabin, priority weighting), then streams the user through live search progress and ranked results.
Each result card surfaces the information that actually matters under stress: price, total duration, number of stops, departure and arrival times — with preference-matched badges surfaced front and center.
Backend — Python FastAPI + Nova Act
The intelligence lives in a Python FastAPI service. When the frontend calls POST /search, the backend spins up a Nova Act browser automation session that:
- Opens a live flight search portal
- Inputs the traveler's trip parameters
- Waits for results to load and scrapes the page
- Normalizes raw flight data into structured
FlightOptionobjects
Each FlightOption contains:
airline, departure_time, arrival_time, origin, destination,
duration_minutes, stops, price_usd, badges[], layovers[], aircraft, booking_url
Challenges We Ran Into
1. Browser automation reliability. Nova Act is powerful, but real flight search pages are dynamic, ad-heavy, and structurally inconsistent. Selectors break. Pages load at variable speeds. We spent significant time building resilient wait conditions and fallback scraping strategies to handle the unpredictability of live web portals.
2. Data normalization across sources. Every flight search site formats results differently — duration as "2h 14m", as raw minutes, as ISO 8601 intervals. Building a robust normalization layer that could handle all formats without silent errors was painstaking work.
3. Ranking under uncertainty. Users rarely know exactly what they want — they say "balance time and cost" but mean different things. Tuning the scoring function to feel right across different traveler profiles required iteration and user testing, not just math.
4. Latency. Autonomous browser sessions take time. Keeping the user informed during a 30–60 second live search — so the experience feels fast even when it isn't — required thoughtful UX design on the /run progress screen.
Accomplishments That We're Proud Of
- End-to-end automation that actually works — Nova Act successfully navigating a live flight portal, end-to-end, without human input, is genuinely impressive to watch.
- Preference-aware ranking — the system surfaces meaningfully different results depending on whether you're a road warrior optimizing for arrival time or a leisure traveler watching their budget.
- Clean, stress-reducing UI — we designed the interface specifically for someone who is already anxious. No clutter. No jargon. Just options and a clear path forward.
- Structured flight data model — our
FlightOptionschema is clean and extensible enough that it could power a real production rebooking system.
What We Learned
- Agentic systems are only as good as their error handling. An agent that silently fails is worse than no agent at all. We learned to build defensively — validate every scraped field, surface failures gracefully, never let the UI hang.
- User constraints are the product. The preference system — time vs. cost vs. balance — turned out to be the most valuable part of the experience. Travelers don't want a flight; they want their flight. Encoding that intent is the whole job.
- Nova Act unlocks a new class of applications. Browser automation has existed for years, but Nova Act's agent-native design makes it practical to build reliable, maintainable automations against sites that were never meant to be automated. That's a big deal.
- Stress context changes UX requirements. Designing for a disrupted traveler is different from designing for a calm one. Information hierarchy, loading states, and confidence signals all matter more when the user is under pressure.
What's Next for Redirect
The current MVP proves the core loop: detect preferences → automate search → rank options. The natural next steps are:
True disruption detection — integrate with airline APIs or push notification hooks so Redirect activates automatically when a flight is canceled, without waiting for the user to open the app.
One-click rebooking via Nova Act — extend the automation beyond search to complete the full rebooking form on the airline portal, including seat selection and payment (with stored traveler preferences).
Multimodal boarding pass parsing — let travelers photograph their boarding pass to pre-fill trip details, using vision models to extract flight number, date, and passenger info.
Corporate travel integrations — surface Redirect as a tool for travel management companies and airline CX teams, where the ROI on automated recovery is highest.
Real-time price optimization — monitor prices post-disruption and alert the traveler if a better option opens up after initial rebooking.
The long-term vision: a travel agent that works for you, autonomously, the moment something goes wrong — so you can focus on getting where you're going.
Built With
- fastapi
- next.js
- node.js
- nova-act
- pydantic
- python
- radix
- react
- shadcn
- tailwind
- typescript
- uvicorn
Log in or sign up for Devpost to join the conversation.