← Back to projects

Crescendo

A music-artist revenue-share investment platform — like a stock exchange for musicians.

FintechReactPostgreSQLMarket Design

Overview

Crescendo is a music-artist revenue-share investment platform I built at ProdHacks with two friends. The idea: what if supporting an artist early worked more like investing in a startup than passively streaming their music? Fans buy fractional shares in artists they believe in, prices move based on real-world traction data, and investors receive dividend-style payouts when actual royalty revenue comes in. It's a stock exchange for musicians — built on real analytics, not hype.

The Concept

Music already produces massive amounts of public, quantifiable data — Spotify listeners, playlist reach, TikTok virality, YouTube views, fan conversion ratios. These signals correlate with future royalty revenue, but traditional streaming platforms don't let fans participate in the upside of an artist's growth. Crescendo creates that missing financial layer. Instead of speculative fan tokens, the platform is designed around observable artist analytics and actual royalty-based settlement.

How It Works

Artists are listed on the exchange with a fixed share supply and a configurable revenue-share percentage. The platform acts as sole market maker — always quoting a bid and ask price — which solves the cold-start liquidity problem. Prices are driven by a daily-updated Traction Index that scores artists 0–100 using weighted signals like Spotify monthly listeners, playlist reach, social following, and fan conversion ratios. When distributor royalty statements arrive, the system freezes a cap-table snapshot, computes dividend-per-share, and distributes cash to holders proportionally.

The key design insight was separating two layers of truth: the market price moves on forward-looking growth signals, but dividends only settle from real royalty data. That prevents the system from becoming purely speculative.

Technical Architecture

The backend uses a double-entry ledger — every cash movement tracked as debits and credits that must net to zero. Trade endpoints use idempotency keys to prevent duplicate executions. All trades run inside transactional logic with row-level locking so the database can never land in an inconsistent state. The schema covers 20+ tables: users, artists, wallets, ledger entries, positions, orders, metric snapshots, traction snapshots, royalty statements, dividend distributions, cap-table snapshots, risk controls, and more.

The Traction Index uses log-transformed, percentile-ranked metrics with null-safe weight renormalization — so an artist without TikTok data isn't unfairly punished. Chart data is generated deterministically from daily metric growth rather than random noise, because if chart history changes on refresh, users immediately lose trust.

Risk and Market Design

Crescendo has layered risk controls: daily return caps, circuit breakers that halt trading on extreme metric jumps, price-band validation at fill time, portfolio-level limits on max shares and daily trade volume, and cooldown periods between trades. The market-maker model was a deliberate tradeoff — a full matching engine would have produced a dead exchange without enough users, while platform-as-counterparty guarantees liquidity from day one.

What I Learned

The biggest lesson was that a compelling concept isn't enough if the system underneath it isn't trustworthy. Once money is involved — even simulated — you need ledgers, idempotency, risk checks, and deterministic behavior. Market design matters as much as UI. Real-world data is messy, so null-safe models and defensive parsing matter more than clean theoretical formulas. And pricing should be explainable — people need to know why a price moved, not just see that it moved.

Crescendo started as a hackathon project and is now being built out as a pivoted startup.