---
name: Business setup
description: Use to set up (or overhaul) the public agent that answers your customers — interview the operator about the business, write the persona and business knowledge into workspace/public/, wire up escalation and task templates, and end by choosing whether the public agent runs locally or in the Overblast cloud.
version: 1
situations: set up my public agent, onboard my business, answer customers, customer support agent, business hours, what we sell, escalation rules, book appointments, connect Overblast, run the agent in the cloud, move the agent to the cloud, host the agent, public agent placement
requires-secrets:
requires-packages:
---

# Business setup

Stand up the **public agent** — the restricted one that talks to strangers on DMs, web chat, comments and
email — from a conversation with the operator, and finish by deciding where it runs.

The output is three kinds of thing:

| What | Where it goes | Who reads it |
|---|---|---|
| Who the agent is, how it speaks, what it must never do | `workspace/public/PERSONA.md` | the public agent, every turn |
| What the business sells, hours, policies, prices | `workspace/public/BUSINESS.md` | `read_business_info` |
| Everything else worth looking up | other files in `workspace/public/` | the knowledge base search |

Everything in `workspace/public/` is the ONLY bridge between this private workspace and a conversation
with a stranger. Write nothing there that the operator would not put on their website. When an Overblast
workspace is connected, these files publish themselves — a debounced watcher syncs the folder up, so
editing the file IS editing the cloud agent's brain. There is no upload step to run.

## Before asking anything

Gather first. An interview that asks what the agent could have read is an interview the operator
resents.

1. Read `MEMORY.md`, `IDENTITY.md` and `USER.md` — the business may already be described there.
2. List `workspace/public/` and read anything already in it. **If PERSONA.md or BUSINESS.md exist, this
   is an overhaul, not a first setup**: propose edits to what is there rather than replacing it.
3. Call `overblast_status`. Connected platforms tell you which channels this agent will actually answer
   on, and the workspace name is usually the business name.
4. If the workspace is connected, call `overblast_task` with `action: "list_templates"` and `list_team`.
   Existing templates and teammates are answers you no longer have to ask for.
5. If the business has a website and the internet capability is on, read the homepage: offering, hours,
   prices, tone. Confirm what you found rather than asking it from scratch.

## The interview

**Two rounds, not seven.** Batch the questions, prefill everything from step 1, and stop after each
block to wait for the answers.

Round one — what the business IS:

````
```00-ask
{
  "intro": "Let's set up the agent that answers your customers. I've filled in what I could find.",
  "questions": [
    { "id": "business", "prompt": "What does the business do, in one or two sentences?", "kind": "text" },
    { "id": "offering", "prompt": "What can a customer actually ask for? (services, products, bookings)", "kind": "text" },
    { "id": "hours", "prompt": "When are you open?", "kind": "text" },
    { "id": "tone", "prompt": "How should the agent sound?", "kind": "single",
      "options": ["warm and casual", "friendly but professional", "brisk and factual", "formal"] },
    { "id": "language", "prompt": "What language should it answer in?", "kind": "text" }
  ]
}
```
````

Round two — where the agent's authority ENDS. This is the half that matters and the half operators
forget, so ask it explicitly:

````
```00-ask
{
  "intro": "Now the limits — what it must never decide on its own.",
  "questions": [
    { "id": "never", "prompt": "What must the agent NEVER promise or agree to?", "kind": "text" },
    { "id": "escalate", "prompt": "When should it hand over to a human?", "kind": "multi",
      "options": ["a complaint", "a refund or cancellation", "a price it can't quote", "anything urgent", "a request it doesn't understand"] },
    { "id": "who", "prompt": "Who should those reach?", "kind": "text" },
    { "id": "tasks", "prompt": "What should it be able to file as a task for the team?", "kind": "text" },
    { "id": "prices", "prompt": "May it quote prices, and from where?", "kind": "text" }
  ]
}
```
````

## Writing the files

Use the ordinary `write` / `edit` tools. Nothing else is needed — no upload tool exists because none is
required.

**`workspace/public/PERSONA.md`** — under 4 KB, and about VOICE and LIMITS, not facts. Facts belong in
BUSINESS.md, where they can be searched and changed without touching the persona. Cover:

- who the agent is and who it works for, in one line;
- the tone, in one line, plus the language;
- what it may do on its own (answer questions, quote from the catalog, file a task, book a slot);
- what it must never do — the `never` answers, written as rules, not as suggestions;
- when to escalate and what to say while doing it ("I've asked a colleague — they'll come back to you
  today"), because a handover with no sentence attached reads as being ignored.

Do NOT put the operator's private details, internal costs, staff names or anything from `MEMORY.md` in
here. Everything in this file is one question away from being recited to a stranger.

**`workspace/public/BUSINESS.md`** — the facts, under `##` headings. The heading structure is the API:
the agent reads sections by name, so headings should be the questions customers ask.

```markdown
## What we do
## Hours
## Where we are
## What we sell
## Prices
## Booking and cancellation
## Delivery / shipping
## Refunds
## Contact
```

Leave a heading out rather than filling it with a guess. "We do not publish prices" under `## Prices` is
a fact; an invented number is a promise the business has to keep.

**Other files** — one topic per file, named for what it answers (`returns-policy.md`, `menu.md`,
`faq.md`). Sub-folders are not synced; keep the folder flat.

## Wiring the rest

- **Escalation.** The people the agent can reach come from `list_team`. If the operator named somebody
  who is not there, say so and point them at the Overblast app to add them — inventing a member id
  notifies everybody under one person's name.
- **Task templates.** Read them with `overblast_task` `list_templates` and name the ones the agent should
  use, in BUSINESS.md, by title. Templates and catalog items themselves are authored in the Overblast
  app; there is no route to create one from here, so do not promise it.
- **A first task**, if the operator wants one, with `overblast_task` `action: "create"` — and mark every
  date, time and place in `inline_tokens` so the team sees real chips instead of raw text.
- **Signature and hours.** If replies must disclose they are from an AI, turn on the agent's signature in
  its settings; if the agent should be silent outside opening hours, set its active hours. Both travel
  with the agent when it moves to the cloud, so set them once, here.

## Finishing: where the public agent runs

End every setup with this, in the operator's words. It is a real choice with real consequences and it is
theirs, not yours.

> Your public agent can answer from either place, and it behaves the same in both — same persona, same
> knowledge, same memory of each customer. What changes is who is running it.
>
> **On this machine** — it runs on your own model and your own key, it can use web search and generate
> images, and it can ask me things mid-conversation. It only answers while this machine is awake.
>
> **In the Overblast cloud** — it answers instantly, day and night, whether or not this machine is on,
> on Overblast's managed model and credits. It sends replies directly — there is no approval step up
> there — and it has no web search or image generation. Channels that are not Overblast (Signal,
> Telegram, iMessage, WhatsApp on this Mac) cannot move and stay here either way.
>
> You can switch back and forth whenever you like, and neither choice changes where any of your data
> lives.

**Do not perform the switch yourself.** It is a control, not a tool call: in the conversation's **Info**
panel, on any Overblast conversation, under **"Public agent runs"**. Tell the operator it is there, and
that the move publishes the knowledge and contact memories in the same step, listing exactly what will
change before it does anything.

If the workspace is not connected to Overblast at all, say so plainly: the files you just wrote are the
agent's brain either way, and connecting a workspace later publishes them with no migration step.

## Confirm, briefly

One short summary: what the agent now knows, which channels it answers, who it escalates to, and where
it runs. Then stop. A setup that ends in a wall of text is one the operator will not read to the end of,
and the part they skip is the part about limits.
