A vinyl app built on one rule: every record plays once before any record plays twice.
My collection kept growing and I kept reaching for the same records. The rest sat on the shelf. My record club's monthly pick often went unplayed. Spines are hard to read in low light, so I cataloged everything online, and its shuffle kept serving the same handful of albums.
Crate fixed it with one rule. Shuffle draws only from records I haven't played this cycle. When every record has had its turn, the cycle closes and a new one starts. One full cycle: all 128 records in 141 days. Records I'd forgotten I owned came back into rotation.
Then friends wanted their own. Crate went from a personal tool to an invite-only app, one product with every collector's data walled off from the rest.
Nothing gets buried. Shuffle only picks from what you haven't played yet. Filter by mood or genre and it still respects the cycle.
The record is spinning across the room. Logging it takes one tap. Every record shows its plays this cycle and all time, and the history turns into stats: most played, never played, top artists, top decades.
Eight views of how you listen: your forgotten moods, your streaks, what you play by day of week and time of day, and how the balance shifts over time. An empty view invites you to play more instead of looking broken.
Short notes on the stories behind the record: who played, what happened in the studio, what came next. Written for that album, not a copied artist bio. Sources shown when it had to look something up. Spot a mistake and flag it.
Close a cycle and Crate marks it quietly: a narrated recap of what you played, a saved cycle history, and a share card.
Every collector names their own crate. Mine is Elbrink's Crate. The name follows you through the app: the top bar, the browser tab, every share card. Set your own moods and pick from eight themes, with a tap to preview before you commit. Your public page wears the same colors.
Every collector can turn on a public, read-only page with their collection and stats. It's off until you turn it on. Usage tracking is opt-in too.
Google sign-in and an invite list. Your collection syncs from your online catalog, removals included, along with artist pages and your wantlist. Leave any time and your account goes with you.
How: every liner note comes back with an honest confidence score. Anything under 0.7 is dropped on the server before you see it. On one album, the AI named a famous producer who never touched the record. It scored that note 0.68. The floor caught it.
Why: early versions told the AI to stay silent when unsure, and it went silent on The Dark Side of the Moon, All Eyez on Me, and Pulse. Letting it write freely and filtering on the server gets more notes and fewer mistakes.
How: one note shipped at 0.95 confidence while talking about the AI itself instead of the album. Now a filter catches those. Sources are kept only if the search actually returned them, and piracy and store sites are blocked.
Why: confidence measures how sure the AI is, not whether the note belongs on the page. The server checks both.
How: the AI is told that any fact on the back of the jacket or in every encyclopedia summary is below the bar. Lead with what a collector wouldn't already know.
Why: accurate but bland is a failure too. The notes have to be worth reading.
How: each record carries mood tags, from its genre, an AI suggestion, or you. Every play logs that record's moods. One play is noisy. Hundreds of plays show the pattern.
Why: no one wants to fill out a form while a record spins. The first version asked for a mood, and nobody did it.
How: AI can only suggest moods from your own list. A review screen shows every proposed change before anything is saved. Tags you set by hand are never overwritten.
Why: it's your collection. You should know exactly what changed in it.
How: the numbers come from your stored plays. AI writes only the lines that connect them, once, and those are saved. If the AI is down, the recap still arrives.
Why: finishing a cycle takes months. The moment shouldn't depend on a service being up.
How: each play is logged as an event, and cycle status is worked out from those events. The database itself saves each finished cycle.
Why: the app used to do the saving, and one morning it lost a real cycle. Moving it into the database means it can't happen again.
How: every collector's data is walled off at the database. Before friends joined, a sweep found the share image still had "Elbrink's Crate" written into it.
Why: a friend's share card would have carried my name. Multi-user means checking every place the app assumed it was mine.
How: the service the collection syncs from is named only where you connect your account and in Settings. Automated checks guard the screens where it used to slip through.
Why: Crate has its own voice. A data vendor's name across the screen makes it read like a skin on someone else's product.
How: one file per page, no framework, no build step. It installs to a phone home screen like an app.
Why: fast to load, cheap to run, little to break.
Every record on the shelf was bought for a reason. Now each one gets its turn.