Music royalty recovery platform for musicians' families
Estate-side royalty recovery for heirs of indie musicians — free name check, 15% contingency, $199/year monitoring. Not Songtrust for the living.
A daughter finds her father’s 80s single still spinning on Spotify, YouTube, and the occasional oldies hour. Ten years after the stroke, the family still cannot say who owns the recording, who owns the publishing, or who cashed the last check. Mom fought once and got a twenty-thousand-dollar royalty payment. She assumed there had to be more. There usually is. It is sitting in five to ten systems nobody in the house has a password for. That is the heir job, not the songwriter job. The catalog is split across a BMI or ASCAP writer account, SoundExchange, The MLC, one or two publishers, a DistroKid or CD Baby dashboard, and whatever already escheated to a state unclaimed-property office. Heirs do not know those rooms exist. Carson Law’s heir guide is blunt: the hard part is proving what the decedent owned, because publishing deals, recording contracts, and co-writing splits scatter royalties across collectors. Unclaimed money sits in suspended accounts.
Built for Solo Founders, Non-Technical.
Suggested stack: Next.js (App Router) + Vercel, Postgres, Public-list matchers, with legal care, Stripe, DocuSign, Audit log. Weekend scope: about 20 hours.
The Problem
A daughter finds her father’s 80s single still spinning on Spotify, YouTube, and the occasional oldies hour. Ten years after the stroke, the family still cannot say who owns the…
The Solution
Legato is an estate-only royalty recovery shop. It does not sign living songwriters. It does not sell catalog administration to touring acts. The buyer is the child, sibling, or…
Market Research
The MLC still holds about $160 million in unmatched pre-2021 U.S. mechanicals as of mid-2026, out of an initial historical pool around $397 million (Velveteen / MLC). That is the…
Competitive Landscape
Songtrust — Self-serve publishing admin, about 65 percent indie-admin share. $100 signup, then 15 percent on performance and 20 percent on mechanicals. Songwriter laptop product…
Business Model
Free artist-name check ($0) — 48-hour public-list match. Lead magnet and qualification. Kill cases under about $1,000 recoverable before you touch DocuSign.
Recommended Tech Stack
Next.js (App Router) + Vercel — Marketing site, 48-hour check form, estate dashboard. No mobile app in v1.
AI Prompts to Build This
Copy these build prompts into Claude, Cursor, or your AI coding tool. Create a free account to unlock the full research behind them.
1. Project Setup
Build the weekend MVP of "Legato": the heir of an independent musician types a legal name, a stage name and a death year, and the operator gets a one-page list of possible matches against published lists of unclaimed royalties. Nothing is filed and no one is contacted automatically. Stack: Next.js (App Router), TypeScript, Tailwind, Supabase (Postgres, Row Level Security, Auth with email magic link for the operator). The public lists are CSV files you download by hand from each organization's public page and import with the page address and the date. The matching is plain code. Deploy on Vercel. Tables (Row Level Security on; only the signed-in operator reads any row, and the public form writes through a server route): - list_snapshots(id, source, source_url, fetched_on, row_count) source is mlc_unmatched, soundexchange_unclaimed or pro_repertory - list_entries(id, snapshot_id, raw_name, normalized_name, work_title) - estates(id, legal_name, stage_name, death_year, contact_email, status, created_at) - matches(id, estate_id, entry_id, snapshot_id, confidence, needs_review boolean) Screens: /login, /lists (import a snapshot), /estates, /estates/[id] (the one-page result), and a public /check form. Env vars (names only): NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (server only). Do not build: billing, fee exhibits or contingency terms, e-signature, a scraper or any login to a member portal, claim filing, dollar estimates, monitoring. Done when: npm run dev starts, the operator can sign in, and the four tables exist with Row Level Security on.
2. Core Feature
Build the one feature that proves Legato: an honest name check that shows its sources and never overstates. 1. /lists imports a CSV of a public list with columns name, work_title. Save a snapshot with its source, its public address and the fetched date, and store each row with a normalized name. 2. Normalize in one function: lowercase, remove diacritics and punctuation, drop a leading "the" and a trailing ", the", and sort the words so "Beatles, The" and "The Beatles" match. Unit test it. 3. The public /check form takes legal name, stage name, death year and a contact email, saves an estate and runs the matcher against every list entry. An exact normalized match is confidence 1.0. A token overlap of 0.9 or more is a fuzzy match and sets needs_review. 4. /estates/[id] is a one-page result for the operator: each hit with its source, the snapshot date, the public address of the list, the matched name and the work title, with fuzzy hits clearly marked "needs a human look". With no hits it says "No match in the lists we have, dated [dates]". 5. The operator copies the result to an email by hand. The page has no send button. Rules: never show a dollar amount; the lists do not have one. Never claim the lists are complete. Use a quiet, plain voice, since the reader may be grieving. Keep estates visible only to the operator. Empty state: with no snapshots, show the import form and where to find each public list. Done when: the normalization tests pass, an imported sample list matches "The Beatles" to "Beatles, The" exactly, a near-miss is marked for review, a name that is not in the lists returns the no-match text with its list dates, and an anonymous visitor cannot read any estate.
3. Landing Page
Build a one-page landing site for Legato, a name check for families of independent musicians. Hero: "Your parent's songs may still be earning. The money can sit in a list you have never heard of." Sub: "Type a name. We check published lists of unclaimed royalties and show you exactly where it matched." One button: Join the waitlist. Sections: how it works in four steps (enter the name, we check the public lists, you see the sources, a person helps with the next step), who this is for (families of independent musicians who have passed away) and who it is not for (living songwriters), and an FAQ on which lists are checked, why a match is not a promise of money and how your details are used. Waitlist: store the email in a waitlist table in Supabase. No other service. Style: Geist, quiet type, a warm off-white background, one muted green accent, no photos of grief. Done when: the page renders on a phone and a submitted email appears in the waitlist table.
4. Branding Package
Use a design or image tool for this one. A coding agent cannot draw a logo. Brand for Legato: a wordmark and an icon that suggest a single sustained musical note, quiet and steady. Colors: warm off-white, deep ink and one muted green. Type: Geist, set calmly. Deliverables: wordmark, icon, two result labels (match, needs a human look) that differ by shape as well as color, a one-page result layout, and one launch graphic with no photography. Done when: each deliverable is saved in one folder and the two result labels are distinguishable without color.