Version: 1.0
Date: 14 February 2026
Author: Charlie (Chief Operating Systems Architect)
Status: Draft for Andy & Steve review
Ven Agency runs a production AI operations stack that most agencies don't have at all. The Mac Mini + OpenClaw + dual-agent (Charlie/Tom) setup already handles email triage, client reporting, ad management, payroll, and support tickets autonomously. But it has clear single points of failure, manual bottlenecks, and unrealised potential.
This plan upgrades the existing system across five architectural planes — Control, Knowledge, Execution, Interface, and Safety — to reach Minimum Viable Autonomous Agency (MVAA) within 90 days. The core architectural shift is a two-tier agent model: PAs (Charlie, Tom, Sammy, Brian) become pure orchestrators who spawn ephemeral specialist agents per-job. PAs don't do the work — they define it, dispatch it, and relay results. This keeps PAs fast, jobs isolated, and costs controlled.
The key additions:
The goal: reduce human involvement in routine operations by ~70%, eliminate bus-factor risk on Andy, and give Steve/James real-time operational intelligence without asking for it.
Estimated implementation cost: ~$200-400/month incremental API spend. No new hardware required (MBA already available as secondary node).
┌─────────────────────────────────────────────────────────────────┐
│ MAC MINI (PRIMARY HOST) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Charlie │ │ Tom │ │Sub-Agents│ │ Cron/Launchd │ │
│ │ (Opus) │←→│ (Opus) │ │(Codex/ │ │ (15-min │ │
│ │ Andy ops │ │ Steve ops│ │ Sonnet) │ │ heartbeats) │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └──────┬────────┘ │
│ │ │ │ │ │
│ ┌────┴──────────────┴─────────────┴───────────────┴──────┐ │
│ │ OpenClaw Runtime (Node.js) │ │
│ │ Skills (50+) │ Memory │ Knowledge Graph │ Sessions │ │
│ └────────────────────────────┬────────────────────────────┘ │
│ │ │
│ ┌────────────────────────────┴────────────────────────────┐ │
│ │ Integration Layer │ │
│ │ Gmail API │ Calendar │ ClickUp │ Wise │ GA4 │ Meta │ │ │
│ │ GSC │ Google Ads │ GTM │ Cloudflare │ RunCloud │ DO │ │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│ │ │
┌────┴────┐ ┌─────┴─────┐ ┌─────┴──────┐
│Telegram │ │ GitHub │ │ Cloudflare │
│(Control)│ │ (Code) │ │ Pages (Web) │
└─────────┘ └───────────┘ └─────────────┘
| Component | Risk | Impact | Mitigation (Current) |
|---|---|---|---|
| Mac Mini hardware | Medium | Total outage — all agents, automations, and integrations stop | None (no failover node) |
| Mac Mini power/network | Medium | Same as above | Tailscale provides remote access, but no auto-recovery |
| Andy's knowledge | HIGH | Bus factor = 1 for ops procedures, client context, credential access | Memory files + skills partially document, but not comprehensive |
| OpenClaw process crash | Low | Agents go silent until restart | launchd auto-restart, but no health monitoring |
| Google Auth tokens | Low | All Gmail/Calendar/Sheets/Docs integrations fail | Auto-refresh via google-auth.js, but single token file |
| ClickUp API | Low | Task creation/updates fail | Scripts retry, but no queue/fallback |
| Anthropic rate limits | Medium | Charlie/Tom go silent or degrade | Manual model switching documented, not automated |
Sales (James):
Delivery (Megan + Vietnam team):
Operations (Andy):
Business Development (Steve):
┌───────────────────────────────────────────────────┐
│ CONTROL PLANE │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────┐ │
│ │Model Router │ │Cost Observer │ │Evolution │ │
│ │ │ │ │ │Engine │ │
│ │ Opus→decisions│ │ Per-agent │ │Daily │ │
│ │ Codex→code │ │ spend track │ │drift │ │
│ │ Flash→bulk │ │ anomaly alert│ │detection │ │
│ │ Sonnet→mid │ │ weekly report│ │self-patch│ │
│ └──────┬──────┘ └──────┬───────┘ └────┬─────┘ │
│ │ │ │ │
│ ┌──────┴────────────────┴───────────────┴──────┐ │
│ │ Orchestration Bus (OpenClaw) │ │
│ │ Session mgmt │ Cron scheduler │ Event bus │ │
│ │ Health checks │ Failover logic │ Audit log │ │
│ └───────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────┘
Model Router (upgrade existing):
Cost Observatory (new):
scripts/cost-observatory.js — parses OpenClaw session logs, aggregates by agent/skill/daymemory/costs/YYYY-MM-DD.jsonEvolution Engine (new):
git pull latest OpenClaw docsmemory/evolution/YYYY-MM-DD.md┌───────────────────────────────────────────────────┐
│ KNOWLEDGE PLANE │
│ │
│ ┌──────────┐ ┌──────────┐ ┌─────────────────┐ │
│ │ Memory │ │ Vector │ │Knowledge Graph │ │
│ │ System │ │ Store │ │(Entity/Relation)│ │
│ │ │ │ │ │ │ │
│ │ Daily .md │ │ ChromaDB │ │ graph.json │ │
│ │ MEMORY.md │ │ or Qdrant│ │ GPT-4o-mini │ │
│ │ Per-agent │ │ Local │ │ Incremental │ │
│ └─────┬────┘ └─────┬────┘ └────────┬────────┘ │
│ │ │ │ │
│ ┌─────┴─────────────┴────────────────┴─────────┐ │
│ │ Unified Retrieval Layer │ │
│ │ memory_search → vector_search → graph_query │ │
│ │ Ranked fusion │ Source citations │ Confidence │ │
│ └──────────────────────┬────────────────────────┘ │
│ │ │
│ ┌──────────────────────┴────────────────────────┐ │
│ │ KB Ingestion Pipeline │ │
│ │ Telegram drop → type detect → extract → │ │
│ │ chunk (512 tokens) → embed → vector store │ │
│ │ Supported: URL, PDF, DOCX, TXT, MD, HTML │ │
│ └───────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────┐ │
│ │ CRM / Contact Intelligence │ │
│ │ Gmail contacts │ Calendar attendees │ ClickUp │ │
│ │ Dedupe │ Role classification │ Last touch │ │
│ │ Relationship score │ Meeting prep briefs │ │
│ └───────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────┘
Vector Store Selection:
text-embedding-3-small (OpenAI, $0.02/1M tokens — cheapest viable option)~/.vector-store/ with daily backup to Google DriveKB Ingestion Pipeline (new skill: kb-ingest):
/kb <url> or forward any documentkb search <query> → top-5 chunks with source citationsCRM/Contact Intelligence (new skill: crm-contacts):
contacts/contacts.json)contacts/contacts.json (structured) + vector embeddings for semantic search┌───────────────────────────────────────────────────────────────┐
│ EXECUTION PLANE │
│ │
│ ═══════════════════ TIER 1: PAs ═══════════════════ │
│ (Always running, human-facing, orchestration only) │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Charlie │ │ Tom │ │ Sammy │ │ Brian │ │
│ │📋 Andy │ │🔧 Steve │ │📊 Megan │ │🎯 James │ │
│ │ Opus 4.6│ │ Opus 4.6│ │ Sonnet │ │ Sonnet │ │
│ │ PA/Orch │ │ PA/Orch │ │ PA/Orch │ │ PA/Orch │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │ │
│ ═════╪═══════════╪═══════════╪═══════════╪═══════════════ │
│ │ │ │ │ │
│ ═══ TIER 2: SPECIALIST AGENTS (Spawned per-job, die after) ══│
│ │
│ Charlie spawns: Tom spawns: │
│ ├─ Onboarder ├─ Client Health Monitor │
│ ├─ Payroll Generator ├─ Support Diagnostician │
│ ├─ Invoice Processor └─ Compliance Checker │
│ ├─ KB Ingestor │
│ └─ Cost Reporter Sammy spawns: │
│ ├─ Report Builder (per client) │
│ Brian spawns: ├─ Ad Anomaly Investigator │
│ ├─ Prospect Researcher├─ SEO Auditor │
│ ├─ Outreach Drafter ├─ Creative Analyst │
│ ├─ Pipeline Reporter └─ Competitor Scanner │
│ └─ Meeting Prepper │
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Shared Services (Available to all agents) │ │
│ │ ChromaDB │ Contact Store │ Cost Observatory │ Gmail │ │
│ │ Calendar │ ClickUp │ Wise │ Google Ads │ Meta Ads │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────┐ │
│ │ AI COUNCIL (Monthly) │ │
│ │ Spawned by Tom or Charlie on schedule │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ Growth │ │ Revenue │ │ Skeptic │ │ │
│ │ │Strategist│ │ Guardian │ │ Operator │ │ │
│ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │
│ │ │ │ │ │ │
│ │ ┌────┴────┐ ┌────┴────────────┴──────┐ │ │
│ │ │ Team │ │ Council Moderator │ │ │
│ │ │Dynamics │ │ (reconcile + rank) │ │ │
│ │ │Architect│ │ │ │ │
│ │ └─────────┘ └────────────────────────┘ │ │
│ └───────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────┐ │
│ │ Cron & Automation Layer │ │
│ │ Gmail intake (15m) │ Heartbeats (15m) │ │
│ │ Follow-up tracker │ Maintenance forwarder │ │
│ │ Cost observatory (daily) │ Contact sync (daily)│ │
│ │ KB ingestion (on-demand) │ Evolution (daily) │ │
│ │ Council review (monthly) │ Meeting prep (1h) │ │
│ └───────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────────────────┘
AI Council System (new):
The Council runs monthly (or on-demand via /council). It's a structured multi-perspective business review.
Personas:
| Persona | Focus | Model | Prompt Seed |
|---|---|---|---|
| Growth Strategist | Market gaps, new services, client expansion, partnerships | Sonnet 4.5 | "You are an aggressive growth advisor for a 13-year-old digital agency. Identify the 3 highest-leverage growth opportunities..." |
| Revenue Guardian | Margin protection, pricing, cash flow, cost reduction | Sonnet 4.5 | "You are a conservative CFO advisor. Identify revenue risks, pricing gaps, cost overruns..." |
| Skeptical Operator | What could go wrong, resource constraints, technical debt | Sonnet 4.5 | "You are a risk-focused operations critic. Identify the top 5 things that could break..." |
| Team Dynamics Architect | Capacity, morale, hiring gaps, skill development | Sonnet 4.5 | "You are an HR strategist. Assess team capacity, identify burnout risk, hiring priorities..." |
| Council Moderator | Reconcile disagreements, rank insights, produce final report | Opus 4.6 | "You have received 4 advisor perspectives. Reconcile conflicts, rank the top 10 insights..." |
Data inputs (auto-collected):
Flow:
council/data/YYYY-MM.jsoncouncil/reports/YYYY-MM.mdEstimated cost per council run: ~$4-6
┌───────────────────────────────────────────────────┐
│ INTERFACE PLANE │
│ │
│ TELEGRAM (Primary Control) │
│ ┌─────────────────────────────────────────────┐ │
│ │ Topics: │ │
│ │ #general — Charlie/Tom direct chat │ │
│ │ #cron — Automation status/alerts │ │
│ │ #council — AI Council reports │ │
│ │ #kb — Knowledge base ingestion │ │
│ │ #sales — Pipeline updates, lead alerts │ │
│ │ #support — Support ticket flow │ │
│ │ #costs — API spend reports/alerts │ │
│ │ #meetings — Prep briefs, action items │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ CLICKUP (Task Management) │
│ ┌─────────────────────────────────────────────┐ │
│ │ Spaces: Ven Agency │ Clients │ Internal │ │
│ │ Auto-created: email intake, support tickets, │ │
│ │ council actions, meeting actions, follow-ups│ │
│ │ Statuses: Open → In Progress → Review → │ │
│ │ Approved → Done │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ GMAIL (Communication) │
│ ┌─────────────────────────────────────────────┐ │
│ │ Inbound: auto-triage → classify → ClickUp │ │
│ │ Outbound: draft → Telegram approve → send │ │
│ │ Labels: For-Charlie, Ann's Clients, │ │
│ │ Maintenance, Processed, AWAITING REPLY │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ CLIENT-FACING │
│ ┌─────────────────────────────────────────────┐ │
│ │ Reports: Cloudflare Pages (auto-deployed) │ │
│ │ Humanizer: ALL external text passes through │ │
│ │ Approval: No client comms without human sign │ │
│ └─────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────┘
Telegram Topic Structure (upgrade):
┌───────────────────────────────────────────────────┐
│ SAFETY & QUALITY PLANE │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Approval │ │ Humanizer │ │
│ │ Gates │ │ (Mandatory) │ │
│ │ │ │ │ │
│ │ • External │ │ All external │ │
│ │ emails │ │ text passes │ │
│ │ • Payments │ │ through AI │ │
│ │ • Client │ │ pattern │ │
│ │ comms │ │ detection + │ │
│ │ • Hiring │ │ rewrite │ │
│ │ • Public │ │ │ │
│ │ posts │ │ Cost: ~$0.01 │ │
│ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Audit Trail │ │ Guardrails │ │
│ │ │ │ │ │
│ │ Every action │ │ • No send │ │
│ │ logged to │ │ without │ │
│ │ session │ │ approval │ │
│ │ transcripts │ │ • No delete │ │
│ │ │ │ without │ │
│ │ Searchable │ │ confirm │ │
│ │ via memory │ │ • No payment │ │
│ │ + vector │ │ >threshold │ │
│ │ │ │ • Rate limits│ │
│ │ Retention: │ │ on all APIs│ │
│ │ 90 days │ │ • Sensitive │ │
│ │ active, │ │ data never │ │
│ │ archive │ │ in logs │ │
│ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Verification Layer │ │
│ │ • Payroll: mandatory checklist before send │ │
│ │ • Reports: data accuracy spot-check │ │
│ │ • Drafts: signature + formatting validation │ │
│ │ • Sub-agent output: never trust financials │ │
│ └──────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────┘
Failover Architecture:
PRIMARY: Mac Mini (Ven's Mac mini)
│
├── Heartbeat monitor: Mac Mini → MBA every 5 min
│ (Script: curl health endpoint via Tailscale)
│
▼
SECONDARY: MacBook Air (Max's host)
│
├── OpenClaw installed, config synced
├── Shared skills repo (git pull on failover)
├── Google auth tokens replicated
│
▼
FAILOVER TRIGGER:
3 consecutive missed heartbeats (15 min) →
MBA auto-starts OpenClaw with failover config →
Telegram notification: "⚠️ Failover active — MBA running"
RECOVERY:
Mac Mini comes back → health check passes →
MBA gracefully stops → Telegram: "✅ Primary restored"
Observability Stack:
| What | How | Where | Frequency |
|---|---|---|---|
| Agent health | OpenClaw session status | Telegram #cron | Every heartbeat |
| API costs | Cost Observatory script | Telegram #costs + dashboard | Daily summary, instant alerts |
| Cron failures | consecutiveErrors check | Telegram (immediate) | Every heartbeat |
| Disk space | df -h check |
Telegram (if <10GB) | Daily |
| Memory usage | vm_stat + process check |
Telegram (if >80%) | Hourly |
| Git sync | GitHub push status | Silent unless failure | Hourly |
| Google auth | Token expiry check | Telegram (if <24h) | Daily |
| Backup status | Google Drive upload verify | Telegram (if failed) | Daily |
| Person | Role | AI Agent | AI-Augmented Responsibilities | Remaining Manual |
|---|---|---|---|---|
| Andy | Dir. Operations | Charlie 📋 | Strategy approval, vendor relationships, team 1:1s, complex client escalations | Approve/reject gates, financial sign-off, hiring decisions |
| Steve | Managing Director | Tom 🔧 | Business strategy, key client relationships, growth decisions | Council review, major client meetings, partnership decisions |
| James | Sales & Marketing Dir. | Brian 🎯 | Lead qualification, pipeline tracking, outreach drafting, follow-up automation | Meeting attendance, relationship building, closing deals |
| Megan | Digital Marketing Mgr. | Sammy 📊 | Campaign monitoring, report generation, anomaly detection, data collection | Creative review, strategy calls, client relationship |
Core principle: PAs don't do the work. PAs define and spawn the workers.
Each PA is an agent factory — it knows the specs for every specialist agent it can spawn, routes incoming requests to the right specialist, and reports results back to its human. Specialists are ephemeral: spawned per-job, given clean context, and terminated on completion.
This means:
/Users/venagency/sammy//Users/venagency/brian/Specialists are spawned by PAs via sessions_spawn. Each gets a focused task, clean context, relevant data, and a timeout. They do the work and return results to the PA, who relays to the human.
Key design rules:
| Specialist | Trigger | Model | Timeout | What It Does |
|---|---|---|---|---|
| Onboarder | /onboard <client> |
Sonnet | 5 min | Creates client folder, ClickUp checklist, Drive folder, researches company, drafts welcome email |
| Payroll Generator | "Generate payslips for [month]" | Sonnet | 5 min | Reads team data, calculates pay, generates HTML payslips → PDF |
| Invoice Processor | Invoice email/attachment | Flash | 3 min | Extracts amount/vendor/currency, creates Wise quote, returns for approval |
| KB Ingestor | /kb <url> |
Flash | 2 min | Fetches URL, chunks, embeds, stores in vector DB |
| Cost Reporter | Daily cron (6pm) | Flash | 2 min | Parses session logs, aggregates spend by agent/model, generates summary |
| Meeting Prepper | 1h before calendar event | Sonnet | 3 min | Looks up attendees in contact store, pulls recent emails/tasks, generates briefing |
| Evolution Auditor | Daily cron (3am) | Flash | 3 min | Diffs OpenClaw docs against workspace, flags drift, suggests updates |
| Specialist | Trigger | Model | Timeout | What It Does |
|---|---|---|---|---|
| Support Diagnostician | support@ email detected | Sonnet | 5 min | Classifies severity, runs site health check, diagnoses issue, proposes fix |
| Client Health Monitor | Weekly cron (Monday) | Sonnet | 5 min | Pulls all client metrics (ads, SEO, site health), scores health, flags at-risk |
| Compliance Checker | Monthly cron | Flash | 3 min | Reviews SOPs vs actual practice, flags gaps |
| SOP Enforcer | On-demand or cron | Flash | 2 min | Checks specific procedure compliance against documented standards |
| Specialist | Trigger | Model | Timeout | What It Does |
|---|---|---|---|---|
| Report Builder | /report <client> <period> or monthly cron |
Sonnet | 5 min | Collects API data, generates insights, builds web presentation, deploys |
| Ad Anomaly Investigator | Anomaly detection alert (3x daily) | Sonnet | 3 min | Root cause analysis on detected anomaly, recommends action |
| SEO Auditor | /seo <client> or monthly cron |
Sonnet | 5 min | Pulls GSC/DataForSEO data, identifies opportunities, generates audit |
| Creative Analyst | Weekly cron | Flash | 3 min | Analyses ad creative performance, detects fatigue, suggests refreshes |
| Competitor Scanner | /competitor <client> or monthly cron |
Sonnet | 5 min | Ad library research, SERP comparison, positioning analysis |
| Copy Extractor | /copy <client> |
Sonnet | 3 min | Pulls existing RSA copy from Google Ads, fills gaps to 15/4 |
| Campaign Builder | "Build campaigns from [sheet URL]" | Sonnet | 5 min | Reads Google Sheet plan, creates campaigns/ad groups/keywords/ads |
| Specialist | Trigger | Model | Timeout | What It Does |
|---|---|---|---|---|
| Prospect Researcher | New lead or /research <company> |
Sonnet | 3 min | Web research, LinkedIn lookup, ABN check, company brief |
| Outreach Drafter | "Draft email for |
Sonnet | 3 min | Writes first-touch or follow-up email per James's SOP |
| Pipeline Reporter | Weekly cron (Monday) | Flash | 2 min | Scans ClickUp pipeline, summarises stage counts, flags stale leads |
| Meeting Prepper | 1h before sales meeting | Sonnet | 3 min | Pulls contact history, recent emails, company research, generates brief |
| Follow-up Chaser | Heartbeat trigger (AWAITING REPLY >3d) | Sonnet | 2 min | Drafts chase email for stale leads |
| Specialist | Model | What It Does |
|---|---|---|
| Coder | Codex 5.3 | Writes/edits code, scripts, deploys |
| Web Researcher | Sonnet | Structured web research, source compilation |
| Document Drafter | Sonnet + Humanizer | Writes client-facing docs, proposals, emails (always through humanizer) |
| Data Collector | Flash | Pulls raw data from APIs (Meta, Google Ads, GA4, GSC) and normalises |
| Agent | Focus | Data Consumed | Output |
|---|---|---|---|
| Growth Strategist | Market opportunities, service expansion, client upsell | Client list, revenue, market trends, competitor intel | Growth opportunities report |
| Revenue Guardian | Margin analysis, pricing, cost control, cash flow | Wise data, API costs, team costs, client fees | Financial health report |
| Skeptical Operator | Risk identification, technical debt, failure modes | System health, incident history, single points of failure | Risk assessment |
| Team Dynamics Architect | Capacity planning, morale indicators, hiring needs | Team structure, leave data, workload distribution | Team health report |
| Council Moderator | Synthesis, conflict resolution, priority ranking | All 4 advisor reports | Final council report with ranked actions |
/council TIER 1: PERSONAL ASSISTANTS
(Always on, human-facing)
┌──────────────────┐
│ Steve (MD) │
│ + Tom 🔧 PA │
└────────┬─────────┘
│
┌──────────────────┼──────────────────┐
│ │ │
┌──────┴───────┐ ┌──────┴───────┐ ┌───────┴───────┐
│ Andy (Ops) │ │ James │ │ Megan │
│ + Charlie 📋 │ │ (Sales) │ │ (Marketing) │
│ PA (Opus) │ │ + Brian 🎯 │ │ + Sammy 📊 │
└──────┬───────┘ │ PA (Snnt) │ │ PA (Snnt) │
│ └──────┬───────┘ └───────┬───────┘
│ │ │
════════╪═════════════════╪══════════════════╪════════
│ │ │
│ TIER 2: SPECIALIST AGENTS │
│ (Spawned per-job, ephemeral) │
│ │ │
┌──────┴───────┐ ┌─────┴────────┐ ┌──────┴───────┐
│ Onboarder │ │ Prospect │ │ Report │
│ Payroll Gen │ │ Researcher │ │ Builder │
│ Invoice Proc │ │ Outreach │ │ Ad Anomaly │
│ KB Ingestor │ │ Drafter │ │ Investigator │
│ Cost Reporter│ │ Pipeline │ │ SEO Auditor │
│ Meeting Prep │ │ Reporter │ │ Creative │
│ Evolution │ │ Meeting Prep │ │ Analyst │
│ Auditor │ │ Follow-up │ │ Competitor │
└──────────────┘ │ Chaser │ │ Scanner │
└──────────────┘ └──────────────┘
Tom 🔧 spawns:
┌──────────────┐
│ Support │
│ Diagnostician│
│ Client Health│
│ Monitor │
│ Compliance │
│ Checker │
└──────────────┘
┌───────────────────── SHARED ─────────────────────┐
│ Coder │ Web Researcher │ Doc Drafter │ Data │
│ Collector │ ChromaDB │ Contact Store │ Cost Obs │
└───────────────────────────────────────────────────┘
┌─────────────────────────────────────┐
│ AI COUNCIL (Monthly/On-Demand) │
│ Growth │ Revenue │ Skeptic │ Team │
│ ──── Council Moderator (Opus) ──── │
└─────────────────────────────────────┘
| Time (AEDT) | What | Trigger | Where | Owner |
|---|---|---|---|---|
| 06:00 | Contact sync + relationship scoring | Cron | Background | Charlie |
| 06:30 | Morning briefing (calendar + meeting prep) | Cron | Telegram #meetings | Charlie |
| 07:00 | Gmail triage summary (overnight emails) | Cron | Telegram #general | Charlie |
| 07:00 | Ad performance overnight summary | Cron | Telegram (Megan) | Sammy |
| Every 15m | Heartbeat (Gmail, cron health, follow-ups) | Cron | Silent / Telegram on alert | Charlie |
| Every 15m | Maintenance email forwarding | Cron | Background | Script |
| 1h before meeting | Meeting prep brief | Calendar trigger | Telegram #meetings | Charlie |
| 18:00 | Daily cost summary | Cron | Telegram #costs | Charlie |
| 03:00 | Evolution engine (drift detection) | Cron | Telegram #cron (if action needed) | Charlie |
| Day | What | Trigger | Where | Owner |
|---|---|---|---|---|
| Monday 09:00 | Pipeline review (leads, follow-ups due) | Cron | Telegram #sales | Sales Intel |
| Monday 09:30 | Client health dashboard refresh | Cron | Cloudflare Pages | Sammy |
| Wednesday 09:00 | API cost weekly report + trends | Cron | Telegram #costs | Charlie |
| Friday 16:00 | Week-in-review (tasks completed, pending, blocked) | Cron | Telegram #general | Charlie |
| Friday 16:30 | Memory maintenance (daily → MEMORY.md distillation) | Cron | Background | Charlie |
| When | What | Trigger | Where | Owner |
|---|---|---|---|---|
| 1st Monday | AI Council session | Cron | Telegram #council + report | Council agents |
| 1st week | Client report generation (all active clients) | Cron | Cloudflare Pages + email | Sammy + Charlie |
| 1st week | Vietnam team payroll | Manual trigger by Andy | Files + Gmail drafts | Charlie |
| Mid-month | Competitor intel report | Cron | Telegram + ClickUp | Sammy |
| Last Friday | Skill audit (unused/broken skills) | Cron | Telegram #cron | Evolution Engine |
| When | What | Trigger | Where | Owner |
|---|---|---|---|---|
| Q start | OKR review + goal reset | Manual | Telegram + ClickUp | Steve + Andy |
| Q start | Infrastructure review (failover test, backup verify) | Cron | Telegram #cron | Charlie |
| Q start | Client retention analysis | Cron | Telegram #council | Revenue Guardian |
Trigger: Andy sends /onboard <client name> in Telegram or creates ClickUp task with "Onboarding" tag
Agent chain:
~/ven-clients/<client>/Data touched: ClickUp, ven-clients/, Google Drive, Gmail
Approval gates: Welcome email requires Andy approval; ad account access requests require client confirmation
Failure modes: Missing client info → Charlie asks Andy; API failures → retry 3x then alert
Cost control: Flash for research, Sonnet for drafts (~$0.30 total)
Telegram command: /onboard Acme Corp — SEO + Google Ads — contact: jane@acme.com
Trigger: Cron (weekly) or manual /qa <client>
Agent chain:
Data touched: Cloudflare Pages reports, ad APIs, GA4, GSC
Approval gates: None (automated check, human reviews flags)
Failure modes: API rate limits → backoff + retry; stale data → flag staleness
Cost control: Flash for comparison (~$0.10)
Telegram command: /qa all or /qa clientname
Trigger: Gmail follow-up tracker (runs on heartbeat, every 15 min)
Agent chain:
Data touched: ClickUp, Gmail, Telegram
Approval gates: All chase emails require James approval
Failure modes: Gmail API down → retry next heartbeat; thread detection false positive → human review
Cost control: Flash for classification, Sonnet for drafts (~$0.05 per run)
Telegram command: /followups (show all pending)
Trigger: Wise webhook or manual /pay <vendor> <amount>
Agent chain:
payments/YYYY-MM.jsonData touched: Wise API, Gmail, ClickUp, payment log
Approval gates: ALL payments require Andy confirmation (no auto-pay)
Failure modes: OCR extraction error → show raw + ask Andy; Wise API error → retry + alert
Cost control: Flash for extraction (~$0.02)
Telegram command: /pay LeBlanc 32000000 VND (creates quote for approval)
Trigger: New email to careers@ven.com.au or manual /screen <role>
Agent chain:
Data touched: Gmail, ClickUp, recruitment vault files
Approval gates: All candidate communications require Andy approval
Failure modes: PDF extraction failure → flag for manual review; JD not found → ask Andy
Cost control: Flash for initial filter, Sonnet for detailed evaluation (~$0.15 per CV)
Telegram command: /screen "Senior Developer" (screen all pending CVs for role)
Trigger: Cron (weekly) or manual /content <client>
Agent chain:
Data touched: GSC, DataForSEO, competitor sites, ClickUp
Approval gates: Content briefs require Megan approval before writing begins
Failure modes: API data stale → flag recency; keyword cannibalisation detected → alert
Cost control: Flash for data pull, Sonnet for brief (~$0.40)
Telegram command: /content "Pure Harvest" — blog ideas for Q2
Trigger: Email to support@ven.com.au (auto-forwarded) or manual /support
Agent chain:
Data touched: Gmail, ClickUp, RunCloud, client sites, Telegram
Approval gates: Fix implementation requires Steve approval; client response requires Steve approval
Failure modes: Can't access server → escalate to Andy; diagnosis unclear → escalate with raw data
Cost control: Flash for classification, Sonnet for diagnosis (~$0.30)
Telegram command: /support status (show all open tickets)
Trigger: Evolution Engine daily cron (3am AEDT)
Agent chain:
Data touched: OpenClaw docs, workspace files, skill configs, ClickUp
Approval gates: Config changes require Andy approval; skill deprecation requires Andy approval
Failure modes: Git pull failure → retry; false positive drift → human review
Cost control: Flash for classification (~$0.05)
Telegram command: /audit (run manual SOP check)
Trigger: Cron (monthly, 1st week) or manual /report <client> <period>
Agent chain:
Data touched: All ad/analytics APIs, Cloudflare Pages, Gmail, ClickUp
Approval gates: Report content requires Megan review; email requires Andy approval
Failure modes: API data gaps → flag missing metrics; deploy failure → retry + alert
Cost control: Flash for data collection, Sonnet for insights, ~$1-2 per report
Telegram command: /report "MRH" feb-2026
Trigger: Anomaly detection cron (runs 3x daily)
Agent chain:
Data touched: Meta Marketing API, Google Ads API, GA4 (for conversion verification)
Approval gates: No automated campaign changes — all recommendations require Megan approval
Failure modes: API timeout → retry; false positive → confidence threshold (>80% to alert)
Cost control: Flash for data pull + comparison, Sonnet for root cause (~$0.20)
Telegram command: /anomaly check (run manual scan)
| Type | Location | Reason |
|---|---|---|
| Agent behaviour | AGENTS.md, SOUL.md |
Core identity, loaded every session |
| Technical procedures | skills/<name>/SKILL.md |
Modular, shareable, version-controlled |
| Business SOPs | ClickUp Docs (linked from skills) | Human-editable, accessible to non-technical team |
| Client-specific | ~/ven-clients/<client>/ |
Isolated per client, Tom-maintained |
| Reference docs | ~/charlie/reference/ |
Static reference material |
| Runbooks | skills/<name>/SKILL.md |
Operational procedures embedded in skills |
Rule: If it's executable by an AI agent → skill. If it's reference for humans → ClickUp Doc. If it's both → skill with ClickUp link.
INPUT PROCESS STORAGE
───── ─────── ───────
Telegram /kb <url> ──→ web_fetch + clean ──→ ChromaDB (vectors)
Telegram forward doc ──→ pdftotext/pandoc ──→ + metadata JSON
Gmail attachment ──→ type detect ──→ + source citation
Manual file drop ──→ chunk (512 tok) ──→ Backed up to
──→ embed (text-embed-3) ──→ Google Drive (daily)
──→ store + index ──→
RETRIEVAL
─────────
Query ──→ 1. memory_search (MEMORY.md + memory/*.md)
──→ 2. vector_search (ChromaDB, top-5)
──→ 3. graph_query (knowledge graph, entity relationships)
──→ Ranked fusion (dedup + confidence score)
──→ Response with [Source: path#line] citations
Skill: kb-ingest (new)
/kb <url>, /kb search <query>, /kb stats, /kb list~/.vector-store/chroma/rsync to Google DriveThree-tier retrieval (executed in parallel, results fused):
Memory search (existing) — semantic search over MEMORY.md + daily files
Vector search (new) — ChromaDB similarity search
Knowledge graph (existing) — entity/relationship traversal
Fusion: Results ranked by relevance score, deduplicated, top-10 presented with citations.
Evolution Engine (daily cron, 3am AEDT):
OpenClaw best practices:
git pull latest docs from OpenClaw repoWorkspace health:
Config drift:
Output: memory/evolution/YYYY-MM-DD.md + Telegram alert if action needed
| File | Current Role | Future Role | Changes |
|---|---|---|---|
| AGENTS.md | Agent behaviour rules | Same + evolution engine compliance target | Add version tracking |
| SOUL.md | Personality/tone | Same (immutable unless Andy requests) | None |
| MEMORY.md | Long-term memory | Same + vector-backed supplement | Add KB cross-references |
| TOOLS.md | Local config notes | Same + auto-updated by evolution engine | Add last-verified dates |
| HEARTBEAT.md | Heartbeat checklist | Same + auto-maintained pending tasks | Add priority levels |
| Daily memory files | Raw session logs | Same + auto-tagged for retrieval tier | Add structured metadata |
Goal: Cost visibility, failover readiness, KB infrastructure
| Week | Deliverable | Effort | Dependencies |
|---|---|---|---|
| 1 | Cost Observatory v1 — Parse OpenClaw logs, daily spend report to Telegram | 1 day | Access to session logs |
| 1 | Failover health check — Mac Mini → MBA ping script (5-min interval) | 0.5 day | MBA Tailscale configured |
| 2 | ChromaDB setup — Install, configure, test embeddings locally | 1 day | None |
| 2 | KB Ingestion skill v1 — /kb <url> command, web pages only |
1 day | ChromaDB running |
| 3 | CRM Contact sync v1 — Gmail + Calendar → contacts.json, daily cron | 1.5 days | None |
| 3 | Meeting prep briefs v1 — Calendar scan → attendee lookup → Telegram | 1 day | Contact sync running |
| 4 | Telegram topic structure — Create ops group with topic channels | 0.5 day | None |
| 4 | MBA failover config — OpenClaw config, Google auth tokens, skill sync | 1 day | MBA access |
Phase 1 milestone: Cost tracking live, KB accepting URLs, meeting prep running, failover tested.
Goal: AI Council, Sales Intelligence, enhanced KB
| Week | Deliverable | Effort | Dependencies |
|---|---|---|---|
| 5 | AI Council v1 — 4 persona prompts, moderator, manual trigger via /council |
2 days | None |
| 5 | Council data collector — Auto-pull revenue, client, team, cost data | 1 day | Cost Observatory |
| 6 | Brian (sales ops upgrades) — Pipeline tracking, lead enrichment, follow-up automation | 2 days | CRM Contact sync |
| 6 | KB Ingestion v2 — PDF/DOCX support, Gmail attachment auto-ingest | 1 day | ChromaDB |
| 7 | Sammy v1 — Automated ad performance monitoring, anomaly alerting | 2 days | Existing anomaly-detection skill |
| 7 | Vector-backed retrieval — Three-tier fusion (memory + vector + graph) | 1 day | ChromaDB + KB |
| 8 | Client onboarding automation — /onboard command, templated setup |
1 day | CRM + ClickUp |
| 8 | Meeting → Action extraction — Transcript ingestion, ClickUp task creation | 1 day | KB Ingestion |
Phase 2 milestone: AI Council run completed, Sales Intel tracking pipeline, Sammy monitoring ads, KB handling multiple doc types.
Goal: Self-evolution, full cadence, MVAA
| Week | Deliverable | Effort | Dependencies |
|---|---|---|---|
| 9 | Evolution Engine v1 — Daily drift detection, skill audit, config compliance | 1.5 days | None |
| 9 | SOP enforcement automation — Auto-flag outdated skills, unused procedures | 0.5 day | Evolution Engine |
| 10 | Full operating cadence — All daily/weekly/monthly crons configured and tested | 1 day | All Phase 1-2 systems |
| 10 | Client reporting automation v2 — End-to-end with Sammy data collection | 1 day | Sammy |
| 11 | Failover drill — Full simulation: Mac Mini down, MBA takes over, recovers | 0.5 day | Phase 1 failover |
| 11 | Cost Observatory v2 — Dashboard on Cloudflare Pages, 30-day trends, per-agent breakdown | 1 day | Phase 1 Cost Observatory |
| 12 | MVAA validation — Run full week with minimal human intervention, measure automation rate | Ongoing | Everything |
| 12 | Documentation — Update all workspace files to reflect new architecture | 1 day | Everything |
MVAA Milestone (Day 90):
| # | Risk | Likelihood | Impact | Control |
|---|---|---|---|---|
| 1 | Mac Mini failure (hardware, power, network) | Medium | Critical — all operations stop | Phase 1: MBA failover with 15-min detection. Future: cloud VPS tertiary |
| 2 | API cost blowout (model misrouting, infinite loops) | Medium | High — unexpected $500+ bills | Cost Observatory with daily alerts, per-agent spend caps, automatic model downgrade on threshold |
| 3 | Data breach via AI agent (credentials leaked in output, PII in logs) | Low | Critical — client trust, legal | Sensitive data never in logs, humanizer strips internal refs, audit trail for all external sends |
| 4 | Wrong email sent to client (AI draft approved without reading) | Medium | High — client trust damage | Mandatory approval gates, Telegram preview before send, humanizer pass, signature validation |
| 5 | Sub-agent hallucination in financials | HIGH | High — wrong payslips, invoices | Payroll verification skill mandatory, never trust sub-agent financial data, source file cross-check |
| 6 | Google auth token expiry | Low | Medium — all Google services down | Daily token expiry check, 24h advance warning, documented refresh procedure |
| 7 | Anthropic rate limiting (429s during peak) | Medium | Medium — agents degrade | Automatic failover to Gemini Flash for non-critical tasks, documented model switching |
| 8 | Client data cross-contamination | Low | High — wrong data in wrong report | Strict client directory isolation, per-client data fetching, report QA automation |
| 9 | Over-automation — human skills atrophy | Medium | Medium — team can't operate without AI | Monthly manual-operation drill, documented procedures for AI-down scenarios |
| 10 | AI Council groupthink (all personas converge) | Low | Low — missed risks | Diverse persona prompts, explicit disagreement incentives, human review of all recommendations |
| 11 | Credential rotation missed | Medium | Medium — service interruption | Cron job checking all API key expiry dates, 30-day advance warning |
| 12 | Client perceives AI-generated communication | Medium | High — trust erosion | Humanizer mandatory on ALL external text, Andy/Steve final review on important comms |
| # | Input | Why | Priority |
|---|---|---|---|
| 1 | MBA failover authorisation — confirm MBA can run OpenClaw as warm standby | Required for failover architecture | P1 |
| 2 | Telegram topic group creation — create group, add bots, enable topics | Required for interface plane | P1 |
| 3 | Monthly revenue/fee data — or point to where invoices/fees are tracked | Required for AI Council + Revenue Guardian | P2 |
| 4 | Approved client onboarding checklist — what steps are always needed | Required for onboarding automation | P2 |
| 5 | Meeting recording tool preference — Fathom, Otter, or manual transcript upload | Required for meeting → action pipeline | P3 |
| 6 | Budget threshold for auto-alerts — at what $ amount should payments always alert | Required for payment automation guardrails | P2 |
| 7 | Content pipeline approval — does Megan want AI-generated content briefs? | Required for content automation | P3 |
| # | Input | Why | Priority |
|---|---|---|---|
| 1 | Support ticket SLA targets — P1 response time, P2, P3, P4 | Required for Support Diagnostician escalation rules | P2 |
| 2 | Client health criteria — what makes a client "at risk" vs "healthy" | Required for client health scoring | P2 |
| 3 | AI Council review commitment — will Steve review monthly council reports? | Required to justify council build | P2 |
| 4 | Key client relationship ownership — which clients should route to Steve vs James | Required for Sales Intel routing | P3 |
| # | Input | Why | Priority |
|---|---|---|---|
| 1 | Pipeline stages — current stages in ClickUp or mental model | Required for Brian (sales ops upgrades) | P2 |
| 2 | Follow-up cadence preferences — 3 days? 5 days? per lead type | Required for follow-up automation | P2 |
| 3 | Meeting prep preferences — what info is useful before client calls | Required for meeting prep briefs | P3 |
| Component | Monthly Cost | Notes |
|---|---|---|
| Existing API spend (Opus + Codex + Flash) | ~$150-250 | Current baseline |
| ChromaDB embeddings (text-embedding-3-small) | ~$5-10 | Depends on ingestion volume |
| AI Council (monthly) | ~$5 | 4 Sonnet advisors + 1 Opus moderator |
| Brian (sales ops upgrades) | ~$20-30 | Daily contact sync + meeting prep |
| Sammy (ad monitoring) | ~$30-40 | 3x daily checks across clients |
| Cost Observatory | ~$2-5 | Log parsing + report generation |
| Evolution Engine | ~$5-10 | Daily drift checks (Flash) |
| KB Ingestion | ~$5-15 | Depends on documents ingested |
| Total incremental | ~$70-110 | On top of existing baseline |
| Total estimated | ~$250-350/month | Full autonomous stack |
~/charlie/
├── contacts/
│ ├── contacts.json # Unified contact store
│ └── enrichment/ # Per-contact enrichment data
├── council/
│ ├── data/ # Monthly data snapshots
│ └── reports/ # Council output reports
├── costs/
│ ├── daily/ # Daily cost JSONs
│ └── dashboard/ # Static HTML dashboard
├── kb/
│ └── ingestion-log.json # What's been ingested
├── scripts/
│ ├── cost-observatory.js # Cost tracking
│ ├── contact-sync.js # CRM contact sync
│ ├── meeting-prep.js # Calendar → brief
│ ├── failover-health.sh # Mac Mini → MBA ping
│ └── evolution-engine.js # Drift detection
├── skills/ # (symlink to ~/ven-skills/)
│ ├── kb-ingest/ # NEW
│ ├── crm-contacts/ # NEW
│ ├── sales-intel/ # NEW
│ ├── megan-bot/ # NEW
│ ├── ai-council/ # NEW
│ ├── cost-observatory/ # NEW
│ └── evolution-engine/ # NEW
└── .vector-store/
└── chroma/ # ChromaDB data
End of plan. Ready for review.