Turning forwarded confirmation emails into a trip timeline is now mostly a language-model job: an agent can build the mailbox watcher, the parser with a schema check, a day-by-day page and a calendar feed in a weekend, and the parsing is better than it used to be. What TripIt sells beyond that is live data: flight status, gate changes and rebooking options come from paid feeds, and a phone that wakes you with a push is a native app. You can get alerts for your own flights with a flight API and ntfy, but airport navigation, fare tracking and seat tracking stay behind.
Before you buildTripIt Free already turns forwarded emails into itineraries and syncs them to your calendar. Pro's $49 a year is for the alerts, so build this only if you want the itinerary data on your own machine.
Build me a personal trip organiser that reads my booking emails, to replace TripIt Pro. Requirements: - Node.js 22 + TypeScript: a Fastify server with server-rendered pages (Eta) and a little vanilla JS, laid out for a phone screen. `npm start` serves http://127.0.0.1:4960. - Storage: better-sqlite3 in ./data/trips.db: trips, and items (flight, hotel, car, train, activity) with local start and end times plus an IANA zone, the raw email, the parsed JSON and a status of needs-review or confirmed. - Intake: `imapflow` checks one mailbox folder called Trips every 5 minutes (IMAP_HOST, IMAP_USER and IMAP_PASSWORD in .env, an app password). I forward confirmations there; read the body and the first PDF (`unpdf`). - Parsing: send the email text to an OpenAI-compatible chat endpoint (LLM_BASE_URL, LLM_MODEL, LLM_API_KEY in .env; a local Ollama URL must work) and ask for JSON that matches a `zod` schema. Anything that fails validation goes under "Could not read". Show each parsed item beside its source email so I can check and edit it. - Times: airports from the OurAirports CSV downloaded once into ./data/, zones from `tz-lookup`, dates with `luxon`. A flight shows departure and arrival in each airport's local time, plus the duration. - Trips: group items whose dates fall within 2 days of each other; a trip page with a day-by-day timeline, confirmation numbers one tap away, and a print view. - Calendar: a read-only .ics feed at /calendar/<CALENDAR_TOKEN>.ics (`ics` package) for my phone calendar. - Flight alerts: a FlightStatusProvider interface with one implementation (AeroDataBox through RapidAPI, key in .env). Poll only flights departing within 24 hours, at most every 15 minutes, and push through ntfy (NTFY_URL, NTFY_TOPIC) for delays of 15 minutes or more, gate or terminal changes and cancellations. Add a "leave now" push at departure minus a home-to-airport time and a buffer that I set on a settings page. - Single user. No accounts, no telemetry, local-first. Outbound calls: IMAP, my LLM endpoint, the flight API, ntfy. - Out of scope: seat and fare tracking, airport maps, loyalty points, sharing, native apps, Gmail or Outlook sync. - README: creating the IMAP app password and a forwarding rule, running Ollama instead of a hosted model, how to reach the calendar feed from a phone, and a note that email text goes to whichever LLM you configure.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own TripIt Pro.
Make the trip organiser in this folder work offline. Requirements: - Add a service worker that caches the trip pages for trips starting within 14 days, plus their documents, and serves them when the network is down. - Add a web app manifest so the site can be installed on a phone; show a "last updated" time on each trip page and an offline badge when the cached copy is in use. - Let me upload up to 25 documents per trip (PDF, PNG, JPEG) such as boarding passes and tickets, stored in ./data/docs/ and cached with the trip. - Never cache the settings page or the .ics feed. - Update the README with the HTTPS requirement for service workers and a tunnel example.
Add read-only trip sharing to the trip organiser in this folder. Requirements: - A Share button on each trip that creates a random 32-byte link token stored hashed, with an expiry date I choose and a revoke button. - The shared page shows the timeline with dates, places and times, and hides confirmation numbers, documents, email sources and the edit controls. - Rate-limit the shared route and log each view with a timestamp and a truncated IP. - Serve shared pages on a second port (SHARE_PORT in .env) so I can expose only that one. - Update the README with how to expose that port through a tunnel.
Add document expiry reminders to the trip organiser in this folder. Requirements: - A page where I store passports, visas and ID cards: holder, country, number (encrypted in SQLite with a key from .env), issue and expiry dates. - For each upcoming trip, warn when a passport expires within 6 months of the return date, and show the warning on the trip page and as an ntfy push 60 and 14 days before departure. - A yearly summary of what expires in the next 12 months. - Never include document numbers in logs, pushes or the .ics feed. - Update the README with the encryption key setup and a backup note.
Frequent flyers pay $49 a year for the part that works while they are in a taxi: a heads-up that the gate moved or the flight is late, and a better seat if one opens. The itinerary itself is free; the alerts are what justify the subscription.
Estimate · Parsing costs cents per email on a hosted model, or nothing on a local one. A flight-status API is the only recurring cost, and its free tier may be enough for a few trips a year. The build is token usage on your agent plan.
Checked 2026-10-19 against TripIt Pro's docs: 1, 2, 3, 4, 5, 6
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | Itineraries from forwarded confirmation emails, inbox import, calendar sync, sharing, airport maps, flight compensation check, carbon and travel stats, 3 documents per trip. |
| Pro | — | $4.08 | Everything in Free plus real-time flight alerts, fare refund monitoring, seat tracker, alternate flights, check-in and Go Now reminders, terminal and gate alerts, airport navigation, disruption alerts, reward point tracking, 25 documents per trip. |
Free builds itineraries from forwarded emails, syncs them to your calendar and holds 3 documents per trip.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Parsers tuned on thousands of airlines, hotels and booking sites, so odd emails fail, Real-time flight alerts without running and paying for your own data feed.
About $4.08 a month on the Pro plan, $48.96 a year (checked 2026-10-19).
Parsers tuned on thousands of airlines, hotels and booking sites, so odd emails fail; Real-time flight alerts without running and paying for your own data feed; Seat tracker, fare tracker and airport navigation with walking directions; The iPhone and Android apps with offline itineraries and watch support; Reward-programme tracking and sharing your plans with other people. If any of those matter to you, keep paying.
Yes: TripIt Free (free), KDE Itinerary (open source), TREK (open source).