A blocked free user is a new logo at zero CAC.

Free users do real work through agents — scans, analyses, exports — and reach for paid value in the middle of it. Each of those moments is acquisition demand you already earned: a conversion worth full LTV, not a lost transaction. Today, most of them end in a dead error.

Start converting todayBook a demo New customers at zero CAC · Free → paid, deterministically attributed
01 — the free user

Your free tier is being evaluated inside an agent.

02 — the free user

Free tier, real work — and a reach for paid value.

inception subject lifecycle: free · premium capability requested next
03 — the next ask

The free user reaches for paid value.

04 — the gate

A dead end here doesn't cost a task. It costs the logo.

inception wall recorded · at_gate × free · new-customer moment
05 — the moment

Conversion at peak intent — on demand you already earned.

inception path: checkout · free → paid · zero CAC
06 — the acquisition

A new customer, minted on your Stripe, inside the thread.

07 — the receipt

Value delivered and recorded — the loop closes.

inception value receipt recorded · free → paid · new customer attributed
Pre-release dependency scan scanlight
Codex
List the repos we haven't scanned yet.
Six, all under the checkout service. I queued them in priority order.
Scan this repo for vulnerable dependencies before we cut the release.
run_scan { "repo": "acme/checkout-service" } → ok
Scan complete 14 vulnerable dependencies, 3 critical. The criticals are all patchable with minor version bumps.
Open fix PRs for the criticals.
open_fix_prs { "severity": "critical" } → blocked
feature_gate
Fix PRs are a paid capability
The free tier detects vulnerabilities; automated fixes are on Pro.

Fix what the scan found

Pro opens the PRs and keeps watching the repo.

Free
$0 · detection
Recommended
Pro
$49 / month
  • Automated fix PRs
  • Continuous monitoring on every push
  • Policy gates for releases
Upgrade to Pro

Billed monthly. Cancel anytime.

Link · dev@acme.dev secure · stripe
Pay $49.00
Paid · $49.00 · Pro plan, monthly
New customer created — Pro plan active.
open_fix_prs { "severity": "critical" } → ok

Fixes shipped

3 fix PRs opened — all critical vulnerabilities patched before release.
Do anything. @ to use tools
+ Default permissions GPT-5.4 High
01 — the free user Your free tier is being evaluated inside an agent.
02 — the free user Free tier, real work — and a reach for paid value. inception subject lifecycle: free · premium capability requested next
03 — the next ask The free user reaches for paid value.
04 — the gate A dead end here doesn't cost a task. It costs the logo. inception wall recorded · at_gate × free · new-customer moment
05 — the moment Conversion at peak intent — on demand you already earned. inception path: checkout · free → paid · zero CAC
06 — the acquisition A new customer, minted on your Stripe, inside the thread.
07 — the receipt Value delivered and recorded — the loop closes. inception value receipt recorded · free → paid · new customer attributed

The free tier's best moment is invisible to you.

A free user asks an agent to do premium work. The free tier delivers real value — the scan runs, the problem is found — and then the paid capability they reach for next returns a dead end. There's no billing record, so your funnel has no row for this user; no pricing-page visit, so your analytics never see the intent. The highest-intent acquisition signal your product generates simply evaporates.

  • Free users have no billing record — so most funnels literally cannot see them.
  • The lost event is a logo at full LTV, not a transaction — the worst-shaped leak there is.
  • The demand was already earned: your free tier did the selling, then the door was closed.
the dead end — a free user reaching for paid value, unrecorded

A funnel before the billing record. A customer before the dashboard.

Observe-always capture records every free-tier moment at every posture — free users get a funnel the day they connect, before they exist in your billing system. When they hit the gate, the offer renders at peak intent, framed by the work just done. Checkout mints a brand-new customer on your own Stripe, inside the thread, and the blocked call reruns. Conversion at zero CAC, on demand you already earned.

  • Observe-always: moments are recorded at every posture — offering is a separate, gated decision.
  • Vendor-mode checkout can mint a brand-new Stripe customer — acquisition-capable by design.
  • Attribution is deterministic from first tool call to first invoice: session → subject → customer.
How the Stripe integration works →
the acquisition — mirrors the thread above, illustrative values

Free users are watched carefully, never worked over.

Acquisition is where trust is cheapest to lose. The observation layer and the offer layer are deliberately separate.

Rows are not messages.

Observe-always means moments become analytics rows at every posture. What the user sees stays posture-gated — you can count your free-tier demand for months before offering anything.

Only a real block offers.

A free user browsing never sees a pitch. Every offer requires a recorded blocking event they just hit — enforced in the schema, tested in CI, auditable per offer.

Pseudonymous by architecture.

Free users are identified by a vendor-hashed subject reference — PII is prohibited by contract. Per-user frequency caps and cooldowns apply before there's ever a customer record.

Your next customer is inside an agent right now.

Start in analytics posture and count the free-tier moments you're missing — then convert them at zero CAC.