URL: /plays/made-with · Id: `play:made-with`

# Made-with line

> Adds one disclosed “Made with” line to what your Customers send to people outside, so each report or notice can bring a signup.

Adds one disclosed “Made with” line to what your [Customers](https://startupbuilder.dev/business/nouns/customer) send to people outside, so each report or notice can bring a signup.

```text title="Set it up · Ask"
Be our Partner Manager for the made-with line: put one plain “Made with Leaseline” line on the owner reports and renewal notices our Customers send. Tell each Customer first, and let Pro remove it in one click. Credit a Customer when someone their line brought pays. Show me what’s missing; don’t stamp anything.
```

```text title="Run one · Ask"
Hand our latest Customer output to the Partner Manager 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 ("Thing.shared", "Event.captured", "Visitor.identified", "Invoice.collected", "Document.rendered", "Subscription.switched", "Version.deployed", "Monitor.checked")', 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_446",
    "$type": "Decision",
    "choice": "stamp-the-line",
    "reason": "Juniper Homes’ October owner reports go to 14 owners, none of them Customers; Juniper is on Starter and kept the line, and saw the line notice on Aug 26",
    "stakes": "low",
    "options": [
      "stamp-the-line",
      "stamp-with-credit",
      "offer-the-share-card",
      "credit-the-customer",
      "to-you",
      "not-now"
    ],
    "by": "worker_9",
    "on": "customer_22",
    "expected": "Visitor.identified with this line’s link code within 30d",
    "reopensWhen": "no Visitor.identified with Juniper’s link codes within 30d of 1,000 marked outputs"
  },
  "actions": [
    {
      "$id": "https://api.sb/leaseline.app/actions/action_1",
      "$type": "Action",
      "status": "done",
      "mode": "try",
      "by": "worker_9",
      "verb": "Document.render",
      "checks": [
        {
          "check": "owned-by-a-person",
          "status": "pass"
        },
        {
          "check": "keep-first",
          "status": "pass"
        },
        {
          "check": "recipient",
          "status": "pass"
        },
        {
          "check": "line-claim",
          "status": "pass"
        }
      ]
    }
  ]
}
```

`action_1` renders the 14 reports with the line after Juniper’s signature, smaller than the body, each link coded and marked nofollow. In try mode nothing sends.

`2.0 signups per 1,000 marked outputs, against none from outputs before · before-after, not proof · n 11,400 · path → arr`

| Try another: the Customer | Choice | Reason |
| --- | --- | --- |
| Juniper Homes: October owner reports to 14 owners | `stamp-the-line` | requested outputs to people outside; the line is kept |
| Maple Court: a value receipt, 212 renewal notices on time this quarter | `offer-the-share-card` | numbers from their own Events, worth posting |
| Harbor Row: at risk since Oct 2 | `not-now` | `keep-first`: their CSM sees them first |
| Juniper Homes runs Leaseline for 6 client owners | `to-you` | a heavy marker: partner terms are yours |

| Worth | Your time | Spend | First signal | Use it when | Instead |
| --- | --- | --- | --- | --- | --- |
| ≈ +$650 ARR a month at 6,100 | 30 min once, then 10 a week | $0 per line; credits $29 per paying signup | Day 11: first paying signup from a line | 10+ Customers, 1,000+ outputs a month to people outside | Under 10 Customers: `instant-response` · nothing leaves your Product: `customer-referrals` |

**Where it sits:** Stranger → Lead → Trialing → **Activated** → At risk → Churned → Won back · Mark signups → New Leads → New Customers ↑ → ARR added each week → ARR

Worth’s formula: about +1.8 signups per 1,000 marked outputs (Other Startups’ results; no lift of your own to read) × 6,100 marked outputs a month × 0.17 signups to paid × $347 first order ARR ≈ +$648. Under First signal: At 41 Customers, no held-back tenth reads within 90 days, so your file starts at `holdout: 0` and reads before-after.

`sample · api.sb/leaseline.app · 41 Customers at 2026-10-19 · on Thing.shared · first marked output 1.2 s · 7 keys Not live yet`

## Start it this week
```bash
npx startup-builder add play made-with   # 1 · writes plays/made-with.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":"made-with"}'

# 3 · keep it: the line notice goes first, then lines stamp
curl -X POST https://api.sb/leaseline.app/campaigns \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"play":"made-with"}'

# on
curl -X PATCH https://api.sb/leaseline.app/campaigns/made-with \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"endsAt":null}'

# off: the next render of every output carries no line
curl -X PATCH https://api.sb/leaseline.app/campaigns/made-with \
  -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": "made-with can’t start: 2 checks fail and 1 warns.",
  "checks": [
    {
      "check": "use-when",
      "status": "pass",
      "observed": "41 Customers; 5,900 outputs a month leave a Tenant",
      "doc": "/plays/made-with#check-use-when",
      "then": "Metric.query"
    },
    {
      "check": "billing-connected",
      "status": "fail",
      "doc": "/plays/made-with#check-billing-connected",
      "fix": "Connect Stripe so Pro removes the line and credits post as Credit Grants.",
      "then": "Integration.connect"
    },
    {
      "check": "line-on-pricing",
      "status": "fail",
      "doc": "/plays/made-with#check-line-on-pricing",
      "fix": "Say on your Pricing Page that free plans carry the line and Pro removes it.",
      "then": "Site.publish"
    },
    {
      "check": "baseline",
      "status": "pass",
      "observed": "2 signups in 56 days named a Leaseline output as how they heard, n 90 days",
      "doc": "/plays/made-with#check-baseline",
      "then": "Metric.query"
    },
    {
      "check": "role-unstaffed",
      "status": "warn",
      "roles": [
        "success-manager"
      ],
      "owned": 4,
      "doc": "/plays/made-with#check-role-unstaffed",
      "fix": "Staff the CSM, or leave it: at-risk Customers come to you, and Priya’s 4 get drafts in her queue.",
      "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: 41 Customers, 5,900 outputs a month; 2 heard-from signups (gaps #8) | <Op verb="Metric.query" /> on `mark-signups`, which fills Before in Your number | 1 min | none |
| <a id="check-billing-connected"></a>`billing-connected` · fail | <Op verb="Integration.connect" /> with `system` recurring-billing (Stripe) | 5 min | the first sync, about 10 min |
| <a id="check-line-on-pricing"></a>`line-on-pricing` · fail (gaps #8) | <Op verb="Site.publish" /> the Pricing Page with the line’s terms | 10 min | none |
| <a id="check-role-unstaffed"></a>`role-unstaffed` · warn (gaps #8): 4 of your Customers have a person owner, Priya | <Op verb="Role.staff" />, or leave it: CSM routes come to you | 0 min | none |

`Your number · Before 2 heard-from signups per 56 days · Now 2.0 signups per 1,000 marked outputs · Target 2.5 by Dec 31 · before-after, not proof · n 11,400 matured outputs`

The line costs nothing to render. A credit is one month of the lowest paid Price, $29, per paying signup a line brings, inside a $500 monthly credit Limit. That came to $116 for 4 credits in 56 days, plus about $1 a month of Worker cost for share cards.

## When it starts
| When | Trigger id | Starts on | Window | How it gets in |
| --- | --- | --- | --- | --- |
| An owner report or notice with the line goes to someone who is not a Customer | `marked-output-sent` | `event` on `Thing.shared` where line = true and recipient.customer = false | 30d | your Product renders it through <Op verb="Document.render" /> |
| Someone signs up through a line’s link code | `mark-signup` | `event` on `Visitor.identified` where firstAcquisition.linkCode is set | 30d | the code rides the link; nothing to connect |
| That signup pays, and 14 days pass with no refund | `mark-first-payment` | `state` on `Invoice.collected` where a mark-acquired Customer’s first Invoice collected, 14 days with no refund or Dispute | 14d | <Op verb="Integration.connect" /> (Stripe) |
| + 5 more for arrivals, value receipts, line settings, new output kinds and heavy markers (`?lanes=all`) | | | | |

```json title="One signed delivery · StartupBuilder-Signature"
{
  "$id": "https://api.sb/leaseline.app/events/event_1219",
  "$type": "Event",
  "name": "Thing.shared",
  "at": "2026-10-19T08:00:05Z",
  "seq": 1219,
  "data": {
    "customer": "customers/customer_22",
    "name": "Juniper Homes",
    "kind": "owner-report",
    "recipients": 14,
    "recipientsCustomers": 0,
    "offer": "Starter",
    "line": "kept"
  }
}
```

```bash title="Reproduce it in test"
# each delivery is signed with the Watch’s secret
curl -X POST https://api.sb/leaseline.app/watches \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"selector":"Thing.shared","url":"https://leaseline.app/hooks/sb"}'
npx startup-builder trigger Thing.shared --like event_1219   # replays the delivery through the stamp
npx startup-builder clock advance --by 30d   # reads the signups the line brought
```

## Who runs it
**Partner Manager · your agent** (`role:partner-manager`, `worker_9`) holds the Key Result: it stamps lines, records arrivals, credits Customers and runs the weekly audit. Heavy markers hand to **you** (Dana Okafor, person, `worker_1`), and at-risk Customers stay with their owner: **AE · Priya Shah (person)** for the 4 she owns, else you, since the CSM Role has no person.

| Option | Rung today | Evidence (passed of n) | Moves up at | Drops back when | You can |
| --- | --- | --- | --- | --- | --- |
| Stamp the line · Stamp it with credit | It does it | 11,400 outputs marked, 0 audit misses | met on day 7 (the first audit passed) | a `recipient` or `label` Stop → that kind pauses | <Op verb="Customer.exempt" /> · the off switch |
| Offer the share card | It does it, you can stop it | 9 offered, 3 posted by Customers | met on day 21 | a number its Events lack → You approve each one | <Op verb="Action.cancel" /> inside the hold |
| Credit the Customer | It does it | 4 of 4 | — | the `fraud` Stop → credits hold | <Op verb="CreditGrant.void" /> |
| To you · Not now | It does it | 1 of 1 · 6 of 6 | — | — | <Op verb="Action.redirect" /> |
| Change the line | You approve each one | 1 merged of 1 | never | — | <Op verb="Change.merge" /> · <Op verb="Change.revert" /> |
| Never: a line saying the Customer recommends you; a line on an output to a Customer | Refused, every time | 1 drafted, 1 refused | never | — | the `line-claim` Check and the `recipient` Stop |

**What it reads · What it may call.** It reads each output’s kind and its recipients’ Customer status, never what the output says. It may call <Op verb="Document.render" />, <Op verb="Referral.create" /> and <Op verb="CreditGrant.issue" />; the share card is the Customer’s to post. Its tools are <Op verb="Document.render" />, <Op verb="Referral.create" />, <Op verb="Message.schedule" />, <Op verb="CreditGrant.issue" />, <Op verb="Task.assign" />, and any other call becomes an Approval under the Role’s Mandate.

```md title="The brief (folded): compiled Agent-register Markdown · play:made-with@1 · each line names its record key"
You hold the Partner Manager Key Result: 2.5 signups per 1,000 marked outputs by 2026-12-31. ← worker, metric
On each output, choose one option and say why; an at-risk Customer gets Not now. ← triggers, chooses, keep-first
Mark owner reports only; tenant notices carry no line.                           ← your file, line 5
The line reads “Made with Leaseline” first, with at most 6 more words from the claims source. ← copyRules 1
Never say or imply the Customer recommends Leaseline.                            ← copyRules 3, line-claim
A line that earns credit says so in the same line, at the same size.             ← copyRules 4
```

**The slow loop, as a Change.** `decision_404` (2026-09-21, weekly) read 19 signups from owner reports against 2 from tenant notices, so `change_34` kept the line on owner reports and dropped it from tenant notices (your file, line 5), and Dana merged it with <Op verb="Change.merge" />. **Replayed on past outputs**, <Op verb="Change.review" /> put the rate at 3.1 per 1,000; read back at +21d it is 2.9 per 1,000, n 3,800, ■■□□ Early sign (Example, day 49).

**Bring your own agent** (folded) stamps at the same rung when it matches the seated agent on the eval suite; <Op verb="Role.staff" /> seats it.

```bash
npx startup-builder eval --scenario made-with-41 --agent "claude -p" --seat partner-manager   # seated: 0 lines on Customers, 0 unlabeled credit, 0 late removals · yours: 0, 0, 2 late removals → fix removals first
```

## What it can do next
| Option | Picked when | Decided by | Runs | Hands to | If it’s just you |
| --- | --- | --- | --- | --- | --- |
| Stamp the line `stamp-the-line` | a requested output to someone outside, from a free Offer or a Customer who kept the line | Your rule (line 5) | <Op verb="Document.render" /> with the line after the signature, nofollow | nobody | the same |
| Stamp it with credit `stamp-with-credit` | the Customer turned credit back on | Your rule (the Customer’s Setting) | <Op verb="Document.render" /> with the labeled line → <Op verb="Referral.create" /> on arrival | nobody | the same |
| Offer the share card `offer-the-share-card` | a value receipt whose numbers the Customer’s own Events back | Agent’s call, with its reason | <Op verb="Document.render" /> the card → <Op verb="Message.schedule" /> a note offering it | the Customer, who posts it or not | the same |
| Credit the Customer `credit-the-customer` | a Customer a line brought pays, and 14 days pass with no refund | Your rule (the credit) | <Op verb="CreditGrant.issue" />: one month of the lowest paid Price | nobody | the same |
| To you `to-you` | lines brought 3 paying Customers in 90 days, or they run Leaseline for 5 or more clients | Agent’s call, with its reason | <Op verb="Task.assign" />, with the counts | you, due 1 business day · Take this one | you |
| Not now `not-now` | an output to a Customer, a Suppressed address or a bulk send, a removed line, or `keep-first` | Your rule (rule j and the recipient rule) | nothing; names the rule or the Customer’s owner | their owner, for `keep-first` · Take this one | you |

| When they write back | Fixture reply | What happens | Who answers | By when | Call |
| --- | --- | --- | --- | --- | --- |
| Interested | an owner, from the landing Page: “Can I use this for my 3 buildings?” | a new Lead to `instant-response`, with the line’s link code on its Acquisition | SDR · your agent | 5 min | <Op verb="Lead.create" /> |
| Send me pricing | a Customer: “What does it cost to remove the line?” | answers with the Pricing Page: Pro removes it in one click | Partner Manager · your agent | 5 min | <Op verb="Conversation.answer" /> |
| Not now | a Customer: “Not posting the receipt this month.” | the share card closes, and `customer-ask-cap` frees the Customer | nobody | at once | <Op verb="Decision.list" /> |
| Wrong person | “Send the share card to our office manager.” | asks them to forward it; it never writes to an address from their text | Partner Manager · your agent | 1 business day | <Op verb="Conversation.answer" /> |
| Out of office | an auto-reply to the line notice | no output carries the line until the notice reaches them | nobody | the return date | <Op verb="Message.schedule" /> |
| Question it can’t answer | “Does the line change what our tenants see?” | To you, with the output kinds listed | you (Dana, person) | 1 business day | <Op verb="Conversation.escalate" /> |
| Stop | “Take the line off our reports.” | removed on the next render, and within 1 hour on hosted outputs | nobody | the next render | <Op verb="Customer.exempt" /> |

## When it hands to you
Heavy markers hand to **you** (Dana Okafor, person) for partner terms; at-risk Customers stay with their owner, Priya for the 4 she owns and you for the rest. As captured, the Brief (`brief` is Not live yet, gaps #7).

```json title="What lands in each queue · sample"
[
  {
    "$id": "https://api.sb/leaseline.app/tasks/task_536",
    "$type": "Task",
    "assignee": "worker_1",
    "due": "2026-10-20T17:00:00Z",
    "on": "customer_22",
    "brief": {
      "who": "Juniper Homes, on Starter since 2026-05",
      "counts": "lines brought 3 paying Customers in 90 days; Juniper runs Leaseline for 6 client owners",
      "chose": "to-you",
      "why": "a heavy marker: partner terms are yours, through `commission-partners`",
      "never": [
        "a credit past the $500 Limit",
        "Juniper’s name on a landing Page without Consent"
      ]
    }
  }
]
```

You answer with <Op verb="Task.claim" /> (Take this one), <Op verb="Task.return" /> with a reason, or <Op verb="Action.redirect" />. A held Customer’s owner sees them with <Op verb="Task.next" />, and nothing marks for them while `keep-first` holds. A Task nobody claims by its due time goes up a Role through <Op verb="Task.escalate" />, and `person-promise` fires.

**On time:** You: 1 of 1 claimed within 1 business day, n 1, ■□□□ Too early to tell beside Other Startups’ 92 % on time. **Your queue:** counted by kind: 1 line approval at setup, then the 10-minute weekly audit digest and about 1 heavy-marker brief a quarter.

**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) | a share-card note to a Customer whose open Deal or claimed Conversation a person holds | Leave it to the person who owns it: the draft waits in their queue. | <Op verb="Task.assign" /> |
| <a id="check-keep-first"></a>`keep-first` (rule j, gaps #8) | a share card, or a credit-back prompt, to a Customer who is at risk, past due or leaving | Let their CSM reach them first, then ask again once they are healthy. | <Op verb="Task.next" /> |
| <a id="check-customer-ask-cap"></a>`customer-ask-cap` (gaps #3) | a second open ask to one Customer in a window, from any Play | `usage-upsell` holds them until Nov 3. | <Op verb="Decision.list" /> |
| <a id="check-approved-pages"></a>`approved-pages` (Not live yet) | a line word, or a share-card number, that the claims source or the Customer’s own Events lack | Cut the word, or publish the Page that says it. | <Op verb="Site.publish" /> |
| <a id="check-line-claim"></a>`line-claim` (copy rule 3) | a line that says or implies the Customer recommends Leaseline | Say “Made with Leaseline” and nothing about them. | <Op verb="Content.draft" /> |

| Stop (pauses the Play) | Pauses when | Then |
| --- | --- | --- |
| <a id="stop-recipient"></a>`recipient` | a line found on an output to a Customer, a Suppressed address, a bulk send or an unsolicited kind | the line pauses on that kind |
| <a id="stop-label"></a>`label` | a line that earns credit shows without its label | credit back pauses on every kind; lines carry on unrewarded |
| <a id="stop-link-attribute"></a>`link-attribute` | a line link without nofollow, or a rewarded link without sponsored | the line pauses on that kind until every link carries it |
| <a id="stop-removal"></a>`removal` | a removal not honored on the next render, or within 1 hour on hosted outputs | the line pauses for every paid Customer |
| <a id="stop-complaint"></a>`complaint` (email) | complaints on marked emails near 0.1 %, or 0.05 points over unmarked | the line leaves every email output |
| <a id="stop-retention"></a>`retention` | held-back Customers’ 60-day retention beats the marked arm’s by 2 points, at 500 per arm | the line pauses on free Offers and opens a Decision |
| <a id="stop-fraud"></a>`fraud` | self-referral matches over 5 % of credited signups in 30 days | every pending credit holds |
| <a id="stop-yield-floor"></a>`yield-floor` | under 1 signup per 1,000 marked outputs after 10,000 | a Decision opens on landing, copy and placement; the base line stays |
| <a id="stop-kill-switch"></a>`kill-switch` | you press it | every Tactic pauses at once; the next render carries no line |

The captured refusal, then the Stop that fired as a `Campaign.paused` reason (Not live yet, gaps #2); the rewrite that shipped is the line thread in Example.

```json title="The captured refusal · sample"
{
  "type": "https://startupbuilder.dev/errors/refused",
  "title": "Refused",
  "status": 422,
  "detail": "The line on Juniper Homes’ owner reports did not render: it says Juniper recommends Leaseline.",
  "checks": [
    {
      "check": "line-claim",
      "status": "fail",
      "doc": "/plays/made-with#check-line-claim",
      "fix": "Say “Made with Leaseline” and nothing about them.",
      "then": "Content.draft"
    },
    {
      "check": "keep-first",
      "status": "pass"
    }
  ]
}
```


```json title="The Stops that fired, as Campaign.paused reasons · sample"
[
  {
    "reason": {
      "limit": "removal",
      "observed": "1 hosted report still marked after 1h 40m",
      "bound": "1 hour",
      "window": "hosted outputs"
    },
    "doc": "/plays/made-with#stop-removal",
    "task": "task_444"
  }
]
```

## Did it work
At 41 Customers, no held-back tenth reads within 90 days, so the basis is before-after (rule o): the columns read Now and Before, and nothing prints as Added. Each figure’s call is <Op verb="Metric.query" /> by node, and every node above the leaf is Not live yet (gaps #4).

`2.0 signups per 1,000 marked outputs, against none from outputs before · before-after, not proof · n 11,400 · path → arr`

| Node | Now (56 days) | Before (the 90 days, per 56) | Added | Confidence | Basis |
| --- | --- | --- | --- | --- | --- |
| `mark-signups` | 2.0 per 1,000: 23 signups from 11,400 matured marked outputs | no line on outputs; 2 signups named a Leaseline output as how they heard | — · Worth about +$650 a month | — | before-after, not proof · Other Startups’ results +1.8 per 1,000, ■■■□ Likely, n 2.1M outputs, 5 % of Customers held back at random |
| `new-leads` | 23 Leads with a line’s link code | 2 | — | — | before-after |
| `new-arr` ↑ | $1,388, 4 Customers on Pro · Booked: credited, not all caused by this Play | $347 | — · 6 trials still deciding | — | before-after, not proof |
| `net-new-arr` · `arr` | carried from `new-arr` | carried | — | — | carried |

Before against after reads signups whose first Acquisition carries a line’s link code, within 30 days of each output, against the 90 days before, when outputs named nobody, scaled to 56 days. It is not proof; Other Startups’ results, read against 5 % of Customers held back at random, print beside it.

**How it moves it:** an owner reading a monthly report sees one plain line naming Leaseline after the Customer’s signature, with a coded link to a landing Page for owner reports.

**Guardrails:** before against after: `outside-paying-customers`, 4 against 1, and 60-day retention of marked Customers, 40 of 41 against a trailing 39 of 41; 0 complaints on marked emails.

```json title="The Campaign card · sample"
{
  "$id": "https://api.sb/leaseline.app/campaigns/made-with",
  "$type": "Campaign",
  "play": "play:made-with@1",
  "path": [
    "mark-signups",
    "new-leads",
    "new-arr",
    "net-new-arr",
    "arr"
  ],
  "experiment": {
    "metric": "mark-signups",
    "unit": "per-1000",
    "heldBack": 0,
    "decision": null
  },
  "readout": {
    "value": null,
    "n": 11400,
    "maturing": 2600,
    "interval": null,
    "readability": "inadmissible",
    "basis": "before-after",
    "pooled": true
  },
  "ledger": {
    "spend": 116,
    "workerCost": 1,
    "hours": 1.5,
    "pipelineArr": 2082,
    "wonArr": 1388,
    "projectedArr": 648,
    "paybackDays": 30
  }
}
```

Outside benchmark: none measures a disclosed made-with line on business outputs for this kind of Product; Other Startups’ results, +1.8 per 1,000, ■■■□ Likely, stand in for one.

**Before it · After it.** Before it: `usage-upsell` and `product-led` keep Customers sending outputs. After it: owner signups go to `instant-response` and `product-led`, and heavy markers to `commission-partners`; `keep-first` holds an at-risk Customer’s line prompts.

## Example
Leaseline ran it from 2026-08-24 to 2026-10-19 (56 days) on 41 Customers: 9 on Pro removed the line, and 32 sent 14,000 outputs to people outside, 11,400 of them matured past 30 days. Read every captured thread at `?threads=all`; three follow the tables.

| What happened, by option | Decisions | Outputs or cards | Signups | Paid (credited, not all caused by this Play) |
| --- | --- | --- | --- | --- |
| Stamp the line | 286 | 14,000 marked (owner reports 3,800 since day 28) | 25 | 4 on Pro (+$1,388 ARR) |
| Stamp it with credit · Credit the Customer | 3 · 4 | 3 Customers · 4 credits ($116) | — | — |
| Offer the share card | 9 | 3 posted by Customers | 2 | 0, 1 trial still deciding |
| To you · Not now | 1 · 6 | — | — | — |
| **All** · Before (90 days, per 56) | **309** | **14,000** | **23** of 11,400 matured · 2 | **$1,388** · $347 |
| At 6,100 a month (the Use it when volume) | about 130 a month | 6,100 | before-after, not proof | Other Startups’ results: +1.8 per 1,000, ■■■□ Likely |

| Day | Event | What happened | Your time |
| --- | --- | --- | --- |
| 0 | `event_135` Campaign.created | the three steps; dry run fails `billing-connected` and `line-on-pricing` | 20 min |
| 2 | `event_164` Message.created | the line notice to 32 Customers, before any output carried the line | 5 min |
| 11 | `event_312` Invoice.collected | the first paying signup from a line, an owner who read a Juniper report | — |
| 25 | `event_470` Campaign.paused | `removal`: a hosted report kept the line 1h 40m after Pro; fixed in 20 min | 10 min |
| 28 · 49 | `event_544` Change.merged · `event_878` Readout.created | owner reports only: replayed at 3.1 per 1,000, read back at +21d at 2.9, n 3,800 | 5 min |
| 1–56 | `event_170` Task.assigned, first of 2 | you approved the line, read 8 audit digests and took 1 heavy marker | 1.3 h · **total 1.5 h measured, 1.5 h asked** |

> **Juniper Homes → an owner, Sep 1, monthly report** · after Juniper’s signature: *Made with Leaseline · renewal notices per owner* ¹
>
> **Sep 3** · the owner, who self-manages 3 other buildings, followed the coded link to the owner-report landing Page and signed up (first Acquisition: Juniper’s link code). **Sep 4** · paid for Pro; on Sep 18, 14 days with no refund, <Op verb="CreditGrant.issue" /> gave Juniper one month, $29.²

```diff title="Juniper Homes’ owner reports, 2026-08-30 · the draft line line-claim refused, then the line that shipped"
- Juniper Homes recommends Leaseline for renewals.
+ Made with Leaseline · renewal notices per owner
```

> **Juniper Homes, 2026-10-19 08:00** · its lines had brought 3 paying Customers in 90 days, and it runs Leaseline for 6 client owners. The agent chose To you, with the counts, due Oct 20 17:00. The Brief is in When it hands to you (`task_536`); partner terms go through `commission-partners`.

¹ “Made with” first, 6 more words from the claims source, after the signature, smaller than the body, nofollow. ² A credit only after payment and 14 days with no refund.

## Your settings
```mdx title="plays/made-with.mdx"
---
holdout: 0          # 41 Customers are too few to hold 1 in 20 back; it reads before-after
creditLimit: 500
---
Mark owner reports only; tenant notices carry no line. Pro removes the line in one click.
```

```text
$ npx startup-builder show plays/made-with
holdout 0 · credit Limit 500 · owner reports only     your file  plays/made-with.mdx:2,3,5 (Ask 2026-08-24; line 5 by change_34, 2026-09-21)
family referral · worker role:partner-manager, owns never · chooses 6 (4 rule, 2 read) · sequences line-notice, line-return-notice · checks owned-by-a-person, keep-first, customer-ask-cap, approved-pages, line-claim · stops 9 · placements gmail, outlook, yahoo-mail, linkedin, x, instagram    catalog  play:made-with@1 (Not live yet, gaps #5)
```

### Every key from the catalog
| Key | Id | What it is |
| --- | --- | --- |
| Tactic | <a id="tactic-made-with-setup"></a>`made-with-setup` | Made with setup fixes the line, placement and landing Page for each output kind that leaves a Tenant, and draws the holdout. Starts at You approve the first wave. |
| Tactic | <a id="tactic-made-with-stamp"></a>`made-with-stamp` | Made with stamp writes the line and its link code into each output as it renders, unless a removal, holdout or recipient rule applies. Starts at You approve the first wave. |
| Tactic | <a id="tactic-machine-twin"></a>`machine-twin` | Machine twin gives each marked output a machine-readable copy of the line, naming the Product and its agent card, under the visible line’s rules. Starts at You approve the first wave. |
| Tactic | <a id="tactic-mark-credit-back"></a>`mark-credit-back` | Mark credit back records the Acquisition and Referral for each arrival through a line, and credits the marking Customer once the new Customer pays. Starts at You approve each one. |
| Tactic | <a id="tactic-value-receipt-share-card"></a>`value-receipt-share-card` | Value Receipt share card renders a private card from the Customer’s own numbers, with the line and a link code, for the Customer to post. Starts at You approve the first wave. |
| Tactic | <a id="tactic-mark-audit"></a>`mark-audit` | Mark audit samples marked outputs each week, checks recipients, removals, labels, links, twins and landing Pages, and pauses any kind that misses. Starts at Sends nothing. |
| Trigger | <a id="trigger-marked-output-sent"></a>`marked-output-sent` | Marked output sent: `event` on `Thing.shared`, window 30d. |
| Trigger | <a id="trigger-mark-arrival"></a>`mark-arrival` | Mark arrival: `event` on `Event.captured`, window 30d. |
| Trigger | <a id="trigger-mark-signup"></a>`mark-signup` | Mark signup: `event` on `Visitor.identified`, window 30d. |
| Trigger | <a id="trigger-mark-first-payment"></a>`mark-first-payment` | Mark first payment: `state` on `Invoice.collected`, window 14d. |
| Trigger | <a id="trigger-value-receipt-issued"></a>`value-receipt-issued` | Value Receipt issued: `event` on `Document.rendered`, window 7d. |
| Trigger | <a id="trigger-line-setting-change"></a>`line-setting-change` | Line setting change: `event` on `Subscription.switched`, window 1d. |
| Trigger | <a id="trigger-new-output-kind"></a>`new-output-kind` | New output kind: `event` on `Version.deployed`, window 14d. |
| Trigger | <a id="trigger-heavy-marker"></a>`heavy-marker` | Heavy marker: `threshold` on `Monitor.checked`, window 30d. |
| Sequence | <a id="sequence-line-notice"></a>`line-notice` | Line notice: 1 steps; it ends on The notice is sent.. |
| Sequence | <a id="sequence-line-return-notice"></a>`line-return-notice` | Line return notice: 2 steps; it ends on The Customer upgrades to a paid Offer.; The line returns on new outputs.. |