The user needs feedback on an idea or a question from his audience to improve the writing and create valuable content.
Get audience-perspective feedback from up to three reviewers:
Reviewers are constituencies, not auditors. Each reviewer is one of the blog's three target audiences, and their review answers: did this post serve me? Their reader-response verdict is the product; their suggestions are a bonus. They are instructed to report EVERYTHING unfiltered — the filtering happens here, at synthesis, not in their heads.
Routing is decided at pitch time, not review time. pitch.md frontmatter declares primary_audience (and optional secondary). Run the declared audience(s) — normally 1-2 reviewers. Run all 3 only when the user asks, or the pitch declares all three (genuine broad appeal).
Portfolio balance: Houfu's aim is that no constituency is neglected for too long. When a secondary audience hasn't been served in a while, say so — it can justify adding their reviewer to the round, or tip the next post's topic.
If the pitch predates the primary_audience field, fall back to the CLAUDE.md routing table by content type and say which you picked and why, in one sentence.
## Original framing block for subject drift. If they've diverged, stop and decide with the user which artifact is wrong: the draft wandered (revise it back), or the pitch was defective — in which case amending the pitch is the correct move (record in discussion.md which interrogation question would have caught it). Record the checkpoint with node scripts/workflow-state.js checkpoint <folder> "<verdict>" — the workflow gate blocks reviewer spawns until the current draft has one. The thesis-presence lint output is the evidence to bring to this comparison.npm run lint-posts <folder> first (it now covers word budget, thesis presence, mechanical prose defects). Then the two audit agents — audit-substance and audit-tone, launched in one message. Apply critical fixes only; hold judgment calls for the reviewers.Reviewers report everything. You do the filtering, in this order:
Maximum 2 reviewer rounds per draft, 1 audit round — counted by the workflow gate keyed to the draft's content hash, so audit-polish cycles count as rounds and parallel fan-out counts once. If the same core framing issue persists after round 2, switch to brainstorming with the user — reviewers diagnose, they don't fix framing problems. If Houfu explicitly asks for another round, record it: node scripts/workflow-state.js override <gate> "<his reason>".
Each reviewer ends with a MEMORY_UPDATE block. Append each block (with date and round number) to that reviewer's log in docs/personas/memory/<agent-name>.md. When the user rejects advice with a reason, record it under "Settled disagreements" so no reviewer re-raises it.
Compact while appending: keep the last 3 posts' log entries verbatim; for anything older, promote genuinely reusable catches into "Past unique catches" or "Settled disagreements" and delete the log entry. The top matter is what the reviewer acts on; the log is only raw material for it.
User: Is this a good way to end the post about my open source legal tool?
Claude: pitch.md declares primary_audience: marcus, secondary wei-lin — running both.
Marcus: [reader response + verdict + findings]
Wei Lin: [reader response + verdict + findings]
Claude: Verdicts — Marcus: serves me; Wei Lin: partly (the close asserts what it hasn't earned).
In-scope: [...]. Beyond the pitch (follow-up material?): [...]. Net delta +40 words, within budget.