Why I built it
Good award seats and cheap fares come and go, and checking a dozen dates across a few airline programs every day isn’t realistic. The alert tools I tried were either silent or so noisy I muted them. I wanted something that watches the exact trips I care about and only alerts me when a price is worth acting on.
How it works
You save a “watch”: a route, a range of dates, a cabin, which mileage programs to check, and optional target prices. Round trips are set as a trip length (say, nine days) instead of a fixed return date, so watching a range of departure dates doesn’t cost extra requests.
It plans its requests around each data source. Award prices come back for a whole date range in one call. Cash fares have to be fetched one date at a time, so it paces itself to one request every three seconds and makes cash tracking optional. Requests go one after another on purpose, because one source rejects requests made at the same time.
Under the hood it’s a small FastAPI app with a SQLite database, a scheduler for polling and a weekly summary, and a plain HTML and JavaScript front end.
The rules
The alerts follow four rules, which I wrote down before writing any code:
- A new watch stays quiet at first. It just records prices, so you don’t get an alert for every date at once.
- A new all-time low always alerts. These are rare, so I always want to hear about them.
- Hitting your target price alerts once, not again on every check while it stays low.
- Ordinary drops are limited to one alert a day, so a price that slides a little each time doesn’t flood you.
The rules live in one function that doesn’t depend on the clock or the database, which makes each one easy to test on its own. The full suite has 225 tests, and none of them need an internet connection.
What I learned
The first version was a Discord bot with a lot of features. After using it for a while, I realized I only needed a few watches and alerts I could trust. So I rebuilt it as a small web app. I kept the code that talks to the fare sources and rewrote the core around those four rules.