Vola: The Proof You Need When Your Flight Goes Wrong

When a flight is badly delayed or a suitcase arrives damaged, the law often entitles you to compensation. But airlines ask for proof, and most travelers do not have it. Vola collects that proof for you while the problem is happening, and packages it into one document you can send to the airline.


The Problem

Passenger-rights laws are generous. In Europe, a flight delayed by three hours or more can be worth between €250 and €600 per passenger, and an international treaty called the Montreal Convention makes airlines responsible for damaged luggage.

Yet most people never claim, and many who do are turned down. The reason is almost always the same: they cannot prove what happened.

  • The suitcase was never photographed before the flight, so the airline says the dent was already there.
  • Nobody wrote down when the plane's doors actually opened, and that exact moment is what the law uses to measure a delay.
  • Nobody knew the complaint for a damaged bag has to be filed within 7 days.

Vola solves this by recording the evidence at the moment it matters, instead of asking you to piece it together afterward.


What Vola Does

It tracks your flight and measures the delay carefully. Vola follows your flight from three hours before departure until it lands. Every possible arrival time is saved along with where it came from, such as the gate system, runway data or your own entry, and the most trustworthy source wins. If the result is too close to the 3-hour line to call confidently, Vola says "Needs review" instead of guessing.

It documents damaged luggage. You photograph your bag before and after the flight. Vola compares the two photos right in your browser, so your pictures are never uploaded, and highlights the spots that look different. You confirm or dismiss each one. Your original photos are stored untouched, with a digital fingerprint that proves they were not edited.

It checks which rules apply to you. Vola estimates what you may be owed under four sets of rules: EU261 (Europe), UK261 (United Kingdom), US Department of Transportation rules, and the Montreal Convention (baggage). It also counts down your deadlines and sends reminders.

It predicts delays before they happen. A feature called Flight Ripple forecasts how late your flight might be. It combines what other passengers on your flight report, whether the plane arriving before yours is running late, and a trained prediction model. Every forecast states how it was produced and what information was missing.

It builds your claim. With one tap you get a PDF evidence packet and a ZIP file of your original photos. The claim letter uses only facts Vola recorded, and anything unknown is left as a highlighted blank for you to fill in.

You can try it without signing up. The Demo Center replays six clearly labelled, simulated scenarios using the real algorithms, so anyone can see how it works in a few minutes.

Vola helps you document your case. It is not legal advice, and it never contacts an airline on your behalf.


How the Math Works

Vola is built around five calculations. For each one, here is the idea in plain language, then the formula, then an example.

1. How far did you fly?

The idea. In Europe, how much you can claim depends on the flight distance. Distance is measured as the shortest path across the Earth's curved surface, not a straight line on a flat map.

The formula. This is called the haversine formula. Here φ means latitude, λ means longitude, and R is the Earth's radius.

h = sin²(Δφ / 2) + cos φ₁ · cos φ₂ · sin²(Δλ / 2)

d = 2R · arcsin( min(1, √h) ), where R = 6371.0088 km

What the distance means for your payout:

d ≤ 1500 km: €250

1500 km < d ≤ 3500 km: €400

d > 3500 km: €600

Example. New York to London is about 5,540 km, so it falls in the top tier of €600.

2. Will a late plane make my flight late?

The idea. Planes fly several trips a day. If the plane meant for your flight arrives late from its previous trip, it may not be ready to leave on time. The question is whether the time left on the ground is enough for the crew to clean, refuel and reload.

The formula. G is the scheduled time the plane sits on the ground. Dᵢₙ is how late it arrives. T is how long the turnaround normally takes.

remaining = G − Dᵢₙ

knock-on delay = max(0, T − remaining)

In plain words: if the time left is shorter than the time needed, the shortfall becomes your delay. If there is enough time, the delay disappears.

Why it is honest. Nobody knows these numbers exactly, so Vola uses a low, mid and high estimate for each and carries all three through the calculation:

remaining(low) = G − Dᵢₙ(high)

remaining(high) = G − Dᵢₙ(low)

knock-on(low) = max(0, T(low) − remaining(high))

knock-on(high) = max(0, T(high) − remaining(low))

The answer is a range, not a single falsely precise number. A departure delay is also carried to arrival with a small recovery allowance, because pilots can make up some time in the air. B is the scheduled flight time in minutes:

recovery = min(20, round(0.08 · B))

Example. The plane has 60 minutes on the ground and arrives between 25 and 60 minutes late, with a typical delay of 40. It needs between 30 and 55 minutes to turn around, typically 40. Vola reports that your flight could leave anywhere from on time to 55 minutes late, most likely about 20 minutes late.

3. Can I trust what other passengers report?

The idea. Passengers on your flight can report things such as "boarding has started" or "delay announced." Vola should trust a report more when it is recent, when several different people agree, and when the source is reliable, and trust it less when reports contradict each other.

The formula. First, each report loses influence as it gets older. Its weight is cut in half after a set amount of time, called the half-life:

w = 0.5 ^ (age / half-life)

Each source also has a quality score q: official flight data 1.0, aircraft data 0.9, passenger 0.6. Support for a claim, S, adds up the weight times quality of every different person who reported it. C adds up the support for claims that contradict it:

S = Σ w · q, summed over distinct contributors supporting a claim

C = Σ w · q, summed over contributors supporting mutually exclusive claims

signal = (1 − e^(−S)) · S / (S + C)

What each part does. The first part, 1 − e^(−S), grows as more independent people agree, but each additional report adds less, so a crowd cannot be exaggerated. The second part, S / (S + C), shrinks the score when reports conflict.

Example. One passenger reporting gives a signal of about 0.45. Two passengers agreeing give about 0.70. Two agreeing while one contradicts give about 0.47.

This score only ranks and labels reports as Unverified, Some corroboration, Strong corroboration or Contested. It is never shown as a percentage chance, because it is not one.

4. How likely is a delay?

The idea. Vola uses a prediction model trained on hundreds of thousands of past flights. The model is built from many small decision trees, each asking simple questions such as "Is it a winter evening?" or "Is this airline usually late here?" Every tree gives a small vote, and the votes are added together.

The formula.

F(x) = Σ fₘ(x), for m = 1, …, M

p = 1 / (1 + e^(−F(x)))

p′ = interp(p; x₀ … xₖ → y₀ … yₖ)

In plain words. The first line adds up the votes of all M trees. The second line turns that total into a probability between 0 and 1. The third line calibrates it, which means adjusting the number so that when the model says "70%," it really is right about 70% of the time.

The model estimates the chance of arriving at least 15, 60 or 180 minutes late. It runs directly on the web server, so no separate machine learning service is needed.

Example. Three trees vote +0.4, −0.1 and +0.3. The total is 0.6, which converts to about a 65% chance before calibration.

5. What changed in my suitcase?

The idea. To find damage, Vola lines up the before and after photos, subtracts one from the other, and highlights where they differ. This is the same principle used to spot differences between two images.

The steps and formulas.

First, each photo is converted to shades of gray, weighting the colors by how the human eye perceives them:

g = 0.299 R + 0.587 G + 0.114 B

Second, because the two photos are never framed identically, the second photo is shifted a few pixels in every direction, and Vola keeps the shift where the two photos match best:

(dx, dy)ᵒᵖᵗ = argmin over dx, dy ∈ [−8, 8] of mean | A(x, y) − B(x + dx, y + dy) |

Third, the photos are subtracted and the result is blurred slightly so that camera noise is ignored:

D = boxblur( | A − B(dx, dy) | ) evaluated at the optimal shift

Finally, bright patches that touch each other are grouped into regions and ranked by how different they are.

Why a person decides. The search tries 17 × 17 = 289 possible shifts. The regions it finds are only suggestions, because a shadow or a reflection can look like a dent. You confirm or dismiss each one before anything goes into your claim.


How It Is Built

Vola is a web application built with Next.js 16, React 19 and TypeScript. Data is stored in MongoDB Atlas, including your photos. Sign-in is handled by Auth.js, the PDF is created with react-pdf, and Zod checks every piece of incoming data. Live flight information comes from a schedule provider, airplanes.live and OpenSky (aircraft positions) and Open-Meteo (weather). The prediction model is trained in Python with LightGBM and then converted to a file that the web server reads directly. The app is packaged with Docker and runs on Fly.io.

An optional AI feature, using the Anthropic API, can suggest wording for damage descriptions and polish the claim letter. It plays no part in deciding what you are owed. Those decisions are made by fixed, inspectable rules.


Challenges We Solved

The legal arrival time is not in the data. The law says a flight has arrived when the doors open, but free data sources only report when the plane touched down or when radar contact was last made. Vola saves every possible time with its source, picks the most reliable one, and flags close calls for review instead of guessing.

Predictions must never be treated as facts. A forecast says what might happen, while a claim depends on what did happen. Vola is built so that a forecast can never feed into the eligibility check. Only recorded times can support a claim.

Being honest about what the model knows. The model learned from 2013 flights out of three New York airports. It is strong once a flight is in the air (accuracy score of 0.90 to 0.98), only slightly better than a simple guess before departure, and it did not beat the baseline for the 180-minute prediction, so Vola hides that number. Outside the airports it was trained on, Vola shows a clearly labelled simpler estimate instead.

Protecting passenger privacy. Reports from passengers are tied to an anonymous ID that changes for every flight, only combined totals are ever shown, and anyone can stop sharing and delete their reports.

Linking the right aircraft. Two flights are connected only if the same aircraft flies both, the first lands where the second departs, and the gap between them is realistic. If the aircraft changes unexpectedly, Vola says it does not know instead of guessing.


The Main Lesson

Being honest about uncertainty makes a tool more useful. Showing ranges, sources and missing information earns more trust than one confident number, and in a legal setting it keeps your claim credible.

What Comes Next

Training the model on a much larger and more recent data set, supporting trips with connecting flights, covering more countries' passenger-rights rules, and creating claim letters tailored to individual airlines.

Built With

Share this project:

Updates

Submission history