21. Reference & Glossary¶
This chapter is a lookup resource. Come here when you need the location of something, want to check what fields a particular entity requires, or need a plain-English definition of a term used elsewhere in the manual.
Top-level folder map¶
Locations are written as context keys — {company.clients} rather than a folder name. A key is
stable; the folder it points at is whatever your workspace calls it, and
uv run {skills.root}/context-pack/scripts/resolve_context.py --key company.clients prints it. On a
stock BOB install those folders are the numbered ones (10-ME, 20-COMPANY, 30-CLIENTS and the
rest), so a key and a folder name are the same thing until someone renames the tree.
| Key | Name | What belongs here |
|---|---|---|
{vault.core} |
System | Skills library, playbook recipes, vault templates, task notes, schemas, configuration. Do not store business content here. |
{me.root} |
Personal | Owner or operator profile, personal contacts, personal ideas and inbox, private comms threads. |
{company.root} |
Company | Everything that belongs to the company as a whole: profile, processes, HR, finance, sales, marketing, strategy, management. |
{company.clients} |
Client Work | One sub-folder per client, named by client_id. All client-scoped records live here: deals, invoices, projects, meetings, deliverables, comms. |
{resource.root} |
Knowledge | Reference and research material not tied to one client: market intelligence, legal references, research knowledge bases, general knowledge notes. |
{company.projects} |
Internal Projects | Internal product or initiative projects, structured like client projects but without a client. |
{output.tmp} |
Scratch | Temporary and in-progress work. Skipped by the validator and not included in Dataview indexes. Nothing here is permanent. |
Key areas inside {company.root}¶
Each area is named by its context key. resolve_context.py --key company.finance prints the folder
your workspace actually uses for it.
| Key | Contents |
|---|---|
{company.profile-root} |
Company profile, brand guidelines |
{company.qms.root} |
Quality management: rubrics, scorecards, model cards, spec reviews |
{company.decisions} |
Logged decisions |
{company.processes} |
Process definitions, process runs, playbooks, audit records |
{company.legal} |
Contracts, legal rules, document retention |
{company.hr} |
People records (internal), recruiting, payroll (WPS) |
{company.finance} |
Full financial sub-tree: journals, invoices, AP, tax, close, bank, reports |
{company.suppliers} |
Supplier records and supplier invoices |
{company.partners} |
Partner records, certifications, commissions |
{company.products} |
Product catalogue |
{company.marketing} |
Marketing content by channel, campaigns, social channels, video, courseware |
{company.leads} |
Lead records pre-qualification |
{company.sales} |
Campaigns, sequences |
{company.operations} |
Surveys and operational records |
{company.management} |
Strategy, KPIs, management reports |
Entity quick-reference¶
The table below covers the entities most users encounter. For deep finance and tax internals (journal entries, deferred tax, ECL, gratuity provisions, WPS), consult the schema files directly under {vault.schemas}.
| Entity | type: value |
Default location | Key fields | Lifecycle |
|---|---|---|---|---|
| Lead | lead |
{lead.root} |
company_name, contact_name, lead_date, source, status |
new → qualified → nurture / disqualified |
| Client | client |
{client.root} |
client_id, client_name, profile_type, status |
prospect → active → inactive / on-hold → completed → archived |
| Person | person |
{me.people} or {client.people} |
name |
No defined lifecycle |
| Deal | deal |
{client.deals} |
client_id, title, stage |
lead → qualified → proposal → negotiation → won / lost |
| Invoice | invoice |
{client.invoices} |
client_id, invoice_id, invoice_date, due_date, amount, currency, payment_status |
draft → sent → paid / overdue; credited when a credit note settles it in full (the corrected invoice is reissued, never deleted or renumbered) |
| Supplier Invoice | supplier-invoice |
{company.finance}/AP/INVOICES/ |
supplier_id, invoice_id, amount, currency, match_status, payment_status |
received → matched → approved → paid |
| Meeting | meeting |
Any */20-MEETINGS/ folder |
context, date, attendees, status |
scheduled → completed / cancelled |
| Decision | decision |
{company.decisions} or {client.decisions} |
status, created |
proposed → decided → superseded |
| Comms Thread | comms-thread |
{client.comms} |
thread_id, channel, status, awaiting_reply, last_message_at |
open → closed |
| Project | project |
{client.projects} |
project_id, project, title, status |
planning → active → on-hold → completed → archived |
| Deliverable | deliverable |
{client.projects} |
status, created |
draft → review → approved → delivered |
| Task | task |
{output.tasks} |
status |
open → in-progress ↔ awaiting-input → done |
| Research | research |
{client.root} or {resource.root} |
research_type, research_date, status |
draft → review → final |
| Analysis | analysis |
Same folder as related research | analysis_type, based_on, status |
draft → review → final |
| Campaign | campaign |
{company.sales}/CAMPAIGNS/ |
campaign_name, campaign_type, status |
draft → active → completed |
| Marketing Content | marketing-content |
{company.marketing}/{channel}/ |
content_type, platform, title, status |
draft → review → scheduled → published |
| Product | product |
{company.products}/{product-id}/product.md, or {client.catalogue.products} for a catalogue item imported from a supplier or client catalogue |
product_id, product_name, brand, category, pricing_model, status |
draft → active → discontinued |
| Supplier | supplier |
{company.suppliers} |
supplier_id, supplier_name, status, spend_category |
prospect → active → inactive |
| Partner | partner |
{partner.root} |
partner_id, partner_name, status, relationship_type |
lead → qualified → active → inactive → archived |
| Playbook | playbook |
{company.playbooks} |
trigger, outcome, total-steps, status |
draft → active → archived |
| Skill | skill |
{skills.root}/{name}/SKILL.md |
category, version, disable-model-invocation |
Managed by skillsmith |
| Feedback | feedback |
{client.feedback}; a discovery-debrief (a prospect's post-call fit assessment, keyed by lead_id) is filed in the lead's folder under {company.leads} |
feedback_type, respondent, feedback_date, status |
draft → review → final |
| Issue | issue |
{client.issues} for a client issue; {company.qms.audits} for a QMS audit issue |
issue_id, severity, status (plus client_id and sla_target on a client issue) |
Client issue: open → investigating → resolved → verified → closed. QMS audit issue: Open → Resolved |
| Testimonial | testimonial |
{client.root}/50-TESTIMONIALS |
client_id, respondent_name, format, permission_level, status |
draft → approved → published |
| KPI | kpi |
{company.kpi-reports} |
kpi_category, title, last_updated, update_frequency |
No defined lifecycle |
| Strategy | strategy |
{company.management}/STRATEGY/ |
title, status, created |
draft → approved → archived |
| Company | company |
{company.profile-root} |
entity_id, title, status |
No defined lifecycle |
| Profile | profile |
{scope}/00-PROFILE/ |
profile_type, title, created |
No defined lifecycle |
| Report | report |
{company.root}/{division}/REPORTS/ |
report_type, title, status |
draft → review → final |
| Process Definition | process-definition |
{company.processes}/definitions/{id}/ |
process_id, apqc_id, value_chain, activities, status |
draft → active → deprecated |
| Purchase Order | purchase-order |
{company.finance}/AP/ORDERS/ |
po_id, supplier_id, total_amount, currency, approval_status |
draft → approved → received → closed |
| Credit Check | credit-check |
{client.deals}/credit-checks/ |
client_id, deal_ref, verdict, exposure_amount, status |
draft → approved |
The context pack¶
Skills never carry your folder names. A skill asks for a key such as {company.clients}, and the context pack answers with the real folder in your workspace. This is what lets the same skill run on the stock numbered layout and on a layout you have renamed.
What a pack holds. A pack is a context.yaml file with four sections: roots (the named top-level folders), keys (each key's folder path and a one-line summary of what it holds), routing (where a new note of each entity type goes) and conventions (the workspace's filing rules). The default key set has over 350 keys.
The default and extends: default. The default pack is the stock numbered tree. A workspace that is that tree with a few folders named differently does not copy it; its context.yaml says extends: default and declares only the difference. For example, a workspace can keep its internal projects folder under its own name by overriding the one projects root. The rules:
| Section | What the child file does |
|---|---|
roots |
Its entries win. Moving a root moves every inherited key and routing template under it |
keys |
A key you declare is merged field by field over the default (change path, keep summary); a new key is added |
routing |
Its entries win |
conventions |
Its lines are added to the default's |
Which pack is used. The first of these that exists wins: a pack given on the command line, the CONTEXT_PACK environment variable, a context.yaml found walking up from the current folder, a context.yaml at the workspace root, a single context-* pack under the skills folder, and last the framework default. Two installed packs with no explicit choice is an error, not a guess.
See a key. Run these commands ({skills.root}/context-pack/scripts/):
| Command | What it shows |
|---|---|
resolve_context.py --show |
Which pack is active, where it was found, the workspace root and its roots |
resolve_context.py --key company.clients |
The folder a key resolves to |
resolve_context.py --list --scope company |
The keys of one scope, with their summaries |
resolve_context.py --route meeting |
Where a new note of that entity type is filed |
A starter vault. A starter vault ships the context-pack skill and the default key file but no workspace pack, so it uses the default layout until you create a pack with init_context_pack.py (see chapter 2 for the command). resolve_context.py --show reports "found by default" when no pack is installed.
Override a key or rename a folder. Edit your workspace's context.yaml: change a roots entry to move a whole area, or declare the key with a new path. Then move the folder yourself, because the resolver creates nothing. Skills follow the pack from then on. Two things do not follow it automatically: existing notes that already link to the old location, and Obsidian's own settings and the Bases, which Obsidian reads literally. {skills.root}/bob-install/scripts/render_obsidian_paths.py renders both from the active pack (it only reports unless told to write), and bob-workspace-bootstrap reports a disagreement as a high-priority finding.
An unresolved key. Error: unknown key '<key>' means neither your pack nor the default declares it: check the spelling and run --list. A key that is declared but whose folder is missing is reported and the command stops, unless the skill is writing to a destination that does not exist yet. See chapter 20.
Glossary¶
Agent A Claude Code process that reads the vault, selects skills, and executes tasks on your behalf. The agent is distinct from the AI model — it is the orchestrator, not the reasoner.
ACP (Agent Client Panel) The Obsidian plugin panel where you type requests to BOB and read its responses. Your primary interface to the agent.
Base An Obsidian view that queries vault notes by frontmatter fields and displays them as a filtered, sortable table. Used for pipeline views, task lists, and KPI dashboards.
Cadence A recurring schedule of agent-driven tasks — weekly reviews, monthly close sequences, quarterly reports — defined in a playbook and triggered on a schedule or manually.
Canvas An Obsidian feature that places notes and file nodes on a freeform board. BOB uses canvases for dashboards and relationship maps. Text nodes are not clickable; use file nodes for navigation.
Draft-first
BOB's default save behaviour: outputs are written as status: draft notes so you can review before treating them as authoritative. Change the status manually once you have approved the content.
Frontmatter
The block of structured key-value fields at the very top of a note, enclosed in --- delimiters. Every typed note must have frontmatter. The validator checks it on every save.
Grounding The process of connecting an AI response to specific vault content — notes, profiles, past decisions — rather than relying on the model's general knowledge alone. Grounding makes answers relevant to your business specifically.
Inference A conclusion the AI draws from vault content. BOB can infer patterns, risks, and recommendations from your data — but inference is not fact. Always review inferred outputs before acting on them.
Playbook
A multi-step process recipe stored as a note in {company.playbooks}. Running a playbook creates a sequence of Task notes and coordinates skill invocations across steps, with checkpoints between them.
QMS (Quality Management System)
The set of rubrics, scorecards, model cards, and spec reviews stored under {company.qms.root}. The QMS scores every skill for output quality, risk level, and reliability. Skills below threshold are flagged or disabled.
Skill
A named, versioned capability that BOB can invoke. Each skill is a folder under {skills.root} containing a SKILL.md specification and scripts. Skills are the building blocks BOB assembles to answer a request.
Vault The top-level folder on your machine that holds all BOB notes and configuration. In Obsidian terms, the vault is the root of your knowledge base. Your data lives here, in plain files, under your control.
Value Chain One of BOB's core business process flows — lead-to-cash, hire-to-retire, procure-to-pay, and others. Skills are tagged to the value chain they serve, so BOB can choose the right skill for the stage of the process you are in.
Wikilink
A link written as [[Note Name]] that connects one vault note to another. Wikilinks are how entities reference each other without duplicating data. The validator checks that wikilinks resolve to real notes.
Context Pack
The file set that maps context keys such as {company.clients} to folders in your workspace. Skills name locations by key, never by a hard-coded path, so renaming a folder means changing one entry in the pack. A workspace pack can start from the framework default (extends: default) and declare only what differs. The default key set has over 350 keys. resolve_context.py --key <key> prints the folder a key resolves to.
Model Card
A governed document in {company.qms.model-cards} that describes how a skill uses AI: its intended use, risk profile, attributes tested, and residual risk. A process definition will not load a skill that lacks an active model card.
Periodic Note
A daily, weekly, or monthly note stored in {vault.periodic-notes}. Used for reviews, stand-ups, and time-series tracking. BOB can pre-fill these from vault data on a cadence.
Dataview An Obsidian community plugin that lets you query frontmatter fields across all vault notes using a SQL-like syntax. BOB uses Dataview for live tables in dashboards. Base is the newer, lower-code alternative.
Status A frontmatter field that records where a note sits in its lifecycle. Status values are controlled vocabularies — each entity type accepts only the values defined in chapter 7, The Data Model. The validator rejects unknown values.
Scope
The organisational level a piece of content belongs to: system ({vault.core}), personal ({me.root}), company ({company.root}), client ({company.clients}), or knowledge ({resource.root}). The top-level folder encodes the scope. BOB uses scope to route outputs to the right place.
ThirdBrain The underlying platform on which BOB runs. ThirdBrain provides the agent framework, skill library, and vault conventions. BOB is BRNCX's configured and business-ready deployment of ThirdBrain.
Process Run
A single execution of a Process Definition. Each run produces a JSONL event log and a summary note under {company.runs}. The event log is authoritative; the note is a readable view.
Comms Thread
A note that tracks an ongoing external communication — email thread, WhatsApp exchange, or phone call series. When a communication produces a decision or deliverable, the thread links to it via captured_in.
Credit Check
A formal risk assessment note linked to a Deal, recording exposure amount, open and overdue receivables, and a verdict (pass, refer, or block). Required before a deal progresses past negotiation in some process definitions.
Previous: 20. Troubleshooting