A phone-first app that keeps a family's frequent flyer numbers and known traveler numbers one tap away, built for the moment a points portal or workplace booking tool asks for loyalty numbers that live behind a different airline login for every traveler.
An airline's own app remembers your loyalty number. Everywhere else you book — credit card points portals like Chase Travel, workplace tools like Concur or Navan, any third-party travel site — asks you to type frequent flyer numbers and known traveler numbers from memory, for every traveler, every time.
For one business trip that is an annoyance. For a family of four, the real cost is retrieval: every number lives behind a different airline login for a different person, so each booking starts with signing into everyone's accounts — or digging through old confirmation emails — to pull out the same numbers yet again. FlyerDex exists so that retrieval happens exactly once.
Product Approach
FlyerDex is intentionally narrow. It is not a travel manager or a points tracker. It does one job: get the right number onto the clipboard in one tap. Tapping a row copies the full number, an airline filter turns the list into a booking mode for entering four people's numbers back to back, and numbers stay masked on screen until revealed.
The most important product decision was what the app does not have: no account, no server, no sync. Everything lives in the browser's local storage and never leaves the device. With data this personal, the fastest way to earn trust is to need none of it.
The interaction model follows one rule: one gesture, one job. A tap copies, a visible ellipsis edits. An earlier version hid editing behind a long press, and testing made the lesson obvious: an affordance nobody can see is an affordance that does not exist.
Even the install prompt is timed deliberately. The app suggests adding it to your home screen only after the first real number is saved — the moment someone becomes invested in keeping their data, and the moment it starts to matter, because installed web apps keep their local data while ordinary browser tabs can have it evicted after a week of disuse. Asking on first load would be noise. Asking after that first save is a fair trade the user can feel.
Build Notes
This was a deliberate exercise in an AI-assisted build pipeline: a detailed product spec fed to Lovable for the UI scaffold, then Claude Code for integration, bug fixing, PWA packaging, and automated browser testing before publishing here.
The generated code was strong but not finished. An automated review pass caught a long-press that also fired the copy action and a clipboard API that silently fails outside HTTPS. Using the app like a person caught the rest: editing hidden behind a long-press nobody would find, and a notes field that could be written but never displayed. The fluency that matters is not prompting the first draft, it is layering inspection — model review plus human use — before shipping.
This project was also my first test of Anthropic's new Fable 5 model in Claude Code. Fable 5 wrote the Lovable spec in a single pass, then carried the generated export to a shipped, tested app in essentially one more, leaving fit and finish. What stayed human was the product judgment: which gaps mattered, when to ask users to install, and what the app should refuse to store.
Home: each traveler's programs with real airline logos, masked numbers, and a KTN chip.One tap copies the full number, with a brand-color flash, checkmark, and confirmation toast.Booking mode: filter to one airline and copy every traveler's number top to bottom.
Where It Could Go
Future versions could support many more airlines than the dozen built in today, including custom programs for any carrier, plus hotel and rental car loyalty programs, passport details behind device biometrics, and import from airline confirmation emails. The constraint stays the same: nothing leaves the device.