Inspiration

Everyone's phone holds years of travel photos, and nobody scrolls back through them. Every photo already stores a time and a place, so the trips are in there, just buried. We wanted to turn a camera roll into something you can rotate, look at and remember, without handing your photos to anyone.

What it does

Postmark reads each photo's time and location, finds your past trips automatically, and shows them on a hand-drawn (water color themed), journal-style 3D globe. Every trip gets its own logbook you can page through, with stamps, a replay of your journeys, and a year filter. A slider sets how far from home counts as a trip: 10, 25, 50, 100 or 200 km. Move it and the arcs on the globe change.

How we built it

Three of us split the work along clear lines, and everything meets in one shared data format (a JSON file the backend writes and the globe reads).

Jason: backend. Jason built the pipeline that turns raw photos into trips: cleaning the photo data (dropping invalid dates, merging burst shots), our own trip-detection algorithm (stay points, home detection each quarter, and trips as runs of days outside the home circle), offline city naming from GeoNames, thumbnails with metadata stripped, and the privacy checks that stop real home locations from ever being published.

Kunal: data science. Kunal built the validation: we label real trips by hand and score our detection against them with precision, recall and F1, next to a simple baseline. He also tested the home-circle radius, wrote the tool that fills in missing GPS from photos taken close in time (hidden-location test: 91% recovered, about 2 m median error), and added local CLIP photo tags.

Alan: frontend. Alan built everything you see: the hand-painted 3D globe, trip stamps, the draggable page-turning logbook for each trip, the replay of your journeys, the year filter, and the slider that sets how far from home counts as a trip.

Everything runs on the user's laptop, so no photo or location is ever uploaded.

Challenges we ran into

  • Day trips and long trips: our first version missed one-day trips and found only the first week of a month-long trip.
  • Tiny labeled set: one person's four trips is too few to pick a default radius. The score was identical at every radius.
  • Honest scores: one wrong year in our own trip list moved the baseline $F_1$ from 0.29 to 0.57. Labels matter as much as the model.
  • Privacy: home must never be shown as a real address, so the globe only ever sees a city centre. Teammates share scores, not photos.

Accomplishments that we're proud of

  • A full pipeline from raw photos to an interactive globe, with no photo or location leaving the laptop.
  • Validation we can stand behind: every number comes from a real run, including the unflattering ones. Our algorithm went from 0 of 4 trips matched to 2 of 4, level with the baseline, on the first test set. [Update with the larger test when it is ready.]
  • A logbook you can drag page by page, and a globe that feels like a travel journal.

What we learned

  • Validation beats vibes: a baseline tells you whether your clever algorithm is actually better.
  • The hard part of personal data isn't the algorithm, it's privacy and getting trustworthy labels.
  • GPS filling is very accurate (median error was about 2 m when we hid known locations) but helps little when photos with no location have no neighbours close in time.

What's next for Postmark

  • Score every outing and ask the user only when unsure ("Was this really a trip?"), learning from each answer.
  • Test on many more people's photos and choose the default radius from data. This is the best way to figure out large scale bugs
  • Measure how accurate the CLIP tags (even advance them) are, and show them on each trip.
  • A year summary card you can share.

Built With

Share this project:

Updates

Submission history