Set direction. Hold the bar.
How I lead people, put agents to work, and keep responsibility clear.
How I lead people, put agents to work, and keep responsibility clear.
AI helps me think better, then do more.
Get clear on the decision before asking AI for an answer.
Situation, people, outcome, constraints — and a role that fits the problem.
Questions one at a time, before a recommendation. The interview shows what I left out.
Test the assumption, find the weak argument, make the case for another path.
A specific task, a definition of good, then I review against the outcome.
Agents draft. People decide what leaves the building.
Influenced by Geoff Woods’ The AI-Driven Leader.
One operator, one loop
A four-stage operating circuit. Diagnose the constraint, architect the system, automate the repeatable work, then compound the result into the next cycle. Human judgment stays on the decision. Repeatable work moves around the loop.
Seven agents run the operating work of my job.
Reporting and pipeline, chief-of-staff duties, marketing drafts, wikis, dashboards, the revenue brain. Each agent is its own service with its own tests. Every send waits at a human gate.
The flagship is the Rocks dashboard. Quarterly goals, and twice a week it drafts the leadership standup. One source of truth — a Box-note sync and a spreadsheet came out.
What's public. The shared memory engine is open source: full git history, 75 tests, never touched business data. severs-agent-shared on GitHub.
Revenue Brain
Business signals from CRM, calls, email, Slack or Teams, documents, social, and product telemetry enter the Revenue Brain. Synthesis, extraction, and matching happen in the hub. Human review gates and an oversight layer sit on the work. Outputs are pipeline, content, and reporting.
I define the problem. Agents write the code.
Scattered tribal knowledge turned into something the G2i GTM team actually ran on.
Replaced a paid third-party service. About $1,800 a year, same workflow the team already knew.
Set up in week one. Agents did the wiring so the team had one system of record before the first demo.
Personal work, same method: a recruiting OS for a softball athlete, a local-first scorekeeping app, a post-training explainer for business leaders, and a companion tool reverse-engineered from a closed save format.
Turborepo and Bun workspaces, TypeScript on the native compiler, and Effect Schema enforced at every trust boundary: model output, external APIs, HTTP bodies, and the shared memory engine's write path. Correctness-only lint blocks CI. A supply-chain rule sets a seven-day minimum publish age on new dependencies.
The snippet is the shape of every model call in the fleet: the reply is decoded against a schema before anything downstream can touch it, and a bad reply throws instead of silently propagating malformed data.
// Parse + validate a strict-JSON model reply. // Throws on failure. Logs stay on the server. export function decodeLlmJson<A, I>( schema: Schema.Schema<A, I, never>, raw: string, label: string ): A { const candidate = extractJsonCandidate(raw); if (candidate === null) { throw new Error(`${label}: no JSON object found`); } const result = Schema.decodeUnknownEither( Schema.parseJson(schema), { errors: 'all' } )(candidate); if (Either.isLeft(result)) { console.warn(`[llm decode] ${label}`); throw new Error(`${label}: schema failed`); } return result.right; }