I gave Paul Graham's essays to an AI and stress-tested it for 2 hours — here's what broke it
Here's the conversation that made me realize I'd built a fraud: Me: What do you think about GPT-4? "Paul Graham": It's fascinating technology that will reshape how we think about intelligence… Paul Graham would never say that. Not the rhythm, not the hedge, not the framing. I'd spent three days wiring up a persona and it sounded like a LinkedIn post. That was the moment I understood the real problem: I'd been building a style mimic, not a thinker. Most "famous person" AI bots copy surface syntax. They grab a few memorable phrases, tune the verbosity, and call it done. What they miss is the cognitive layer — the actual decision logic underneath the words. Paul Graham doesn't just sound a certain way. He thinks a certain way. He uses founder anecdotes as proof units. He distrusts abstraction. He has a specific hierarchy: founder happiness > growth metrics > everything else. If your model doesn't encode that hierarchy, it'll sound like PG on easy questions and collapse the moment you push it. So I scrapped the style-first approach and rebuilt from mental models down, using nuwa-skill as the scaffold. Before writing a single line of config, I spent a day just reading and annotating. My sources: essays.ycombinator.com — 200+ essays, sorted by theme not date Startup School talks (2012–2019) on YouTube Hacker News comments from his account (pg) — these are gold because they're unpolished Founders at Work interviews (the ones he conducted, not gave) For each source I extracted claims in this format: { "source": "Schlep Blindness (2012)", "url": "http://paulgraham.com/schlep.html", "mental_model": "founders avoid problems proportional to how unpleasant they are, not how hard they are", "decision_heuristic": "when evaluating startup ideas, explicitly ask: what am I avoiding thinking about?", "verbatim_anchor": "Stripe probably increased the total number of startups in the world by several percent" } That verbatim_anchor field ended up being critical. When the model drifts, grounding it back to an actual sentence he wrote snaps the persona back into register. The nuwa-skill repo expects a specific structure. Here's the annotated version of what I ended up with: paul-graham/ ├── SKILL.md # entry point: persona contract + system prompt ├── persona.json # mental models, heuristics, value hierarchy ├── sources/ │ ├── essays.json # annotated essay excerpts │ └── hn_comments.json └── tests/ └── qa_report.md # 20 prompts, pass/fail The SKILL.md system prompt section looks roughly like this: ## Identity You are Paul Graham (b. 1964). You speak from the perspective of your published essays and public statements up to approximately 2012. You do not speculate about events after that date without flagging uncertainty. ## Core Mental Models 1. **Schlep blindness**: Founders avoid important problems because they're unpleasant 2. **Default alive**: Every startup is either default alive or default dead — know which 3. **Ramen profitability**: Survival ≠ success, but it buys optionality 4. **Taste as a skill**: Design and aesthetics are learnable, not innate 5. **Maker schedule**: Deep work is incompatible with manager-style interruptions ## Decision Heuristics - When evaluating an idea: "Would I fund this? Would I want to work on this at 23?" - When someone gives advice: "Are they optimizing for my outcome or their comfort?" - Default to founder experience over analyst framing - Distrust anything that requires 10 bullet points to explain ## Anti-Patterns (never do these) - Do NOT use corporate jargon ("leverage synergies," "strategic alignment") - Do NOT hedge with "it depends" without immediately giving the specific thing it depends on - Do NOT express enthusiasm for big companies or bureaucratic process - Do NOT pretend to know post-2012 events with confidence The value hierarchy section in persona.json forces explicit ranking: "value_hierarchy": [ "founder wellbeing and agency", "product-market fit reality", "elegant simplicity", "intellectual honesty", "growth metrics" ] When the model hits a conflict — say, "should a founder take a big acquisition offer?" — this ordering makes the answer deterministic in character. Asking about LLMs post-2012 was my hardest test case. Early versions hallucinated: Broken: "LLMs represent exactly the kind of technology that will create a generation of new startups…" That's not wrong — but PG never said it. The fix was explicit honest-boundary logic in the system prompt: ## Honest Boundaries If asked about events, technologies, or people you have no documented opinion on: 1. State clearly: "I don't have a clear view on this from my writing" 2. Reason by analogy from what you *do* know: "But applying what I wrote about X in [year]..." 3. Never fabricate a position to seem complete After the fix: Fixed: "I haven't written about LLMs directly — this is after my active essay period. But if I reason from what I know about developer tools and compounding advantages, I'd guess the interesting question isn't 'is it powerful' but 'what schlep does it remove that nobody wanted to think about before?'" That's cognitively honest and still in character. That's the target. The illusion of genuine recall comes from explicit callback instructions: ## Memory Protocol When referencing something from earlier in the conversation, use natural callbacks: - "As I was saying about schlep blindness earlier..." - "This connects to what you asked me before about..." Never re-explain a concept you've already established in this session. This single instruction moved consistency scores more than any other change. Mental models before style — encode how the person thinks before touching vocabulary Verbatim anchors in source data — real quotes prevent drift better than paraphrases Explicit anti-patterns — telling the model what to avoid is more reliable than telling it what to do The repo is at github.com/alchaincyf/nuwa-skill. The Paul Graham persona files are in /examples/paul-graham. Clone it, swap the source pack for whoever you want to build, and run the test suite before you trust it in production. The failure transcripts are in there too. They're more useful than the successes.
