A small, open demo of a sell-side (SSP) deal desk — see, search and manage private-marketplace ad deals, and query the same deal book from a coding agent over MCP.
It’s a teaching and demo project: synthetic data, three small services, built to be cloned, run, and pulled apart. No real company, no real deals — fictional buyers and publishers, real US-state geography.
Most “hello world” demos are too thin to feel real, and most real codebases are too big to learn from. DealDesk sits in between: a believable slice of ad-tech (PMP deals on a sell-side platform) small enough to read in one sitting, and structured so you can practise the things that actually matter now — decomposing a brief across several coding agents, wiring up an MCP server, and letting an agent work against real-shaped data.
Synthetic seed data ships in the repo:
Buyers, publishers, deal names and domains are invented. Only the geography is real. Nothing here maps to any real platform or advertiser. The full data dictionary is in PRD.md §9.
Filled in by the build — these are the one-line commands to run each service.
# 1. API + database (seeds on first run)
# 2. Web front end → open in your browser
# 3. MCP server → connect it to your coding agent
Filled in by the build — the exact command to register the MCP server with your agent.
DealDesk is built from a short product brief (PRD.md) rather than a spec — the technical design, the service boundaries and the data shapes are decisions you make. If you’re using it to learn multi-agent coding: read the brief, write a build plan, then split the work across agents (front end, back end, MCP, tests) and let them run.
Three files help you do that:
BUILD-PROMPT.md — the exact instruction to paste into your coding agent.AGENTS.md — orientation for any AI agent pointed at this repo: what it is and what to build.AGENT-COMMANDS.md — a reference for Claude Code’s agent, subagent, goal and team commands.Demo project. Synthetic data only — no real company, advertiser or deal. Choose a permissive licence (MIT is a sensible default) before you make the repo public.