Royalty and Splits Platform for a Lagos Music Publisher
Designed and built a clickable royalty and splits console for a Lagos music publisher and label: split sheets that every writer confirms before approval, an unmatched usage queue sorted by value, and statement runs that store their inputs and show the calculation behind every naira.
Most of our work is under NDA. Per agreement, we can share the work but not the company details - all names and identifying information shown here have been changed.
Dashboard, split sheet approvals, split sheet detail, the unmatched usage queue and statement run detail with its calculation trace. Approving or rejecting a sheet carries back to the approvals list.
A split sheet can be approved only when every party has confirmed and its checks pass: shares total exactly 100.00%, every party identified, no open dispute, registration compared and any sample declared.
Each run shows its inputs fingerprint: import checksums, contract and split sheet versions, client policy, engine and FX rate set. The trace keeps 10 decimal places and rounds half to even, with the residual held under NGN 1.00 per statement.
24 contributors, 18 works, 12 recordings, 24 unmatched usage lines and 4 statement runs, including a Q3 publishing run with totals for 1,148 statements.
Ebute Cove agreed splits on WhatsApp voice notes and paper sheets photographed in the studio. Half the sheets were missing a producer or a featured writer, and some songs had three versions of who owns what. DSP and distributor reports arrived as dozens of CSV files a month in different layouts, one analyst matched them to songs by title in a spreadsheet, statements took six weeks a quarter and nobody could reproduce last quarter's figures when a writer queried them.
Splitsheet keeps the catalogue of works and recordings, gets every party to confirm their share on a versioned split sheet, matches usage reports to the catalogue, and calculates statements from stored inputs so the same period always gives the same figure. Rights, royalty and finance teams work from one console, with a mobile-first portal for writers and artists in the full product.
Ebute Cove represents about 1,200 songwriters and 300 artists across Afrobeats, amapiano and gospel. Every naira paid depends on who agreed what in the studio, which song a report line really refers to, and which contract, advance, tax rate and exchange rate applied at the time.
A musical work, identified by an ISWC, and a sound recording, identified by an ISRC, are separate rights with separate owners and separate income. Writer splits and master splits have to be kept apart, and each party identified by IPI number at the societies.
Co-writers, producers and featured artists often have no account. Each one has to confirm or dispute their share, a new version must replace the old from a set date, and disputed shares are held in suspense while undisputed shares on the same song are paid.
Usage arrives as DDEX DSR or provider CSV files from Spotify, Apple Music, YouTube, Audiomack, Boomplay and societies such as PRS for Music. Titles come with sped up, remix and live variants, misspellings and missing identifiers, and unmatched lines are money nobody gets.
Royalties are generally subject to Nigerian withholding tax, reformed in 2025, so rates must be client settings. Foreign receipts come through authorised dealer banks under Central Bank of Nigeria rules at the rate the bank applied, and unrecouped advances were tracked in a separate workbook.
Mapped 9 user roles and 42 screens across the staff console, the writer and artist portal and a public confirmation page, with the data model for works, recordings, versioned split sheets, usage imports, contracts, advances, statement runs, suspense and payouts. Wrote down the rules the design follows: the Nigerian Copyright Act 2022, the NDPA 2023, withholding tax, CBN foreign exchange rules, ISWC, ISRC, IPI, DDEX DSR and CISAC CWR, plus Ebute Cove's own fee and statement policy.
Built 5 key screens on a production dashboard kit: the dashboard with income by source, match rate and a role-based My work panel, split sheet approvals with bulk reminders, the split sheet detail with parties, checks and a version comparison, the unmatched queue with suggested matches and undo, and the run detail with totals, variances, inputs fingerprint and a calculation trace per statement. All actions run on local state.
Parsers for each DSP and distributor feed, CISAC CWR registration files, Paystack or Flutterwave payouts with bank account name checks, Smile ID or Prembly identity checks, DocuSign contracts and Termii or Twilio SMS and WhatsApp invites. Staff auth by role, a full audit log of every split, rate, approval and payment, golden-file tests that prove a stored run reproduces to the kobo, legal and tax review, and the writer and artist portal.
The approvals queue shows confirmations as x of y with each party's share, role and channel. Approve stays disabled until every party has confirmed and no check fails, and the effective date is set at approval.
A new split sheet replaces the old one as v2, with a side-by-side comparison of every party's old and new share. Income before the effective date keeps the previous version, so changing a split never rewrites past statements.
The queue is sorted by value and flags lines over NGN 250,000 under client policy. A match can cover one line or every line with the same identifier, and each match, new work, not ours or park decision can be undone before the run is approved.
Run totals split gross income into fees retained, recoupment, withholding tax, held amounts and net payable. Opening a statement shows each step from usage line to split share, fee, contract rate, recoupment, tax and rounding, and an approved run is superseded, never edited.

Designed and built a clickable production office platform for an independent Belfast film and TV company: daily call sheets built from the schedule and checked before approval, distribution with a read receipt for every recipient, and crew hours and turnaround tracked against the production's own working terms.

Designed and built a clickable sample management app for a Milan womenswear and accessories brand: sample requests to partner factories in Portugal and Turkey, the location of every physical sample from its last RFID or QR scan, and press, stylist and influencer loans with agreements, reminders and disclosure flags.
Enterprise Software Engineering - Human + AI
Contact Us
© 2026 - Copyright. All Rights reserved Oceanlab
Location
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
Enterprise Software Engineering - Human + AI
Contact Us
Locations
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
© 2026 - Copyright. All Rights reserved Oceanlab