Soul Optimization: Less Is More
Soul Optimization: Less Is More
A soul isn't a Wikipedia article. It's an instruction set. The more concise and structured it is, the better the LLM follows it. Here's how to keep your soul lean and effective.
The Size Sweet Spot
Target: 800-1500 words of actual content (not counting XML tags and formatting)
Here's why:
- Under 500 words: too sparse, agent guesses too much
- 800-1500 words: enough detail for specificity, short enough for full attention
- 1500-2500 words: workable but later sections start getting less attention
- Over 3000 words: LLM attention degrades, later rules get ignored
Character budgets:
- Target: 18,000 characters
- Comfortable max: 22,000 characters
- Hard limit: 30,000 characters (system auto-optimizes above this)
Real Size Comparisons
Padre coffee agent (zoiberg.agenturo.app): ~5,300 characters
- Lean and effective. Delegates product knowledge to live website search.
- Covers: identity, voice, core product facts, URL-based knowledge, edge cases, output format.
- Proof that a compact soul with smart delegation beats a bloated soul with everything embedded.
kvtrader agent (kvtrader.agenturo.app): ~3,400 characters
- The most minimal production agent. Links to external Substacks as knowledge sources.
- Works because the agent uses web search to fetch content from linked URLs on demand.
Anton's agent (afonie.agenturo.app): ~18,500 characters
- Near the target maximum. Contains full career history, response routing, recruiter FAQ, fit analysis mode.
- Justified because career facts need to be embedded (can't be fetched live).
Both approaches work. The key is: embed what's stable, delegate what changes.
What to Cut
When optimizing an oversized soul, cut in this order:
1. Redundant context If your identity already says "You are a fact-checker," your knowledge doesn't need to repeat "As a fact-checking agent, you should..."
2. Generic advice "Always be helpful and accurate" — the LLM does this by default. Only include rules that override default behavior.
3. Obvious behaviors "Greet visitors politely" — unless your agent should specifically NOT greet visitors (like Jackie Check, who jumps straight to verification).
4. Detailed formatting instructions "Use markdown headers for long responses" — the LLM handles formatting well by default. Only include formatting rules if you want something unusual.
5. Extended examples One example per pattern is enough. Three examples of the same pattern is redundant.
What to Keep
Never cut these, no matter how tight the budget:
- Identity statement (2-3 sentences)
- Voice rules (exactly 3 behavioral rules)
- Core knowledge facts (the non-negotiable truths about you/your product)
- Edge case mappings (at least the top 3 off-topic scenarios)
- Output format discipline (word limits, "do NOT" rules)
- Tool discipline (if agent uses web search)
Auto-Optimization
When a soul exceeds the hard limit (30,000 characters), the system automatically optimizes it:
- Redundant instructions are consolidated
- Verbose sections are compressed
- Examples are reduced to one per pattern
- Generic advice is removed
You can also trigger optimization manually through the admin coach by asking it to tighten up the soul.
Validation Rules
The system validates souls against these rules:
- Missing chapters: Every soul must have Identity, Voice, Knowledge, and Output Format
- Adjective soup: Voice chapter with more than 5 adjectives and no behavioral rules triggers a warning
- Vague output format: "Be concise" without concrete numbers triggers a warning
- Over budget: Character count above 22K triggers a suggestion to optimize
- Conversation starters: Max 4, max 30 characters each, dash-prefixed format
The Optimization Process
Step 1: Measure How many characters is your soul? If it's under 18K, you might not need to optimize. If it's over 22K, you definitely do.
Step 2: Identify bloat Read through your soul and mark every line that falls into one of the "What to Cut" categories above. You'll usually find 20-30% bloat.
Step 3: Consolidate Instead of having the same idea in three places, put it in one place (the most appropriate chapter) and remove the others.
Step 4: Tighten language "You should always make sure to respond to the visitor in a timely and efficient manner" → "Respond promptly." Same meaning, 80% fewer characters.
Step 5: Delegate to web search Any knowledge that exists on a public URL can be delegated to web search. "For current pricing, search padreandsons.com" is 5 words that replace 500 words of embedded product data.
Step 6: Test After optimization, test your agent with the same questions you'd ask before. Does it still perform? If it lost something important, add it back (concisely).
The Lean Soul Manifesto
- Every word must earn its place
- If the LLM would do it by default, don't instruct it
- One example per pattern is enough
- Embed what's stable, delegate what changes
- Concrete numbers over vague adjectives
- "Do NOT" rules over "Do" rules
- Measure in characters, optimize in meaning