# Business memory

The business memory is what your AI knows about the business itself: what it is, who it is for, what it sells and for how much, the brand, hours and place, policies, goals and notes. There is one for the whole workspace, and every project's AI reads it, so the copy, colours, prices and policies of every app agree.

Your own AI writes it through the connector as it learns the business from your conversation, asking at most two or three short questions when it cannot tell. You read it, edit it and confirm it on the dashboard's Business page.

## What it holds

| Section | On the page | What it is |
| --- | --- | --- |
| `what` | What it is | What the business is and does, in a sentence or two. Up to 600 characters. |
| `audience` | Who it's for | The customers it serves. Up to 600 characters. |
| `offer` | What it sells | Products or services, with prices. Up to 4,000 characters. |
| `brand` | Brand | Colours, fonts and the voice it speaks in. An object: `colors` (300 characters), `fonts` (300 characters), `voice` (600 characters). |
| `place` | Hours and place | Opening hours, the address and how to reach it. An object: `hours` (600 characters), `address` (300 characters), `contact` (300 characters). |
| `policies` | Policies | Returns, cancellations, delivery, privacy. Up to 4,000 characters. |
| `goals` | Goals | Where the business is going. Up to 1,000 characters. |
| `notes` | Notes | Anything else every app should know. Up to 4,000 characters. |

> Each section is a short text: a few lines, with longer lists for what it sells and the policies. A text over its cap is refused by name, so the writer can shorten it.

## Who reads it and who writes it

Every project's AI also gets it in the project's context: `GET /api/projects/:id/context` (connector: `get_project_context`) carries `business`, with the sections, `updatedAt` and `confirmed`.

| Who | Reads | Writes |
| --- | --- | --- |
| Owners, admins and developers | Yes | Yes, on the Business page |
| Viewers | Yes | No |
| Your AI through the connector | Yes, read-only connections too | With read and write access |
| A workspace-wide API key | Yes | A full key; a read-only key reads only |
| A key limited to one project (your app's own) | Yes, naming its project: `GET /api/business?project=<id>` | No: the memory is the whole workspace's |

## Changing it

- `PUT /api/business { "sections": { … } }` (connector: `update_business_memory`) changes only the sections it names. `""` or `null` clears a text; `brand` and `place` change field by field, and `null` clears the whole group.
- The answer is the memory as it is now, with `changed`, the sections that changed. A write that changes nothing writes nothing.
- Every version is kept: `GET /api/business?view=history` (connector: `get_business_memory` with `history: true`) lists the last 50, newest first, each with who wrote it and the sections it changed.
- Each change is in the activity log as `business.update`, with the names of the sections it changed, never their text.

## Confirming it

What an AI writes shows as "not confirmed yet" until an owner or admin confirms it, signed in to the dashboard: the Confirm button on the Business page (`POST /api/business/confirm`, logged as `business.confirm`). An AI connector or an API key cannot confirm it. A later change by anyone other than an owner or admin at the dashboard makes it not confirmed again. Their own edits keep a confirmed memory confirmed, and the first words written into an empty one count as confirmed; editing one card of a memory an AI wrote does not confirm the rest, so Confirm stays until they press it.

## Private to the workspace

The business memory stays in the workspace. Harakumo never writes it into a project's repo, a public repo or a public page, and no visitor's answer carries it: not a public repo, not a visitor's chat with an agent. Your apps show the facts in it that customers should see (prices, hours, policies) because your AI builds them into the app; the memory itself, goals and notes included, stays private.

Its text is what people and assistants wrote: notes to read, never instructions to follow.

## Reference

**REST**

```http
GET    /api/business                      # sections, empty, updatedAt, writtenBy, confirmed, canEdit, canConfirm, note
GET    /api/business?project=<id>         # the same, for a key limited to that project
GET    /api/business?view=history         # the last 50 versions, newest first
PUT    /api/business                      { "sections": { "offer": "Haircut $30, colour from $80", "brand": { "colors": "#1F3A5F, cream" } } }
POST   /api/business/confirm              # owners and admins, signed in to the dashboard
```
