Alpha-Reader Toolkit · the catalogue
v1.0 · May 2026 · MIT

Honest critique from LLM personas, despite the training.

A Python pipeline for getting alpha-reader feedback on a fiction manuscript that pushes past RLHF sycophancy. Anti-sycophancy bindings, two-pass design, multi-model dispatch, reflexive Opus self-critique. ~$8-25 per full novel.

— start here

Read the methodology first.

"v1 produced 7/7 keep-reading verdicts on a manuscript that needed serious rework. v0.4 rebuilds the cohort to push past that."

Read METHODOLOGY.md for the four mechanisms (anti-sycophancy bindings, two-pass design, reflexive self-critique, multi-model dispatch). Then the personas snapshot for the 9-persona cohort and the 10 universal anti-sycophancy bindings. Then run new-splinter.py on a test manuscript.

— I

The Pipeline — scaffolder + orchestrator + analyzer

Three Python scripts plus a scaffolder that turns "I have a manuscript" into "ready to fire" in ~2 minutes.

1.1
new-splinter.py
Scaffolder · ~2 minutes from manuscript to ready
One command: converts manuscript (.docx → .md), generates book_config.yaml + CLAUDE.md + kickoff, copies orchestrator + analyzer + auth_probe + personas, optionally sources API key, runs readability analyzer.
1.2
run-alpha-reader.py
Canonical orchestrator · 1072 lines · reads book_config.yaml
Runs personas across passes with anti-sycophancy bindings, multi-model dispatch (Sonnet for most, Opus for adversarial + audit), reflexive self-critique, atomic state for resume.
1.3
readability_analyzer.py
textstat metrics panel
Per-chapter and whole-book readability stats (FK, FRE, sentence/word/syllable averages). Output feeds into per-persona symmetric FK guard binding.
1.4
auth_probe.py
Verify API key pre-fire
~30-line script that does a single low-cost API call to confirm the loaded key works. Run before firing 9 personas across 2 passes.
1.5
install-into-existing-splinter.sh
Refresh toolkit in existing project (.sh + .ps1)
Brings an existing project up to current toolkit version. Replaces orchestrator/personas without touching manuscript/runs/book_config.
— II

Methodology — how the pipeline pushes past sycophancy

Four overlapping mechanisms. Each is partial alone; together they produce noticeably more honest output.

2.1
METHODOLOGY.md
The full read
All four mechanisms (anti-sycophancy bindings, two-pass design, reflexive self-critique, multi-model dispatch). When to use, when not to. Honest limits.
2.2
9-persona snapshot
Anti-sycophancy preamble + persona profiles
The 10 universal bindings (rating discipline, no hedging, DNF honesty, no conversion arcs, no warmth padding, forced negative generation Q0, mandatory 1-star Q9, comp ranking, distribution prediction, authority-relationship inversion). 7 lane-specific personas + 2 adversarial (Veronica, Emma).
— III

Templates — per-project scaffolds

The scaffolder generates these for new projects. Reference copies for existing projects or manual setup.

3.1
book_config.yaml
Per-project config schema
Load-bearing — orchestrator reads from this. Defines book metadata, manuscript path, genre context, cost cap, model defaults, optional Pass B reference files.
3.2
CLAUDE.md template
Per-project Claude Code context
Project-scoped configuration: cost discipline, fire commands, persona roster, hard rules. Generated by scaffolder; customize per project.
3.3
Kickoff template
Project kickoff document
Authorization-gate document with pipeline architecture, fire commands, pre-fire checklist, post-fire deliverables list.
3.4
.env.example
API key template
Note: the .env loader uses python-dotenv with override=True to bypass session-injected Claude Code tokens that fail on direct API calls.
3.5
.gitignore template
Defensive gitignore
Excludes .env, runs/ (sensitive: contains critique of unpublished manuscript), Python build artifacts.
— for non-github readers

Send a quick note.

Used the toolkit on your own manuscript? Hit a problem with the pipeline? Have findings on calibration vs human alpha readers? This form goes straight to the maintainer.

If you have a GitHub account, opening an issue is preferred. This form is the path for everyone else.