quality-loop
Quality Loop
Iterative drafting system with backpressure from judge personas. Creates high-quality content through systematic source gathering, hook-first drafting, and multi-pass quality gates.
When to Use This Skill
UNIVERSAL QUALITY GATES: This skill triggers for ALL public-facing content.
Trigger Points by Content Type
| Content Type | Trigger Point | Mode |
|---|---|---|
| Newsletter | After draft, before send | Full 5-judge |
| Deep Dive/Article | Before Webflow publish | Full 5-judge |
| Podcast blog | Before publish | Full 5-judge |
| LinkedIn post | After draft, before schedule | Lite 3-judge |
| X post | After draft, before schedule | Lite 3-judge |
| After draft + visual | Lite 3-judge | |
| After draft, before schedule | Lite 3-judge |
Full 5-Judge Mode
For long-form content (articles, newsletters, blog posts):
- Human Detector (BLOCKING)
- Accuracy Checker (BLOCKING)
- OpenEd Voice (BLOCKING)
- Reader Advocate (BLOCKING)
- SEO Advisor (ADVISORY)
Lite 3-Judge Mode
For social posts (faster, focused on voice and AI tells):
- AI-Tell Judge (BLOCKING) - Hard blocks only
- Voice Judge (BLOCKING) - Brand alignment
- Platform Judge (ADVISORY) - Platform-specific optimization
See "Lite Quality Loop for Social" section below.
The Quality Loop Process
SOURCES → HOOK → DRAFT → JUDGES → ITERATE
↑ ↓
└─────── (if blocked) ────┘
Phase 1: Source Compilation
Before drafting, gather all relevant sources into a single compiled file.
Source Search Order:
- Proprietary content first - Search OpenEd podcast transcripts, newsletters, Slack
- Content database - Grep
Content/for related themes (not just exact terms) - External research - Web search for biography, facts, external validation
When no direct coverage exists: Expand the search to related themes. For example, if writing about "Daniel Greenberg":
- Search for "democratic education"
- Search for "self-directed"
- Search for "trust children"
- Search for related thinkers who discuss him (Peter Gray)
Source File Format:
# Source: [Topic] Compiled
## Biographical Facts
- Key dates, roles, locations
- Verified from multiple sources
## OpenEd Proprietary Content
**From Podcast [Episode]:**
> "Direct quote..."
**From Newsletter:**
> "Direct quote..."
## Key Themes
- Theme 1 with supporting evidence
- Theme 2 with supporting evidence
## SEO Notes
- Primary keyword: [keyword] ([volume]/mo)
- Secondary keywords: [list]
## Sources for Verification
- [URL 1]
- [URL 2]
Phase 2: Hook First
Never draft without user approval of the hook angle. Propose 4-6 hook options with clear differentiation.
Hook Proposal Format:
| # | Hook | Opening Line | Why It Works |
|---|---|---|---|
| 1 | [Name] | "[First sentence]" | [Reasoning] |
| 2 | [Name] | "[First sentence]" | [Reasoning] |
| ... | ... | ... | ... |
Good hooks:
- Start with a specific moment, fact, or tension
- Create curiosity without clickbait
- Connect to something the reader cares about
- Differentiate from what's already ranking
Bad hooks:
- Generic "In today's world..." openings
- Definition-first approaches ("X is defined as...")
- Vague statements that could apply to anyone
After user selects a hook, proceed to drafting.
For series content: When writing multiple pieces on similar topics (e.g., profiles of thinkers), ensure each piece has a structurally different approach to avoid sameness. Examples:
- Profile A: Personal drama narrative
- Profile B: Scientific/research angle
- Profile C: Evolution story (phases of career)
- Profile D: Institutional critique
- Profile E: Evidence/longevity angle
Track the structural approach used for each piece to ensure variety.
Phase 3: Draft
Create the full draft following OpenEd style guidelines.
Draft Structure:
# Draft v[N]: [Title]
**Date:** [YYYY-MM-DD]
**Type:** [New / Enhancement]
**Target:** ~[X] words
---
## META ELEMENTS
**Title Options:**
1. [Option 1] ([char count])
2. [Option 2] ([char count])
...
**Meta Description (155 chars):** [Description]
**URL:** /blog/[slug]
---
## ARTICLE
[Full article content]
---
## NOTES FOR JUDGES
**Word count:** ~[X] words
**Internal links:** [N]
**External links:** [N]
**Target keywords:** [list]
**OpenEd connection:** [what makes this ours]
**Unique angle:** [what differentiates from competitors]
Phase 4: Five Judges
Run every draft through all five judges in order. If ANY blocking judge fails, fix and re-run that judge before proceeding.
Full judge references: See references/ folder for expanded criteria.
Judge 1: Human Detector (BLOCKING)
See: references/human-detector.md
Scans for AI tells. Zero tolerance for:
- Correlative constructions ("X isn't just Y - it's Z")
- Dramatic contrast reveals ("Not X. Y.")
- AI vocabulary (delve, comprehensive, crucial, landscape, journey, tapestry, myriad)
- Staccato patterns ("No fluff. No filler. Just results.")
- Triple Threat Syndrome (forced three-adjective stacks)
VERDICT: PASS only if zero AI tells found.
Judge 2: Accuracy Checker (BLOCKING)
See: references/accuracy-checker.md
Verifies all factual claims against compiled sources:
- Dates, names, quotes must match sources exactly
- Statistics need citations
- Timeline events in correct order
- No unverifiable claims presented as fact
VERDICT: PASS only if all facts verified.
Judge 3: OpenEd Voice (BLOCKING)
See: references/opened-voice.md
Core stance: Pro-child, not anti-school.
- Describes, doesn't prescribe
- Practical takeaways present
- 3+ internal links
- Uses proprietary OpenEd content
VERDICT: PASS only if aligned with stance.
Judge 4: Reader Advocate (BLOCKING)
See: references/reader-advocate.md
Assesses engagement:
- Hook creates curiosity (not definitions)
- Logical section flow
- Scannable structure
- Appropriate length
- Strong ending
VERDICT: PASS only if engaging throughout.
Judge 5: SEO Advisor (ADVISORY)
See: references/seo-advisor.md
Evaluates search optimization. Does not block.
- Keyword in title, first 100 words, H2s
- Meta elements optimized
- 5+ internal links, 2-3 external
- Featured snippet opportunities
VERDICT: Advisory feedback only.
Phase 5: Iterate
If any blocking judge fails:
- Make the specific fixes identified
- Re-run ONLY the failed judge
- If pass, continue to next judge
- If fail again, make additional fixes and repeat
After all judges pass:
- Update status in tracking document
- Move to next piece or finalize for publication
Folder Structure
The folder structure depends on the project type. Organize sources and drafts logically.
Example for profile series:
project/
├── sources/
│ ├── person-a/compiled-sources.md
│ └── person-b/compiled-sources.md
├── drafts/
│ ├── person-a/v1.md
│ └── person-b/v1.md
└── TRACKING.md
Example for guide project:
project/
├── sources/compiled-sources.md
├── drafts/
│ ├── v1.md
│ ├── v2.md
│ └── final.md
└── TRACKING.md
Tracking Progress
Maintain a tracking document showing status of each piece.
Tracking Table Format:
| Item | Sources | Hook | Draft | HD | AC | OV | RA | SEO | Status |
|---|---|---|---|---|---|---|---|---|---|
| [Name] | DONE | [Hook name] | v1 | PASS | PASS | PASS | PASS | PASS | COMPLETE |
| [Name] | DONE | pending | - | - | - | - | - | - | NEEDS HOOK |
Legend:
- HD = Human Detector
- AC = Accuracy Checker
- OV = OpenEd Voice
- RA = Reader Advocate
- SEO = SEO Advisor
Lite Quality Loop for Social
Faster quality checks for social posts. Run after draft, before scheduling.
Judge 1: AI-Tell Judge (BLOCKING)
Hard blocks - auto-reject if ANY found:
- Correlative constructions ("X isn't just Y - it's Z")
- Banned words: delve, comprehensive, crucial, leverage, landscape
- Setup phrases: "The best part?", "What if I told you", "Here's the thing"
- Staccato patterns: "No fluff. No filler. Just results."
- Em dashes without spaces (use " - " not "—")
VERDICT: PASS only if zero hard blocks found.
Judge 2: Voice Judge (BLOCKING)
Checks:
- Sounds like OpenEd/brand account (not personal blog)
- Aligns with Open Education values (parent empowerment, learner agency)
- Appropriate tone for platform
- No preachy or prescriptive language
VERDICT: PASS only if brand-aligned.
Judge 3: Platform Judge (ADVISORY)
Platform-specific checks:
| Platform | Checklist |
|---|---|
| 200-500 words, links in comments, 3-5 hashtags, hook in first 2 lines | |
| X | 70-100 chars optimal, 1-2 hashtags, retweet-worthy |
| Visual-first, caption supports, 5-10 hashtags, first 150 chars hook | |
| No external links, no hashtags, ends with question/engagement prompt |
VERDICT: Advisory feedback - does not block.
Lite Loop Process
DRAFT → AI-Tell Judge → Voice Judge → Platform Judge → SCHEDULE
↓ (fail) ↓ (fail)
FIX & RETRY FIX & RETRY
Quick Reference: AI Patterns to Avoid
Correlative Constructions (Most Common Tell)
- "X isn't just Y - it's Z"
- "X didn't Y. It Z."
- "The goal isn't X - it's Y"
- "It's not about X, it's about Y"
Forbidden Words
delve, comprehensive, crucial, vital, leverage, landscape, navigate, foster, facilitate, realm, paradigm, embark, journey, tapestry, myriad, multifaceted, seamless, cutting-edge
Forbidden Phrases
- "The best part? ..." / "The secret? ..."
- "What if I told you..." / "Here's the thing..."
- "In today's fast-paced..." / "In the ever-evolving..."
- "In conclusion" / "In summary"
- "Let that sink in" / "Now more than ever"
Dramatic Contrast Reveals (Priority #2)
- "Not on lessons. On fear."
- "Not the curriculum. The structure."
- "He didn't teach. He observed."
- Any "Not X. Y." fragment pattern
Forbidden Patterns
- Staccato: "No fluff. No filler. Just results."
- Triple adjectives: "Bold, beautiful, brilliant"
- Negation structure: "No X. No Y. Just Z."
Formatting Rules
- Use hyphens with spaces - like this - not em dashes
- No emojis in body content
- No bold for emphasis in articles