PortLev chevron_right Build Logs chevron_right CEO Command Center
build Build Log #006

How I Built
The CEO Command Center
in One Week

A Portfolio Executive's walkthrough of building the integrator layer: 12 C-suite voices in, 3 calls a day out. A weekly thesis update, an append-only decision log and a dashboard that fits on one screen.

YK

Yuri Kruman

3x CHRO · Operator across 8 properties · Jun 2026

0

CEO calls a day — not more

0

C-suite voices integrated

0

screen with everything that matters

0d

to a working v1

bolt

The 30-Second Version

The CEO Command Center is the integrator layer of the executive OS. Twelve C-suite agents (CRO, CFO, CPO, CTO, COO, CSO, CCO, CLO, CDO, CHRO, CMO, Chief of Staff) each file a structured JSON report by 07:30 IDT. The CEO node reads them, identifies the three calls a day that actually move the portfolio, updates a rolling strategic thesis once a week and appends every decision to an immutable JSONL log. The output is a one-screen dashboard and a 5-minute brief.

report

The Problem

Twelve specialist agents producing 12 unintegrated reports is a synthesis-tax that defeats the point of having the swarm.

memory

The Stack

Claude as the integrator. JSONL decision log. Static HTML dashboard. Same Windows Task Scheduler that runs Command Center.

block

What It Doesn't Need

No vector DB. No agent framework. No orchestrator service. No team.

timer

Build Time

Seven days, starting AFTER the Command Center existed and AFTER the 12 specialist verticals had a working output contract.

If you are a multi-property founder or portfolio executive who has more agents than you can read, this build is for you. The point is not the agents. The point is the integrator: one voice, one screen, three calls, one decision log.

Part 1

Why a CEO Layer, Distinct from the Swarm

I had already built the C-suite Agent Swarm OS: 12 specialist verticals, each running its own internal supervisor-swarm-auditor pattern, each writing one structured JSON report per day. Then I tried to operate from it for a week. The synthesis tax was brutal:

12

specialist reports in my inbox by 07:45 IDT

90+ min

reading and trying to integrate them in my head

0

a single coherent answer to "what are today's three calls?"

3

conflicting recommendations across CRO/CFO/CSO that needed CEO arbitration

The CRO wanted to spend more on outbound. The CFO wanted to extend runway. The CSO wanted to reposition the portfolio. Each one was right inside its own optimization frame. None of them could see the others. That is the CEO's literal job: integration, arbitration, allocation. The swarm without the CEO is a meeting; the swarm with the CEO is an operating system.

  1. 1The CEO node is a different agent than the specialists. It does NOT generate new analysis. It REJECTS and REORDERS the analyses it received.
  2. 2It outputs decisions, not options. Three calls today. Yes/no on three open arbitrations. A weekly thesis paragraph that the next 7 days will be measured against.
  3. 3Its prompts encode taste, not just process. "Effectiveness over efficiency." "A day is only successful if dollars moved, risk dropped or strategy clarified." That's the bar.
starThe Single Most Important Design Call

The CEO node has authority to REJECT specialist conclusions. It is the ONLY node with that authority.

If the CRO says "spend more on outbound" and the CFO says "we have 4 months of runway," the swarm will produce two reports and walk away. The CEO node has to override one of them. Coding that authority into the prompt is the entire design call. Without it you have 12 better dashboards. With it you have one boss.

Part 2

The Stack (and Why Each Piece)

Click each layer for the reasoning.

psychology

Integrator

Claude Opus (system prompt heavy)

expand_more

Opus, not Sonnet. The CEO node is the one place where the cost of reasoning errors is highest and the cost of inference is lowest as a share of total. ~70% of the build is the system prompt: the bar, the banned phrases, the credentials, the three-call constraint, the rejection authority.

data_object

Input Contract

12 typed JSON reports

expand_more

Every specialist's daily output conforms to roles/_shared/output-schema.json: status RAG, top 3 movements, ask of the CEO, dollar-impact-if-ignored. The CEO node refuses any report that doesn't conform. Schema enforcement makes the integrator possible.

edit_note

Decision Log

Append-only JSONL

expand_more

One file: data/decision-log.jsonl. Every CEO decision is one line: timestamp, decision, rationale, expected outcome, review date. Append-only. Never edited. The weekly retrospective reads this file, not memory.

menu_book

Thesis

One paragraph, refreshed weekly

expand_more

A single paragraph that says "this week, the portfolio is optimizing for X over Y." The CEO node rewrites it every Sunday based on the prior week's decision log and the current C-suite reports. Every daily 3-call output is filtered against the thesis. Cheap, durable strategy discipline.

monitor

Dashboard

ceo-dashboard.html (single file)

expand_more

One static HTML page that reads data/reports/YYYY-MM-DD/ and renders: 12 R/A/G chips, today's 3 calls, this week's thesis, last 7 decisions, what each specialist is asking for. Click any chip to drill into that role's full report.

schedule

Cadence

07:30 standup → 07:45 CEO → 08:00 brief

expand_more

07:00 IDT the 12 verticals fan out. 07:30 the Chief of Staff agent gathers and validates. 07:45 the CEO node integrates and decides. 08:00 the brief lands in my inbox and the dashboard refreshes. Fri 14:00 is a pre-Shabbat wrap. Saturday is OFF.

Part 3

The Six-Phase Build Sequence

Each phase is ~1 day. Do NOT start until the C-suite Swarm OS has 12 working specialist outputs. The CEO layer is meaningless without inputs to integrate.

Schema Prompt Integrator Log Dashboard Cadence
1
1 DAY

Lock the Output Schema (specialist contract)

The CEO node can only integrate what's typed. Write roles/_shared/output-schema.json first. Every specialist must produce this exact shape. The schema is the contract. Without it you're back to 12 free-form essays.

roles/_shared/output-schema.json
{
  "role": "CRO",
  "date": "2026-06-08",
  "status": "AMBER",           // GREEN | AMBER | RED
  "top_movements": [
    { "label": "Finesse verbal",
      "delta": "+$114K ARR pending Jun 9",
      "confidence": 0.7 }
  ],
  "ceo_asks": [
    { "ask": "Approve $5K outbound spike",
      "dollar_impact_if_ignored": 15000,
      "deadline": "2026-06-10" }
  ],
  "conflicts": ["CFO runway position"],
  "thesis_alignment": 0.6
}
warning

Iron rule: the CEO node REJECTS any malformed report. Don't softly accept "close enough" JSON. The first time you let a typo through, the integration falls apart and you spend an hour debugging. Auditor agents enforce the schema; the CEO node trusts the auditor.

Part 4

What I'd Do Differently Today

1

Write the schema BEFORE any specialist agent

I tried to ship CRO and CFO first and retrofit the schema. Result: two unintegrable reports and a day of rework. The schema is the constitution. Write it first or the verticals will diverge.

2

Force-output exactly 3 calls. Not "up to 3."

The first prompt said "up to three calls today." On low-noise days the CEO would output one. That's the model letting itself off the hook. The constraint of THREE forces real prioritization. Cardinality is the discipline.

3

Append review_date to every decision on day one

For the first month I logged decisions without a review date. After 30 days the log was a graveyard of past calls with no accountability hook. Review_date converts the log from a journal into a feedback loop.

4

Don't let the CEO node generate new analysis

It is hugely tempting to let Opus "add its own take." Disastrous. The CEO node's job is integration and arbitration. New analysis IS the specialist's job. If you need a new analysis, escalate to a specialist; don't let the integrator improvise.

Part 5

Adapt This for YOUR Integrator Role

The architecture (schema → CEO prompt → integrator → log → dashboard → cadence) is the template for any decision-integration role. Five adaptations off the same skeleton:

Integrator Role Specialist Inputs Output Authority
IC chairDeal team memos3 vote-recommendationsOverride partner dissent
Editor-in-chiefSection editor briefs3 cover-story callsKill any pitch
Chief of staffFunction-leader updates3 ED escalationsBlock on principal's behalf
Head of GTMChannel-lead reports3 budget reallocationsMove spend across channels
Portfolio CEO12 C-suite reports3 daily callsReject any specialist rec
Part 6

Starter Prompts for Claude / Cursor

If you want an integrator running by next week, these four prompts get you there. Substitute the bracketed placeholders.

PROMPT 1Schema

"Write a JSON Schema for daily reports from [N] specialists in a [DOMAIN] integration OS. Required fields: role, date, status (GREEN/AMBER/RED), top_movements (label/delta/confidence), asks_of_integrator (ask/dollar_impact_if_ignored/deadline), conflicts (array of other-role strings), thesis_alignment (0-1). Output as valid JSON Schema draft-07 plus 3 example reports that pass and 3 that fail."

PROMPT 2CEO/Integrator system prompt

"Write the system prompt for an integrator agent that takes [N] specialist daily reports and produces EXACTLY 3 calls to action plus arbitration rulings on any cross-specialist conflicts. The integrator has REJECTION AUTHORITY over specialist recommendations that contradict the rolling thesis. Encode: (a) the bar — what makes a day successful, (b) the cardinality constraint — exactly 3 calls, (c) the rejection language template, (d) banned phrases and voice rules, (e) a Shabbat/holiday OFF switch, (f) the thesis-alignment filter applied to every call. The prompt must be self-contained."

PROMPT 3Integrator workflow

"Write workflows/daily-standup.js (ESM Node) that: (1) reads [N] specialist reports from data/reports/today/, (2) reads thesis.md and decision-log.jsonl (last 7 lines), (3) halts if fewer than [N-2] reports are valid, (4) calls Claude Opus with the integrator system prompt and the bundle, (5) parses the 3-call response, (6) writes data/briefs/today.md and appends to decision-log.jsonl with review_date set to today+14d for non-time-bound calls."

PROMPT 4One-screen dashboard

"Build a single static dashboard.html that reads data/reports/today/ and data/briefs/today.md. Top region: today's 3 calls in 32pt. Middle: [N] R/A/G chips, one per specialist, click to expand a side panel with the full report. Bottom: strip of last 7 decision-log lines, click to expand. Inline Tailwind, vanilla JS. Must fit above the fold on a 13" laptop. No build step. No framework."

What the CEO Command Center Is Not

It is not a chatbot. It is not a research engine. It is not a standalone product — without the 12 specialist agents producing valid daily reports, the integrator has nothing to integrate. It does not replace a board of directors, an executive coach or a co-founder.

What it is: an integration layer whose only outputs are decisions. Three calls a day, one weekly thesis, one append-only log. The narrowness is the entire point. Integration that lets itself generate new analysis stops being integration. Integration that outputs five calls instead of three stops being prioritization.

The question is not
"how many agents can I run?"

The question is:

"Who in my stack has the authority to REJECT the others, and what schema do they need to do it well?"

The day you can answer that, you have an integrator. The week after, you have an executive OS that respects your time better than any team you've ever managed.

This walkthrough is part of the Portfolio Leverage Co. Build Bench series. For the weekly operating brief, subscribe above. For the cohort where we build these tools together, apply here.