RiverbornBook Call

How I Built EasyDraft: An AI Content Writer With the OpenAI Agents SDK

Engineering4 min read

A multi-agent content generation platform built on the OpenAI Agents SDK, where six specialized agents research, write, fact-check, score, and publish content, with a human still in the loop.

How I Built EasyDraft: An AI Content Writer With the OpenAI Agents SDK

A few months ago I got tired of the same content-writing routine: open a blank doc, research the topic by hand, write a draft, second-guess every stat, ask someone to review it, reformat it for whichever channel it's going to, and only then hit publish. It works, but it doesn't scale. It's exactly the kind of multi-step, judgment-heavy workflow that's a good fit for a team of AI agents, each with one job, instead of one giant prompt trying to do everything at once.

So I built EasyDraft: a multi-agent content generation platform on top of the OpenAI Agents SDK (@openai/agents). Instead of asking a single model to research, write, fact-check, and format a blog post or LinkedIn update in one shot, EasyDraft splits the job across six specialized agents that hand off to each other in sequence, with a human still in the loop before anything gets published.

Here's how it's put together, and what I learned building it.

The pipeline: six agents, one job each

The orchestrator runs a fixed sequence:

  1. Intake Agent — captures the brief: topic, target audience, channel, tone, and any specific instructions, either through a multi-turn conversation or a pre-filled form from the web UI.
  2. Research Agent — goes out and does real web searches, then synthesizes the findings into a structured fact sheet (topic overview, key points, supporting facts, sources used). This fact sheet becomes the single source of truth for everything downstream.
  3. Writer Agent — drafts the actual content, in parallel, from two different models. One draft comes from GPT-4o; the second is a real Claude draft, generated only if an Anthropic key is configured. If it isn't, EasyDraft just returns one draft instead of quietly faking the second with GPT. I'd rather show one honest draft than two that look different but aren't.
  4. Review Agent — runs the output through a safety guardrail, then pauses for a human to actually read the draft and approve, edit, or reject it, either from the terminal or the web dashboard.
  5. Eval Runner — scores the approved draft on four dimensions: hook strength, format and readability, depth and vocabulary diversity, and an LLM-judge rating, computed dynamically from the text rather than a static rubric.
  6. Publisher Agent — formats the final draft for its target channel and saves it.

If a human rejects a draft, it doesn't die. The Review Agent's feedback goes straight back into the Writer Agent's next pass, and the loop repeats, capped at three cycles, after which it escalates to a human supervisor instead of looping forever.

The part I was most nervous about: hallucinations

The scariest thing about letting an agent write content unsupervised is a confident, well-formatted paragraph containing a made-up statistic or a quote nobody said. So the output guardrail has one job: fact-check the draft against the Research Agent's verified fact sheet. It hunts for hallucinated stats (something like "73.4% of CMOs said..." with no such number anywhere in the sources), fabricated quotes attributed to real people, and hard contradictions of verified facts. It's deliberately lenient about opinions, general statements, and reasonable paraphrasing. The goal is catching fabrication, not nitpicking the prose. Only a "high" severity finding actually blocks the draft; anything lower gets logged as a warning for the human reviewer to weigh.

Why agents instead of one big prompt

Splitting the work this way mattered more than I expected. Each agent has a narrow, testable job, so debugging "the research is bad" is a different problem from "the tone is wrong," instead of one tangled mess buried inside a single mega-prompt. The retry loop only touches what needs fixing too: a rejected draft goes back to the Writer, and the fact sheet and brief don't get redone from scratch. And tracing comes for free. The Agents SDK's built-in trace logging lets me see exactly what each agent saw and produced at every step, which was invaluable while tuning prompts.

The less glamorous engineering

The agent pipeline is the interesting part, but it only works if the surrounding system is trustworthy. Users bring their own OpenAI and Anthropic API keys through the web UI, so those are encrypted at rest with AES-256-GCM before they ever touch MongoDB, keyed off a server-only secret. Auth runs through Firebase, with a local-dev fallback that parses the JWT payload directly so I'm not stuck needing production credentials just to run the app on my laptop.

What's next

Right now EasyDraft handles blog posts, LinkedIn updates, email, and X threads. Next up: feeding the Eval Runner's scores back into prompt tuning over time, and expanding the guardrail layer beyond fact-checking into tone and brand-voice consistency.

If you're building an agent pipeline where quality and trust matter as much as speed, I'd like to compare notes.

Try it yourself:

Rabbi Hossain

Rabbi Hossain

AI Engineer

Rabbi is an AI Engineer at Riverborn, specializing in multi-agent orchestration, LLM applications, and cognitive workflows. He builds robust, production-ready AI agents and workflows that solve complex business logic with high reliability.

Published by Rabbi Hossain at Riverborn

Ready to ship production-grade AI?

Free. 30 minutes. No prep required.