Trust, built in
How we calculate everything.
The points and miles community has been burned more than once by tools that confidently showed numbers they couldn't back up. We don't. Every value you see in MileIntel has a source, a freshness timestamp, and — for predictions — a confidence band. Here's exactly how each one works.
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.
We do not use a generative model for routing recommendations because hallucinated routes are uniquely expensive in points/miles — a bad routing tip can cost a real aspirational redemption. When we can't be sure, we say so rather than guess.
Delay prediction
Delay risk combines four signals: historical on-time performance for the operating carrier and route, current weather at origin/destination, congestion at the origin terminal, and turnaround 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
Live flight status: Duffel, Amadeus, OpenSky, AeroDataBox, FAA System Operations Center.
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.