Available for new work from September 2026

Get in touch
Current projects

What I am building when nobody is paying me to.

Consultancy is the paid work. This is the same habit, unpaid: find a problem I keep hitting, specify it, and ship something I can use myself. One project is in development. It is not launched, and it has no users yet. That is the honest state, and I would rather say that than invent a waitlist.

In development

Second-hand clothing that tells you if it will fit.

Building a second-hand clothing fit tool that extracts real measurements from a listing, so you can tell whether a garment will fit before you buy it. The point is fewer returns, and less of that clothing ending up in landfill.

Label size is close to meaningless across brands, decades and countries. Sellers often write measurements in the title or description, in a dozen inconsistent formats. Buyers interpret them by hand. The item arrives and does not fit. That is the single biggest cause of second-hand returns, and it is how I actually shop.

The listing problem

  • Messy listing text
  • Inconsistent units
  • Missing hips
  • Size-label noise
  • Unverified seller tape

What actually supports it

  • eBay Browse API
  • FastAPI
  • Python
  • HTML fallback
  • Vanilla JS
  • Cloudflare Pages
The algorithm

A four-step ladder. Cheapest evidence first.

Paste a listing URL. The tool works down the ladder until it has enough to decide, then stops. A fit check is only offered when the critical measurements for that garment are actually there.

  1. 01Seller's tape
  2. 02Size label
  3. 03Brand page
  4. 04Other listings
Rung 1. The seller's own tape
Parse the listing text for waist, hips, bust, thigh, inseam, rise and length. Normalise everything to centimetres, including value-before-label order and smart quotes used as inch marks. Highest trust for the actual garment, still unverified, so confidence is capped.
Rung 2. The size label
A numeric denim size is treated as a nominal waist in inches, not as fashion sizing. It may supply waist only. It is evidence of the intended body, not a measurement of this specific garment.
Rung 3. The brand's own page
Only if a category-critical field is still missing, and only for fields that barely move across a size run: inseam, rise, length. Waist and hips are refused from this source, because they are exactly what changes between a size 26 and a size 32. This path is about eight seconds, against one to four seconds when the listing answers itself, so it is gated on purpose.
Rung 4. Other sellers of the same style
Search the same marketplace for listings whose brand and size agree, then read the measurements those sellers stated. Used as corroboration, not as a first guess: three independent waists clustering on the same number is how the tool checks its own work.
The gate
A fit answer is only unlocked when confidence clears 0.55 and every critical field for that category is present. Jeans need waist, hips and inseam. Skirts need waist and length. Most listings fail this honestly, usually on hips, and that is the product working.
What it will not do
If the page cannot be read, it says so and takes no measurements from it. If the marketplace is not supported, it refuses rather than inferring a garment from the URL. If a title looks like an error page, search is suppressed entirely, so a failed fetch cannot become a fabricated identity.
How it runs

eBay in, measurements out.

eBay Browse API
A listing URL goes in. The API returns the title, item specifics and seller text the ladder then reads. HTML is a fallback if the API cannot resolve the item.
FastAPI backend
All parsing, scoring and explanation happens on the server, so the same URL produces the same result. The web client is a thin front for that.
What it covers today
Jeans and trousers, skirts, shorts, dresses. eBay is live. Vinted is ingested. Depop is accepted and explicitly refused. Everything else is unsupported, on purpose.
Where it is
I am using it to shop, tightening how it looks, and aiming to put a quiet version in front of real listings soon enough to see whether anyone else hits the same problem. I walk through the prototype in conversation. There is no public launch page, and there will not be a user count until there are users.
Next step

Want the walkthrough,or the paid work?

I am available for new contract and consultancy work from September 2026. If you want to see the prototype, say so in the note.