Method
How the Price Hash Score works
A Price Hash Score is a 0–100 rating of how good one specific fare is, judged against the recorded price history of that exact route, departure month and booking window. 90 or above means book it now.
What the score is calculated from
Two components, weighted, both drawn from fares we have recorded ourselves. Nothing in the score comes from an opinion, a partner, or a model’s judgement.
| Component | Weight | What it measures |
|---|---|---|
| Historical position | 70% | Where this fare sits in the distribution of prices for the same cell |
| Time to departure | 30% | How far you are from the point where this route’s fares start climbing |
What price we are quoting
The figure in an alert is the lowest fare we have seen for those dates. Bags and seat selection are extra, so a basic economy fare with a checked bag added can cost more than a slightly higher fare that includes one — see whether basic economy is actually cheaper.
That does not distort the score, because the comparison is like for like: today’s lowest fare against the lowest fares recorded in the same cell. But the number in the email is where your price starts rather than where it ends, and we would rather say so here than have you discover it at checkout.
What a “cell” is, and why it is narrow
Every fare we record is filed against the route, the departure month, how far ahead of departure it was seen, and whether it is a one-way or a round trip. A new price is only ever compared against other prices from that same combination — a round trip is not simply two one-ways, as round trip versus two one-way tickets explains.
That is deliberately narrow. A fare 90 days out in March is not comparable to one 5 days out in November, and comparing them produces a confident number that means nothing. Most price claims you will read compare against a much broader average, which is why almost everything looks like a deal — more on that in what “26% below typical” means.
Narrow cells are also why the score covers flights only. See why we don’t score hotels or vacation packages.
When we refuse to produce a score
Below 20 recorded fares in a cell there is no score at all. Between 20 and 59 a score exists but no alert is ever sent. Only at 60 or more will we spend an email on it.
A missed alert costs one opportunity. A misleading alert costs every future email.
Those thresholds are provisional and we are calibrating them against real open rates. When they change, we will say so in the field notes — the reasoning behind them today is in why we refuse to score 40% of the routes people ask us to watch.
What the AI does, and what it is not allowed to do
A language model writes the one-paragraph explanation in each alert. It is handed a fixed set of numbers computed beforehand and asked to turn them into readable English.
After it writes, every number in the output is extracted and checked against those supplied facts. Any figure that does not match rejects the whole paragraph; we retry once, then fall back to a sentence assembled directly from the data. An unvalidated explanation is never sent. The model never produces, adjusts, or infers a score, a price, or a threshold.
Why commissions cannot affect your score
We may earn a small referral fee when you book through a link in an alert. The code that computes scores has no access to that data — not as a policy, but as a structural boundary: the scoring module cannot import anything that can see partner payouts, and a test fails the build if that boundary is ever crossed.
It cannot rank by commission because it cannot observe commission. That is the only version of this promise worth making.
Common questions
Is the Price Hash Score generated by AI?
No. The Price Hash Score is computed by deterministic code from recorded fare data. A language model is used only to write the sentence explaining the score in plain English, and every number it writes is checked against the source data before the email is sent.
What score means I should book?
90 or above means book now. Between 80 and 89 the fare is good but not exceptional. Below 80 we do not send an alert at all on the free tier.
How much price history does PriceHash need before it can score a route?
At least 20 recorded fares in a route, departure-month and booking-window cell before any score is produced, and at least 60 before an alert is sent. Below those thresholds PriceHash produces no score rather than an unreliable one.
Is the price in a PriceHash alert the final price?
No. It is the lowest fare seen for those dates, and bags and seat selection cost extra. The score compares that lowest fare against the lowest fares recorded for the same route, month and booking window, so the comparison is like for like — but the figure in the email is where the price starts, not a final total.
Does PriceHash predict future flight prices?
No. PriceHash describes what a route has historically done and where the current fare sits in that history. It does not forecast future prices, and the alert copy never claims to.