Independent product · fiddle.diy · In active development
The system of record
for your build.
Fiddle started as a camera trick: point your phone at a car, it names the part. It grew into the place a whole build lives: the log, the catalog, the fitment, the power you can prove, the people running the same setup. I designed it and built all of it with Claude as my pair-programmer. Every screen below is the live product.
The short version
- Naming the part was chapter one. The product is everything after: the log, the fitment, the number you can defend.
- I built all of it: desktop and mobile apps, ~50 serverless functions, accounts, payments, an Android shell, a 41-suite test bed.
- The catalog didn't exist to license, so I went and got it: 245,471 parts across 362 brands, with chassis-level fitment.
- House rule: never bluff. No invented horsepower, no fitment guesses, no hallucinated part numbers.
01 · The problem
The most expensive words in car repair: “that round thing”
Every DIY repair starts with identification, and the whole aftermarket is priced on the assumption that you already know what you're looking at. So the first bet was simple: make the camera the search box. I trained a vision model, built the scanner, and it worked.
Then I used it on my own car for a while and found the thing I had missed. Naming a part takes a few seconds and then it's done with. Running a build goes on for years: what is installed, what it cost, what the car puts down, when the fluid was last flushed, who else runs the same setup. Nothing was tracking any of that except spreadsheets and a shoebox of receipts. So the scanner turned into a feature and the build log turned into the product.
02 · Who it's for
Three people, two postures
03 · Design
A dark room where only one thing glows
Fiddle's look is a system I call Holo: deep blue-black surfaces that lighten as they come toward you, thin strokes, light type, and teal saved for the one thing that matters. Eighty percent quiet, twenty percent glow. I tested the candidate palettes on the actual phone, in the actual garage, and kept the winner.
The restyle never stopped the product. The colors live in one tokens file, old names point at new values, and screens migrated as I touched them. The name took a few tries too: Partsnar, then MotorMuse, then fiddle. It's what you do with a car on a Saturday.
04 · The journey
One broken part, start to finish
05 · The core loop
Garage, scan, part
Three screens carry most of the product: the garage where the build lives, the scanner that names a part, and the part page that tells you whether it fits.



Left to right: the garage with the story tabbed into mods, service, results and staged; an engine-bay scan, which the scene router hands to Claude vision, tap a dot and get the part; and a real catalog entry with product photo, the story of the part, and a proven-fit badge earned from real installs.
Exteriors run the on-device model, instantly and offline. Anything else goes to the cloud, which is at least willing to say when it isn't sure. The scanner used to be the whole app; now it's one of several ways into the log.
06 · Iteration
The road here wasn't straight
Every one of these was killed on purpose.
-
01
Native iOS AR → web proof-of-concept
TriedA native iPhone app with ARKit, the proper way.
WallWeeks of toolchain before I could point a camera at a car and learn anything.
PivotProve it on the web the same day. The native shell came later, as a one-afternoon Capacitor wrapper.
-
02
Live-tracked AR overlay → snapshot-and-annotate
TriedLabels tracking the live camera feed.
WallThe anchors jittered and leapt. Smoothing didn't save it.
PivotFreeze the frame and annotate the still image. You lose the magic of it moving, and you gain the ability to read the label.
-
03
Cloud vision → a model I trained myself
TriedDetection through a cloud vision API.
WallAnchors weren't precise enough to tap.
PivotTrain my own YOLOv8 on 23 part classes. Precise, offline, mine to tune.
-
04
One model for everything → scene-aware routing
TriedEvery photo went to the exterior model.
WallPoint it at an engine bay and it found bumpers, confidently.
PivotClassify the scene before anything else runs. Exteriors go to the on-device model; everything else goes to cloud vision, which is at least willing to say when it isn't sure.
-
05
AI part numbers → numbers grounded in live listings
TriedThe AI suggested the OEM part number.
WallModels invent plausible part numbers, and one bad number kills all trust.
PivotTokenize live market listings and let the most frequent number win. The AI is allowed to name the part. The price comes from live listings, never from the model.
-
06
A parts scanner → the system of record
TriedScan, identify, price, buy. The scanner was the home screen.
WallYou identify a part once. The scanner had nothing to say to you on any of the other days.
PivotRebuild the whole thing around the build log. The scanner got demoted into the Parts tab, which is the shortest way to explain what changed.
-
07
Retail APIs → a catalog I harvested myself
TriedLive retail lookups every time someone touched a part.
WallSlow, rate-limited, and no API covers the aftermarket.
PivotCrawl it. 245,471 parts across 362 brands once the cleaning had stripped the duplicates and the false positives, with type-ahead, did-you-mean, and translated descriptions.
-
08
LLM-everything → dictionary-first fitment
TriedAsking a language model what fits a G80.
WallFitment is where a confident wrong answer costs someone a set of wheels.
PivotChassis-code dictionaries first, down to JDM 25-year imports, with the LLM filling only the rows the dictionary can't answer.
07 · The router
Two engines, one interaction
08 · The model
Training the eyes
The detector is a YOLOv8 model I trained on 23 exterior part classes, exported to a 12.7 MB ONNX file that runs entirely in the browser. Instant scans, works on garage Wi-Fi, and no photo of your car ever leaves the phone. A scene classifier routes everything else (engine bays, interiors, parts on a bench) to Claude vision.
Owning the pipeline pays off in unglamorous ways. The model once labeled both mirrors “right,” so now paired parts get their side reassigned by position. Scanned parts are checked against product photos before the app will claim a match. None of that shows up in a demo, and most of it is what separates a demo from something a person will keep using.
09 · The data
The catalog nobody would sell me
The aftermarket has no clean API to buy, so Fiddle's catalog is one I went and built. 245,471 parts across 362 brands, with translated descriptions, harvested photos, and search fast enough to feel local. That number is smaller than what the crawl pulled down. A good deal of what comes back is fluff, duplicate listings and false positives, and the cleaning pass is what gets it to something you can search. On top of the catalog sits fitment: chassis-code dictionaries across dozens of makes, with an LLM filling in only where the dictionary abstains.
It's the least visible work in the product and the hardest to copy. Calling a vision API takes an afternoon. Spending months cleaning part records is the part most people skip, which is why it's worth doing.
10 · Catalog health
What the index holds, and what it doesn't
Proposed screen · Fiddle
Not yet shipped · Aug 2026 registry snapshot
parts indexed
245,471
photos, fitment, provenance
brands with parts
362
in the searchable index
brands tracked
471
registry, all tiers
deferred
153
each with an evidenced cause
Every bar resolves to its evidence in the registry, the same rule as everywhere else in Fiddle: no claim without a record behind it.
11 · Parts & fitment
A catalog with opinions about what fits

Desktop search: the whole catalog with the car pinned, every result graded for fitment, and “Hot on the G80” counted from published builds rather than ads.
“1 running it” is counted from real build logs. The paddock is what ranks the catalog, not ad spend.


On the phone: Hot on the G80, ranked by what is installed, every card with a fit grade against my car; and the fitment notes for my chassis, with owner reports, an OEM-fit count, and what the paddock's logs say.
“1 installed” is a real count of real installs, and “no fit data” is a real answer rather than a hedge. Estimated fits are labeled as estimates.
12 · Trust
The product never bluffs
The power readout shows your factory rating until a dyno sheet or a rated tune says otherwise. The fitment simulator flags, in amber, when its answer isn't about your car. Even sign-in refuses to leak who has an account.
From the outside those look like engineering choices. They're design decisions, and they come from the same confirmation-loop thinking I ship at Oracle, running in a garage app instead of a supply chain.
13 · The rules
Three places it refuses to answer
14 · The paddock
Community, events, and power you can defend


The Paddock feed, installs as they land with the part number attached, and behind it the Power sheet, where the claim stays at the stock factory rating until a real Dynojet or Mustang CSV says otherwise.
Every card in the feed is a log entry on a real build rather than a text box somebody typed into. And with no dyno sheet the card says “stock · factory rating,” because a made-up horsepower number is worse than no number at all.
15 · Built with Claude
Pair-programming with Claude, honestly
Fiddle is a two-person team where one of us is an AI. I bring the design judgment and the product decisions; Claude brings speed and a bottomless appetite for the grind. I review what it writes, and I say no a lot. The repo shows the partnership plainly: merged PRs from Claude's branches, and a 41-suite test bed that stays green.
When trying an idea costs an afternoon instead of a sprint, you stop arguing about mockups. The live AR overlay didn't die in a critique. It died in my driveway, jittering, where there was nothing left to debate. What becomes scarce is the quality of the decision, and that happens to be the thing a design career builds.
It's also the cheapest technical empathy I've found. When I sit down with data scientists and engineers at work, I don't have to imagine what a model can and can't carry inside a design. I ship against one every week, and it shows up mostly in which fights I decide are worth having.
16 · Where it stands
Where it stands
- Live at fiddle.diy: accounts, garage sync, catalog, fitment, community, events, and an Android shell. I design it, build it, and run it.
- First revenue: a paid vehicle tech report, and in-app car transfers where the whole history moves with the car.
- The decisions that did the most work were the refusals: no invented numbers, no fitment guesses, no pretending to know something the data doesn't support.
- Next: wider fitment coverage and growing the paddock. The community is the moat the catalog feeds.
