Problem
In a record shop, when I find a record I don't know, I only have moments to look it up, listen to a few tracks and decide whether it's to my taste. I also need to know if the price is fair, whether I already own it, and where it would sit among the records on my shelf and the music in my library.
Discogs and Apple Music each hold part of that answer. Neither says "you have two records like this already" or "nothing here is close".
What I did
I came up with the problem and described the features. I drafted and refined the requirements with an LLM, then handed them to AI coding agents (Claude Code and Codex). The agents wrote all of the code.
My part was directing the work, labelling the evaluation data by hand, testing the suggestions in shops and making the calls.
How it works
I scan a barcode, or type a catalogue number or an artist and title. The card then shows whether I own the record, its main style (one of 24 families) and up to three of the closest records from my shelf and my Apple Music library. If nothing is close, it says so. It also plays 30-second previews of three tracks and shows the lowest Discogs price.
Buy adds the release to my Discogs collection and Wishlist adds it to my wantlist. Both can be undone, and every tap is saved in a dig history.


The key decision
My first test, on my own collection, showed that Discogs tags are too coarse to say what sits close to what. So a language model now chooses the matches, but only from records I already have. The app drops any suggestion that is not in my collection or library.




It runs on a private server and is reachable only over a private network. It has no login, so it is never exposed publicly.
Results and limits
I labelled a 20-record test set by hand and ran both models on 18 October 2026. The primary model is the one the app uses. Two records with uncertain reference labels are left out of the style score, which is why its denominator is 18.
| Measure | Target | Primary | Fallback |
|---|---|---|---|
| Style correct | 90% | 16 of 18 (89%) | 15 of 17 (88%) |
| False close matches | 15% or fewer | 3 of 20 (15%) | 5 of 20 (25%) |
| Median response | 5.6 s | 6.0 s | |
| Cost per record | US$0.0068 | US$0.0050 |
Style accuracy came in just under its target. False close matches sat exactly at the limit. I kept the primary model because it made fewer false matches (3 against 5). The decision-in-under-60-seconds target passed in live use in record shops.
These are separate measures, not one accuracy score. The set is 20 records from my own collection, and the false-match judgements are my reviews. It is a personal tool with no other users.
Stack
Skills, CLI and APIs
What the agents and the app work with.
- Agent skills
- The project's own skills, shared by Claude Code and Codex:
ship-feature, to take one change from idea to live alongside other agents, andrun-eval, to run the 20-record test for both models, review the picks with me and regenerate the status report. - Claude in Chrome, to capture the screenshots of the app on this page.
- CLI
- Codex CLI, for workers and independent review.
- herdr, one terminal tab per agent.
maketargets for tests, workers, model replays and deploys.- systemd and journalctl, to run and watch the service; Tailscale, so it is reachable only over my private network.
- Git and the GitHub CLI.
- APIs
- OpenRouter, for model calls with structured JSON output, routed only to providers that keep no data.
- The Discogs API: release details, my collection and wantlist, and the Buy and Wishlist writes.
- Apple's iTunes Search API, for 30-second previews.
- MCP
- None for this project.