Consulting Work Blog Contact
← Back to blog

The Trips I Never Took

The Trips I Never Took

The map said I had been to 39 countries. One of them was a 2014 safari in Madagascar. I have never set foot in Madagascar, and I was fairly sure I would remember a safari.

I had pointed a small AI pipeline at my photo library, roughly 68,000 images going back years, and asked it to draw where my life had actually happened. About 53,000 photos already carried GPS coordinates, so this looked like the easy part: plot the dots, connect the trips, colour by year. The result was beautiful, completely convincing, and wrong in a way that took me embarrassingly long to see, because nothing about it looked wrong.

TL;DR

  • An AI drew my lifetime travel map from ~68,000 photos and credited me with 39 countries. A whole globe-trotting era in 2014 and 2015 was invented: those photos came from a family member’s phone while mine sat in one city.
  • The tell was cheap and physical: 26 separate days where the map placed me in two countries at once. The fix was not a better model, it was one honest question: does this field measure the device, or the person?
  • The same trap lives in most business dashboards, where one convenient field quietly becomes a claim about a customer, a rep, or a market.

The map that flattered me

For a few minutes I genuinely enjoyed being the person that map described. Twelve years of continents, an exotic 2014, a life that clearly involved a lot of airports.

Then a small detail nagged. The 2014 to 2015 stretch was the busiest travel period of my supposed life, and I could not attach a single memory to any of it. That gap between what the data asserted and what I could remember is the only reason I kept pulling the thread. Had the invented trips gone to places I find boring, I might have shrugged and believed it.

What the field actually measured

A GPS tag on a photo records where the camera was when the shutter fired. It does not, and cannot, record where I was. My pipeline had silently treated the two as the same thing, because for most of the library they happen to line up, and “most” is exactly the coverage that makes a bad rule look correct.

The library is a family archive spanning many devices. In 2014 one relative was travelling the world with a phone that geotagged everything, and those photos flowed into the same shared pile as mine. My own phone from that era barely left one city. The map, reading only coordinates, stitched a stranger’s itinerary onto my identity. Every dot was real. Every attribution was fiction.

The photo proved where the phone was. It never once proved where I was.

The check that broke the illusion

I did not need a smarter model, I needed one physical constraint the data clearly failed. A person can only be in one place on a given day. So I asked the pipeline a blunt question: on how many days does this map put me in two places more than 1,500 kilometres apart? The answer was 26. Twenty-six days of allegedly having breakfast on two continents. With that number the beautiful map loses its authority in one go: the question is no longer “which trips are wrong” but “why did I trust the attribution at all.”

The rebuild

The rebuild was less about geography and more about honesty. Instead of asking “where was there a photo,” I made the system ask “whose device took this photo, and is there any independent reason to believe that person was there.” Attribution got keyed to the camera model plus the date window, so a relative’s device stopped donating its adventures to my timeline. And I added a hard wall in front of the obvious failure: no timeline may place one person in two distant countries on the same day, ever.

The corrected map was smaller and started later: my own real travel does not begin until around 2017, and a large slice of the 39 countries had belonged to other people’s devices. It did not feel like the loss I expected. The honest version told a real story with a clear beginning and a shape I recognised, and a true small map beats a glorious fake one: it is the only one you can make a decision on.

Where this bites a business

Swap “photo” for any record and “GPS tag” for any single field, and this is most analytics I have ever seen. A field gets promoted, without discussion, from “a thing we happen to store” into “a claim about a person or a market.” The signup IP becomes the customer’s country, so a VPN or a corporate proxy quietly relocates thousands of users. The last-touch channel becomes “what drove the sale,” so the brand people already loved gets billed to the ad they clicked on the way to checkout. Every underlying number is real, the join is clean, and the conclusion is fiction. The dashboard is confident precisely because nobody ever asked what the field was actually measuring.

What I would do differently, and what you can steal

The mistake was not that I used a messy dataset. It was that I let one field carry an identity claim without a single test of whether the claim could even be physically true.

So the takeaway is small and cheap. For any metric that drives a decision, write one sentence: this number measures X, and I am using it to claim Y. If X and Y are not obviously the same thing, you have a Madagascar. Then add one contradiction test that reality must pass, the equivalent of “a person cannot be in two places at once,” and let it run automatically.

My map lied to me for an afternoon and I nearly kept the lie because it was more fun than the truth. The question I would leave you with is the one I should have asked on minute one: which of your dashboards is quietly measuring the phone, and calling it the person?

Stack: Python · EXIF · SQLite

Need something like this for your own business? See how I can help →