URL: /plays/creator-probe · Id: `play:creator-probe`

# 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.

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.

```text title="Set it up · Ask"
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.
```

```text title="Run one · Ask"
Hand this week’s top creator to the Partnerships agent and show me what it chose and why. Don’t send.
```

```ts title="Run one · SDK"
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 }
```

```json title="Run one · Response · sample"
{
  "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"
    ],
    "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"
  },
  "actions": [
    {
      "$id": "https://api.sb/leaseline.app/actions/action_1",
      "$type": "Action",
      "status": "done",
      "mode": "try",
      "by": "worker_10",
      "verb": "Party.screen",
      "checks": [
        {
          "check": "audience-age",
          "status": "pass"
        }
      ]
    },
    {
      "$id": "https://api.sb/leaseline.app/actions/action_2",
      "$type": "Action",
      "status": "pending",
      "reason": "awaitingTime",
      "mode": "try",
      "by": "worker_10",
      "verb": "Message.schedule",
      "checks": [
        {
          "check": "owned-by-a-person",
          "status": "pass"
        },
        {
          "check": "pre-registration",
          "status": "pass"
        },
        {
          "check": "probe-limit",
          "status": "pass"
        },
        {
          "check": "audience-age",
          "status": "pass"
        }
      ]
    }
  ]
}
```

`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 |

| Worth | Your time | Spend | First signal | Use it when | Instead |
| --- | --- | --- | --- | --- | --- |
| ≈ +$1,200 ARR a month at $500 a month | 1 h per probe, then 15 min a week | $50 to $120 a post, $502 for this probe | Day 1 after a post: the first coded trial | $250+ a month for creators, a trial a code can count | Under $250: `creator-partnership` · nothing a code counts: add a trial (<Op verb="Offer.publish" />) |

**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](/plays/creator-retainers).

## Start it this week
```bash
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"}'
```


```json title="The dry run’s 422 · 2026-08-24 · sample"
{
  "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"
    }
  ]
}
```

| Check | Fix (one call) | Your time | Wait |
| --- | --- | --- | --- |
| <a id="check-use-when"></a>`use-when` · <a id="check-baseline"></a>`baseline` · pass: $500 line, the trial takes a code · warn: n 11 (gaps #8) | <Op verb="Metric.query" /> on `creator-arm-yield`; the pre-period fills Before | 1 min | none |
| <a id="check-domain-authenticated"></a>`domain-authenticated` · pass | <Op verb="Domain.authenticate" /> | 0 min | none |
| <a id="check-approved-pages"></a>`approved-pages` · fail (gaps #8) | <Op verb="Site.publish" /> the trial landing Page | 15 min | none |
| <a id="check-role-unstaffed"></a>`role-unstaffed` · warn (gaps #8): fees and winners come to you | <Op verb="Role.staff" />, or leave it: you approve fees over the line | 0 min | none |

`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
| 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 (<Op verb="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 | <Op verb="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 <Op verb="Offer.trial" /> with the code |
| + 4 more for a funded probe, missing disclosures, readouts and low-intent spikes (`?lanes=all`) | | | | |

```json title="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"
  }
}
```

```bash title="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.

| 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 | <Op verb="Action.cancel" /> inside the delay window |
| Hold the fee · Call the readout | It does it | 1 of 1 · 1 of 1 | — | — | <Op verb="Action.redirect" /> |
| Exclude the post · Hand a winner on | To a person, every time | 0 · 1 | never | — | <Op verb="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 | — | <Op verb="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 <Op verb="Message.schedule" />, <Op verb="Contact.suppress" />, <Op verb="Task.assign" />, <Op verb="Experiment.conclude" />, and any other call becomes an Approval under the Role’s Mandate.

```md title="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
| 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) | <Op verb="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 | <Op verb="Contact.suppress" /> → <Op verb="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 | <Op verb="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) | <Op verb="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 | — | <Op verb="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 | <Op verb="Conversation.answer" /> |
| Not now | “Booked through November.” | the follow-up cancels; the cell takes the next creator | nobody | at once | <Op verb="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 | <Op verb="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 | <Op verb="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 | <Op verb="Conversation.escalate" /> |
| Stop | “Not interested. Please don’t email again.” | nothing else sends to them, from any of your Startups | nobody | at once | <Op verb="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).

```json title="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 <Op verb="Task.claim" /> (Take this one), <Op verb="Task.return" /> with a reason, or <Op verb="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:** <Op verb="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 |
| --- | --- | --- | --- |
| <a id="check-owned-by-a-person"></a>`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. | <Op verb="Task.assign" /> |
| <a id="check-pre-registration"></a>`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. | <Op verb="Experiment.start" /> |
| <a id="check-code-test"></a>`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. | <Op verb="Event.capture" /> |
| <a id="check-disclosure-hold"></a>`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. | <Op verb="Monitor.check" /> |
| <a id="check-claims-hold"></a>`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. | <Op verb="Monitor.check" /> |
| <a id="check-audience-age"></a>`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. | <Op verb="Party.screen" /> |
| <a id="check-probe-limit"></a>`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. | <Op verb="Approval.approve" /> |

| Stop (pauses the Play) | Pauses when | Then |
| --- | --- | --- |
| <a id="stop-engagement"></a>`engagement` | views rise while comments stay flat, or duplicate comments pass 20 % | that post is excluded, its fee held, its creator suppressed |
| <a id="stop-views-no-events"></a>`views-no-events` | 3 posts run 72 h on 30,000 combined views with no counted event | unposted arms hold and the code test re-runs |
| <a id="stop-low-intent"></a>`low-intent` | same-day cancels or refunds at twice the baseline on 20+ events | the post is flagged and blocked from any hand-on |
| <a id="stop-venue-notice"></a>`venue-notice` | a post removed or labeled by the Venue | that arm pauses; the cause becomes a brief rule |
| <a id="stop-offer-floor"></a>`offer-floor` | under 3 signed creators from 30 offers | outreach stops until the fee band is re-read |
| <a id="stop-mailbox"></a>`mailbox` | bounces over 2 % of a day’s offers, or any spam complaint | the Mailbox, then outreach, pauses |
| <a id="stop-kill-switch"></a>`kill-switch` | you press it | every 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.

```json title="The captured refusal · sample"
{
  "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"
    }
  ]
}
```


```json title="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 <Op verb="Metric.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`

| 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.

```json title="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 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 <Op verb="Task.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.

```diff title="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
```mdx title="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
| Key | Id | What it is |
| --- | --- | --- |
| Tactic | <a id="tactic-probe-design"></a>`probe-design` | Creator 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. |
| Tactic | <a id="tactic-creator-vetting"></a>`creator-vetting` | Creator 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. |
| Tactic | <a id="tactic-creator-offer"></a>`creator-offer` | Creator 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. |
| Tactic | <a id="tactic-creator-brief"></a>`creator-brief` | Creator 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. |
| Tactic | <a id="tactic-disclosure-scan"></a>`disclosure-scan` | Disclosure 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. |
| Tactic | <a id="tactic-arm-readout"></a>`arm-readout` | Variant 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. |
| Trigger | <a id="trigger-probe-funded"></a>`probe-funded` | Creator probe funded: `event` on `PlayMix.compiled`, window 7d. |
| Trigger | <a id="trigger-creator-asks"></a>`creator-asks` | Creator audience asks: `threshold` on `Monitor.checked`, window 14d. |
| Trigger | <a id="trigger-post-live"></a>`post-live` | Variant post live: `event` on `Post.published`, window 2h. |
| Trigger | <a id="trigger-disclosure-missing"></a>`disclosure-missing` | Disclosure missing: `event` on `Monitor.checked`, window 2d. |
| Trigger | <a id="trigger-coded-trial"></a>`coded-trial` | Coded trial: `event` on `Offer.trialed`, window 14d. |
| Trigger | <a id="trigger-readout-due"></a>`readout-due` | Variant readout due: `at` on `Monitor.checked`, window 7d. |
| Trigger | <a id="trigger-low-intent-spike"></a>`low-intent-spike` | Low-intent spike: `threshold` on `Monitor.checked`, window 72h. |
| Sequence | <a id="sequence-creator-probe-offer"></a>`creator-probe-offer` | Creator probe offer: 3 steps; it ends on Any reply; A decline; An unsubscribe; The probe fills. |
| Sequence | <a id="sequence-creator-probe-delivery"></a>`creator-probe-delivery` | Creator probe delivery: 5 steps; it ends on The arm is excluded; An unsubscribe; The Agreement ends. |