00Overview 01One day 02The months 03A few words 04verification Easter egg
About · an agent pipeline that has run for months

From a whole day,
to a few words

At first, finishing one topic took me a whole day. A few months later, the same pipeline needs only a few short inputs. The agents collect, filter, verify and restructure the material, produce the bilingual web pages, and publish them. I mainly handle verification, confirming or rejecting the work at key checkpoints.

Before1 day / topic
Iteratingmonths
Nowa few words / step
My roleverification
01 · the original day

Before automation, every step needed a person to push it forward

genai-playbook mostly pulls together material scattered across different sources, filters and verifies it, then restructures it into bilingual pages that people can read directly and other agents can call. The real time sink was never typing. It was keeping everything in my head at once: the current state, unchecked numbers, red lines that could not be crossed, and where the work had to go next.

Find material, filter, dedup

First decide what is worth reading, then confirm it does not overlap with a topic already completed.

Read sources, check facts and numbers

Read the original in full, checking item by item that numbers, quotes and context have not drifted.

Restructure, bilingual pages, figures

Not a straight copy: rebuild the structure, then generate the Chinese and English pages separately.

Check, deploy, record publish state

Check links and charts, then update the index, the sitemap and the publish record.

A whole day

If any one step in this chain was forgotten, everything after it kept running with the error baked in. Back then I was the scheduler, the executor and the checker all at once. The pipeline could finish, but every new topic still meant walking the whole thing through by hand again.

02 · the months in between

The answer was not a smarter prompt, but removing human work one layer at a time

This line was not designed in one pass. It ran first, then exposed its problems; each time a particular failure kept recurring, I added another layer to the harness. Months later the person had stepped out of most of the execution, but the judgments from the start did not disappear. They moved somewhere else and kept doing their work.

This is how the person stepped out of execution, one layer at a time

First I let the pipeline hand work across sessions. Then I separated writing from checking, moved the stable red lines into code, and only at the end reduced the daily scheduling to a few words. The level of automation did not rise in a single move.

Layer 1 · handoff first

A new session lost both the progress and the red lines

A long task spans sessions, and different agents may pick it up. When state exists only in context, whoever takes over next has no reliable way to know what has already been done or what constraints still apply.

So I addedone STATUS contract per topic: a file beside the working materials that records progress, red lines and the delivery path.
Layer 2 · split self-review

The writing agent was too ready to approve its own output

Reading its own draft while still carrying what it meant to say, it quietly fills in the missing information, and its review keeps sliding along the same judgment that produced the draft.

So I addeda fresh, clean context for every recheck, fully separating writing from judgment so no round inherits the previous round's verdict.
Layer 3 · remove eyeball checks

The closer a case came to a red line, the more judgment drifted

The "close enough to pass" edge cases are the dangerous ones. On the model's in-the-moment judgment alone, the same rule can come out differently today and tomorrow.

So I addeda deterministic backstop: red lines that can be written as rules are enforced in code, so a wrong model judgment still cannot get through.
Layer 4 · remove manual scheduling

Re-running every source daily was just burning tokens

The deep radar covers a fourteen-day window; one full sweep costs about 3M tokens and takes 15–20 minutes. Run it every day and most of what comes back is "already covered."

So I addeda plan and refresh cadence held by the orchestration layer: the official tracker refreshes daily, the deep radar only once it is more than three days stale.
Layer 5 · leave a calibration trace

A judgment you can't see is a judgment you can't calibrate

Keep only the final recommendation and you cannot see at which gate a candidate was cut, nor whether the filter quietly killed something worth keeping.

So I addeda rejection and verification trace; and dedup checks both the index table and the disk directory, two separate sources of truth.
01Dynamic Workflow

The script holds the plan; the agent only fills each cell

Topic selection is not handed to one agent to think through end to end. About 190 lines of topic-selection.js hard-code the control flow into four phases, and the script decides what runs in parallel, what waits and what may pass, while the agent only fills the current cell.

the script holds the plan what runs in parallel · what waits · what may pass to the next phase, all fixed in the script
phase 1 Collect
agent · tracker feedagent · deep feed
parallel fan-out
one per feed
barrier
phase 2 Dedup
1 agent
discard list · index · disk
all three checked
barrier
phase 3 Score
insight-filterinsight-filterinsight-filter
parallel fan-out
one per candidate
barrier
phase 4 Rank
1 agent
picks + rejections
into the day's shortlist
schema · SCORE_SCHEMAevery subagent returns fixed JSON fields, not a paragraph of prose. await parallel(...)parallelism stays inside a phase; the barrier keeps partial results from flowing on early. filter(isReal)even if an agent says keep, PR-speak or a forced so-what is still dropped in code.
02Subagent Loops

The generator is not the judge, and each recheck starts clean

A recheck does not ask the original agent to look again. Every round starts a subagent in fresh context, carrying no conviction from the previous round, to judge from scratch until it finds zero issues or hits the round limit.

Generator generate the artifact

restructure, write or build pages; holds no sign-off.

each round · fresh context
new auditor reads source + artifactlists the issuesmain agent fixes
next round swaps in another fresh context: it rechecks old fixes but carries none of the prior auditor's conviction
zero issues / round limitexit · pass
FACT · up to 6 roundschecked line by line against the source; exits only at zero issues.
STYLE · prechecka script first clears the mechanical, certain problems.
STYLE · up to 4 roundsthen a fresh auditor handles meaning and tone.
03Lifecycle Gates

A hook earns its keep by sitting at the right point in the lifecycle

Here a hook means one of genai-playbook's own pipeline checkpoints, not a global tool hook in ~/.claude. Each check fires at a fixed moment from a project script: the ones meant to block return a non-zero exit code, the ones meant for a human get gathered into a queue.

after web gen
number-drift.py

reconciles visible numbers across the report and both pages; extras on a page are flagged as drift.

exit 1 · block
before upload
publish-precheck.py

checks template leftovers, registration, homepage card, links, bilingual cross-links, figure sources.

exit 1 · block
build artifacts
published.txt

the published list drives stats, sitemap, search and MCP, so no outlet keeps its own copy.

single source
deploy wrap-up
pending-status.py

scans each topic's STATUS and surfaces unchecked manual items like GSC and git push.

human queue
03 · today's operating surface

Months of engineering, folded in the end into a few very short inputs

I still start the pipeline section by section, but I no longer execute each step by hand. Each line only states intent; the harness expands the plan from PIPELINE and the current topic's STATUS, and the agents plus deterministic checks take care of filling in this cell.

today's topics
refresh sources dedup score each candidate rank and save
me: review
do the first one
create topic read the source restructure the report two review loops
me: confirm direction
generate web
generate ZH + EN redraw figures reconcile numbers page checks
me: accept
deploy
publish gate update index sitemap live
me: final sign-off
The input is short; the plan behind it is long

It looks simple today, but not because the work was ever simple, and not because I found some universal prompt. The short input is only the operating surface left behind after months of engineering: the search logic, the quality bars, the failure handling and the cross-session handoff have all been moved into the harness.

04 · where the person sits in the loop

The person is still in the loop, just no longer working on the line

My work went from execution to verification: give direction, trigger the next section, confirm or reject at the key checkpoints. The repeated execution goes to the agents; the red lines that cannot be allowed to waver go to code.

Human

Direction and verification

  • decide whether to start today, and which candidate to do first
  • confirm, reject or adjust direction at the key checkpoints
  • keep revising the standards and red lines based on how runs turn out
Harness + agents

Execution, handoff and line-by-line checks

  • expand the plan, schedule in parallel, hold state across sessions
  • collect, dedup, restructure, bilingual pages, figures and publishing
  • fact-check, style review, number reconciliation and the publish gate
Independent

The writer and the judge are not the same mind

Fact-check up to 6 rounds, style review up to 4. Each round runs on a new, clean context: confirm the content is right first, then deal with the wording.

Deterministic

The key red lines don't run on the model's mood

Number reconciliation once caught a "close to 50%" quietly changed to "about 48%" on the page. Anything that can be judged for certain is enforced by script, not left for the eye to catch.

Traced

State does not live in the model's memory

STATUS holds each topic's state, and published.txt is the single source of truth for the sitemap and homepage stats. A new agent can pick the work back up from the files alone.

For a one-person site, the value of this division of labor is not to remove the person entirely. Quite the opposite: it takes my attention back from a pile of repeated motions and leaves it only where a judgment is actually needed. After 39 bilingual web articles went live, I still change the rules, but I rarely walk the whole pipeline through by hand anymore.

Easter egg · one last piece of evidence

This page is not the manual for this pipeline.
It is a product the pipeline just delivered.

I give the direction and the verification; Claude organizes the structure and the constraints, GPT-5.6 generates the prose from a brief, and independent review plus deterministic checks handle the finish. The Easter egg is not tucked into some corner of the page. It is in how this page was made.

human direction structured brief cross-model draft independent review verification