Sales is now an API.
Define your offer and declare your Mandate in one call. Agents work every deal; verified human closers take over exactly where you declared; you pay only when a deal closes won.
$ curl -X POST https://sales-kernel-demo.vercel.app/forsale/deals \
-H 'content-type: application/json' -d '{
"account": {
"name": "Acme Robotics",
"industry": "Enterprise SaaS",
"actor": "B2B"
},
"listValueUsd": 80000,
"mandate": {
"staffing": {
"closer": { "humanIf": { "minDealSizeUsd": 25000 } }
},
"commissionPct": 0.1
}
}'
# the pipeline advances — agent first, then your Mandate
# escalates the closer Role to a human
"activity": [
{ "by": "agent", "stage": "qualified", "note": "BANT qualified" },
{ "by": "agent", "stage": "meeting", "note": "discovery held" },
{ "by": "service", "stage": "meeting", "note": "gig_0003 posted" },
{ "by": "human", "stage": "proposal", "note": "proposal sent" },
{ "by": "human", "stage": "negotiation", "note": "redlines in" },
{ "by": "human", "stage": "closed_won", "note": "multi-year term" }
]
# GET /forsale/deals/:id/settlement — only on closed_won
{
"finalValueUsd": 74000,
"closerCommissionUsd": 7400,
"platformFeeUsd": 3700,
"feesSettledUsd": 0,
"netToSellerUsd": 62900
}Condensed from a real run against the live demo environment. An illustrative demo scenario of the product mechanics — not marketplace results.
Every other function became infrastructure. Sales is still an org chart.
Payments, compute, comms, auth — callable, declarative, priced on use. Sales is the last function you’re still told to staff: recruit, ramp, run forecast calls, eat quota misses. The alternatives bill on effort — retainers due monthly whether or not anything closes.
And if your product sells but only through you, there’s a quieter reason you haven’t handed your deals to anyone: everywhere else, delegation means giving up authority over price and promises. We build APIs too, and we think that fear is legitimate. So the system is built around never asking you to.
How it works
Run it
The quickstart takes a deal from POST to closed_won in a handful of calls against the live demo environment — no key, no form. You see the propose → gate → commit seam and the settlement JSON from your own terminal.
Declare your Mandate
Your rules in a fixed shape: who works each Role (agent, human, or human-if-conditions), your negotiation floor, your commission and fee price tags, your stall timeout. Parameters are yours; semantics are house rules — so every deal is worked the same way and outcomes stay comparable.
POST /deals — pay on outcomes
Agents work every stage. When a deal crosses your declared line, a fully-briefed gig goes to a verified closer while your code just sees the deal advance. Settlement is computed only on closed_won: 5% of closed value, nothing on effort.
Executors propose. Your deal’s gate commits.
AI agents and verified human closers fill the same Roles on the same pipeline, and neither can move a Deal. Working a stage produces a Proposal — advance-to, close value, discovered Signals. The Deal service holds the only commit authority: transition legality, your floor, your commission cap. It refuses a below-floor close even when a human closer proposes it. That isn’t a policy — it’s the shape of the API. There is no endpoint an executor can call that moves your deal.
How the gate works →$ curl -s -w '\nHTTP %{http_code}\n' \
-X POST $BASE/closers/gigs/$GIG/advance \
-H 'content-type: application/json' \
-d '{"advanceTo":"closed_won","valueUsd":50000,
"note":"buyer pushed hard"}'
{
"error": "deal gate refused the proposal",
"gate": {
"error": "proposed close $50000 is below the floor $64000 (80% of list)"
}
}
HTTP 422Step 4 of the quickstart — runnable today against the demo environment, no key required.
The guarantees are mechanisms
Nothing below is a pledge. Each is a property of how the system is built, documented in Concepts and visible in the API reference.
The verified Register
A closer’s standing is an accumulating record built exclusively from settled outcomes — Flow-of-Funds metering, never claims, never résumés, never your deal content. The same Register shape scores agents: one scoreboard, two workforces.
Briefed handoffs, one-way
When your Mandate escalates a Role, the gig carries the full Brief — account, value, stage history, Signals, floor. A closer never picks up cold. And escalation is a one-way door: once a deal is human-track, there is no silent fallback to the agent.
Outcome billing
5% of closed value, computed only on closed_won. Fees and commissions only as declared in your Mandate — every price tag fixed at post time and visible on the gig before it’s claimed. Nothing on effort.
Mount a sales team as a tool
api.forsale ships an MCP server: sell, get_deal, advance_deal. Your agent creates a deal, the pipeline runs — and when your Mandate says a stage needs a human, a fully-briefed gig goes to a verified closer while your agent just sees the deal advance.
{
"mcpServers": {
"forsale": {
"command": "tsx",
"args": ["packages/forsale/src/mcp.ts"],
"env": { "FORSALE_URL": "https://sales-kernel-demo.vercel.app/forsale" }
}
}
}One closing capability, specialized per buyer
The Actor is deal-level configuration — account.actor on POST /deals — never a separate product. The same pipeline, Mandate, and gate; staffing and timing specialize per buyer type.
Committee deals
Multi-stakeholder cycles, procurement, redlines. Human closers by league — SMB to enterprise — enter exactly at the stage your Mandate escalates, with the full Brief.
High-ticket consumer
Fast cycles, single decision-maker, tighter stall timeouts by default. Agents carry the volume with statistical oversight; humans take the deals your rules flag.
Developer buyers
Design-partner conversion: the pipeline that turns a technical evaluation into a signed deal, with closers who can hold their own in a technical room.
Agent buyers
Machine-readable offers and agent-to-agent negotiation: your buyer is software, your deal still runs through the same stages, gate, and settlement.
The terms, stated up front
- Your floor is law: the gate refuses any below-floor proposal, from a human or an agent.
- Every price tag is fixed at post time and visible before a gig is claimed — no retroactive splits, no surprises.
- Closers keep 100% of their commission. The platform fee is seller-side, so the humans closing your deals are never quietly taxed into misalignment.
- Your deal records are per-tenant, never pooled — Registers are built from outcome metering, never from your deal content.
- We’re pre-launch: keys go out in small batches as access opens, and the demo scenario is always labeled as illustrative mechanics, not results.
Revenue that doesn’t route through your calendar
The cost of staying put is quiet. Every deal waits on the founder’s calendar, stalled deals die because reviving them is nobody’s job, and growth is capped at your hours. Nothing catastrophic happens — nothing happens.
The other side is a Mandate with your name on it: agents working every deal, verified closers entering exactly where you declared, your floor enforced on everyone — and your code just sees stages advance.
Get an API key
We’re pre-launch. Keys are issued in small batches as access opens — tell us what you’d be selling and we’ll get you in the queue. The quickstart runs against the live demo environment today, no key required.