Synced from references/pillar-suggestion.md in script-pool skill on 2026-05-18. Edit upstream in the skill; this file is overwritten on next sync.

Pillar Suggestion — Heuristic + LLM-Judgment

Mode A and Mode C both auto-suggest pillar_primary + pillar_secondary. Daniel-confirms via AskUserQuestion (per locked decision: auto-with-confirm). This file specifies the suggestion logic.

Inputs

For each suggestion call:

  1. The clip cluster (one or more Readwise highlights with text + note + tags + show + episode)
  2. Daniel’s reflection (from Mode B, both dialogue and self-typed produce same shape)
  3. _brand/pillars.md — full file with 7 pillar definitions, triggers, anti-patterns

Output

{
  primary: { pillar: 1..7, confidence: 0..1, rationale: "<one-liner>" },
  secondary: { pillar: 1..7 | null, confidence: 0..1, rationale: "<one-liner>" }
}

Daniel sees primary.rationale and secondary.rationale in the AskUserQuestion description. Confidence values are internal — used to decide if a fallback question should be asked when primary confidence is below 0.6.

Heuristic phase (cheap, deterministic-ish)

Run keyword/trigger matching against _brand/pillars.md:

PillarStrong keywordsStrong triggers (from clip text + reflection)
1 — Intimate Domestic AI”evening”, “bedside”, “morning”, “kitchen”, “quiet”, “domestic”, “ritual”, “low-key”Anything that places AI in everyday rooms or daily life rhythms
2 — Privacy-First Architecture”data ownership”, “local”, “on-device”, “memory stays”, “no cloud”, “privacy”, “encryption”, “your data”Architectural-privacy claims, on-device guarantees
3 — Hardware Tangibility”hardware”, “device”, “fabric”, “visor”, “LED”, “circuit”, “PCB”, “ship”, “manufacturing”, “product photography”Physical/material aspect emphasis, hardware proof points
4 — Companion Philosophy”companion”, “relationship”, “tool”, “stateless”, “stateful”, “memory”, “continuity”, “across sessions”, “remembers”Categorical reframes about what AI is or should be
5 — Startup Realness”burning runway”, “N MRR”, “decided to”, “we got the call”, “yc”, “bootstrap”Specific founder numbers, hard-truth declarations
6 — Co-Founder Bridge”Daniel-the-founder”, “personal stake”, “I’m the one building”, “my team”, first-person agencyPersonal voice from Daniel as the founder, not the brand-account
7 — Process Transparency”Claude”, “Figma”, “skill”, “agent”, “Higgsfield”, “ffmpeg”, “Whisper”, “what I’m using”, “my stack”, “right now I’m”Tool naming + workflow showing in the moment

Score each pillar by count of triggered keywords/phrases in (clip text + Daniel reflection). Top score → primary suggestion. Second-place → secondary suggestion (if score > threshold of 1).

LLM-judgment phase (semantic)

If heuristic phase has ties OR low confidence (max score < 2), fall back to LLM judgment:

Read the following clip excerpt and Daniel’s reflection. Match against the 7 A Friend brand pillars defined in _brand/pillars.md. Return JSON with primary + secondary pillar choices, each with confidence (0-1) and a one-line rationale citing specific phrases from the clip OR reflection that triggered the choice. Bias toward Daniel-stated pillar choices in his reflection (Step 3) over your own analysis.

Conflict resolution

If Daniel’s reflection (Mode B Step 3) explicitly stated a pillar pairing:

  • Use Daniel’s stated pillars directly as the suggestion. Heuristic + LLM are advisory only.
  • Skill’s “rationale” then becomes: “Daniel-stated in reflection: ''.”
  • Confidence: 1.0 (Daniel-stated wins).

If Daniel didn’t state pillars in reflection:

  • Use heuristic + LLM-fallback as above.
  • Mark confidence honestly. If <0.6: AskUserQuestion offers more “alternative” options.

Ambiguity handling — “philosophy vs stack”

The clip + reflection often blurs Pillar 4 (philosophy) and Pillar 7 (process transparency). Common case:

  • A clip about “memory architecture” + reflection that mentions both “categorical reframe” AND “the persistence layer we’re building”
  • Suggestion: Pillar 4 lead + Pillar 7 anchor (locked stack pattern for educational format)

This dual-pillar pairing is the default for educational/thought-leadership content per _brand/pillars.md Pillar 7 distinction note. Lean toward this pairing when Pillar 4 + 7 both score in heuristic.

Pillar 5 + 6 awareness

Pillars 5 (Startup Realness) and 6 (Co-Founder Bridge) are powerful for educational content too — when Daniel makes a hard-truth claim about the industry or names his own architectural choice as a stake, those pillars activate.

But for podcast-derived clips: Pillar 5 typically requires Daniel-supplied numbers (“we did X with $Y in month Z”), which usually come from Daniel’s reflection, not the clip itself. Pillar 6 requires personal-stake voice — also from reflection.

Heuristic priority: weight reflection-keyword hits more heavily than clip-keyword hits for Pillars 5 and 6.

Forward extensibility

If Daniel adds Pillar 8+ in the future (canonical pillars file is at _brand/pillars.md), update:

  1. The trigger table in this file
  2. The schema enum range in .schema/script.frontmatter.schema.json (currently 1-7)
  3. The validator in scripts/voice-safety-check-deterministic.mjs (gate 5)

The suggestion code is structured around an iterable list of pillars; adding new ones is additive.