×

Why Pixo's Content Pipeline Is a Graph, Not a Prompt

Abstract illustration of an agentic branding inbox and identity graph

Pixo generates LinkedIn and X drafts with background agents, then puts a human in a review inbox. The architecture question underneath: how do you automate content without turning the system into a spam machine that ignores voice, context, and taste?

I landed on a few agentic workflows with specialist steps, a stable persona as conditioning, dual-model routing, and a feedback loop that writes human judgment back into the system. This post covers the workflows, why those choices, and what still needs building.

Why Not One Long Prompt

A single prompt can draft a post. It cannot reliably own the failure modes of content production. Opportunity selection fails differently from voice drift. Voice drift fails differently from length or taboo violations. Stuffing all of that into one call hides where the system broke.

So generation runs as a pipeline of narrow jobs: find an opportunity, pick an angle, write, edit, then gate quality before anything reaches the inbox. Some paths branch for carousels. Some loops regenerate the writer when QA fails. Batch runs carry uniqueness context so the next draft does not repeat the same hook and format.

That structure takes longer to build than one prompt. Easier to debug, cheaper to improve one stage at a time, and honest about where autonomy should stop.

The Agentic Workflows

Pixo runs a few graphs, not one mega-agent. Each owns a different job: invent what to post, turn a source into a post, turn a design into a reusable template, or keep the persona fresh. Mixing those into one graph would force every path through steps it does not need.

Content Agency — invent the work

The autonomous path: Scout → Strategist → Writer → Editor → QA. Scout finds opportunities from identity, RSS, and trends. Strategist picks format, hook, CTA, and tone. Writer drafts in the persona voice. Editor tightens for the platform. QA gates taboos, identity fit, and diversity against what the batch already produced.

Why this shape: opportunity finding fails differently from voice. Strategy fails differently from line edits. A critic loop sends failed drafts back to the Writer, not back to Scout — so a weak paragraph does not throw away a good opportunity. A batch loop runs Strategist again for the next draft and carries uniqueness context so hooks, formats, and topics do not repeat across the run.

Carousel work branches after strategy into its own slide structure and copy path. Standard posts keep a length step so LinkedIn and X drafts land in the right band. This graph fills the inbox on a schedule or when empty — the product opens with work already done.

Source-driven generator — turn material into a post

When the user brings a topic, YouTube video, article, PDF, or audio, inventing the opportunity does not help. They already have the source. That path extracts claims and angle, sets length, synthesizes the draft from persona plus analysis, then reviews — with a regenerate edge back to synthesis, not a full restart.

Why separate from Agency: user-initiated work should not pay for Scout. Identity and style used to sit as early nodes here; they moved into the cached persona so every generator stays cheap and consistent. Same length policy as Agency so a manual draft and an autonomous draft feel like one system.

Visual template graph — design once, reuse

Upload a reference image or PDF. Vision reads layout and image needs. Layout produces HTML/CSS with editable slots. Variables become a schema. Image slots fill from stock or generated art. Review validates structure and renderability.

Why the critic loops to Layout, not Vision: a bad HTML pass should not re-analyze the screenshot. Vision already did its job. Filling a saved template later stays a single deterministic fill — no graph — because inventing layout again would destroy the template the user already approved.

Identity and learning — condition, do not generate

Onboarding chat, LinkedIn extraction, resume parse, and writing-sample analysis feed an identity graph and style profile. A synthesizer compiles those into the persona prompt generators consume. Swipes re-synthesize after enough signal.

Why this stays outside generation graphs: conditioning changes slowly; drafts change constantly. Re-running identity work on every post wastes money and drifts voice. Learning belongs in a loop that updates the cache, then gets out of the way.

Why Persona Lives as Cached State

Do not re-discover voice on every request. Re-deriving identity and style from LinkedIn HTML or a resume for each draft gets expensive, inconsistent, and easy to get slightly wrong in different ways each time.

Pixo compiles role, expertise, beliefs, stories, tone, format preferences, and writing-sample insights into a cached persona prompt on the profile. Generators consume that. They do not rebuild the person from scratch.

That choice makes quality predictable. Thin identity produces weak drafts by construction. Rich identity produces drafts that sound like someone. The system should not invent a persona it lacks evidence for.

Why Two Models Instead of One

Not every step needs the same kind of intelligence. Analysis, vision, and QA fit a fast Gemini path. Writing and layout benefit from Claude when the cost justifies it, with Gemini as fallback.

Defaulting everything to the strongest model feels safe. It wastes latency and money on scout and QA work that does not need it. Defaulting everything to the cheapest model fails on the steps that actually need deeper writing judgment. Routing by job type sits in the boring middle that holds up.

Why Long Runs Leave the Request Path

An agency batch with critic retries can take minutes. If that work sits on an HTTP worker, the API becomes a demo that collapses under real use.

Short operations can stay in-request. Autonomous generation and heavy extraction go to background workers. The product can open with an inbox filled overnight. The user does not watch a spinner while five agents negotiate a draft.

That boundary makes agent-first feel real instead of theatrical.

Why Swipes Matter More Than Generation

Open-loop generation fails. Agents keep producing. Nobody teaches them what good looked like for this person.

Approve, reject, and edit are not vanity analytics. They update preferences and, after enough signal, re-synthesize the persona. The next run should land slightly more aligned than the last one.

The difference between automation and agentic automation: automation produces. Agentic systems that survive contact with taste have to learn from the curator.

Why Access Boundaries Sit Next to the Agents

Profiles are workspaces. People invite members. Generation and drafts stay profile-scoped. Access has to check owner and invited member explicitly, not assume “this user owns this row.”

Agent systems that ignore tenancy become security incidents the first time a company profile shares an inbox. Isolation belongs in the architecture, not as a later compliance patch.

What This Gets You

What Still Needs Building

The agent boundary today ends at a reviewable draft. Publishing to LinkedIn and X, calendar auto-post, and first-comment automation remain open. Until those exist, the loop from approve to live post stays manual.

Billing and usage metering: not built. Engage-and-grow work — mentions, replies, social CRM — not built. Analytics exist in early form, but not yet a full closed loop from post performance back into strategy.

Highest-leverage next steps, in order:

  1. Publish + schedule — close the path from approved draft to live post so the inbox does not become a dead end
  2. Performance feedback — feed impressions and engagement back into strategist and uniqueness context, not only swipe taste
  3. Stronger evaluation harness — offline checks for voice drift, taboo violations, and diversity before drafts hit the inbox, not only in-graph QA
  4. Team workflows — approval chains for enterprise profiles where more than one person owns brand risk

Those sit on top of an architecture that already separates generation, conditioning, judgment, and execution. That separation makes future work additive instead of a rewrite.

The Point

Agentic content systems fail in two mirrored ways: they ask the human to create every token, or they remove the human and hope. The useful design: a graph that prepares work, a persona that keeps voice stable, models chosen per job, workers for long runs, and a judgment loop that teaches the next batch.

So Pixo stays a pipeline with a review inbox, not a chatbot with a blank page.

Learn More

Project: Pixo on Projects.

Open source: github.com/sartaj04/ai-creative-marketing.

Building something with AI?

I design and ship production systems across ML, deep learning, GenAI, LLMs, and RAG. Happy to talk through what you're working on.

Book a Free Call