Awesomate docs v0.27.0

Guides

Your business details

Read what Awesomate knows about the business itself (name, what it does, voice, colours, how customers reach it), with where each detail came from.

const biz = await db.business();
biz.name; // 'Brightwater Plumbing'
for (const group of biz.groups) {
  for (const fact of group.facts) render(group.title, fact.label, fact.value, fact.status, fact.source);
}
biz.completeness; // { core_set: 7, core_total: 8, missing_core: ['logo'] }

const waiting = await db.businessSuggestions(); // details waiting for the owner's yes

Each detail says where it came from. confirmed details are the ones agents and automations use. A suggestion waits for the owner, who confirms it in the hub under Knowledge, Your business.

This needs the account's token (hosting:read), on every plan. An app server key cannot read it.

To offer the details a business has not filled in yet, businessCatalogue() lists every detail a business can have, set or not, with its group and type (no values):

const catalogue = await db.businessCatalogue();
const set = new Set(biz.groups.flatMap((g) => g.facts.map((f) => f.key)));
const missing = catalogue.facts.filter((f) => !set.has(f.key)).map((f) => f.label);

Brand and voice documents

Alongside the details, a business can have up to four long documents: its brand guide (brand_guide), its voice and style guide (voice_guide), the brand read from its website (website_brand) and a business summary (business_summary).

const docs = await db.businessDocuments(); // which exist: kind, label, version, length, where from
const voice = await db.businessDocument('voice_guide');
if (voice) render(voice.label, voice.body); // null when the business has no voice guide yet

The text is the owner's own. Use it for their business (an agent's instructions, site copy in their voice), and don't show it to anyone else.

Your business map

const map = await db.businessMap();
for (const department of map.departments) {
  // Envision, Form, Promise, Balance, Fulfil, Refine, Share, in that order
  for (const role of department.roles) render(department.verb, role.title, role.holders, role.helpers);
}
for (const step of map.path.steps) render(step.label, step.verb, step.owner.name, step.handoffRule);
map.gaps[0]; // the most important thing missing, with a hub page to start it when there is one

const roles = await db.businessMapRoles();     // every role: slug, title, department, holder
const quotes = await db.businessMapRole('quotes');
quotes.helpers[0].instructionLine;             // the line to put in that helper's instructions

The map is the business's structure: seven departments, each with three sub-departments, the roles in each, who holds them, and which agents and automations help which role, at what level (1 find out, through 5 report only the exceptions). Each person on the map has an access in the hub: owner, full or view. It is read only. The owner changes it on Business map in the hub, and your Claude Code can suggest changes for them to accept.

path is how a customer moves through the business, step by step, with who looks after each step. When path.stored is false it is a suggestion for the business's kind of work. Each role's proceduresTag (such as job:quotes) is the tag its procedures carry in 1Brain; the map holds no procedure text.

Each role also carries its priorities: the few things it must move each quarter (quarter such as '2026-Q4', a title, a status, who owns it, an optional due date), and the map's quarter says which quarter is current. People on the account who hold no role yet are listed in noRoleYet on the Form department.

The business map is reaching accounts in stages. If it isn't on the account yet, a call answers with an AwesomateError whose serverCode is feature_unavailable.

When stored is false, the owner has not started their map yet and what you see is worked out from what the account already runs. When unavailable is not empty, part of the account could not be read just now, so a department with no helper may simply not have been read.

Moving from the first shape

Before 0.24.0 the map used other names for the same things: a department was a division, a sub-department a department, and a role a job. So in that shape departments meant sub-departments. businessMap() now uses the words the owner sees, and businessMapV1() returns the old shape until v1 is removed (not before 2026-11-06). The CHANGELOG lists every renamed field. The same applies over HTTP: /api/my-business/v2/map, with /roles and /roles/:slug in place of /jobs. A suggested change uses the new names too: role.add with departmentNo (1 to 7) and subDepartmentNo, and roleId wherever v1 said jobId.