№ 0055GitHub
dealscan music contract agent
dealscan is an open-source agent built on Muse Glimmer 30B that reads producer, distribution and publishing agreements, extracts the payment terms and flags risky clauses in a markdown and JSON report.
dealscan
The first open-source music-business contract agent, built on Meta's Muse Glimmer.
Point it at a producer agreement, a distribution deal, or a publishing contract.
It tells you what kind of deal it is, pulls out the terms that decide who gets
paid, and explains the clauses that should worry you — in plain English, not
legalese.
dealscan analyze contract.pdf
Out comes a markdown deal report and a structured JSON file.
Why
Most musicians sign their first few contracts without a lawyer, because a lawyer
costs more than the advance. dealscan is not a substitute for one. It is the
read-through you do before you pay for one — so you walk into that conversation
knowing which three clauses to ask about.
It runs on Muse Glimmer 30B,
Meta's Apache-2.0 agentic model. The hosted path via OpenRouter is verified
end to end. Because the weights are open, running it entirely on your own
machine is the goal — that path exists today but is experimental; see
Known limitations.
Install
git clone https://github.com/SoundDeal/dealscan
cd dealscan
uv sync
Requires Python 3.11+.
Quickstart — OpenRouter
The default backend. Get a key from openrouter.ai.
export DEALSCAN_API_KEY=sk-or-v1-...
uv run dealscan analyze examples/producer_agreement_synthetic.txt
That writes two files next to your contract:
producer_agreement_synthetic.dealscan.md— the deal reportproducer_agreement_synthetic.dealscan.json— structured output
Quickstart — local with Ollama (experimental)
No key and no network, so the contract never leaves your machine.
ollama pull muse-glimmer:30b
uv run dealscan analyze contract.pdf --local
--local points dealscan at http://localhost:11434/v1. The 30B model runs on a
single 24GB consumer GPU or an Apple Silicon Mac with enough unified memory.
⚠️ Experimental. This path has not been verified end to end. Configuration
resolution for--localis unit-tested, but no run against a real Ollama server
has been completed — Ollama's OpenAI-compatible shim may differ from OpenRouter
in how it returnstool_callsor accepts image content. If you hit a problem
here, please open an issue; verifying this path is roadmap item #1.
Example output






