Wallet balances
Loyalty balances surfaced in your wallet come from two places. First, anything we parse out of your inbox — confirmations, statements, status emails, certificate notices. We parse with deterministic rules, not an LLM, so the same email always yields the same result.
Second, anything you typed in manually overrides parsed data. Manual values are flagged with a 'Manual entry' badge.
We refresh from Gmail at most once an hour per account, more often if you visit the dashboard. We do not screen-scrape airline websites; we do not store your airline passwords.
Upgrade probability
Probability is a heuristic score in [0,1], not a guarantee. Inputs we weight: your medallion/elite tier with the operating carrier, the booking class on your reservation, route premium-cabin density (e.g., transcon premium cabins vs short-haul Embraers), days until departure (peaks 24–72h out), holiday surge, and historical clearance rates for the route.
Confidence band — low, medium, or high — reflects how much signal we have. A first-time route at off-peak with average status is low confidence. A frequent route with two upgrade certs and Diamond status is high confidence.
We do not call any airline systems in real time. Until you book a flight we don't watch, we use route averages.
Deal detection
We use an Isolation Forest model trained on per-route price history. A finding is generated when today's lowest fare is statistically anomalous against the trailing 90-day distribution for that route + cabin.
Delay prediction
Delay risk combines four signals:
- 01Historical on-time performance for the operating carrier and route
- 02Current weather at origin/destination
- 03Congestion at the origin terminal
- 04Turnaround risk (the inbound aircraft's punctuality)
We surface 'low / medium / high' rather than a precise minute estimate because the noise floor on delay timing is large even with perfect inputs.
External data sources
| Data | Where it comes from |
|---|---|
| Live flight status | |
| Weather | Provider-specific forecasts cached up to one hour. |
| Award availability | A mix of operator APIs (where we have a partnership) and seeded snapshots (clearly badged 'Seed data — not live') for early-stage tools. We do not scrape. |
| Loyalty programs | Data is extracted from your inbox via Gmail OAuth read-only scope. The raw email body is discarded after extraction. |
The freshness badge
Anywhere you see a 'Updated N min ago via …' badge, that's the actual provenance of the number you're looking at. We require every customer-facing metric to be sourced and timestamped. If the badge says 'Seed data', it means the underlying value is illustrative, not live, and we should not be making decisions on it yet.
If a number cannot be sourced, we don't show it.
