Good Faith

Open-source label management for teams who outgrew the spreadsheet.

Multi-distributor royalties, splits, rights, and role-based portals — self-hosted under the AGPL-3.0 license. Never a cut of your earnings.

What ships with the install

Built for indie labels with real catalogs and multiple distributors — not a locked distribution service, not an enterprise sales call.

  • Royalty hub

    Ingest DistroKid, TuneCore, CD Baby, Symphonic, ONErpm, RouteNote, TooLost, FUGA, Vydia, and The Orchard into one normalized run.

  • Splits & payouts

    Finalize 100% split sheets, consolidate statements, mark paid, and export ACH CSV — no earnings tax.

  • Catalog & DAM

    Artists, releases, tracks with ISRC/ISWC/UPC, plus masters and artwork asset uploads.

  • Contracts & publishing

    Deal repository with obligations; musical works, writer shares, and PRO registration history.

  • A&R & sync

    Talent pipeline without financial leakage; sync pitch-to-license tracker with fees and territories.

  • Ops modules

    Marketing campaigns, analytics dashboards, workflow tasks, DSP delivery calendar, ERP/recoupment.

  • Role-based portals

    Artist, Manager, Finance, and A&R views enforced in the API — not just hidden UI chrome.

  • Trust defaults

    Mandatory 2FA for financial roles, immutable audit log, full JSON/CSV export anytime.

Built for operators who read the stack

Python where statement normalization matters. A typed portal for day-to-day label work. Compose locally; Railway + Vercel when you want cloud.

Portal
Next.js 16 · TypeScript
API
Django 6 · Django REST Framework
Data
PostgreSQL 16
Jobs
Celery · Redis
Deploy
Docker Compose · Railway · Vercel
License
AGPL-3.0

Gap 5, built in

Shared Sheets and Notion expose splits to people who should never see them. Good Faith scopes every API queryset by role.

Artist

Own releases, earnings, payouts, and campaigns — never label-wide books.

Manager

Full ops: catalog, royalties, contracts, pipeline, and export.

Finance

Statements, runs, payouts, activity log, and recoupment.

A&R

Talent pipeline and catalog — deliberately no royalty data.

First-run in three steps

The portal root is an install welcome page with live API health — not a SaaS funnel.

  1. 01

    Clone & compose

    docker compose up --build
  2. 02

    Seed a label

    python manage.py seed_label --demo
  3. 03

    Open the portal

    http://localhost:3020