Creator probe
Pays 5 to 10 small creators for one post each, ranks every post by trials it brought per $100, so you know whose audience buys.
- Channel
- Ads and sponsorships
- Summary
- startupbuilder.dev
Be our Partnerships lead: put $500 behind 5 to 10 small landlord creators, one post each, with two hooks drawn at random: “60 days out, every time” and “stop chasing renewals.” Give each post its own code and rank them by trials per $100. Never script what they say. Show me what’s missing; don’t send.
# Not live yet (gaps #2)
curl -X POST "https://api.sb/leaseline.app/campaigns?mode=try" \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"play":"creator-probe"}'import { $ } from 'startup-builder'
return await $.Campaign.create({ play: 'creator-probe' }, { mode: 'try' }) // dry run on the day-0 Startup, 2026-08-24 · Not live yet, gaps #2
npx startup-builder do Campaign.create --json '{"play":"creator-probe"}' --try # Not live yet (gaps #2){
"name": "do",
"arguments": {
"code": "return await $.Campaign.create({ play: 'creator-probe' }, { mode: 'try' }) // dry run on the day-0 Startup, 2026-08-24 · Not live yet, gaps #2",
"mode": "try"
}
}application/json{
"type": "https: //startupbuilder.dev/ errors/ refused",
"title": "Refused",
"status": 422,
"detail": "creator-probe can’t start yet: 1 check fails and 2 warn.",
"checks": [
{
"check": "use-when",
"status": "pass",
"observed": "$500 creator line; the trial takes a code",
"doc": "/plays/ creator-probe#check-use-when",
"then": "Metric.query"
},
{
…
Hand this week’s top creator to the Partnerships agent and show me what it chose and why. Don’t send.
curl "https://api.sb/leaseline.app/events?where=name%20in%20(%22PlayMix.compiled%22%2C%20%22Monitor.checked%22%2C%20%22Post.published%22%2C%20%22Offer.trialed%22)&limit=1" \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
# Not live yet (gaps #7)
curl -X POST "https://api.sb/leaseline.app/triggers/fire?mode=try" \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"like":"event_1260"}'
# Not live yet (gaps #7)
curl "https://api.sb/leaseline.app/decisions?where=on%20%3D%20%22handle_31%22" \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
# Not live yet (gaps #7)
curl "https://api.sb/leaseline.app/actions?where=on%20%3D%20%22handle_31%22" \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"import { $ } from 'startup-builder'
const { events: [last] } = await $.Event.list({ where: 'name in ("PlayMix.compiled", "Monitor.checked", "Post.published", "Offer.trialed")', limit: 1 }) // { play } compiled to this Play’s Trigger Events
const { subject } = await $.Trigger.fire({ like: last.$id }, { mode: 'try' }) // the same Event again, in try mode · Not live yet, gaps #7
const { decisions: [decision] } = await $.Decision.list({ where: `on = "${subject}"` }) // what it chose, and why · Not live yet, gaps #7
const { actions } = await $.Action.list({ where: `on = "${subject}"` }) // what it did, with its checks · Not live yet, gaps #7
return { decision, actions }
npx startup-builder do Event.list --json '{"where":"name in (\"PlayMix.compiled\", \"Monitor.checked\", \"Post.published\", \"Offer.trialed\")","limit":1}'
npx startup-builder do Trigger.fire --json '{"like":"event_1260"}' --try # Not live yet (gaps #7)
npx startup-builder do Decision.list --json '{"where":"on = \"handle_31\""}' # Not live yet (gaps #7)
npx startup-builder do Action.list --json '{"where":"on = \"handle_31\""}' # Not live yet (gaps #7){
"name": "do",
"arguments": {
"code": "const { events: [last] } = await $.Event.list({ where: 'name in (\"PlayMix.compiled\", \"Monitor.checked\", \"Post.published\", \"Offer.trialed\")', limit: 1 }) // { play } compiled to this Play’s Trigger Events\nconst { subject } = await $.Trigger.fire({ like: last.$id }, { mode: 'try' }) // the same Event again, in try mode · Not live yet, gaps #7\nconst { decisions: [decision] } = await $.Decision.list({ where: `on = \"${subject}\"` }) // what it chose, and why · Not live yet, gaps #7\nconst { actions } = await $.Action.list({ where: `on = \"${subject}\"` }) // what it did, with its checks · Not live yet, gaps #7\nreturn { decision, actions }",
"mode": "try"
}
}application/json{
"decision": {
"$id": "https: //api.sb/ leaseline.app/ decisions/ decision_658",
"$type": "Decision",
"choice": "offer-a-post",
"reason": "Tom Ellis, a small-landlord channel with 9, 800 followers, drew 6 specific asks about renewal notices under his Oct 15 post; real comments, and his cluster still has an open slot",
"stakes": "low",
"options": [
"offer-a-post",
"send-the-brief",
"hold-the-fee",
"exclude-the-arm",
"hand-on-a-winner",
"call-the-readout"
…
sample · 4 Not live yetPreviewOn PATCH /{namespace}/campaigns/{id}Off PATCH /{namespace}/campaigns/{id}Take this one POST /{namespace}/tasks/{task}/claim
action_2 is the priced offer to Tom’s published business address: $64, from the fee formula, with the disclosure and payment timing. It sends after its delay window.
hook B 5.7 trials per $100 against hook A 2.4 · ■■□□ Early sign · n 22 coded trials · path → arr
| Try another: the creator | Choice | Reason |
|---|---|---|
| Tom Ellis, a small-landlord channel: 6 asks about renewal notices under one post | offer-a-post | real asks, real comments, an open slot in his cluster |
| Ana Ruiz signed; her Leaseline account shows 3 sessions | send-the-brief | signed, and the account shows use |
| Ben Hart’s post: the disclosure only in the caption | hold-the-fee | no disclosure in the content: the fee holds 48 hours |
| Hook B’s 3 posts at day 14: 5.7 trials per $100 | hand-on-a-winner | over break-even, 5 per $100: you choose the next rung |
- 1 h per probe, then 15 min a week
- Your time
- Day 1 after a post: the first coded trial
- First signal
Where it sits: Stranger → Lead → Trialing → Activated → At risk → Churned → Won back · Creator post yield → Deals and trials opened → New Customers ↑ → ARR added each week → ARR
Worth’s formula: about +3.0 trials per $100 above what came uncoded (Other Startups’ pooled results) × $500 a month ÷ $100 × 0.23 trials to paid × $348 first order ARR ≈ +$1,200. Under First signal: Each post reads 14 days after it goes live; the probe calls its winner when the last post does, about 6 weeks from the first offer.
sample · api.sb/
Also runs as: Creator retainers.
Start it this week
npx startup-builder add play creator-probe # 1 · writes plays/creator-probe.mdx (Not live yet, gaps #5)
# 2 · dry run; below, its 422 on 2026-08-24
curl -X POST "https://api.sb/leaseline.app/campaigns?mode=try" \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"play":"creator-probe"}'
# 3 · locks the hooks, cells, window and verdict rules before any offer
curl -X POST https://api.sb/leaseline.app/experiments/experiment_31/start \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
# on
curl -X PATCH https://api.sb/leaseline.app/campaigns/creator-probe \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"endsAt":null}'
# off: open offers and pending fees pause; posted posts stay up
curl -X PATCH https://api.sb/leaseline.app/campaigns/creator-probe \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"endsAt":"now"}' | Check | Fix | Then |
|---|---|---|
use-when pass · Not live yet, gaps #8 | $500 creator line; the trial takes a code | POST /{namespace}/metrics/query |
baseline warn · Not live yet, gaps #8 | n 11: uncoded trials on post days read against this 14-day pre-period. | POST /{namespace}/metrics/query |
domain-authenticated pass | leaseline.app: 3 of 3 records resolve | POST /{namespace}/domains/{domain}/authenticate |
approved-pages fail · Not live yet, gaps #8 | Publish the trial landing Page each code points to. | POST /{namespace}/sites/{site}/publish |
role-unstaffed warn · Not live yet, gaps #8 | Leave them: fees over the line and winners come to you. | POST /{namespace}/roles/{role}/staff |
JSON
{
"type": "https://startupbuilder.dev/errors/refused",
"title": "Refused",
"status": 422,
"detail": "creator-probe can’t start yet: 1 check fails and 2 warn.",
"checks": [
{
"check": "use-when",
"status": "pass",
"observed": "$500 creator line; the trial takes a code",
"doc": "/plays/creator-probe#check-use-when",
"then": "Metric.query"
},
{
"check": "baseline",
"status": "warn",
"observed": "11 trials in the 14 days before, uncoded",
"doc": "/plays/creator-probe#check-baseline",
"fix": "n 11: uncoded trials on post days read against this 14-day pre-period.",
"then": "Metric.query"
},
{
"check": "domain-authenticated",
"status": "pass",
"observed": "leaseline.app: 3 of 3 records resolve",
"doc": "/plays/creator-probe#check-domain-authenticated",
"then": "Domain.authenticate"
},
{
"check": "approved-pages",
"status": "fail",
"doc": "/plays/creator-probe#check-approved-pages",
"fix": "Publish the trial landing Page each code points to.",
"then": "Site.publish"
},
{
"check": "role-unstaffed",
"status": "warn",
"roles": [
"contracts-manager",
"finance-lead"
],
"owned": 0,
"doc": "/plays/creator-probe#check-role-unstaffed",
"fix": "Leave them: fees over the line and winners come to you.",
"then": "Role.staff"
}
]
}It says no, says why, and names the fix.
| Check | Fix (one call) | Your time | Wait |
|---|---|---|---|
use-when · baseline · pass: $500 line, the trial takes a code · warn: n 11 (gaps #8) | POST /{namespace}/metrics/query on creator-arm-yield; the pre-period fills Before | 1 min | none |
domain-authenticated · pass | POST /{namespace}/domains/{domain}/authenticate | 0 min | none |
approved-pages · fail (gaps #8) | POST /{namespace}/sites/{site}/publish the trial landing Page | 15 min | none |
role-unstaffed · warn (gaps #8): fees and winners come to you | POST /{namespace}/roles/{role}/staff, or leave it: you approve fees over the line | 0 min | none |
Your number · Before 0.8 trials a day,
Each post costs its creator fee, $4 per 1,000 median views with a $50 floor, paid after the post passes its scans. Offers, briefs and scans cost about $0.05 each (Worker cost). This probe came to $502 in fees and $3 of Worker cost.
When it starts
| When | Trigger id | Starts on | Window | How it gets in |
|---|---|---|---|---|
| A watched creator’s post gathers 5+ specific asks for your Problem | creator-asks | threshold on Monitor.checked where 5 or more specific asks for the Problem under one watched creator’s post within 72 hours | 14d | the daily creator read (POST /{namespace}/monitors/{monitor}/check) |
| A signed creator’s post goes live | post-live | event on Post.published where a signed creator’s arm post appears on their account | 2h | POST /{namespace}/handles/{handle}/connect, or the creator marks it live |
| A trial carries a post’s code | coded-trial | event on Offer.trialed where the trial carries an arm’s link code or promotion code | 14d | your sign-up calls POST /{namespace}/offers/{offer}/trial with the code |
+ 4 more for a funded probe, missing disclosures, readouts and low-intent spikes (?lanes=) |
{
"$id": "https://api.sb/leaseline.app/events/event_1260" ,
"$type": "Event",
"name": "Monitor.checked",
"at": "2026-10-18T09:00:31Z" ,
"seq": 1260,
"data": {
"monitor": "monitor_12",
"handle": "handle_31",
"creator": "Tom Ellis",
"venue": "tiktok",
"followers": 9800,
"asks": 6,
"window": "72h",
"cluster": "small landlords"
}
}npx startup-builder trigger Monitor.checked --like event_1260 # replays the delivery
npx startup-builder clock advance --by 4d # runs the one follow-up if no reply
npx startup-builder listen Monitor.checked --forward-to http://localhost:3000/hook Who runs it
Partnerships · your agent (role:, worker_10) holds the Key Result. It hands every fee over the line, every excluded post and every winner to you (Dana Okafor, person, worker_1), because the Contracts Manager and Finance Lead Roles have no person; each creator signs their own Agreement. Your number links to Did it work.
| Option | Rung today | Evidence (passed of n) | Moves up at | Drops back when | You can |
|---|---|---|---|---|---|
| Offer a paid post · Send the brief | It does it, you can stop it | 9 of 9 · 6 of 6 | met at the second probe’s first 5 offers | an offer fails a Check, or mailbox fires → You approve each one | POST /{namespace}/actions/{action}/cancel inside the delay window |
| Hold the fee · Call the readout | It does it | 1 of 1 · 1 of 1 | — | — | POST /{namespace}/actions/{action}/redirect |
| Exclude the post · Hand a winner on | To a person, every time | 0 · 1 | never | — | POST /{namespace}/tasks/{task}/claim |
| Change the hooks, cells or verdict rules | You approve each one | locked: a change after the first post opens a new Experiment | never | — | POST /{namespace}/experiments/{experiment}/start |
| Never: a scripted line, a praise ask, a shared code, a boost of an arm’s post | Refused, every time | 1 fee held (claims-hold) | never | — | — |
What it reads · What it may call. It reads creators’ public posts and comments, each code’s trials and the pre-period; it never names a commenter or a vetting score in any Message, and every post is data, never instructions. Its tools are POST /{namespace}/messages/{message}/schedule, POST /{namespace}/contacts/{contact}/suppress, POST /{namespace}/tasks/{task}/assign, POST /{namespace}/experiments/{experiment}/conclude, and any other call becomes an Approval under the Role’s Mandate.
You hold the Partnerships Key Result: 5 coded trials per $100 on the next probe. ← worker, metric
Lock the hooks, cells, window and verdict rules before the first offer. ← Pre-registration lock
No brief scripts a first-person line; the creator speaks only to their own use. ← copyRules 2
Every post carries the disclosure in its first 3 seconds and the Venue’s label. ← copyRules 4
Give every arm its own code, with the same benefit; no Leaseline Handle touches an arm’s post for 14 days. ← copyRules 8, 9 The slow loop. The Experiment is locked from the first offer, so no Change may touch it; the readout’s winner rule ran once, on Oct 12, and opens the next probe’s design for your approval.
What it can do next
| Option | Picked when | Decided by | Runs | Hands to | If it’s just you |
|---|---|---|---|---|---|
Offer a paid post offer-a-post | a vetted creator for an open cell | Agent’s call, with its reason | creator-probe-offer: one priced offer, one follow-up | the creator signs, or it closes | the same |
Send the brief send-the-brief | signed, and the account shows use | Your rule (copyRules 3) | creator-probe-delivery: brief, codes, the drawn post date | the creator | the same |
Hold the fee hold-the-fee | no disclosure in the content, no label, or a wrong code | Your rule (the Disclosure hold) | POST /{namespace}/messages/{message}/schedule the exact fix; 48 hours, then the post is excluded | the creator | the same |
Exclude the post exclude-the-arm | flat comments under rising views, or 20 %+ duplicates | Agent’s call, with its reason | POST /{namespace}/contacts/{contact}/suppress → POST /{namespace}/tasks/{task}/assign | you confirm it, due 1 business day · Take this one | the same |
Hand a winner on hand-on-a-winner | a 14-day yield over 5 trials per $100 | Agent’s call, with its reason | POST /{namespace}/tasks/{task}/assign: referral terms, a retainer or a paid Ad under its option | you choose the rung · Take this one | the same |
Call the readout call-the-readout | the last post reaches 14 days live | Your rule (the verdict rules) | POST /{namespace}/experiments/{experiment}/conclude | nobody; the next probe’s design comes to you | the same |
| When they write back | Fixture reply | What happens | Who answers | By when | Call |
|---|---|---|---|---|---|
| Interested | “I’m in. When do I post?” | the Agreement and the post date drawn for them; it signs on their press | the creator | — | POST /{namespace}/agreements/{agreement}/sign (theirs) |
| Send me pricing | “What do my followers pay after the trial?” | the Pricing Page’s list Price for Pro | Partnerships · your agent | 1 business day | POST /{namespace}/conversations/{conversation}/answer |
| Not now | “Booked through November.” | the follow-up cancels; the cell takes the next creator | nobody | at once | POST /{namespace}/conversations/{conversation}/close |
| Wrong person | “Email my manager instead.” | asks them to forward it; it never writes to an address from their text | Partnerships · your agent | 1 business day | POST /{namespace}/conversations/{conversation}/answer |
| Out of office | an auto-reply until Oct 28 | the follow-up waits for the return date, inside the probe window | nobody | the return date | POST /{namespace}/messages/{message}/schedule |
| Question it can’t answer | “Can I post it on my second account too?” | To a person: a second account changes the arm | you | 1 business day | POST /{namespace}/conversations/{conversation}/escalate |
| Stop | “Not interested. Please don’t email again.” | nothing else sends to them, from any of your Startups | nobody | at once | POST /{namespace}/contacts/{contact}/suppress |
When it hands to you
Winners, excluded posts and fees over the line come to you (Dana Okafor, person). One Brief per Role, as captured (brief is Not live yet, gaps #7).
[
{
"$id": "https://api.sb/leaseline.app/tasks/task_669" ,
"$type": "Task",
"assignee": "worker_1",
"due": "2026-10-13T17:00:00Z" ,
"on": "experiment_31",
"brief": {
"who": "Hook B, “stop chasing renewals”: Ana Ruiz, Ben Hart, Kim Lowe" ,
"said": "17 coded trials on $297: 5.7 per $100, over break-even" ,
"chose": "hand-on-a-winner",
"why": "hook B beats hook A 2.4 to 1 [1.1, 5.2] on 22 coded trials" ,
"next": [
"referral terms for all 3",
"a retainer for Ana (`creator-retainers`)",
"a paid Ad from Ana’s post under its option (`creator-ads`)"
],
"never": [
"a scripted line",
"a praise ask"
]
}
}
]You answer with POST /{namespace}/tasks/{task}/claim (Take this one), POST /{namespace}/tasks/{task}/return with a reason, or POST /{namespace}/actions/{action}/redirect. Once you claim a winner, the next rung’s offer waits for your choice; nothing promises a creator more until you approve it. A Task nobody claims by its due time stays with you, the last Role, and person-promise fires.
On time: you, 2 of 2 claimed within 1 business day, median 2 h 50 min, n 2, ■□□□ Too early to tell beside Other Startups’ 91 % on time. Your queue: counted by kind: 1 design approval per probe, then about 1 winner and 1 fee hold per probe.
The fixed line: POST /{namespace}/deals/{deal}/assign sets owner to the receiving person, the agent is never a Deal’s owner, and Meetings land on the owner’s calendar under the owner’s name.
When it won’t send
| Check (refuses one send) | Refuses | Fix | Then |
|---|---|---|---|
owned-by-a-person (rule j; Not live yet, gaps #8) | an offer to a creator whose Conversation a person claimed | Leave it to the person who owns it: the draft waits in their queue. | POST /{namespace}/tasks/{task}/assign |
pre-registration (the record’s Pre-registration lock) | an offer before the Experiment holds its hooks, cells, window and verdict rules | Start the Experiment first; it locks before the first offer. | POST /{namespace}/experiments/{experiment}/start |
code-test (the record’s Code test) | a brief whose link or code fails the end-to-end test event | Fix the code, then re-run its test event. | POST /{namespace}/events/capture |
disclosure-hold (the record’s Disclosure hold) | a fee before the in-content disclosure and the Venue label both read present | The creator adds the disclosure within 48 hours, or the post is excluded. | POST /{namespace}/monitors/{monitor}/check |
claims-hold (the record’s Claims hold) | a fee on a post stating a claim your pages lack, or a result the creator could not have lived | The creator edits the claim; the fee pays after the re-scan. | POST /{namespace}/monitors/{monitor}/check |
audience-age (the record’s Audience age gate) | an offer to a creator whose audience reads as under 13 | Choose another creator for that cell. | POST /{namespace}/parties/{party}/screen |
probe-limit (the record’s Probe limit) | a fee or option past the probe Limit | Approve the raise, or keep the probe at its line. | POST /{namespace}/approvals/{approval}/approve |
The captured refusal, then the Stop that fired as a Campaign.paused reason (Not live yet, gaps #2); the edit that cleared it is the Ben Hart thread in Example.
| Check | Fix | Then |
|---|---|---|
claims-hold fail | The creator edits the claim; the fee pays after the re-scan. | POST /{namespace}/monitors/{monitor}/check |
disclosure-hold pass | — | POST /{namespace}/monitors/{monitor}/check |
JSON
{
"type": "https://startupbuilder.dev/errors/refused",
"title": "Refused",
"status": 422,
"detail": "Ben Hart’s fee did not pay: his post states a result no Leaseline record backs.",
"checks": [
{
"check": "claims-hold",
"status": "fail",
"doc": "/plays/creator-probe#check-claims-hold",
"fix": "The creator edits the claim; the fee pays after the re-scan.",
"then": "Monitor.check"
},
{
"check": "disclosure-hold",
"status": "pass"
}
]
}It says no, says why, and names the fix.
[
{
"reason": {
"limit": "views-no-events",
"observed": "31,400 views, 0 coded events" ,
"bound": "30,000 views" ,
"window": "72h"
},
"doc": "/plays/creator-probe#stop-views-no-events" ,
"task": "task_641"
}
]Did it work
Hooks were assigned to creators at random within each audience cluster and post dates drawn at random, so the two hooks read from one assignment (rules m–o); uncoded trials on post days read against the 14-day pre-period. Each figure’s call is POST /{namespace}/metrics/query by node, and every node above the leaf is Not live yet (gaps #4).
hook B 5.7 trials per $100 against hook A 2.4 · ■■□□ Early sign · n 22 coded trials · path → arr
- Chose
- offer-a-post
- Why
- Tom Ellis, a small-landlord channel with 9,800 followers, drew 6 specific asks about renewal notices under his Oct 15 post; real comments, and his cluster still has an open slot
- From
- offer-a-post · send-the-brief · hold-the-fee · exclude-the-arm · hand-on-a-winner · call-the-readout
- Expects
- a signed Agreement within 8d; coded trials read 14d after the post
- Reopens when
- no reply from handle_31 within 4d; one follow-up then sends in the same thread
- By
- worker_10
JSON
{
"$id": "decisions/decision_658",
"$type": "Decision",
"choice": "offer-a-post",
"reason": "Tom Ellis, a small-landlord channel with 9,800 followers, drew 6 specific asks about renewal notices under his Oct 15 post; real comments, and his cluster still has an open slot",
"stakes": "low",
"options": [
"offer-a-post",
"send-the-brief",
"hold-the-fee",
"exclude-the-arm",
"hand-on-a-winner",
"call-the-readout"
],
"by": "worker_10",
"on": "handle_31",
"expected": "a signed Agreement within 8d; coded trials read 14d after the post",
"reopensWhen": "no reply from handle_31 within 4d; one follow-up then sends in the same thread"
}| Node | Hook B (3 posts, $297) | Hook A (3 posts, $205) | Added | Confidence | Basis |
|---|---|---|---|---|---|
creator-arm-yield | 5.7 coded trials per $100 (17) | 2.4 (5) | ×2.4 [1.1, 5.2] | ■■□□ Early sign | hooks drawn at random within clusters · n 22 coded trials · 6 posts |
opened-deals-and-trials ↑ | 20 trials in post windows (17 coded, 3 uncoded above the pre-period) | 6 (5 coded, 1 uncoded) | +14 [+4, +24] | ■■□□ Early sign | the same assignment |
new-arr ↑ | $1,392, 4 Customers · Booked $1,740: credited, not all caused by this Play | $348, 1 Customer | +$1,044 [−$700, +$2,800] · Worth about +$1,200 a month | ■□□□ Too early to tell (4 vs 1 Customers) | the same · 9 trials still deciding |
net-new-arr · arr | +$1,392 | +$348 | +$1,044, carried | ■□□□ Too early to tell | carried from new-arr |
The leaf counts trial starts carrying one post’s code per $100 of its fee, in the 14 days after the post, with 10 coded events per arm as the floor for a call.
How it moves it: each post carried its own code on a date drawn at random, so all 22 coded trials trace to one post; Ana Ruiz’s post alone brought 9.
Guardrails: treated against the other hook: same-day cancels on coded trials, 1 of 22 against a trailing 1 in 30, and paying Customers from the probe (play-sourced-customers), 5.
{
"$id": "https://api.sb/leaseline.app/campaigns/creator-probe" ,
"$type": "Campaign",
"play": "play:creator-probe@1" ,
"path": [
"creator-arm-yield",
"opened-deals-and-trials",
"new-arr",
"net-new-arr",
"arr"
],
"experiment": {
"metric": "creator-arm-yield",
"unit": "ratio",
"heldBack": 0,
"decision": "decision_662"
},
"readout": {
"value": 2.4,
"n": 22,
"maturing": 9,
"interval": [
1.1,
5.2
],
"readability": "C",
"basis": "held-back",
"pooled": false
},
"ledger": {
"spend": 502,
"workerCost": 3,
"hours": 1.6,
"pipelineArr": 3132,
"wonArr": 1740,
"projectedArr": 1200,
"paybackDays": 105
}
}Outside benchmark: none recorded for this Play yet; Other Startups’ pooled results print beside every row.
Before it · After it. Before it: community-answers and creator-partnership show which creators’ audiences ask your questions. After it: creator-retainers keeps a winner posting, creator-partnership offers referral terms, and creator-ads runs a winning post as a paid Ad.
Example
Leaseline ran one $500 probe from 2026-08-24 to 2026-10-19 (56 days): 41 creators read, 9 offers, 6 signed at $50 to $120, posts on dates drawn from days 14 to 28, each read for 14 days. Read every captured thread at ?threads=; three follow the tables.
| What happened, by option | Decisions | Done | Coded trials · Customers (Booked: credited, not all caused by this Play) |
|---|---|---|---|
| Offer a paid post · Send the brief | 9 · 6 | 6 signed · 6 briefs | 22 · 5 |
| Hold the fee · Exclude the post | 1 · 0 | 1 claim edited in 26 h | — |
| Hand a winner on · Call the readout | 1 · 1 | hook B to you on Oct 12 | — |
| At $250 a month (the Use it when volume) | 5 posts at the $50 floor | one probe in about 6 weeks | Other Startups’ results: +3.0 per $100 above uncoded, ■■□□ Early sign, n 118 probes |
| Day | Event | What happened | Your time |
|---|---|---|---|
| 0 | event_118 Campaign.created | the three steps; the dry run fails approved-pages | 20 min |
| 0 | event_121 Experiment.started | the hooks, cells, window and verdict rules locked | 20 min |
| 2–10 | event_150 Message.scheduled, first of 9 | 9 offers, 6 signed | — |
| 19 | event_302 Post.published | the first post goes live on its drawn date | — |
| 22 | event_351 Campaign.paused | views-no-events: one code’s link pointed at the old Page; fixed in 40 min | 15 min |
| 27 | event_419 Action.refused | claims-hold held Ben Hart’s fee; he edited the line the next day | — |
| 49 | event_705 Experiment.concluded | hook B wins on 22 coded trials; the Brief comes to you | 15 min |
| 1–56 | event_160 Approval.created, first of 2 | you approved the design and chose the next rung; weekly reviews, from the POST /{namespace}/tasks/next log | 30 min · total 1.6 h measured, 2 h asked |
Partnerships · your agent → Ana Ruiz, Sep 2, 10:10 · I’m Leaseline’s agent. Your Aug 30 video drew 8 questions about renewal notices.¹ We’d pay $72 for one post about your own use, on a date between Sep 14 and Sep 28, with “paid partnership” on screen in the first 3 seconds.² Fee paid within 5 days of the post. *Signed with the Role’s disclosure line and the unsubscribe line.*³
Ana, Sep 2, 13:44 · signed. Her post on Sep 16 brought 9 coded trials in 14 days; 3 paid.
- Leaseline cut my vacancies in half.
+ Leaseline sends my renewal notices 60 days out; I stopped tracking them in a spreadsheet. The readout, 2026-10-12 08:00 · hook B at 5.7 trials per $100 against hook A at 2.4. · Partnerships · your agent, 08:01 · the winners went to you with three next rungs (
task_669), due Oct 13 17:00. · Dana, Oct 12 14:30 · chose referral terms for all 3 and a retainer for Ana.
¹ Only the creator’s own public post and the questions under it. ² The fee from its formula, the date window and the disclosure. ³ The fixed lines, compiled from the Role’s Settings.
Your settings
---
line: 500 # dollars for this probe
break-even: 5 # trials per $100
hooks: [60 days out every time, stop chasing renewals]
---
Five to ten small landlord creators, one post each, hooks drawn at random. Never script what they say. $ npx startup-builder show plays/creator-probe
line 500 · break-even 5 · hooks 2 your file plays/creator-probe.mdx:2-4,6 (Ask 2026-08-24)
family demand · also runs creator-retainers · worker role:partner-manager, owns never · chooses 6 (3 rule, 3 read) · sequences creator-probe-offer, creator-probe-delivery · checks owned-by-a-person, pre-registration, code-test, disclosure-hold, claims-hold, audience-age, probe-limit · stops 7 · placements tiktok, instagram, youtube, gmail, outlook, yahoo-mail catalog play:creator-probe@1 (Not live yet, gaps #5) Every key from the catalog
Compiled, not written: edit the Play record creator-probe and its Leaseline run, 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.