The Company Repo and the Copilot
The Company Repo is the advisor's workspace for one company. It shows everything DutyGraph knows about the company as a tree of Markdown files. Each file has a state and its sources. The Repo Copilot is a panel beside the files. It answers questions about the files, finds gaps, writes edit proposals and drafts asks. It only proposes. You accept or reject each proposal.
Open the Repo with Repo in the company sidebar. The badge on Repo counts the answers that wait for your review.
The layout
Above phone width, the Repo fills the screen like a code editor. The page does not scroll. Each pane scrolls on its own.
- The toolbar. Files and To review (N), a short summary such as "12 of 147 filled · 134 to fill · 1 disputed", Download and a ⋯ menu.
- The answers banner. It shows only while new answers wait. It has Who answered, Show, To review and Mark as seen.
- The Layer row. It highlights one layer of the company in the tree.
- The panes. The tree on the left, the open file in the centre, the Copilot on the right.
On a phone, the page scrolls and the Copilot opens as a sheet.
The Repo has no Next button in the page header. It is a workspace with its own toolbar.
The toolbar
- Select to fill or disputed in the summary to filter the tree to those files. Select Show all under the tree head to remove the filter.
- Download downloads every file as Markdown, with states and sources. Raw source text and recordings stay out.
- The ⋯ menu has Run research again, Copy MCP URL and Push to GitHub. Push to GitHub shows "Later". It is not built.
- Before Company Research has run, Run research is the main button.
The Layer row
A layer is one level of the company's operating model, from the market to the work. Select a layer to highlight its files in the tree. A highlighted file has a tinted row. A folder with highlighted files inside shows its name in green, so you can see where to open it. Each stop shows how many files are still to fill. A red dot shows that some files are disputed. Hover or focus a stop to read what it selects.
Each file states its own layer. DutyGraph writes the layer key in the file's frontmatter when it compiles the Repo. The values are company_market, leadership, department, team and work. The Layer row selects the files by this key. Nobody types it. Systems, metrics, findings, evidence, folder indexes and the root files have no layer.
| Layer | What it selects |
|---|---|
| Company & market | The company profile, market, customers, competitors, value spine and glossary. Research fills most of these files. A person at the company confirms them. |
| Leadership | The leaders and their roles, the strategy and its initiatives, the operating rhythm, the approval rules, and each department charter with its mandate. |
| Departments ▾ | Choose a department. The tree shows its charter, its people and roles, and the duties, Task Cards and systems they own or use. |
| Team | Every person and role, their duties, Task Cards and runbooks, and the org chart. |
| Work | Task Cards, runbooks, workflows, handoff files and agent drafts. The line counts them by proposed mode: people only, people and agents, or agents only. |
When you select a layer, one line under the row shows its description and its file count. The line can offer Add the first 20 to the Copilot. Select × to clear the layer.
A mode on a Task Card is a proposed mode. It is not an approved agent. DutyGraph does not run agents now. The news, competitor, hiring, technology and profile files can refresh from research (see "Research refresh" below). A live news or competitor feed is Planned.
When you select a stop, the Copilot also gets a summary of that layer (see "Chain context" below).
Org chart at the end of the row opens the org chart under the row. Select a person or a department to highlight their files.
The tree
- Select a folder to open it. Select it again to close it.
- Select Select in the tree head to show a tick box on each file. Tick files to add them to the Copilot's context. Select Select again to hide the tick boxes.
Asks
Each ask that you send to a person has its own file, under that person: people/<person>/asks/<ask>.md. The person's file lists their asks with the status of each one.
An ask file shows each question, the file that the question fills, and the status of the ask:
- Waiting. The person has not answered. The file is a Slot.
- Answered. The answer came back. Review it. The file is Proposed. The file does not show the answer.
- Accepted. You accepted the answer. The file is Observed. It shows the answer as understood: the person's answer in clear words, which they confirmed. A recommended improvement is a recommendation, not current practice.
- Closed. The request closed without an answer.
The person's own words stay as evidence in DutyGraph. The Repo does not copy them.
File states
| State | Meaning |
|---|---|
| Confirmed | A person at the company confirmed it in DutyGraph. The confirmation is recorded, not signed. |
| Observed | A client source supports it. |
| Inferred | Research or the advisor suggests it. Nobody at the company confirmed it. |
| Disputed | Sources or people disagree. |
| Unknown | DutyGraph searched and has no usable value. |
| Proposed | A draft that waits for review, for example a proposed Task Card. |
| Slot | A file that nothing has filled yet. |
| Generated | DutyGraph builds the file from other files, for example an index or the company brief. |
The legend under the tree shows each mark: Confirmed is a filled green dot, Observed a green ring, Inferred a dashed violet ring, Disputed a dashed red ring, Unknown an amber dot, Proposed a light ring, Generated a grey dot and Slot a short grey dash.
A percentage shows only for research-backed files, next to its state, for example "Inferred · 77%".
The open file
The bar above the file shows the path and the file's tools:
- History shows how the file stood at an earlier step. It shows only when an earlier state exists.
- Pin to context keeps the file in the Copilot's context after you open another file.
- Details opens the panel with STATE, FILE, REFRESH (only on a file that refreshes), LINKS, SOURCES, KNOWN GAPS and NEXT.
The strip under the bar shows the state, the owner and approver where they apply, the sources and the next step. An empty field says "Not captured".
Ask the person responsible is in the NEXT section of Details. It builds up to 10 questions from the file's open fields without AI. It suggests the person who can answer. You can change the person and untick questions. The ask goes to the Discovery queue. Nothing is sent.
Below the ask, Or record what a person told you has Confirm, Correct and Rule out. Use them only for what a person at the company told you.
Links between files
The files link to each other. The links follow the chain of custody from the strategy to the work:
- The strategy and its initiatives (
company/strategy.md,company/initiatives/). - The department mandate, in the department charter (
departments/<department>/charter.md). - The duties of the department (
duties/). - The roles that hold the duties, and the people in the roles.
- The Task Cards that do the work, with their runbooks and agent drafts.
- The workflows and handoffs that carry work from one department to the next.
DutyGraph computes each link from the records and the accepted answers when it compiles the Repo. Nobody types a link. The links are in the file's frontmatter, for example serves, owned_by, tasks and handoffs.
LINKS in Details
Open Details on a file. The LINKS section has 3 groups:
| Group | What it shows | Examples |
|---|---|---|
| Up | What this file serves and who owns it. | Serves, Owned by, Reports to, Charter, Department |
| Down | What this file holds. | Initiative, Mandate, Duty, Task Card, Performs, Runbook, Agent draft |
| Across | Handoffs and other departments or workflows along the value chain. | Receives from, Delivers to, Handoff in, Handoff out, Workflow, Department |
Each row shows the relation and the title of the linked file. Select a row to open that file. A file from an older compile shows no LINKS section.
Proposed links
A link is confirmed only when accepted records state it. A link is proposed when one of its records is still a proposal, or when DutyGraph inferred it. For example, DutyGraph proposes a link when an initiative names a department in its own words. The row then shows Proposed. Do not treat a proposed link as a fact. Ask the person responsible to confirm it.
The frontmatter key links_state gives the state of all the file's links: confirmed, proposed or mixed. The key links_proposed lists the proposed links.
Initiatives
An initiative is a goal that leadership works toward. DutyGraph writes one file for each initiative in company/initiatives/. The text comes from these sources only:
- the accepted answer about the leadership team's priorities for the next 6 months;
- the accepted answer about the company's goals;
- the engagement's outcome;
- the company goal from the setup. It stays Inferred until an executive confirms it in the kickoff.
DutyGraph never prints a proposed answer as an initiative. Each initiative serves the strategy. An initiative file shows the priority, the horizon, the success measure and the owner. A value that nobody gave says "Not captured yet".
"Departments that deliver it" lists a department only when the initiative's words name it. That link is proposed. Otherwise the file says "Not captured yet. Ask an executive in the kickoff which departments deliver it." You cannot create or edit an initiative as a record now.
Mandates
A mandate is what leadership asks a department to deliver. Each department charter has 2 sections from its links:
- Mandate: the initiatives that the department serves, and the strategy.
- Works with other departments: the departments it receives work from and delivers work to, and the handoffs that carry the work.
The charter's Purpose section keeps the department's own answer. When nobody gave a mandate, the fields card says "Not captured" and offers the ask.
Handoff files
A handoff file shows one handoff between 2 Task Cards. The files are in flows/handoffs/. Each file shows the task that hands over and the task that receives, their departments, what is handed over, the time limit, the retries, the acceptance check and the failure action. A value that nobody reported says "Not captured".
Execution modes
Each workflow file has an execution_mode: people_only, people_and_agents or agents_only. DutyGraph takes it from the proposed modes of the workflow's Task Cards. The mode is confirmed only when the workflow and each of its Task Cards are accepted. Otherwise it is proposed. An execution mode does not approve an agent. DutyGraph does not run agents now.
Research refresh
Some facts about a company change over time. DutyGraph keeps a refresh plan for the files that research fills. A refresh researches the file's fields again. It never writes a value directly.
The files that refresh
| Plan | File | What changes | How often |
|---|---|---|---|
| News and announcements | market/signals/ | New events | Weekly |
| Competitors | market/competitors.md | New or changed competitors and their moves | Monthly |
| Hiring | company/profile.md, hiring fields only | Open roles and the headcount trend | Every 2 weeks |
| Detected technologies | systems/ | Tools added or dropped | Monthly |
| Company profile | company/profile.md, all other fields | Identity, size and business model | Every 3 months |
Files that people fill never refresh from the web. These are people, roles, duties, Task Cards and workflows.
The refresh: block
Each file that refreshes has a refresh: block in its frontmatter. The block shows:
planandcadence: the plan and how often it refreshes;fields: the fields that the refresh researches;sources: the sites and searches for the plan, at most 8. A site shows as its main address only;last_checked: the day of the last run that researched these fields. It isnullwhen no run did;next_check:last_checkedplus the cadence.
company/profile.md has 2 plans: the profile plan in the block, and the hiring plan under refresh.hiring.
You cannot change the sources or the cadence in the app now. An editor for them is Planned.
Refresh now
- Open a file that refreshes, for example
market/competitors.md. - Select Details.
- In the REFRESH section, read the plan, the cadence and the last and next check.
- Select Refresh now.
The row says "Refreshing…" while the run is active. When the run is complete, the Repo reloads and the row shows the result, for example "3 new findings · 1 flag · nothing changed". You need permission to run research. The same plan cannot refresh again within 10 minutes.
The Company Research step page has the same rows for all 5 plans under Refresh by file. It also has Keep research current, which refreshes due files on a schedule within a monthly cap. See From Company Research to confirmed work.
Confirmed facts do not change
A refresh also researches the fields that a person confirmed. It never changes a confirmed value. When the new evidence disagrees, DutyGraph keeps the confirmed value and adds a flag. The flag shows in To review: "A person confirmed X. Newer research says Y. The confirmed value stays. Keep it, or ask the person again." New values arrive as research findings to review, with their sources.
To review
Select To review in the toolbar. Each card has a title, the value, and one sentence that says what to decide. For example: "Sources disagree: 120 vs 85. Pick the right one or ask the client."
- Answers to review. Readings from people's answers. Accept records the reading in its file. Reject removes it.
- Proposed duties, Task Cards, handoffs and workflows. Accept reviews the record. A duty, handoff or workflow asks for a reason. Reject needs a reason and withdraws the draft.
- AI modes, owners and hours for Task Cards (since October 14, 2026). What the AI-fit pass proposed for each Task Card, by code from the card and the roster, with no AI call: an AI mode with its reason, an owner (the performer's manager), the person who does the work, or which Task Card an hours answer is for. Select Accept the mode, Accept the owner, Accept or the Task Card, or Not now. Open the Task Card opens the card. Nothing changes until you accept, and accepting needs the Review records permission. See Opportunities.
- Research findings. Select Review in file →. DutyGraph opens the file at the finding, opens the Copilot and asks for a focused review of that one finding.
A focused review ends with 1 verdict:
- Looks right. Confirm it in Details.
- Needs a correction. Correct it in Details.
- Ask a person. Select Send to Discovery. The Copilot drafts the ask for that person and adds it to the Discovery queue. Nothing is sent.
When the company has no approved AI connection, the card still shows the decision sentence, who can answer, and Ask the person responsible.
The Copilot
What the Copilot reads
- The open file. It is the Copilot's context by itself, as "Current file". Select × on the chip to leave it out of the next ask.
- The whole company by default. With no file open and none added, the context row shows "CONTEXT · Whole company" and the Copilot reads every file of the company (the selected layer first). The files are about 150,000 tokens at most; when a company is larger, the least related files are left out and the Copilot is told how many.
- Or narrow it: up to 100 files. Add files with Pin to context, the tree tick boxes, a layer, or an org chart node. The context row shows "CONTEXT · n files", then the chips that fit, then +N for the rest. Edit always needs the 1 file to change: open it first.
- The company brief. The line "● <Company> · company brief on" shows that the Copilot reads
company/brief.md. The brief holds the status, the current initiatives, the work in motion, the last 14 days of activity, the key people and the top gaps. It is a generated file, at most 4,000 characters. It holds no email address, quote text or proposed value. - The chain. The files above, below and across from the anchor. See "Chain context" below.
- The conversation. The Copilot reads the last 6 turns. Select Clear to start again.
The Copilot reads accepted values only. Proposed readings, quote text and email addresses do not go to the AI provider.
Chain context
The Copilot reads the chain of the person, file or department that you work on. The chain is the vertical slice of the company through that anchor:
- Up: the strategy, the initiatives, the department mandate, the role and the duty that the work serves.
- Down: the duties, Task Cards, runbooks and agent drafts below the anchor.
- Across: the handoffs in and out, the workflows, and the departments that the work comes from or goes to.
The Copilot uses the chain to explain why the work exists. It keeps an Edit proposal in line with the mandate. A drafted ask names the mandate or the initiative. The Copilot treats a proposed link as unconfirmed and does not state it as a fact.
The anchor
The anchor is the item that the chain starts from. The Copilot uses the last item that you selected:
- A person in the org chart. Select Org chart on the Layer row, then select a person. You can ask about that person with no file in the context.
- A department. Select Departments ▾ on the Layer row and choose a department.
- The open file. Open a person, role, duty, Task Card or department file.
The line under the company brief line shows "Anchored on: <name>".
The path line
The next line shows one path from the strategy down to the anchor, for example "Strategy → Finance → AP manager (Dana Brooks) → Dana Brooks". Select a step on the path to open its file. A dashed step is a proposed link. The line then shows "Dashed: proposed link".
Layer summaries
When you select a stop on the Layer row, the Copilot gets a summary of that layer, not many files. The line shows "Layer summary: <layer>". The summary has the number of files in each state and the files with the most gaps. It also has the initiatives, the departments and their mandates, the roles, or the workflows by execution mode, as the layer needs.
Clear the anchor
Select × next to the anchor name. The Copilot then reads no chain. The anchor comes back when you select another person, department or file.
The chain holds accepted text only. It holds no email address, quote text or proposed value. A file that waits for review shows its title only. The chain does not use one of the 20 context places.
The 4 modes
| Mode | Use it to |
|---|---|
| Ask | Ask a question about the context files. The answer names the files it uses. With Claude, the answer streams as the Copilot writes it. |
| Review | Find gaps, disputes and weak sources in the context files. |
| Edit | Say what the open file must say. The Copilot writes a proposal. Read it, then accept or reject it. |
| Draft an ask | Draft clear questions for the people responsible for the open items. |
Press Enter to send. Press Shift+Enter for a new line. Select the mic to talk instead of typing. The mic uses on-device transcription.
Edit any file
You do not select fields. Write what you want, for example "Fill this with your best guess" or "What would a top-tier company do here?".
- Open the file.
- Select Edit and write what the file must say.
- Read the proposal. Field changes show as a diff. Other text shows as a preview under Notes.
- Select Accept or Reject.
What Accept writes depends on the file:
- A record file (Task Card, duty, workflow, handoff, person): a new version of the record, plus Notes when there are any.
- A research file: a correction for one field, or Notes.
- Any other file (operating rhythm, strategy, glossary, charters, roles): Notes.
- A generated file: nothing. The Copilot tells you to open one of the files it is built from.
Notes print in the file as an advisor draft. The label says "Advisor draft — based on common practice, not confirmed by <Company>" for a best guess, or "Advisor draft — from your words, not confirmed by <Company>". The file stays Inferred until a person at the company confirms it. DutyGraph keeps every version of the Notes.
If the file changed after the Copilot read it, Accept stops with "This file changed. Ask again."
Draft an ask
- Select Draft an ask. Write what to ask, or leave the box empty to draft from the conversation.
- Or select Draft an ask about this → under an Ask answer. You do not need to type.
- Read the draft. Each person shows why the Copilot asks them.
- Select Add to Discovery queue. The asks wait as unsent drafts in Discovery › Asks.
- Or select Edit in the composer first to open the draft in the Discovery composer.
The Copilot asks only about missing, unconfirmed or disputed items. It writes one question for each item, at most 10 for each person. It quotes the current value and asks the person to confirm or correct it. Questions without a person wait for Choose who to ask.
When the Copilot does not answer
- No approved AI connection. The Copilot answers only for a company with an approved AI connection. Approve one in the company's Connections (Settings › Connections). Without one, write the questions yourself with Ask the person responsible.
- The sample company. The fictional sample never uses AI connections. Add your own company to use the Copilot.
- The provider refused the key. Check the key in Settings › Research & AI keys, or in the company's Connections.
- Claude or OpenAI. When a company has approved connections for both, DutyGraph uses Claude (Anthropic) for the Copilot. Only Claude streams the answer now. With OpenAI, the answer arrives in one piece.
What the Repo does not do
- The Repo is a view of the database. It is not a second store.
- The Copilot does not send asks. Asks wait in Discovery until you send them.
- A refresh does not write a value. It does not change a fact that a person confirmed.
- A typed Notes editor, a Notes history view, Share links for the Snapshot and Push to GitHub are Planned.
- An initiative record that you can create or edit, a field for the departments that deliver an initiative, department policies and SOPs, and an editor for the refresh sources and cadence are Planned.
See also From Company Research to confirmed work for the Discovery queue and the composer.