06-reference

alex vacca 3 phases ai layer services as software

2026-05-19·reference·source: X (Twitter long-form)·by Alex Vacca (@itsalexvacca)

Alex Vacca — The 3 Phases of the AI Layer Most Services-as-Software Founders Get Wrong

Why this is in the vault

Operator source, not a thought leader: Vacca runs ColdIQ ($7M+ ARR, 400+ B2B clients, 30+ team, Clay's #1 partner) and has watched 287 accelerator members try the same build. Central claim: "Spine first, then Agents, then Loop; invert it and the system can't compound." Directly validates RDCO's L5 unhobbling sequence, and predicts which phase we're weakest on (the loop) before we'd catch it ourselves.

The core argument

Phase 1 — Spine. The unglamorous layer that doesn't look like AI: one CRM (not three), multi-domain sender infrastructure from day one (4 ESPs at ColdIQ), and one canonical data table every campaign reads from and writes back to. Ships zero campaigns on day one, which is why most founders skip it — and why those founders stall at the fifth hire. Without the spine, downstream agents make decisions in isolation.

Phase 2 — Agents. The layer that looks like the product the customer thinks they're buying. Two pay back first: a Reply Manager (classifies inbound, drafts response, operator approves in Slack via n8n) and an Enrichment Waterfall (Wiza → FullEnrich → Prospeo, 90%+ verified emails). Three things stay un-agent-ized: copy strategy, client relationship, edge cases. Sharpest line: "Two agents on top of a clean spine outperform six agents on top of nothing."

Phase 3 — Loop. The layer most operators never build, which is why most fulfillment stacks stop compounding the moment the first agents go live. The loop wires every campaign's outputs back into the next campaign's inputs — engagement signals, buying triggers, reply intelligence, disco-call notes, lost-deal reasons all route into the spine's enrichment / scoring / copy / ICP definitions. Without it, campaign two starts from the same priors as campaign one.

Why inversion fails. Founders ship Lead Researcher + Campaign Strategist + Booking Coordinator in week one — three agents, no spine, no loop. The stack takes more attention than the manual work it replaced. Agents look impressive first and pay back last.

Mapping against Ray Data Co

a) Spine = vault + feedback-memory + working-context.md + CLAUDE.md hard-rules + qmd index. Every skill reads the vault, writes the vault, references the same canonical memory files. Built first (correctly, per Vacca's rule): before any /process-* skill existed, the vault structure + MEMORY.md + CLAUDE.md precedence chain were already load-bearing. Founder corrections land in feedback_*.md files and persist across sessions — RDCO's "one canonical data layer."

b) Agents = /process-newsletter, /process-youtube, /process-inbox, /research-brief, /deep-research, /check-board, /open-threads-check, /morning-prep, /improve. Each reads vault, decides, writes vault. The pipeline-spec/test/code/critic four-seat pattern is a sub-shape — fan-out without context contamination. Vacca's "two agents pay back first" maps cleanly: /process-newsletter and /research-brief are RDCO's high-leverage early agents.

c) Loop = /self-review (Sun) + /improve autonomous (Mon) + /vault-health + /cross-check + /compile-vault. The phase RDCO is least mature on, and the load-bearing finding from this note. Components exist — /self-review scores outputs, /improve diarizes feedback and proposes skill rewrites, /vault-health surfaces stale docs, /cross-check finds contradictions. What's missing: auto-wiring those outputs back into the spine. Today /self-review's scores get read by the founder; tomorrow they should auto-promote the highest-scoring pattern into a skill-edit PR without him in the loop. Vacca's "campaign 20 making decisions on patterns it took a senior operator 3 years to learn" — we're at campaign 3.

d) L5 cross-validation. Per [[project_l5_north_star_strategic_direction]], RDCO is at L4, unhobbling the COO agent toward L5. Vacca's rule explains why spine → agents → loop is the right order: bets are downstream of agent capability, agent capability is downstream of spine quality. We got it right, possibly by osmosis from [[2026-05-18-agentway-harness-engineering-claude-code-design-guide]] (Ch 2 precedence-chain is itself a spine-first move). Remaining unhobbling = loop-phase: close the feedback edges so the spine self-improves without founder per-cycle judgment.

Tactics worth borrowing

  1. Name the canonical data table explicitly. ColdIQ runs Clay as the single table. RDCO has the vault + qmd index but no single doc that codifies "skill X reads path Y, writes path Z." Worth a 02-sops/spine-data-contract.md — makes the spine inspectable.

  2. Operator-in-Slack approval for the Reply Manager. Agent drafts → Slack → operator reads three lines → approves. RDCO already does this for external email ([[feedback_no_autonomous_external_email]]). Worth extending to /check-board Notion adds and /improve skill-edit PRs — three-line chat approval is faster than reading a diff.

  3. "Two agents on a clean spine beat six agents on nothing." Mechanical heuristic for new-skill triage: if a proposed skill needs its own data store (not vault-resident), it's a sixth-agent move. Add as a check in /skillify and the MCP-install security-review SOP.

  4. Wire /self-review → /improve as a structured edge. /self-review writes prose; /improve reads transcripts. Pipe scores to 05-meta/self-review-scores.jsonl and have /improve read it as a priors file. Closes the loop mechanically.

Related