AI agents

Ricardo Watch Sweep

Scans a Swiss auction site hourly for watches listed below market, and reports only the ones worth a bid.

HourlyWhatsApprunning
An AI agent that reports everything is worth the same as one that reports nothing.

The buy-side scanner. Every hour it walks the front pages of a Swiss auction marketplace, pulls each watch listing, works out what the piece is actually worth, and messages me only when a lot is priced under the market.

How it is built

Three stages, deliberately separated so each can fail independently:

  1. Crawl, fetch listing pages and parse the embedded JSON rather than the rendered HTML. Faster, and it survives redesigns that break CSS selectors.
  2. Identify, work out the exact reference from the title, the listing attributes, and when those fail, the photograph of the case back. A generic title hides a real reference surprisingly often.
  3. Price, check the live asking market, then a market-data source, then apply costs: platform fee, shipping, and an estimated service cost. What survives all of that is the number worth bidding.

State lives in flat JSON files. No database. Each run reads the previous state, appends, and writes back.

What it got wrong

It scored the wrong variable. For a long stretch the ranking favoured listings with no bids, on the theory that nobody had noticed them. The opposite was true: a lot with no bids near its close is a lot the market has already priced and declined. The signal was inverted, and it had been inverted for weeks before anyone checked.

It was too quiet, then too loud. The first version suppressed anything that missed the bar, which made a successful run indistinguishable from a broken one. The fix wasn’t a threshold change, it was separating “I found nothing” from “I did not run”. A silent AI agent must still prove it woke up.

Fees were optimistic by four points. The platform fee in the model was the one from a different marketplace. Every margin it had ever published was wrong in the same direction, which is the most dangerous kind of wrong, because it looks consistent.

The lesson

The hard part was never the scraping. It was building something whose output I would still trust on week forty. Most of the engineering went into making the AI agent’s failures visible rather than making its successes prettier.


← All AI agents