A.O.Akinloluwa Olumuyide, home

LiveDemo client

AI agent · 2026

Content research and publishing agent

Researched, graded articles that cannot publish until a person approves them.

The number

41 / 44

claims traced to a stored source

Client
Koya Talent
Role
Built end to end: spec, build, deploy
Timeline
2026
Stack
Next.js · Vercel · Supabase · pgvector · OpenAI embeddings · Claude web search · Firecrawl · Resend · Anthropic API

Watch the walkthroughLive app (opens in a new tab)Repository (opens in a new tab)

the walkthroughWatch on Google Drive (opens in a new tab)Open the live app (opens in a new tab)

The problem

A content manager has an idea, or a link worth answering. They need a researched article and a post for every channel, with every fact traceable to a page the system actually read.

Nothing goes out until they approve it.

  • Nothing unapproved goes out
  • No fact without a source

What I asked first

The brief left these open. I answered each one before writing any code.

  1. Who reviews the sources? The brief never says. So a person does, before any article is written. The relevant ones are picked already, and dropping a bad one is one click.
  2. Three articles, or three directions? Three angles: a headline, an outline and the sources each would use. Only the one a person picks is written. Writing three to throw two away would triple the most expensive step.
  3. How many times does a person step in? Twice. First the sources and the angle, on one screen. Then the article, its grade and every channel version together.
  4. What may the grader judge? Only what can't be measured. Sources, facts and format are checked in code first. Tone and clarity are judged. A model grading its own facts is marking its own homework.
  5. What if the grader keeps failing it? Two rounds of revision, then it stops and hands it to a person with every problem visible. It never ships a failed draft, and it never loops.
  6. Can the channel posts add anything? No. They're made from the approved article alone, so a post can't invent a statistic.

How it runs

Content research and publishing agent · 9 steps
  • Person
  • Tool
  • AI
  • Check
  • Result
  1. Research

    01, Human:

    An idea or a link

    Content manager

    Something worth writing about.

  2. 02, Step:

    Read the sources

    Search, Firecrawl

    Every page read is stored as excerpts.

  3. 03, AI:

    Three angles

    Haiku

    A headline, an outline and its sources each.

  4. Write

    04, Human:

    Pick the sources and angle

    Content manager

    Gate one. Nothing is written before it.

  5. 05, AI:

    Write the article

    Sonnet 5

    Every fact cites a stored excerpt.

  6. 06, Logic:

    Passes the grade?

    Code, Sonnet 5

    Two revisions, then a person decides.

    Then: step 5 (no: revise); step 7 (yes).

  7. Release

    07, AI:

    A version per channel

    Haiku

    LinkedIn, X and the newsletter.

  8. 08, Human:

    Approve each channel

    Content manager

    Gate two. Nothing publishes before it.

  9. 09, Output:

    Released on schedule

    Resend

    The newsletter sends. LinkedIn and X go to a person to post.

Enforced, not requested

  1. Every fact has a source Nothing is published that can't be traced to a page it actually read.
  2. The model never writes a link Links come from the stored sources, never from the model.
  3. No approval, no publishing The server blocks it, not just the screen.
  4. Never sent twice Every send is reserved, done, then confirmed, so a retry can't repeat it.
  5. Unsure means unsure A send with no clear outcome is marked uncertain and never retried on its own.
  6. Posts can't add facts Each channel version is made from the approved article only.
  7. Every request has a budget An estimate up front. Going over stops the work and asks.

The thing that nearly got past me

Incident

A free tier that failed without saying so

The free tier of the service that matches sentences to their sources quietly refused six of the articles the system had read. Nothing errored. Only two usable sources were left, and it surfaced three steps later as "the angles are too similar".

The fixI moved to a paid provider at the same price. Scores from two different models can't be compared, so I deleted every source the old one had matched and ran the research again, clean.

A free tier isn't a cheaper version of a paid one. It's a different way to fail, and it fails in the middle of the pipeline, not at the door.

The build, in numbers

  • 41 / 44

    claims traced to a stored source. The checks flagged the other 3.

  • 4:54

    minutes of machine time, from an idea to a graded article and every channel

  • $0.24

    the cost of that full run

  • 1

    email delivered from two identical sends

  • 2

    places a person decides before anything goes out

  • 265

    automated tests passing

From the test report for the live build.

What it refuses to do

  • Publish before approval A person approves every channel first.
  • Publish a claim it can't trace Every fact points to a stored source.
  • Write a link itself Links come from the sources it read.
  • Retry a send it isn't sure about It's marked uncertain, and a person checks.
  • Post to LinkedIn or X on its own There were no working accounts for either, so a person posts them.

What I took from it

Clever gets you a demo. Traceable gets you trusted. Every fact here points to a page it read, and nothing goes out without a person's yes.

The limit I'd fix first

if I did it again

  • I moved the grader to a cheaper, faster model without testing the two side by side first.
  • Two rounds of revision don't always fix the writing. One test article still needed a person after both.

Check it yourself

Contact

Got a messy problem?

Tell me what's broken, or what your team keeps doing by hand. Hiring? Tell me about the role. Or just book a call.