// Build Log

Time is Money: How I Built a Watch Auction Research Platform in a Few Hours

580 watches, AI-powered enrichment, three-tier bid recommendations, and live auction tracking — built in an afternoon.

I have a confession: I’m a watch person. Not in the “I own a Patek Philippe” sense — more in the “I will spend forty-five minutes reading about the history of the Omega Speedmaster’s hesalite crystal” sense. I love everything about fine watches. The prestige. The legacy. The intricacy. The fact that these are mechanical marvels that humans have been refining for hundreds of years. The craftsmanship, the attention to detail, the complications — there is something deeply satisfying about an object that exists at the intersection of engineering and art.

I’ve just never been able to afford the really expensive ones.

But I’ve reached a point where I’m seriously considering dipping my toe in. Finding a good used watch online. Making a conservative bid. Learning the game.

And that’s where this whole project started.


The Spark

I came across LiveAuctioneers while doing what I always do — browsing watches I can’t justify buying (a whole post in and of itself). One catalog in particular caught my eye: The Timekeeper’s Vault. 580 watches. Rolex, Omega, Cartier, Chanel, Breitling, Tudor, Grand Seiko — a curated collection put together by someone who knows their stuff.

The problem? The lot descriptions on LiveAuctioneers are… lacking. A title, an estimate range, maybe a sentence or two. But I know there are subtleties to every watch: the calibers, the complications, the finishes, the styling, the bracelets, the reference numbers that make one watch worth twice as much as another. But, I don’t know enough to know what to look for.

I needed something that could look at these lots and tell me: What am I looking at? When was it made? Why is it special? What has it historically sold for? And what should I realistically bid? Is it just shiny, or a diamond in the rough?

So I built it.


What Time is Money Does

Time is Money is a local web app that transforms LiveAuctioneers watch listings into persistent, enriched research records. It has four modes, each one built because I needed to answer a specific question.

1. Tracked Lots — “What am I watching right now?”

Paste any LiveAuctioneers lot URL. The app scrapes it, parses the auction metadata, and starts tracking it in a local SQLite database. It keeps refreshing — bid counts, leading bids, hammer prices — recording point-in-time snapshots so you can see the bid history unfold.

This was the first of many iterations, and with Codex, it was done in under 15 minutes. Absolutely wild.

Tracked Lots interface
Tracked Lots — live auction tracking with bid history snapshots

2. Inventory Explorer — “What’s actually in this catalog?”

This is where it gets fun. All 580 watches from The Timekeeper’s Vault, searchable and filterable, in three views:

Grid view. Each card shows the watch image, brand, model, and current market value. 580 watches at a glance.

Inventory Grid view
Grid view — 580 watches at a glance

List view. Caliber, movement type, bid recommendations, confidence scores — the dense, analytical view for when you want to compare across the catalog.

Inventory List view
List view — analytical comparison across the catalog

Detail view. Everything the AI research found: brand, model, reference, production year, notable features, historical MSRP, current market value, and recommended bids at three tiers.

Inventory Detail view
Detail view — complete AI-enriched research for each watch

Every watch has been enriched with AI-powered research. But more on that in a moment.

3. Budget Planner — “What can I actually afford?”

This is the mode that made me grin. You enter a hammer-bid budget, and the app instantly shows you every watch in the catalog that’s realistically within reach — broken down by bid tier:

  • Low bid (~10% win probability) — the bargain entry
  • Medium bid (~50% win probability) — fair market value
  • High bid (~85% win probability) — conservative ceiling
Budget Planner interface
Budget Planner — three-tier bid strategy with fee-adjusted costs

The app even calculates your “headroom” — how much room you have between your budget and the all-in cost (hammer + 25% buyer’s premium + 5% internet surcharge). It’s the kind of thing that makes you feel like you actually have a strategy instead of just vibing in an auction room.

4. Results Analysis — “How did reality compare to the estimates?”

As the auction proceeded (today, March 29th, 2026), results started coming in. I wanted to see the discrepancies — what I estimated vs. what actually happened vs. what the auction house predicted.

Results Analysis
Results Analysis — comparing estimates against actual hammer prices

This page is where the whole thing comes together. You can see patterns: which brands consistently beat their estimates, which watches were sleeper deals, where the market diverges from the catalog’s estimate.


The Walkthrough

Full walkthrough demo
Full walkthrough: navigating between Tracked Lots, Inventory Explorer, Budget Planner, and Results Analysis

How It Works Under the Hood

The architecture is straightforward but the pipeline is where the magic happens.

Data pipeline architecture
The three-stage data pipeline: scrape, enrich, calculate

The Data Pipeline

Stage 1: Scrape the catalog. A Python script fetches every page of The Timekeeper’s Vault catalog from LiveAuctioneers, extracting the embedded JSON data. 580 watches, images, estimates, descriptions — all pulled into a raw JSON file.

Stage 2: AI enrichment. This is the good part. Each watch gets sent to OpenAI’s gpt-4.1-mini with vision capabilities. The model looks at the watch photos and the listing text and identifies:

  • The exact brand, model, and reference number
  • The caliber and movement type (automatic, quartz, manual)
  • Production year range
  • Notable features (case materials, complications, dial variants)
  • Historical MSRP and inflation-adjusted value
  • Current market value range (low / mid / high)
  • Desirability notes and historical context
  • Source citations from EveryWatch, Phillips, Sotheby’s, Christie’s, and brand pages

Stage 3: Bid recommendations. A separate script calculates three fee-adjusted hammer-bid targets for every watch, accounting for the 25% buyer’s premium and 5% internet surcharge that LiveAuctioneers charges. Every bid is rounded to the nearest $25 (auction convention).

The Bid Logic

Bid logic confidence scoring
Confidence scoring based on source quality

The confidence score is something I’m particularly proud of. Not all research is created equal:

Source QualityConfidence
EveryWatch + official auction archives0.90 – 0.94
EveryWatch or auction archives alone0.72 – 0.90
General market comparables0.82
Estimate proxy (no direct comps)0.62 – 0.76

When you’re looking at a bid recommendation, you can see whether it’s backed by strong comparable sales data or whether it’s an educated estimate. That transparency matters when real money is on the line.

The Tech Stack

The whole thing runs locally on my machine. No cloud. No deployment. Just:

  • Python backend with a threaded HTTP server and SQLite
  • Vanilla JavaScript frontend — no React, no frameworks, just clean DOM manipulation
  • OpenAI API for the research enrichment pipeline
  • Custom CSS with a warm, minimal design system

The design was intentional. I wanted it to feel like a well-made watch catalog itself — warm paper tones, clean typography, structured layouts. Not a dashboard. A reference.


What I Learned (And What Surprised Me)

The auction results were eye-opening

Of the 243 lots that sold, 220 went above the high estimate. That’s 90%. The Timekeeper’s Vault was clearly underestimated by the auction house, or the demand was much higher than expected. Median realized price was $11,500.

AI vision is remarkably good at watch identification

I was skeptical. But the model consistently identified reference numbers, calibers, and even specific dial variants from photos alone. It would note things like “luminous hour markers suggest post-2010 production” or identify a specific bracelet type. It’s not perfect — confidence varies — but it gave me a research head-start that would have taken weeks to compile manually.

Fee math is non-trivial and important

The 30% fee load (25% buyer’s premium + 5% internet surcharge) on top of the hammer price is significant. A $5,000 hammer bid becomes $6,500 all-in. The Budget Planner accounts for this, and seeing the gap between “what you bid” and “what you pay” in concrete numbers changed how I thought about my budget.

You don’t need much to build something genuinely useful

The total effort? A few hours. Maybe four or five hours of actual focused work across a couple of sessions. The whole app — scraping, AI enrichment, bid logic, four full UI pages with visualizations, SQLite persistence, auto-refresh, deep linking — in less than a day.

That’s not a flex. That’s the point.


Why I’m Sharing This

I built Time is Money for myself. It runs on my laptop. It’s not deployed anywhere. It’s a tool I made because I was curious and because I wanted to understand what I was looking at before I even thought about bidding.

But I’m sharing it because I think the process matters more than the product.

A year ago, building something like this would have taken me weeks — assuming I even had the full skillset to pull it off. The scraping, the AI pipeline, the bid calculations, the frontend visualizations, the database layer, the auto-refresh polling. That’s a lot of different domains.

Today, with tools like Codex and Claude, I could think through what I wanted, describe the layout, iterate on the logic, and have a fully working research platform in an afternoon. Not a prototype. Not a mockup. A real, functional tool with 580 enriched watch records, three-tier bid recommendations, live auction tracking, and sold-price analysis.

If you can clearly articulate what you want to accomplish and how you want it laid out, you can build something genuinely cool for yourself. That capability is at your fingertips right now. You don’t need to be a full-stack developer. You don’t need to know every framework. You need curiosity, clarity of thought, and the willingness to iterate.

I’m super proud of this one. It’s a small project in the grand scheme of things, but it’s mine. I built it because I love watches, I wanted to learn, and I wanted a better way to understand what’s out there.

Time is money. And this was time very well spent.


90%
Above estimate
$11,500
Median realized
4–5 hrs
Build time

PS — Update as of 4pm on 03.29.2026: I won an Omega Vintage 1990s Speedmaster Date 3513.51!

Omega Speedmaster won at auction
The Omega Speedmaster Date 3513.51 — won at The Timekeeper's Vault auction

Guess the app worked a little too well.