The challenge
Arjun Verma was a third-time founder pitching SafarFlight to three Indian VCs on a Tuesday. His thesis: B2B travel booking for India's 250,000+ small travel agencies was still being done on WhatsApp and Excel, and a clean booking flow with proper fare-holds and accounting integration would dominate the segment.
He had a deck, wireframes, and a Notion doc with notes from twelve agent interviews. The VCs wanted a working product before they'd commit.
He gave us seven working days, three constraints, and his agency interview transcripts:
- The demo had to use a real GDS, not a mock. A travel-tech demo that doesn't surface real fares is the equivalent of a fintech demo with fake money. Amadeus was the call.
- The booking had to actually book. A real PNR (Passenger Name Record) had to be issued during the demo. The investors knew enough to spot a fake confirmation screen.
- It had to work on Tuesday at 11 AM IST. Not a beta build, not a "it works on my laptop", not a fall-back static page. A live booking, performed live.
How we approached it
A two-engineer pod paired with our QA lead and a Hashorn PM. We worked in 24-hour cycles — Bengaluru-aligned hours for engineering, with the QA lead picking up the build for testing during evening hours.
Day one was scope-and-kill. We took Arjun's twelve-feature list and cut to four: flight search, fare-hold, booking confirmation, PDF voucher. Everything else — agent management, accounting export, multi-passenger groups, fare-rule explanations — got deferred to post-pitch. He bought it because we could show him the demo path on paper.
Amadeus's sandbox keys came through on day one. We pre-loaded the eight routes the investors were likely to test (BLR-DEL, DEL-BOM, BOM-DXB, etc.) and cached the fare data so the live search call would be sub-second on stage.
What we shipped
Day 1 — Scope, kickoff, Amadeus access. Arjun's twelve-feature list trimmed to four. Amadeus sandbox credentials provisioned. One-page brief signed by 6 PM IST. Risk register locked.
Day 2 — Auth + search shell. Magic-link auth (via Resend), agency profile schema, and the Next.js search UI hitting Amadeus's sandbox. By EOD the team could enter "BLR to DEL on May 15" and see real fares come back.
Day 3 — Results + filtering. Stops/time/airline filters, seat-class selection, per-passenger pricing breakdown. Five-minute fare cache (Postgres-backed) so the same search wouldn't hammer Amadeus and so the demo would stay snappy.
Day 4 — Booking flow + payment. Passenger data capture, Amadeus fare-hold creation (15-minute hold window), Stripe payment intent generation, and the idempotent confirmation path. First real fare-hold confirmed in sandbox at 2 PM.
Day 5 — PNR + voucher. Payment success triggers Amadeus PNR creation, server-side PDF voucher generation (with proper fare rules, baggage info, and agency branding), and Resend emails to both the agent and the passenger. First end-to-end booking with a real PNR completed.
Day 6 — Hardening + load test. Playwright suite covering 12 critical paths. k6 load-test with 50 concurrent agents kept the search API under 800ms p95. A real travel agent (Arjun's friend) ran a booking and signed off on the voucher format.
Day 7 — Demo and pitch. Three full dress rehearsals Monday. Tuesday 10:50 AM: live test booking on a BOM-DXB route confirmed the demo path was hot. 11 AM: Arjun pitched. 11:35 AM: live demo with a real PNR. 12 PM: investors agreed terms verbally; written term sheet by Thursday.
The outcome
- Seven working days from Notion doc to working B2B booking platform with a real GDS integration.
- Live PNR demoed during the pitch — investors verified the confirmation independently via Amadeus's check-PNR endpoint right there.
- Pre-seed round closed within 14 days of the pitch.
- Zero critical defects at demo time. The seat-map rendering had a Safari-specific bug we'd caught on day six and shipped a fix for at 8 AM Tuesday.
- The four-feature scope held. SafarFlight launched publicly six weeks later with the same architecture; we extended the pod for three more months to ship the rest.
What we'd repeat
The scope-kill on day one was the single highest-leverage decision of the week. Arjun's twelve-feature list looked tight to him; cutting to four felt brutal but turned the next six days from "we hope we ship" into "we know exactly what's done by Friday". Investors don't need agent management on day one — they need a working booking.
The other lesson: make the demo path the hardest path you build. The booking-and-PNR flow was the riskiest thing on the list. We built it on day four and five so we had two full days to harden it before the pitch. Easy stuff like profile pages and filters slotted in around the hard core. If we'd done it the other way around — easy stuff first, hard stuff at the end — the pitch would have happened on a half-tested booking flow.