9 min read

I analysed 50,000 empty legs and realised we were solving the wrong problem

A random series of lines converging into central hubs

Empty Leg Finder V2 is live. People are paying for it, the product works, and I’m currently working out what V3 should become.

Today I realised we might have built the core experience around the wrong behaviour, and I've had this hunch for a while.

For anyone unfamiliar with the problem, an empty leg is created when a private jet needs to reposition without passengers. The aircraft is flying anyway, the operator would obviously rather put somebody on it, and that creates an opportunity for a traveller to fly privately for considerably less than arranging a normal charter.

In theory, that makes for a fairly obvious marketplace. Someone tells us where they want to depart from, where they want to go and roughly when they want to travel. We find an empty leg that matches.

That’s essentially how Empty Leg Finder has worked.

Except there’s one fairly significant problem: the data says those matches are incredibly unlikely to happen.

I had a hunch that something was wrong

Something about the existing search experience has been bothering me for a while.

We have supply. Quite a lot of supply, actually. But when you interact with the product like a normal travel search engine, it can still feel empty. You choose where you want to leave from, choose where you want to go and get nothing back.

From the customer's perspective, the obvious conclusion is that we simply don't have enough inventory. That’s a perfectly reasonable conclusion too, you searched for a flight and there wasn’t one.

But I wanted to understand whether that was actually what was happening. Do we genuinely have a supply problem, or have we designed a matching experience that makes perfectly good supply almost impossible to find?

So today I audited the data.

We have 50,819 raw empty-leg records collected over roughly eight months. After removing duplicates, that's 49,484 distinct opportunities. There are caveats to the dataset, which I’ll get into later, but it’s enough data to understand the basic shape of the inventory we’re trying to build a product around.

And the shape is weird.

Across those empty legs there are more than 22,500 different directional routes. Of those routes, 64.8% appeared exactly once.

Not once a month. Once in the entire dataset.

The top ten routes combined account for just 2.6% of all supply, and the top 50 only account for 7.7%. Even the single busiest directional route I found — Las Vegas to Van Nuys — appeared 282 times across the dataset.

That sounds like plenty until you remember we’re looking across roughly eight months. One of the strongest exact routes in the entire marketplace still only shows up at around once per day on average.

Now imagine you aren't searching one of the strongest routes. You're searching whatever combination happens to fit your plans next Thursday.

The odds get ugly very quickly.

Then I removed the destination

This was the test that changed how I'm thinking about V3.

Instead of asking, “How many empty legs match this departure and this destination?”, I asked a different question: “How many empty legs are available from this departure if the traveller is flexible about where they go?”

I tested it against high-, medium- and lower-volume airports.

From Teterboro, the most common exact destination produced 79 opportunities in the dataset. Remove the destination requirement and there were 1,706 departures.

That’s roughly 22 times more inventory.

At Centennial Airport near Denver, the strongest exact route produced 28 opportunities. Allow any destination and there were 348 — more than 12 times as many.

Kansas City showed the same thing. Its strongest exact route produced 11 opportunities, versus 141 when the destination was flexible. Nearly 13 times more.

The important thing here is that I'm deliberately comparing flexible discovery against the best-performing exact route from each airport. Those aren't randomly chosen destination pairs. They're the routes where traditional search has the best possible chance of succeeding.

A typical route is substantially worse.

In practical terms, requiring somebody to specify both an origin and destination can hide more than 99% of the available supply around them.

That was the penny-drop moment for me.

Maybe people aren't supposed to search empty legs.

Maybe they're supposed to discover them.

We may have built the interaction backwards

Normal travel starts with intent. I know where I am, I know where I want to go and I know roughly when I want to travel. An airline or hotel search engine then shows me the inventory that satisfies those requirements.

That works because commercial aviation operates predictable schedules between predictable destinations.

Empty legs don't.

The aircraft isn't flying because of your travel plans. It’s flying because an operator needs the aircraft somewhere else. Your opportunity exists when your plans happen to intersect with where that aircraft is already going.

Writing that down makes it sound annoyingly obvious.

But it has fairly significant implications for the product.

V2 effectively begins with: Where do you want to go?

I'm increasingly convinced V3 should begin with: Where are you?

From there, we can show you what's actually possible.

If you're in New York, maybe there are aircraft leaving from Teterboro, White Plains, Morristown or another nearby private aviation airport over the next few days. One might be going to Miami, another to Nashville, another to the Caribbean and another somewhere you hadn't considered at all.

The important thing is that we're starting with the inventory that actually exists rather than asking the customer to guess the route on which it might exist.

That isn't really search anymore.

It's discovery.

And when I look at the supply through that lens, the marketplace suddenly looks very different.

We’ve also been making people understand private aviation geography

Another interesting problem turned up in our search data.

Users tend to search the airports they know.

Again, this is completely reasonable. Someone in Los Angeles searches LAX. Someone in New York searches JFK. Someone in Miami searches MIA.

But that's often not where the private aviation inventory sits.

In Los Angeles, significant empty-leg supply sits around Van Nuys and other business aviation airports. In New York it’s heavily concentrated around Teterboro. In South Florida, Opa-locka matters considerably more than most normal travellers would ever realise.

So you can have a situation where a customer is geographically very close to an empty leg, but because we've asked them to specify an airport rather than a location, the product decides there isn't a match.

That isn't a supply problem either. It's a product problem.

We're effectively asking customers to understand private aviation's airport network before we're willing to show them what’s available.

Which, when I put it like that, is a pretty crap user experience.

If somebody tells us they're in Los Angeles, the product should understand what "Los Angeles" means in the context of private aviation. The customer shouldn’t need to know which airport an operator prefers or what its ICAO code is.

That’s our job.

The radius matters more than I expected

Once I started thinking geographically rather than in exact airport pairs, the obvious next question was how far the product should look.

At around a 50-mile departure radius, the amount of available inventory increased by roughly 1.3 to 1.8 times in the markets I tested. Push that radius out to 150 miles and it can increase by two to four times.

Sounds great. Keep expanding the circle.

Except that eventually you start lying to people.

At 150 miles you're frequently pulling in an entirely different market. Denver starts picking up airports around Aspen and Eagle. Other cities start bleeding into neighbouring metros. Technically there may be a jet within the radius, but “private jet deals leaving near you” becomes a fairly generous interpretation of the word near when somebody has to drive for three hours.

So I'm currently leaning towards roughly 50 miles as the default interpretation of nearby, with perhaps a separate regional option for somebody willing to travel further for the right aircraft or destination.

I don't know exactly where we'll land yet, which is partly why I'm writing this now rather than six months from now with the benefit of hindsight.

The point is that geography has clearly turned out to be a better way of understanding the supply than exact airport matching.

This is also an incredibly short-fuse product

Another number from the audit that matters is 4.4 days.

That's the median time between an empty leg being listed and the aircraft departing. A quarter of the inventory appears less than a day before departure.

So this isn't just discovery-led inventory. It’s short-fuse discovery-led inventory.

That potentially changes how I think about the customer relationship too.

Perhaps the useful question isn't, “Where would you like to fly next month?”

It might be, “What's leaving near me this week?”

And if there isn't anything interesting today, the product should remember where you are and surface something when it appears.

Tell us where you live. Tell us where else you regularly spend time. Perhaps tell us how far you'd travel to catch the right aircraft. Then let Empty Leg Finder watch the market rather than requiring you to repeatedly search it.

That starts to feel much closer to the behaviour of the underlying supply.

I don't think this works equally well everywhere

There is a temptation here to turn “empty legs near you” into a universal marketing promise.

The data doesn't support that.

Within 50 miles of New York, the dataset contained 2,690 opportunities across 412 destinations. Las Vegas had 1,990. Miami had 1,706, Dallas 1,418 and Los Angeles 1,303.

Those markets have enough recurring supply to support a fairly compelling discovery experience.

Portland had 141 opportunities over the same period. Minneapolis had 189.

That's a very different product.

Rather than pretending otherwise, I think the right experience in those markets is probably something like: there isn't anything particularly interesting near you right now, but save your location and we'll tell you when there is.

This is one of those areas where I think marketplace products get themselves into trouble by trying to make the same promise everywhere. Our supply isn't distributed evenly, so the product experience shouldn't pretend that it is.

The stronger version of Empty Leg Finder might actually be one that knows when not to show you a load of rubbish.

There are also several things this data doesn't tell me

Having nearly 50,000 opportunities in a spreadsheet creates the dangerous feeling that you know more than you actually do.

There are some important limitations here.

Our feed coverage changed significantly over the period I analysed, particularly after a new source came online in May. That means I cannot look at the increase in listings and tell you that the empty-leg market is rapidly growing. Much of that increase is simply us seeing more of the market.

Pricing is another one. Only 5.5% of the opportunities had a usable published price. Among those that did, the median was around $5,500, which is interesting, but the priced subset is heavily skewed towards particular feeds and aircraft categories.

So I'm definitely not about to start publishing “the average empty leg costs $5,500” all over the internet.

Most importantly, our data tells us that an operator listed an empty leg. It doesn't tell us whether that aircraft was still available when a customer enquired, whether somebody eventually booked it, whether the operator repositioned it differently or whether something else happened.

Listed supply is not necessarily actionable supply.

That is probably the biggest hole in the dataset today, and it's something V3 needs to help us measure.

Such is the joy of answering one question and creating another five.

So where does that leave V3?

I started today trying to understand how we could make search better.

I'm ending it questioning whether search should be the primary experience at all.

My current thinking is that Empty Leg Finder should become a discovery-led marketplace rather than a search-led one.

Tell us where you are. We'll understand the private airports around you, surface the empty legs leaving nearby and let you explore where those aircraft could take you. If there isn't anything useful today, we'll keep watching.

There will still be search. I'm not deleting a perfectly sensible feature because I got excited by a spreadsheet.

But I increasingly think search should be secondary rather than the organising principle of the entire product.

The bigger lesson for me is that what looks like a marketplace liquidity problem can sometimes be a matching problem.

We had thousands of flights in the database and users could still quite reasonably conclude there was nothing available. The inventory wasn't necessarily missing. We were just asking customers to describe their intent in a way that had almost no chance of intersecting with it.

Destination flexibility exposes 12 to 22 times more inventory. Nearby airports add another meaningful increase. Exact routes are extraordinarily fragmented. And customers themselves are already telling us, through the airports they search, that they think geographically rather than in terms of the private aviation network.

That's enough evidence for me to continue building V3 in this direction.

It isn't enough evidence to tell me whether customers will actually behave the way I think they will.

I'll find that bit out by putting V3 in front of them.

Catch you in the next one,

Tariq

Want to see how this plays out?

I’ll send you the builds, mistakes, experiments and occasional wins as they happen. No polished hindsight, just the work..