First order size: what moves it
First order size is the mean ARR a new Customer adds in its first four weeks, by Offer.
No Play moves this yet. Today the hub runs send-quote, and the proposed Play waits on the catalog request (gaps #4).
The number
What moved first order size this week, and which Play moved it?
curl "https://api.sb/leaseline.app/orders?where=status%20%3D%20%22paid%22%20and%20dueAt%20%3E%3D%20%222026-10-12%22&sort=-total" \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
# Not live yet (gaps #4)
curl -X POST https://api.sb/leaseline.app/metrics/query \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"metric":"first-order-arr","shape":"trend","breakdown":"play","window":"28d"}'import { $ } from 'startup-builder'
const { orders } = await $.Order.list({ where: 'status = "paid" and dueAt >= "2026-10-12"', sort: '-total' }) // this week’s first Orders
return await $.Metric.query({ metric: 'first-order-arr', shape: 'trend', breakdown: 'play', window: '28d' }) // by the Play credited · Not live yet, gaps #4
npx startup-builder do Order.list --json '{"where":"status = \"paid\" and dueAt >= \"2026-10-12\"","sort":"-total"}'
npx startup-builder do Metric.query --json '{"metric":"first-order-arr","shape":"trend","breakdown":"play","window":"28d"}' # Not live yet (gaps #4){
"name": "do",
"arguments": {
"code": "const { orders } = await $.Order.list({ where: 'status = \"paid\" and dueAt >= \"2026-10-12\"', sort: '-total' }) // this week’s first Orders\nreturn await $.Metric.query({ metric: 'first-order-arr', shape: 'trend', breakdown: 'play', window: '28d' }) // by the Play credited · Not live yet, gaps #4"
}
}application/json{
"metric": {
"$id": "https: //api.sb/ leaseline.app/ metrics/ first-order-arr",
"$type": "Metric",
"name": "First Order ARR"
},
"week": "2026-10-19",
"value": 347,
"rows": [
{
"offer": "offer_1",
"value": 347,
"customers": 6
},
{
"offer": "offer_2",
"value": 2393,
"customers": 0
}
]
}
sample · 1 Not live yetPreview+$347 ARR per new Customer · ■■■□ Likely · n 24 in 28 days
$.Metric.query({ metric: · sample
| Offer | This window | Customers |
|---|---|---|
offer_1 | +$347 ARR | 6 |
offer_2 | +$2, | 0 |
first-order-arr is this site’s proposal to the hub (Not live yet, gaps #4), so the figure above is a sample until the hub holds it.
Owner
| Accountable | From |
|---|---|
sales-lead · Sales Lead | the filed bridge item, word for word |
Worked by
| Title | Its queue |
|---|---|
| AE | POST /{namespace}/tasks/next on the AE’s queue |
Moved here by
| How | Where |
|---|---|
| Today | the hub Workflow send-quote · Send a quote |
| Proposed Play | a catalog request · Not live yet, gaps #4 |
| Page | Offers and trials |
| Page | Quotes and discount approval |
| Title | AE |
The leaves
| Under it | Moved by |
|---|---|
| none | no leaf Metric sits under it; its Plays move it directly |
Compiled, not written: edit the records it reads (metrics/bridge.ts; cap), then regenerate. Every step runs from a sentence or a line of code. In your words: the CRM words you know, and where each lives here.