BRUTAL. Solution Story Engine

Registry

The content radar and the variety enforcer's memory, rendered live.

Solutions registry

Every solution Brutal has built or is building, and its content status. The "what to write next" radar and the variety enforcer's memory. Stage 10 updates it; stage 3 consults it.

Statuses: no-recordrecord-draftedverifiedpost-draftedpublished · plus needs-material (failed differentiation twice) and parked.

solution_id client (real) pillar status archetype used angle (one line) post
semantic-layer GoStudent / KTM / e-motion (pattern across 3) visibility verified + post-drafted v2 engineering-essay (49/50; GoStudent L0, others L2) pattern metrics get gamed via definitional ambiguity; canonical definitions + machine exhaust fix it examples/gold-standard-post.md (+ .de, .derivatives)
gostudent-outreach-sequencer GoStudent workflow-automation verified + post-drafted v2 engineering-essay (49/50; GoStudent + brands L0) build-story tools give infrastructure; the missing layer was expertise, so we built the operator in examples/second-post.md (+ .de, .derivatives)
alpha-mail-fork (unnamed; fork client TBD) workflow-automation no-record fork-as-whitelabel: "copy the tool like a doc"
centre-in-a-box-procurement GoStudent workflow-automation no-record launching 2 centres/month with no ops: procurement as a system
tic-audit-engine Accuracy Labs (own venture) custom-ml no-record deterministic layer before any model call
delivery-dashboard (product; Austrian restaurants) visibility no-record "a partial total never looks complete": trust rules for revenue data
case-study-engine Brutal (internal) workflow-automation no-record interview → gated pipeline → published case study; the machine that writes the proof

Backlog notes (future angles logged at stage 3)

  • From sequencer angle-selection: A2 "affordability-band fencing" reserved as a future Hard Problem post (hard-part strength 5; do not fold into other posts meanwhile).
  • Semantic-layer record: revisit after KTM pilot produces eval results → potential archetype 5 (The Number) with a real measured metric.
  • Approved for the backlog (operator, 2026-07-24): the AI-builder story, one human + Claude Code shipping client software, as its own future post (solution_id: ai-built-it).
  • Sequencer record: [[NEEDS]] items (N=10 sign-off outcome, real usage/spend) convert the build-story into a results-bearing follow-up when resolved.

Published index

One row per published post, in publish order. Read by: stage 3 (variety), stage 10 (internal links), seo-aeo step 5. Append-only; unpublishing marks a row retired, never deletes it.

# slug title lang archetype opening move skeleton cta id publish date url
d1 semantic-layer The semantic layer: computing truth instead of collecting it en pattern scene pattern quiet-door (draft v2)
d2 outreach-sequencer Building an outreach sequencer for managers who don't write copy en build-story what-we-built build-story plain-address (draft v2)

Internal-linking map (grows with the index)

  • semantic-layer ↔ gostudent-outreach-sequencer (same ecosystem: visibility ↔ workflow pillars)
  • future: delivery-dashboard → semantic-layer (reconciliation DNA)

Phrase ledger

The variety enforcer's memory: openings, metaphors, CTA phrasings, hooks already spent. Stage 10 appends after every publish; the stage-9 gate and checks.py (--ledger) read it. Append-only.

how to read this file

  • ## do-not-reuse is machine-checked: checks.py hard-fails any post/derivative containing one of these strings verbatim. Keep entries short and distinctive (5–10 words).
  • The check is for NEW drafts (runbook step 8 runs before step 10 registers the post). Re-running checks.py --ledger on an already-registered post flags its own spent phrases; that is expected, not a defect. Verify old posts without the --ledger flag.
  • The tables below are human-checked at stage 9: same opening MOVE two posts running, same skeleton back-to-back, or a metaphor's second appearance = gate failure.

do-not-reuse

  • the improvisation surface is gone
  • industrialises the ambiguity
  • a very legible rendering of a contested number
  • promoted from author to editor
  • The stone, it turns out, is a dictionary
  • numbers that arrive late and pre-flattered
  • a contract instead of a hope
  • a cost wearing a capability's badge
  • the old problem wearing a helmet
  • What comes back is not a number. It is a negotiation.

opening moves used

post move id first line (for the human check)
semantic-layer (v2) scene "A CEO wants one number: how many no-shows at the branch that opened two months ago."
outreach-sequencer (v2) what-we-built "We recently built an internal tool for GoStudent, the tutoring group…"

metaphors and named patterns spent

metaphor / coined term post note
"Sauron's Eye" (internal nickname) PRE-SPENT: never use in posts
Palantir / seeing-stones → "the stone is a dictionary" semantic-layer its once-ever use is now consumed
"definitional gaming" semantic-layer coined term; reuse ALLOWED as established vocabulary, not as fresh coinage
"machine exhaust" semantic-layer same: established vocabulary after this post
"pre-flattered numbers" semantic-layer spent
"editor, not author" outreach-sequencer spent as a framing move
"contract instead of a hope" outreach-sequencer spent (builder quote, one use)
"wearing a helmet" / "capability's badge" outreach-sequencer spent

CTA variants used

post cta id
semantic-layer quiet-door
outreach-sequencer plain-address (v2; specific-offer retired with v1)
(next in rotation: next-case)

derivative hooks spent

post linkedin hooks newsletter subject
semantic-layer "Your CEO waits days for a number…" / "A dashboard cannot fix a metric nobody defined." / "The centre manager is not lying." Your metric has no definition. Your team knows.
outreach-sequencer "Cold email didn't fail…for lack of tooling." / "The most important function in this build throws exceptions on purpose." / "…someone who struggles to connect WhatsApp Web to a phone." The tools were fine. The copywriter was missing.