Eighteen agents listen, edit, and act on the social graph in concert, each visible in its own column of the audit log.
Eighteen agents do this work in concert. Each has one job. Each is visible in its own column of the audit log. Below is the system, agent by agent, decision by decision.
1. The eighteen
Each card below is one agent. Each agent has one job. The names are not poetic — they describe what the agent does to the system's input.
Hypothesis
Generates content ideas from observed patterns in the social graph.
Strategy
Maps each idea to a publication plan with platform, format, and timing.
Feasibility
Removes ideas that fail safety, policy, or feasibility checks before they cost compute.
Script Gen
Drafts the first version of the spoken or written script, with the audit log recording every prompt.
Asset Gen
Produces still imagery, prompts and seeds recorded for every output.
Video Gen
Assembles the moving asset, with shot lists and provenance recorded.
Publishing
Sends the finished asset to the platform via the platform's official API.
Feedback
Reads platform telemetry — views, comments, shares — and records it back to the proposal that produced it.
Decision
Scores proposals against goals; only the top-ranked proposals advance.
Pattern Abstraction
Identifies repeated structures in what worked, what failed, what was withdrawn.
Niche Resonance
Tests whether a pattern that worked in one niche transfers to another, with confidence intervals.
Channel Setup
Provisions a new account on a platform under the platform's developer terms.
Revenue Model
Tracks revenue events back to the proposal that produced them, and to the agent that originated each.
Autonomous Ops
Watches for system health: rate limits, error budgets, cost ceilings.
Legal Compliance
Confirms that every published asset complies with platform policy and the relevant ad-disclosure regulation (FTC, CMA, ASA).
Community
Replies to comments under documented response rules, escalates novel cases to a human.
Pillar
Produces the long-form pieces that anchor each niche: the cornerstone content.
Foundation
Maintains the brand voice, the visual system, and the cross-niche standards.
2. How they listen
The Hypothesis and Strategy agents read public engagement data from each connected platform — likes, comments, shares, watch-time fragments — through the platform's official API. They do not scrape, they do not buy data, they do not draw from any source the operator has not authorised. The signal is filtered by the operator's niche and routed through Niche Resonance to surface patterns that travel across categories.
How they listen
Diagram by Steve (Steve-task S3.2). Vectorised by Claude Code. Phase 3 placeholder until the SVG lands.3. How they decide
Feasibility, Decision, Pattern Abstraction, and Niche Resonance score each proposal against the operator's goals, the platform's policy, and the system's safety guardrails. A proposal must clear every check; the audit log records the score, the model, and the reason. Decision and Pattern Abstraction operate as a pair — Decision picks the top-ranked proposals to advance; Pattern Abstraction watches the long tail and surfaces structures the system has seen before.
How they decide
Decision agents and their scoring rules. Phase 3 placeholder.4. How they publish
Script Gen, Asset Gen, and Video Gen produce the publishable artefact. Publishing sends it to the platform via the platform's official API. The act of publishing writes a row to the audit log: timestamp, agent, model, seed, input hash, output hash, decision, reason, operator. No publish without a row.
How they publish
Publishing agents move a finalised proposal to the network. Phase 3 placeholder.5. What stops them
Five guardrails — rate limits, content filters, platform policy checks, disclosure compliance, and human-in-the-loop oversight — run in front of every decision. Failing any one stops the proposal and writes the reason to the audit log. The full architecture is documented at /safety .
# excerpt — colosseum/agents/decision/guardrails.py
def evaluate(proposal: Proposal) -> Decision:
for check in (rate_limit, content_filter, platform_policy,
disclosure_compliance, human_in_the_loop):
result = check(proposal)
if not result.ok:
return Decision.stop(reason=result.reason, agent=check.__name__)
return Decision.advance(score=score(proposal)) 6. Where the audit log lives
Every agent decision lands in the audit log with eleven fields: timestamp, agent, proposal_id, model, seed, input_hash, output_hash, decision, reason, operator_id, signature. Rows are append-only — a correction is a new row that references the corrected row by its hashes. The full schema and review cadence is at /safety .
If you want to see what stopped this morning's third proposal, read the audit log. We keep one. We keep all of one.