Walkthrough · one job, as walked on production

A weekly brief before you have customers

You built something. Nobody pays for it yet. The question that matters this week is “who might, and what one experiment would tell me?” — and it matters again next week, when you will have forgotten to ask it. This page sets that up from the coding agent you already have open, with a first result you can read in under a minute, and nothing to connect. Every step below is the one we measured on production, including what the brief cannot do.

Why this job, and why nothing connected

Most operations act as an account you grant them — a mailbox, a Slack workspace, a spreadsheet — and granting one is a visit to that provider's consent screen in your browser. That hop is real, it is yours to do, and it is where a first attempt most often stops. This job needs none of it: the brief reasons over what you tell it about the product and what the model already knows, and it says so.

That is also its limit, stated up front rather than discovered later: fleet runs have no web access, so the brief reads nothing live. It is a structured weekly think, on a schedule, that you review in a minute. When you want it reading a real source — a support inbox, a community, your analytics — that is an account to connect, and the door page is honest about that step too.

Step 1 · if Sprawl is not installed yet

Install it

One line in the client you already use. Your agent authorizes in your browser over OAuth on its first call; nothing to paste.

claude mcp add --transport http sprawl https://sprawl.to/api/mcp

Other clients, the headless key, and what the first five minutes look like are on the door page. Come back here once your agent can see the Sprawl tools.

Step 2 · one message to your agent

Say what you need

You can type it in your own words. What we used, near enough:

“Set up a weekly brief on who might pay for my product and one experiment to test it. It needs no accounts — reason over what I tell you about the product and say plainly that nothing live was read. Here is the product: a CLI that turns a folder of markdown notes into a searchable static site. One person built it. No customers yet.”

Your agent turns that into a blueprint and proposes it with sprawl_build_propose_blueprint. The part to check before you approve is the shape below — one agent, one skill, one schedule, one goal, and the flag that tells the gate this agent means to hold no accounts.

{
  "version": 2,
  "name": "Demand signal",
  "sharedContext": "One builder, one product, no customers yet.",
  "knowledge": [{
    "title": "The product",
    "content": "# The product\n\nA CLI that turns a folder of markdown notes into a searchable static site. Built by one person. No customers yet. The builder wants to learn who might pay before spending more time on it.",
    "evidence": [{ "source": "user:brief", "detail": "Stated by the owner." }]
  }],
  "agents": [{
    "name": "Demand-signal analyst",
    "role": "Writes a short weekly brief on who might pay, and one experiment to test it",
    "instructions": "You hold no accounts and act as nobody. You have no web access: reason ONLY over the operation knowledge and what you already know, and say so under a Sources heading — never cite a page you did not read. Send nothing to anyone.",
    "model": "claude-haiku-4-5",
    "worksWithoutAccounts": true,
    "connections": [],
    "skills": [{
      "name": "Demand-signal brief",
      "description": "How to write the weekly brief the owner reviews",
      "content": "1. Name three specific kinds of people who might pay, and the recurring problem each has.\n2. For each, the signal that would show real demand.\n3. ONE experiment to run this week, with what result counts as a yes.\n4. A Sources heading stating what this was written from, with the words: no live source was read."
    }],
    "automations": [{
      "description": "Weekly demand-signal brief",
      "prompt": "Write this week's demand-signal brief following the skill exactly. Under 300 words plus Sources. Your FINAL message must be the brief itself, ending with the Sources section.",
      "schedule": "Weekly on Monday at 07:00",
      "schedule_type": "weekly",
      "day_of_week": 1,
      "time": "07:00",
      "serves_goal": 0
    }]
  }],
  "goals": [{
    "title": "One reviewed experiment a week",
    "description": "The owner reads the brief and decides whether to run the experiment.",
    "target": { "unit": "briefs reviewed", "perPeriod": 1, "periodDays": 7 }
  }]
}

Two details carry the honesty. The instructions say “never cite a page you did not read”, and the skill requires a Sources heading that says what the brief was written from. Both are there because a model asked for sources will otherwise invent them; on production the brief ends with “No live source was read.”

Step 3 · one approval

Approve, and it stands up

Nothing exists until you say yes. Then sprawl_build_provision creates the operation, the agent, its skill, the knowledge entry, the goal and the automation in one step, and hands back next steps. For this job the first of them is the point of the page:

“NOTHING TO CONNECT. Every agent in this operation declared it works without accounts, so there is no account to attach and no computer to grant. … Get the first result now.”

An operation that needed a mailbox would say connect this account first here, with the link. This one lists no required connection at all, so nothing stands between the approval and a result.

Step 4 · under a minute

Run it once and read it

You do not have to wait for Monday. sprawl_build_run_automation_now starts the first run and names its id; sprawl_build_get_run reads it back. On production the run settled as COMPLETED in under a minute, and what came back was the brief itself — three kinds of people who might pay and the recurring problem each has, the signal that would show real demand, one experiment for the week with what result counts as a yes, and the Sources section stating exactly what it was written from.

Read it as the owner. Then say whether it was useful — in Sprawl under the run, or by telling your agent, which records your words with sprawl_build_record_result_verdict and nothing of its own. A finished run is not the same as a useful one, and your verdict is what the product learns from.

Every week after

It keeps arriving

The schedule is Sprawl's, not your terminal's. One rule first: the first scheduled run of any automation is held until you confirm what it understood — a decision, shown in Sprawl and to your agent, not a silent start. Confirm it once (your agent can, with sprawl_build_confirm_automation, when you tell it to) and from then on you close the session and the brief still lands on Monday. When you come back, the two questions you will actually have are published as named prompts, which a host like Claude Code renders as slash commands:

  • /what-happened What happened?
  • /what-needs-me What needs me?

Pause it from the same place when a week does not need one, and resume it when it does. When the brief earns a real source, connect one account and give the agent the matching skill; the operation is already the home for it.

Where this was measured

Every claim on this page is walked on production by an end-to-end proof before a release ships: propose, provision, run once, read the brief, and record the verdict — all from the coding-agent side, with a throwaway operation that is deleted afterwards. The walk is what lets this page say “under a minute” and “nothing to connect” rather than hoping so.