Control boardLocal-first · human-in-the-loop
Documentation

Agentic Control Center — the operating manual

Agentic Control Center is an AI-augmented CRM for grant and web-credibility consulting. It pairs a ranked prospect pipeline with a team of scoped AI agents and a privacy-first, local-brain design. This page covers what it is, how to use it day to day, and how to set it up and repurpose it for a new client.

Overview

A CRM that runs a company of agents

Most CRMs are filing cabinets. Agentic Control Center is closer to a small company: a workspace where a pipeline of prospects is worked by a team of AI teammates, each with a defined role and a strict need-to-know boundary. You stay the decision-maker — the system surfaces, drafts, and recommends, and waits for you to act.

The local plane

Your brain (a markdown vault) plus the agents that reason over it. This is where the real work happens, on your machine, on your subscription.

The hosted plane

A read-only, access-gated view of a privacy-filtered snapshot — for checking the pipeline on the go or sharing with a teammate. It never holds the full brain.

Using it day to day

The workspace at a glance

Everything you see is rendered from your brain — edit a profile's file and the app reflects it. These are the places you will spend your time.

Control board & Today

Your daily mission control — what is urgent across every prospect and client, pulled live from the brain so nothing slips.

Pipeline

Every prospect in one ranked list — fit, credibility score, funnel stage, and the recommended next move, so you always know who to work next.

Profiles

A deep page per prospect or client: contact, scan findings, grant opportunities, deliverables, and outreach — every fact sourced from that profile's brain file.

Deep scans & scores

The GrantedSC Deep Scan and credibility score translate a nonprofit's public footprint into specific, fixable, fundable gaps — the substance behind every outreach.

Outreach

Generate email and LinkedIn drafts in your voice, grounded in real specifics about the prospect. You review and send — nothing ever goes out on its own.

Review & approve

A single queue — with a live count in the nav — for everything waiting on your sign-off, chiefly drafted outreach. Preview it, approve and send, or mark it done; the badge clears as you go.

Team

Your roster of AI teammates — see who does what, what each is cleared to know, and hire a new role-matched one in a click.

Team chat

Talk to the whole team in one thread — pick who answers (@mention or toggles) or ask everyone at once. Dictate with your voice (mic), and a teammate can hand a task to the orchestrator in one click.

Team calendar

Everything every teammate has scheduled, on one surface — month, week, agenda, and a team swimlane — color-coded per agent and shown with their photo. Click any day or time slot to create and assign a task; agents can schedule for each other right from chat. Times run on Eastern (EDT).

Command palette & shortcuts

Press ⌘K for a command palette that searches everything — views, agents, clients, products, tasks, settings — and jumps there instantly. Press ? for the keyboard-shortcut menu.

Outreach + CRM

From draft to sent — and logged

The whole outreach loop lives in the app: a teammate drafts, you review and approve, the message goes out under your hand, and your CRM stays in lockstep — without anything firing on its own.

Draft → review → send, in one place

Drafted outreach lands in the review queue. Read it, edit the brain if needed, then approve and send from the app — or copy it into your own mail client. The funnel stage advances the moment it goes.

Preview before you send

A dry-run renders the exact message that would go out — sender, recipient, subject, body — without sending anything, so you see precisely what lands before you commit.

Guarded sends

Sending is one explicit click behind a confirm. A draft with an unfilled placeholder is refused, a warm-up cap limits how many leave per run, and a missing key fails safe — never a surprise blast.

Logged to your CRM

A sent message is mirrored into your CRM as a note on the matching record, best-effort and automatic — so the CRM stays current without any copy-paste.

Goal-driven next actions

The next action for each prospect — first touch, follow up, book the call — is generated from its funnel stage as a task in your CRM, linked to the record and refreshed as the stage changes.

How work gets done

The agent team

Work is divided the way a careful team divides it: one person holds the full context and hands out only what each teammate needs. That structure is what keeps sensitive information contained.

One orchestrator holds the whole picture

A single full-context agent routes work and assembles context for the rest. It is the only agent that ever touches the full brain or any sensitive detail.

Access matches the role

Most teammates run scoped — sandboxed, with only the need-to-know slice the orchestrator hands them, never raw PII. Senior roles that can't work without the full picture (biz-ops; a direct-outreach agent that needs the contact list) can hold the full brain — and you grant or revoke that per agent behind an auth-gated toggle.

Capabilities are modular skills

Each skill declares the data it touches and the tools it may use. Agents are provisioned with exactly the skills their role needs — nothing more.

Hire in a click

Add a new employee with role-matched skills as data — no code change, and they're immediately chat-able in the same thread. New hires are always scoped; the platform can never mint a second full-brain agent.

Talk to them like a team

It's a group chat. Tag one teammate, several, or everyone; each answers in their own voice. If a message isn't clearly theirs, they hand off or ask a quick clarifying question — like real coworkers, not a prompt box.

Hand-offs are built in

When a scoped teammate needs something only the orchestrator can pull, they flag it and you get a one-click hand-off. The orchestrator picks it up in the same thread and finishes the job.

An engineer that ships changes

Provision a code-capable engineer role and ask it for a change in plain language. It proposes the work on an isolated branch and hands back a diff for you to review — it never merges, pushes, or deploys on its own.

A designer with a Design Studio

A graphic-designer agent generates brand-safe visuals — patterns, backgrounds, logos, social graphics — from a brief. For logos and headlines it composites real, crisp type over the AI art, so the spelling is never wrong.

Replies you can reuse

Teammates answer in clean formatted text — headings, lists, bold — and one click copies a reply with its formatting intact, ready to paste straight into a doc or email.

The guarantees

Privacy and safety

Privacy is not a setting here — it is the architecture. These guarantees hold by construction, so confidential detail cannot drift to where it does not belong.

Full access is a deliberate grant

Brain access is set per agent — scoped by default, full only where a role demands it — and changing it is gated behind a password. Scoped teammates physically cannot reach the full brain; the boundary is enforced by the workspace, not by trust.

The knowledge base watches itself

The Agentic Control Center continuously scans for drift — a record created twice, a fact that disagrees with itself, an identifier shared across two orgs — and flags it to the orchestrator. So when an agent or teammate creates something where data already exists, you find out instead of quietly forking the truth.

Private notes stay private

Candid, off-the-record notes live in a private area of the brain that is excluded from the published data set. They never reach the hosted database or any client-facing screen.

Drafting cannot see secrets

Outreach is drafted against a sanitized copy of a profile with the private area stripped out, so an off-the-record note can never leak into an outbound message.

Nothing sends itself

Every external action is drafted and staged for your review. Sending is one explicit click behind a confirm, capped during warm-up, and refused if a draft still has an unfilled placeholder. The platform waits; a human is always in the loop.

Local-first thinking

The reasoning runs on your machine against your own brain. The hosted app is a read-only view of a privacy-filtered snapshot — the full brain never leaves home.

Code changes are isolated

When the engineer agent makes a change it happens on a throwaway branch in a sandboxed copy — never your live files. You review the diff and merge; nothing reaches the main branch, the remote, or a deploy without you.

Built for everyone

Accessibility & voice

The whole workspace is operable by ear, by voice, and by keyboard — and the accessible sites the platform builds carry the same tools to the people they serve. Settings live at /settings/accessibility (the gear in the bottom-left dock).

Built-in screen reader

Read any page aloud — or just the text you select, or each control as you focus or hover it. Free browser voices by default, or premium ElevenLabs voices when a key is set. The accessible sites the platform builds get the same reader, pre-recorded once so it plays free and offline.

Speech-to-text

Dictate into any chat with the mic. The browser's recognizer is free; ElevenLabs Scribe gives higher accuracy in every browser when a key is set.

Reading comfort

High contrast, larger text, dyslexia-friendly font + spacing, a reading guide that tracks the cursor, a bigger cursor, stronger focus rings, always-underlined links, and a reduce-motion override — each one toggle, remembered per device.

Language support

Translate the interface — or a client site — into other languages on the fly (Gemini), and have the reader speak it in that language. English, Spanish, and more.

For the operator

Repurposing for a new client

The platform is built to be re-pointed at a new client without a rewrite. The brain is portable, the brand is centralized, and the privacy boundary travels with it.

The stack, in three pieces

A markdown brain as the source of truth

All knowledge lives in a plain-markdown vault you own and can edit in any editor. The app reads it; it is never locked inside a database.

A privacy-filtered snapshot for the cloud

A publish step serializes a filtered view of the brain — private areas removed — into a hosted database, so the shared app is read-only and safe.

Agents run locally on your subscription

Agent runs happen on your machine via the local CLI, billed to your own subscription. The hosted plane has no model access and stages nothing sensitive.

Standing up a new instance

  1. 1Point it at a new brainStand up a fresh vault for the new client and point the app at it. The pipeline, profiles, and team all populate from that brain — no code edits.
  2. 2Set the brandBrand strings live in one place. Swap the product and firm names and you have a client-specific instance that looks and reads as theirs.
  3. 3Run locally, share the hosted viewUse the local app for full agent power. Deploy the hosted view (behind an access gate) for read-only sharing — it only ever receives the filtered snapshot.
  4. 4Provision the teamHire the role-matched agents this client needs. Everyone is scoped by default; the orchestrator stays the single, human-gated brain-holder.
What stays local

The full brain, every agent run, all PII and candid notes, and any draft before you approve it. None of this is required to be online.

What goes hosted

Only the privacy-filtered snapshot — the read-only pipeline and profiles, minus private areas — behind an access gate.

Onboard the new team

A guided intake at /onboarding captures the org, invites teammates by role, and seeds the agents — the starter team or your own (typed in or pasted as CSV). Nothing emails on its own; invites are yours to send.

Light or dark, on brand

The whole app themes from a small token set, so a brand that doesn't suit dark gets a clean light mode with one toggle — alongside its own logo, name, and accent.

For the operator

Setup & configuration

Configuration is deliberately small. A handful of environment variables decide where the brain lives, how the instance is branded, and whether the app runs in full local mode or as the read-only hosted view.

Sign in once

The hosted view sits behind a single access gate. Sign in once per device and the session is remembered — there are no per-screen logins. Locally, with no gate set, the app is wide open for you.

Brand from one config — or a GUI

Product name, firm, region, audience, accent color, and logo come from a handful of environment variables. Or use the Brand Studio (/settings/brand) for a live-preview GUI that white-labels and provisions a fresh branded instance in one click.

Provision a new instance

One command scaffolds a fresh brain skeleton and brand file for a new client. It writes local files only and never takes an external action — so you can stand up a clean instance in seconds, then fill in the brain.

Provisioning a new instance

One command scaffolds the brain skeleton and brand file for a new client. It only writes local files — it never deploys or reaches the network.

npm run provision -- --name <Client>

Environment reference

Names only — never commit secret values. This is the full set of knobs and where each one applies.

  • BRAINSTEM_VAULT_PATHLocal

    Absolute path to the markdown brain the local app reads. Point it at a new client's vault to re-home the entire workspace — pipeline, profiles, and team all follow.

  • NEXT_PUBLIC_BRAND_*Both

    The brand shell: product and firm name, firm URL, tagline, region, audience, accent color, and logo. Not secrets — safe to commit per instance.

  • GEMINI_API_KEYBoth

    Enables the AI features: image/design generation (the Design Studio + agent headshots) and on-the-fly translation. Free tier at aistudio.google.com.

  • ELEVENLABS_API_KEYBoth

    Optional premium voice: high-quality screen-reader narration and Scribe speech-to-text. Without it, the free built-in browser voice + recognizer are used. Pre-baking site audio (npm run prebake-tts) lets a deployed site read aloud at zero runtime cost.

  • APP_PASSWORDHosted

    The access gate for the hosted view. When set, the whole app is gated; when unset (local dev), the app is open. Required online.

  • SESSION_SECRETHosted

    Signs the session cookie for the hosted gate. Set it to a long random string in production.

  • SUPABASE_URL · SUPABASE_SERVICE_ROLE_KEYHosted

    Connection to the privacy-filtered snapshot database. Only the cloud plane uses these; the local app reads the brain directly and needs neither.

  • BRAINSTEM_DATA_BACKENDHosted

    Switches the app into read-only cloud mode when set to the hosted backend (also auto-detected on the hosting platform). Leave unset locally for full agent power.

What is next

Roadmap

Planned capabilities, in rough priority order. The bar for shipping is the same as everything above: privacy by construction, and a human in the loop for anything that leaves the building.

  • Two-way CRM sync — read live stage, notes, and tasks back from the CRM, not just write to it.
  • Color-vision filters (protanopia / deuteranopia / tritanopia) and pre-baked multilingual narration for handed-off sites.
  • Voice commands — drive the workspace and read pages hands-free.
  • Automated reminders for grant deadlines and follow-up touches.
  • Multi-user access with per-seat scopes for small teams.
  • Richer analytics: conversion, response rates, and pipeline value over time.
The standing rule

Agentic Control Center surfaces, drafts, and recommends. It never sends, posts, or shares on its own, and confidential detail never leaves the local brain. You stay in control of every move that touches the outside world.

GrantedSC · built to be repurposed