← Back to the platform

🤖 AI Agents

Leadership page for the whole AI workforce: approvals, checks, register
SOP v1.19 · Page v1.19 · Owner: Kevin (decisions), AI agents (execution)

1. What this page is

One page for everything to do with the AI agent workforce. It replaced the AI Agents tab that used to sit inside the Systemisation page (moved 24 Aug 2026, Kevin's ruling). On 25 Aug 2026 the three scrolling zones became three tabs, and the CEO Brief moved here from its own shell tab.

Dashboard
→
Approvals
→
Check these
  • Dashboard (opens first): the CEO Brief at the top, then one scorecard per agent – accuracy, guardrails, workload, what waits on you, Came back to you, and what it last did. Came back to you (16 Oct 2026) is the agent's hand-back score: of its cards in the last 14 days, how many asked you for more than approving, correcting, paying or giving access (a step you did yourself, a step you could not do, or signing the robot in again to a site it already had). Hover over it for the reasons. It comes from the same row as the dashboard's AI team panel, and reads “can't tell” when that row is over 2 hours old. No checks here, deliberately: this tab answers "how is my team doing", not "what is broken".
  • Approvals: every piece of work an agent has prepared and stopped on. Nothing is sent, filed, paid or changed until you decide. Same queue as Slack (#agent-approvals) and the Tasks drawer, decided the same way.
  • Check these: what should have moved and has not. Absence and stuckness, never a list of successes.

The Approvals and Check these tabs carry a count badge, so you can see there is something waiting without opening the tab. Building an agent's SOP from a video stays on the Systemisation page. This page is where agents are managed and judged.

The CEO Brief (top of the Dashboard)

Today's brief from the morning robot: what the board flagged, what to ignore today, what was handed off, and the "safe to act today" money figure. Read straight from the CEO Briefs table, newest first. Two things worth knowing:

  • The 07:30 huddle writes a partial card. The money figure and the reasoning land at 9am, and the card says so rather than showing two dashes and reading as finished.
  • Three of the page's health checks watch this brief, including one that fails if no finished brief has been stored for more than six days. A run of 07:30 stubs cannot keep it green through an outage.

2. The Approvals tab

Robot sign-ins (top of the tab)

Every login the robots use: the sites on their main browser, and each Utilita flat on its own. Each line says where it stands and when it was last looked at:

StateWhat it meansWhat to do
Signed outA robot looked and found no login.Press Sign in on your Mac. The Robot sign-in app opens that site. Sign in, then press Cmd+Q.
Not checked yetNothing has looked at it since it was added.Sign in if a robot needs it today. Otherwise the 06:40 check looks tomorrow.
You signed inYou closed a sign-in window after the last check.Nothing. The robot confirms it at its next check.
Signed inThe last check found the robot signed in.Nothing.
When neededA short login (GOV.UK, HMRC, GoCardless, American Express) that lapses within the hour.Sign in when a task asks for it.

+ Add a new site opens the same app's add dialog: paste the site's sign-in page, name it, sign in. The robots can use it from then on, and it joins this list. Sites the robots hold a login for but have no sign-in page on file are named under Show all; add each one once the same way.

The buttons are Mac only, because the robots' browser lives on your Mac. On a phone the panel shows the states with no buttons. The list comes from the robot-signins row of the Estate Status table, which scripts/estate-status.py rewrites every ten minutes from the 06:40 keep-alive, the robots' own session checks, the hourly Utilita read and the sign-in log. The app rewrites it straight after each sign-in, so the line changes within a minute.

This panel is the list of sites, nothing else (8 Oct 2026). Anything to do with a task is an approval card in the queue below: a task waiting on a sign-in keeps its Sign in now button; a robot blocked on a sign-in, or on a site missing from its list, comes to the queue as its own card with Sign in or + Add this site and an I can't do this box; and a step only you can take is a Your step card with Your turn on it. Sign in on the card and the robot picks the task up by itself; the card leaves the queue at the next check. A Your step card shows Your turn as soon as it arrives when the robot's plan has passed its check.

Your turn (website steps that need you)

Anything that does not need you, the robots do behind the scenes. When a step needs you on a website (buy a policy, pay online, file a confirmation statement, sign, answer declarations), the robot does every step before yours and, once you have approved its card, the task comes back to your queue as a Your step card with a Your turn button on it. Have ten free minutes, then press Your turn on your Mac:

  1. The Robot sign-in app says what the robot will do and what your step is. Press Start.
  2. The robot opens its own Chrome window. If the site needs your own sign-in (AXA, for example), a green bar at the bottom says so: sign in yourself, and the robot carries on.
  3. It fills in everything else (for insurance: through your TopCashback link, so the cashback tracks, with email-only contact and monthly instalments). When the green bar says Your turn, the window is yours: check it, answer the declaration questions yourself, and pay or file. The robot never presses the final button.
  4. Close the window when you have finished: while it is open, the other robots wait. The app asks whether you finished. Yes, done clears the task's wall, and the robot checks the receipt (the policy email, the filing confirmation) before it closes the task. Not yet leaves the button here.

On the card itself the box under your step takes your proof: type it, press Attach, or drop a file on the box (a receipt or screenshot alone is enough). Done, here is the proof puts the files on the task and the robot checks them within half an hour. When you cannot do the step (a portal that opens on a login you have no account for), say why in the box and press I can't do this: within half an hour the task goes back to its agent as Request changes with your reason, the agent has to find a way that does not need you, and it comes back as a fresh card that answers your reason. Added 8 Oct 2026.

If the robot gets stuck on a page, the bar says so and the window is still yours to finish by hand. It also stops, on purpose, before anything worded like the last step (buy, pay, confirm, accept, order, submit, file, sign) before any answer (a tick box, a Yes/No, a dropdown) to a question worded like a declaration, and before a box that asks for your name as a signature, so a plan whose option reads "Pay monthly" stops there and leaves that choice to you. Each plan lives privately on your Mac in ~/knowledge-os/handover/ (it holds your details), and the robot proves it with a practice run before the card reaches you.

The queue

The queue shows ONLY loop-raised work: tasks at Status Approval that carry a Sent For Approval By agent link. Legacy records parked at Approval status never appear. Cards are ordered tier 1 first, then priority, then longest waiting. Each card leads with the one-line ask (the agent's own "Carrying this out will involve" line), then the agent's full work, the brief it was given, and the age it has been waiting. Tier 1 items carry a red banner: read those fully before deciding. Where the task came from an email, the card links straight to the original thread.

Filters

Above the cards: All, one chip per agent with its count, and a Tier 1 toggle for the work touching your private legal and financial matter. The two combine, so they can narrow to nothing (an agent with no tier-1 work) – when that happens the page says so and offers Clear filters rather than looking like an empty queue.

The four actions and exactly what each writes

This page is the third face of ONE mechanism. It writes the same fields as the Tasks drawer and the Slack loop, so the three surfaces can never disagree.

ActionWhat it meansWhat is written to the task
ApproveRelease the work. The agent carries it out, then completes the task itself.Approval Outcome = Approved as-is · Approved At = now · Approved By = Kevin · Status = Today · Due Date = today · Completion Date cleared · task handed back to the agent (Team Member + Sent For Approval By = the agent, Assignee cleared)
Approve with minor editsRelease the work, but with the change you describe applied first. Your comment is an EDIT INSTRUCTION: the agent makes only that change, then carries out the edited version. Still counts as accurate work. Until 26 Aug 2026 this carried out the ORIGINAL text and ignored your comment; it now refuses to complete until the edit has been applied. For anything bigger than a small edit, use Request changes.Same as Approve, with Approval Outcome = Approved with minor edits · Approval Feedback = your edit. The agent then rewrites Agent Output via agent-dispatch.py revise, which archives the text you approved into Notes so what went out can be compared with what you read.
Request changesBack to the agent to redo. A comment is required; your words are the instruction.Approval Outcome = Changes requested · Approval Feedback = your comment · Approved At/By stamped · Status = Today, due today, handed back to the agent
Reject and closeKill the work entirely. A reason is required and a confirm dialog stands in the way. Counts against the agent's accuracy.Approval Outcome = Rejected · Approval Feedback = your reason · Status = Completed · Completion Date = now · agent links set as above
Not yet — bring it back in… (later today / tomorrow / 3 days / a week / 2 weeks / a month, or a date you pick)The one that is not a verdict. Use it when the work is fine but you cannot act on it yet — a confirmation statement waiting on an authentication code in the post, a renewal that is not due, a reply that depends on someone else. The task leaves your queue, the sidebar badge, your Slack DM and the CEO brief, and comes back on that date with the agent’s work exactly as it is now. Nothing is approved, nothing is sent, and it does not count against the agent. Everything parked is listed at the top of the Approvals tab with its return date, and “Bring back now” undoes it in one click. Added 28 Aug 2026 at Kevin’s request. Later today (added 28 Oct 2026) brings it back at the next of 9am, 1pm or 5pm, London time (Airtable’s clock can run a few minutes behind, so by about 1:05pm for 1pm, never early); the button names the time, and after 5pm it is not shown, so Tomorrow comes first. It leaves your queue, the sidebar badge, the front-page count, the Tasks page counts and the count above every chat. The AI team panel and the robots still count it as waiting for those few hours.Deferred Until = the date, or for Later today Back At = the time, plus your note appended to Feedback History. Nothing else — no Approval Outcome, no status change, no hand-back. There is no job that brings it back: all four surfaces filter on the date themselves, so the morning it passes the task is simply there again. The Slack worker replies in the existing thread with the return date, clears the message timestamp, and posts a fresh card on the day.
Remember this (tickbox beside the note, ticked by default)The one control that makes anything permanent. It is read with ANY verdict that carries words (it does not apply to a knock-back, which decides nothing and teaches nothing, and a decision with no note never reads it): your note becomes a standing rule in that agent's own instruction file, applied to every future task. Untick it for a one-off: Request changes still fixes that one task, but the agent will not remember why. From 7 to 24 Sep 2026 the box sat in the reject row and was read for rejections only, so notes given on approvals were never kept. In Slack the equivalent is reacting :brain: instead of :x:.Remember This = ticked. Within 30 minutes agent-dispatch.py lessons appends a dated line to ~/.claude/agents/<agent>.md under "Lessons from Kevin", mirrors it to the register Learning Log, and stamps Lesson Written At. The dispatch run FAILS if a ticked lesson is still unwritten 90 minutes later.
Your note may apply to other cards (24 Sep 2026)Seconds after you save a decision with a note, the page checks your note against every other card still waiting (the standard AI model reads them all). Each card it fits gets a strip: your note, the card you wrote it on, and why it may fit. Send back with my note sends that card back to its agent with your words (a rejection's copy closes it for the same reason). Not this one removes the strip. A line at the top of the queue offers to send them all back at once. Nothing moves until you tap, nothing is approved for you, and if the check fails the line says so. Not run for a decision with no note, for "Duplicate", or from the bulk bar.Only when you tap: the same fields as Request changes (or Reject with the same Verdict Reason), with Approval Feedback reading "Same as my note on another card (…): your note". Remember This is never set on the copy: the card you wrote on carries the rule.

Every decision also leaves an Airtable comment on the task, and the optional "Kind of work" picker sets the Task Type used to score the agent per job type.

Stale-approval guard: a click approves what was on screen when the card rendered. Before writing, the page re-reads the task; if it changed since (or was decided in Slack or the drawer), the decision is refused with a message and the queue reloads. Same principle as the Slack baseline guard.
Approving is not completing. Approve hands the task back to the agent to carry the action out. Kevin never marks agent work Completed.

3. The Check these tab

Six lanes, each reporting absence. A lane that cannot be read shows a fault line, never a clean slate. When all six run clean the tab says: "Nothing needs you – all agents moving."

LaneWhat it flagsWhy
ApprovalsLoop-raised work waiting more than 24 hours for a decisionAn agent is blocked on you; the queue is the bottleneck
Stuck tasksTasks at Today/Overdue owned by an AI agent, past their due dateWork that should have been done and has not moved
InboundOpen inbound reply tasks older than 24 hoursThe 24-hour reply promise is at risk
Daily logsBuilt or Live agents that wrote nothing to the AI Agent Daily Log todaySilence means the agent did not run, or its log write broke
GuardrailsAny automatic guardrail tightening in the last 7 daysThe system pulled a leash in on falling accuracy; you should know
DuplicatesTwo or more open tasks with the same owner and the same subjectYour standing rule is one subject = one open task. A chaser should update the existing task, not raise a sibling

4. The workforce register (on the Dashboard tab)

  • Role agents: one row per role-specific agent from the AI Agents table. Click a row for its panel: the seven AGENTIC stage fields (editable), a readiness check button, the accuracy band suggestion, "Compile prompt" (builds the one working prompt from the card), the learning log, and "Daily decisions" read from the AI Agent Daily Log.
  • Guardrails: tightening is automatic when accuracy drops (worst job type with 20+ checked pieces decides the band). Loosening is always your click, via the dropdown.
  • Strategic layer: the AI CEO, department heads and generic workers (Team Members rows), shown with workload only.
  • Process agents: workflows whose SOP runs as an agent (the video route). Their panel carries the identity card, the autonomy ladder, testing/live controls, the proposal feed with Approve/Reject/Undo, and per-action permissions. "View SOP" opens the workflow on the Systemisation page.
  • Automations (NOT agents): a separate layer listing the scheduled jobs, Cloudflare Workers and Airtable automations that run the estate. They follow fixed rules and make no judgements, so they are deliberately kept out of the agent counts and out of the accuracy figures. If this list fails to load the page says it could not be read, never that it is empty.
  • + Create an agent: the guided form walks you through the seven AGENTIC questions with an AI check on each answer.
  • Search: the box at the top of the register filters agents, process agents and automations together.

4a. The Track record tab (29 Sep 2026)

Everything that has been built and everything that is running, in one place, kept up to date by the system rather than by hand. Open it from the Track record tab, or link straight to it with #tab=track-record.

  • Recently built: the last 50 changes that shipped, newest first, grouped by day, each linking to its change on GitHub. Read live from GitHub each time you open the tab (kept for five minutes so a busy morning does not use up GitHub's 60 reads an hour).
  • Everything running: one fold-out section each for the register agents, the scheduled jobs on the Mac, the AI agent files, the skills, the Cloudflare workers, the GitHub workflows and the scheduled-task instructions. Each row shows its schedule, its state (on, off, parked, retired, or inside daily-ops) and one line on what it does. Rebuilt every ten minutes from the real files by scripts/built_inventory.py, carried by the built-inventory row that scripts/estate-status.py writes to the private Estate Status table.
  • Mac jobs not running as expected: a Mac job on the automations list or in the job schedule that launchd is not running, cannot read, or still runs after it was parked. Shown in red at the top.
  • Running, but not yet on the hand-kept lists: anything the automations list, workers list or Skills Library does not mention. Nothing for you to do. The hand-kept lists still cover things this tab cannot see (Airtable automations, workers whose code lives elsewhere, plugin skills), so they stay for now.
  • When something is wrong it says so: a GitHub refusal, a failed or missing inventory row, or a list older than 30 minutes shows in red with the reason. None of them shows as an empty list.
  • Why it is not in the code repo: the repo is public and the descriptions name creditors, tenants and legal work, so the list lives only in Airtable.

5. Health checks

The sync bar at the top of the page runs these checks, among others. The sidebar dot in the shell mirrors the worst of them.

CheckIf it fails
Track record list freshThe built-inventory row is missing, failed, or older than 30 minutes, so the Track record tab's running list may be out of date. Its detail says why (for example a source that read nothing). The estate-status job writes it every ten minutes.
Robot sign-ins listedThe robot-signins row is missing, failed or unreadable, so the Robot sign-ins panel cannot say which logins are live. Its detail says why. The estate-status job writes the row every ten minutes.
Approvals queue readAirtable auth or a broken formula. Hit Refresh; if it persists, the Status or Sent For Approval By field name changed.
Legacy Approval records excludedA task with no raising agent leaked into the queue. The filter broke; do not decide legacy records here.
Agents register readThe AI Agents or Team Members read failed, or the Is AI Agent / Active fields were renamed.
Daily log readThe AI Agent Daily Log table could not be read; the daily-log lane is blind.
Accuracy stats controlZero approval history matched. On a platform with weeks of decisions, zero means a field rename, not a quiet week.
Inbound Comms Response metric freshThat agent's register row lost its Metric Score. Its runtime stopped publishing; check the triage job.
Check zones computedOne or more lanes could not run. Treat those lanes as unknown, never as clear.
CEO Briefs table reachableThe CEO Briefs table could not be read, so the Dashboard brief is blind rather than empty.
Latest brief is completeThe newest brief is still a 07:30 stub. The 9am robot did not finish it: the money figure and the reasoning are missing.
Morning robot ran within the last weekNo FINISHED brief in the last six days. The 9am robot has stopped; a run of 07:30 stubs cannot mask this.

6. Where things moved from

  • The register, panels, guided form, strategic layer and process agents all lived on the Systemisation page's AI Agents tab until 24 Aug 2026. That tab is now a pointer to this page.
  • Approvals still also arrive in Slack (#agent-approvals) and can still be decided in the Tasks drawer. All three surfaces write the same fields; decide wherever you are.
  • Deep links: the Skills Library's "Manage in AI Agents", the Tasks roster's agent links, and the Systemisation SOP pointer all open this page with the right agent selected.
  • The CEO Brief had its own tab in the shell until 25 Aug 2026. It now sits at the top of this page's Dashboard tab; js/ceo-brief.js was deleted.
  • The three scrolling zones became three tabs on 25 Aug 2026, and the register moved up to sit under the brief.