Skip to content

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
Run oneMode try
You, to your agent

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"
  }
}
Response200application/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 yetPreview

On 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 creatorChoiceReason
Tom Ellis, a small-landlord channel: 6 asks about renewal notices under one postoffer-a-postreal asks, real comments, an open slot in his cluster
Ana Ruiz signed; her Leaseline account shows 3 sessionssend-the-briefsigned, and the account shows use
Ben Hart’s post: the disclosure only in the captionhold-the-feeno disclosure in the content: the fee holds 48 hours
Hook B’s 3 posts at day 14: 5.7 trials per $100hand-on-a-winnerover break-even, 5 per $100: you choose the next rung

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/leaseline.app · 41 Customers at 2026-10-19 · on Monitor.checked · first offer drafted 22 min after the asks · 9 keys Not live yet

Also runs as: Creator retainers.

Start it this week

Terminal
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"}'
422Refusedcreator-probe can’t start yet: 1 check fails and 2 warn.
CheckFixThen
use-when pass · Not live yet, gaps #8$500 creator line; the trial takes a codePOST /{namespace}/metrics/query
baseline warn · Not live yet, gaps #8n 11: uncoded trials on post days read against this 14-day pre-period.POST /{namespace}/metrics/query
domain-authenticated passleaseline.app: 3 of 3 records resolvePOST /{namespace}/domains/{domain}/authenticate
approved-pages fail · Not live yet, gaps #8Publish the trial landing Page each code points to.POST /{namespace}/sites/{site}/publish
role-unstaffed warn · Not live yet, gaps #8Leave 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.

CheckFix (one call)Your timeWait
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 Before1 minnone
domain-authenticated · passPOST /{namespace}/domains/{domain}/authenticate0 minnone
approved-pages · fail (gaps #8)POST /{namespace}/sites/{site}/publish the trial landing Page15 minnone
role-unstaffed · warn (gaps #8): fees and winners come to youPOST /{namespace}/roles/{role}/staff, or leave it: you approve fees over the line0 minnone

Your number · Before 0.8 trials a day, uncoded · Now 4.4 coded trials per $100 pooled · Target 5 per $100 on the next probe · ■■□□ Early sign on the hook split · n 22 coded trials

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

WhenTrigger idStarts onWindowHow it gets in
A watched creator’s post gathers 5+ specific asks for your Problemcreator-asksthreshold on Monitor.checked where 5 or more specific asks for the Problem under one watched creator’s post within 72 hours14dthe daily creator read (POST /{namespace}/monitors/{monitor}/check)
A signed creator’s post goes livepost-liveevent on Post.published where a signed creator’s arm post appears on their account2hPOST /{namespace}/handles/{handle}/connect, or the creator marks it live
A trial carries a post’s codecoded-trialevent on Offer.trialed where the trial carries an arm’s link code or promotion code14dyour 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=all)
One signed delivery · StartupBuilder-Signature
{
  "$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"
  }
}
Reproduce it in test
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:partner-manager, 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.

OptionRung todayEvidence (passed of n)Moves up atDrops back whenYou can
Offer a paid post · Send the briefIt does it, you can stop it9 of 9 · 6 of 6met at the second probe’s first 5 offersan offer fails a Check, or mailbox fires → You approve each onePOST /{namespace}/actions/{action}/cancel inside the delay window
Hold the fee · Call the readoutIt does it1 of 1 · 1 of 1——POST /{namespace}/actions/{action}/redirect
Exclude the post · Hand a winner onTo a person, every time0 · 1never—POST /{namespace}/tasks/{task}/claim
Change the hooks, cells or verdict rulesYou approve each onelocked: a change after the first post opens a new Experimentnever—POST /{namespace}/experiments/{experiment}/start
Never: a scripted line, a praise ask, a shared code, a boost of an arm’s postRefused, every time1 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.

The brief (folded): compiled Agent-register Markdown · play:creator-probe@1 · each line names its record key
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

OptionPicked whenDecided byRunsHands toIf it’s just you
Offer a paid post offer-a-posta vetted creator for an open cellAgent’s call, with its reasoncreator-probe-offer: one priced offer, one follow-upthe creator signs, or it closesthe same
Send the brief send-the-briefsigned, and the account shows useYour rule (copyRules 3)creator-probe-delivery: brief, codes, the drawn post datethe creatorthe same
Hold the fee hold-the-feeno disclosure in the content, no label, or a wrong codeYour rule (the Disclosure hold)POST /{namespace}/messages/{message}/schedule the exact fix; 48 hours, then the post is excludedthe creatorthe same
Exclude the post exclude-the-armflat comments under rising views, or 20 %+ duplicatesAgent’s call, with its reasonPOST /{namespace}/contacts/{contact}/suppress → POST /{namespace}/tasks/{task}/assignyou confirm it, due 1 business day · Take this onethe same
Hand a winner on hand-on-a-winnera 14-day yield over 5 trials per $100Agent’s call, with its reasonPOST /{namespace}/tasks/{task}/assign: referral terms, a retainer or a paid Ad under its optionyou choose the rung · Take this onethe same
Call the readout call-the-readoutthe last post reaches 14 days liveYour rule (the verdict rules)POST /{namespace}/experiments/{experiment}/concludenobody; the next probe’s design comes to youthe same
When they write backFixture replyWhat happensWho answersBy whenCall
Interested“I’m in. When do I post?”the Agreement and the post date drawn for them; it signs on their pressthe 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 ProPartnerships · your agent1 business dayPOST /{namespace}/conversations/{conversation}/answer
Not now“Booked through November.”the follow-up cancels; the cell takes the next creatornobodyat oncePOST /{namespace}/conversations/{conversation}/close
Wrong person“Email my manager instead.”asks them to forward it; it never writes to an address from their textPartnerships · your agent1 business dayPOST /{namespace}/conversations/{conversation}/answer
Out of officean auto-reply until Oct 28the follow-up waits for the return date, inside the probe windownobodythe return datePOST /{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 armyou1 business dayPOST /{namespace}/conversations/{conversation}/escalate
Stop“Not interested. Please don’t email again.”nothing else sends to them, from any of your Startupsnobodyat oncePOST /{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).

What lands in each queue · sample
[
  {
    "$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)RefusesFixThen
owned-by-a-person (rule j; Not live yet, gaps #8)an offer to a creator whose Conversation a person claimedLeave 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 rulesStart 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 eventFix 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 presentThe 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 livedThe 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 13Choose another creator for that cell.POST /{namespace}/parties/{party}/screen
probe-limit (the record’s Probe limit)a fee or option past the probe LimitApprove the raise, or keep the probe at its line.POST /{namespace}/approvals/{approval}/approve
Stop (pauses the Play)Pauses whenThen
engagementviews rise while comments stay flat, or duplicate comments pass 20 %that post is excluded, its fee held, its creator suppressed
views-no-events3 posts run 72 h on 30,000 combined views with no counted eventunposted arms hold and the code test re-runs
low-intentsame-day cancels or refunds at twice the baseline on 20+ eventsthe post is flagged and blocked from any hand-on
venue-noticea post removed or labeled by the Venuethat arm pauses; the cause becomes a brief rule
offer-floorunder 3 signed creators from 30 offersoutreach stops until the fee band is re-read
mailboxbounces over 2 % of a day’s offers, or any spam complaintthe Mailbox, then outreach, pauses
kill-switchyou press itevery open offer and pending fee pauses

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.

422RefusedBen Hart’s fee did not pay: his post states a result no Leaseline record backs.
CheckFixThen
claims-hold failThe 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.

The Stops that fired, as Campaign.paused reasons · sample
[
  {
    "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"
}
NodeHook B (3 posts, $297)Hook A (3 posts, $205)AddedConfidenceBasis
creator-arm-yield5.7 coded trials per $100 (17)2.4 (5)×2.4 [1.1, 5.2]■■□□ Early signhooks 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 signthe 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 tellcarried 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.

The Campaign card · sample
{
  "$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=all; three follow the tables.

What happened, by optionDecisionsDoneCoded trials · Customers (Booked: credited, not all caused by this Play)
Offer a paid post · Send the brief9 · 66 signed · 6 briefs22 · 5
Hold the fee · Exclude the post1 · 01 claim edited in 26 h—
Hand a winner on · Call the readout1 · 1hook B to you on Oct 12—
At $250 a month (the Use it when volume)5 posts at the $50 floorone probe in about 6 weeksOther Startups’ results: +3.0 per $100 above uncoded, ■■□□ Early sign, n 118 probes
DayEventWhat happenedYour time
0event_118 Campaign.createdthe three steps; the dry run fails approved-pages20 min
0event_121 Experiment.startedthe hooks, cells, window and verdict rules locked20 min
2–10event_150 Message.scheduled, first of 99 offers, 6 signed—
19event_302 Post.publishedthe first post goes live on its drawn date—
22event_351 Campaign.pausedviews-no-events: one code’s link pointed at the old Page; fixed in 40 min15 min
27event_419 Action.refusedclaims-hold held Ben Hart’s fee; he edited the line the next day—
49event_705 Experiment.concludedhook B wins on 22 coded trials; the Brief comes to you15 min
1–56event_160 Approval.created, first of 2you approved the design and chose the next rung; weekly reviews, from the POST /{namespace}/tasks/next log30 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.

Ben Hart’s post, 2026-09-20 · the line claims-hold held, then the edit that passed
- 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

plays/creator-probe.mdx
---
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.
Text
$ 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

KeyIdWhat it is
Tacticprobe-designCreator probe design pre-registers one Experiment per creator probe: its arms, factors, Metric, verdict rules and one code per arm, tested end to end. Starts at You approve each one.
Tacticcreator-vettingCreator vetting finds niche creators, prices each from median views times a target CPM, and ranks them on ask density and fit, never followers. Starts at Sends nothing.
Tacticcreator-offerCreator offer sends each ranked creator one priced, agent-signed offer and one follow-up, settles counters inside a band, and signs a one-post Agreement. Starts at You approve each one.
Tacticcreator-briefCreator brief sends each creator the Problem, approved claims, code, link and disclosure line for one post, and leaves concept and publishing to the creator. Starts at You approve the first wave.
Tacticdisclosure-scanDisclosure scan reads every partner post for an in-content disclosure, the Venue’s toggle and labels, link text and claims, and holds Commission on a miss. Starts at Sends nothing.
Tacticarm-readoutVariant readout credits counted events by code, pays each fee after its scan, writes verdicts at day 14, and hands winners on. Starts at It does it, you can stop it.
Triggerprobe-fundedCreator probe funded: event on PlayMix.compiled, window 7d.
Triggercreator-asksCreator audience asks: threshold on Monitor.checked, window 14d.
Triggerpost-liveVariant post live: event on Post.published, window 2h.
Triggerdisclosure-missingDisclosure missing: event on Monitor.checked, window 2d.
Triggercoded-trialCoded trial: event on Offer.trialed, window 14d.
Triggerreadout-dueVariant readout due: at on Monitor.checked, window 7d.
Triggerlow-intent-spikeLow-intent spike: threshold on Monitor.checked, window 72h.
Sequencecreator-probe-offerCreator probe offer: 3 steps; it ends on Any reply; A decline; An unsubscribe; The probe fills.
Sequencecreator-probe-deliveryCreator probe delivery: 5 steps; it ends on The arm is excluded; An unsubscribe; The Agreement ends.

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.