
crescendo
crescendo-five.vercel.app →A music-artist revenue-share investment platform, like a stock exchange for musicians.
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 incentivised by a "I was here early" mindset for investors while also incentivising them to share their music portfolios and feel more connected to an artist's growth.
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 / market 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.
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.
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. Generating a prediction model allows for more noisy and consistently liquid markets to keep interest rather than manual CSV uploads daily or weekly adding another layer of non-automated work for artists.
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, you need ledgers, 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 people need to know why a price moved, not just see that it moved.
Crescendo begun as a hackathon projects but has now majorly pivoted and is being built out by my friend Luna Pang.
comments
Loading comments...