Synced from
references/pillar-suggestion.mdinscript-poolskill 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:
- The clip cluster (one or more Readwise highlights with text + note + tags + show + episode)
- Daniel’s reflection (from Mode B, both dialogue and self-typed produce same shape)
_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:
| Pillar | Strong keywords | Strong 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 agency | Personal 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:
- The trigger table in this file
- The schema enum range in
.schema/script.frontmatter.schema.json(currently 1-7) - 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.