Demo environment
https://sales-kernel-demo.vercel.app is one process with both services mounted — api.forsale at /forsale, the closer marketplace at /closers — and all escalations, matching, and gig-result callbacks dispatched in-process. It exists so every claim in these docs is demonstrable.
curl -s https://sales-kernel-demo.vercel.app/
# → JSON index of every endpoint
curl -s https://sales-kernel-demo.vercel.app/health
# {"ok":true,"closers":2,"deals":0}
curl -s -X POST https://sales-kernel-demo.vercel.app/demo/reset
# {"reset":true,"seeded":["Dana Reyes","Marcus Webb"]}Seeded closers
Boot (and every reset) seeds two fictional contractors so matching, claiming, Registers, and payout ledgers have something to bite on:
| Closer | Industries | Starts with |
|---|---|---|
| Dana Reyes | Enterprise SaaS, Insurance | an empty Register ({ gigs: 0, wins: 0, grossClosedUsd: 0 }) and an empty payout ledger |
| Marcus Webb | Coaching, Real Estate |
You can enroll more via POST /closers/closers — they last until the next reset.
Reset semantics
POST /demo/resetclears all state — deals, gigs, enrolled closers, Registers, ledgers — and re-seeds Dana and Marcus fresh.- The environment is shared: anyone reading these docs hits the same instance, and anyone can reset it at any time. Don’t expect your deals to survive, and don’t put anything real in it.
- Ids (
deal_NNNN,gig_NNNN) are monotonic but not stable across runs or resets — capture them from responses (as the quickstart does withjq) rather than hardcoding.
In-memory caveat
All state is in-memory in a single serverless instance. A cold start, redeploy, or platform recycle wipes it exactly like a reset (minus the counter). If a deal id suddenly 404s, that’s what happened — start over with POST /demo/reset. There is no database, no persistence, and no uptime promise.
What is faithful
The mechanics are the real kernel, not a mock: the propose → gate → commit authority seam, Mandate bounds-checking (422), per-Role staffing and escalation, the one-way human-track door, the gig lifecycle, fee-at-fulfillment vs commission-at-won settlement, and Register/ledger accounting all run the same code paths the product is built on. What the demo simulates is the work: the “agent” is scripted, and you play the human closers yourself via the /closers endpoints.