Skip to content

Commit dd6d0a9

Browse files
stubborncoderclaude
andcommitted
Add Fibonacci Pipeline blog post (60/30/10 ratio for agent pipelines)
Standalone post on integrating AI agents into enterprise operations: 60% deterministic code, 30% LLM reasoning, 10% human judgment. Credits Nate Herk and AI Automation Society. Unlisted for review. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 3d524bc commit dd6d0a9

1 file changed

Lines changed: 284 additions & 0 deletions

File tree

Lines changed: 284 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,284 @@
1+
---
2+
import BaseLayout from '../../layouts/BaseLayout.astro';
3+
---
4+
5+
<BaseLayout
6+
title="The Fibonacci Pipeline: How Much of Your Business Should an Agent Run? ~/stubborncoder"
7+
description="A simple ratio for integrating AI agents into enterprise operations: 60% deterministic code, 30% LLM reasoning, 10% human judgment."
8+
activeLink="writing"
9+
>
10+
11+
<section class="post-hero">
12+
<div class="post-hero-bg"></div>
13+
<div class="post-hero-overlay"></div>
14+
<div class="post-hero-content wrap">
15+
<a href="/#writing" class="post-back reveal">&#8592; Back to writing</a>
16+
17+
<div class="post-meta-top reveal">
18+
<span>April 2026</span>
19+
<span>&middot;</span>
20+
<span>6 min read</span>
21+
</div>
22+
23+
<h1 class="reveal">The <span class="em">Fibonacci Pipeline</span></h1>
24+
25+
<p class="post-subtitle reveal">
26+
How much of a business process should an agent actually run?
27+
There's a ratio that works. And it's not 100%.
28+
</p>
29+
30+
<div class="post-tags-row reveal">
31+
<span class="post-tag post-tag--ember">AI Agents</span>
32+
<span class="post-tag post-tag--gold">Enterprise</span>
33+
<span class="post-tag">Pipeline Design</span>
34+
<span class="post-tag">Architecture</span>
35+
</div>
36+
</div>
37+
</section>
38+
39+
<main class="wrap">
40+
<article class="article">
41+
42+
<h2 class="reveal">The question nobody's asking</h2>
43+
44+
<p class="reveal">
45+
Everyone's talking about what agents can do. Very few people are asking how
46+
much of a business process they <em>should</em> do.
47+
</p>
48+
49+
<p class="reveal">
50+
There's a temptation, especially now, to hand the whole thing over. Read the
51+
data, make the decision, take the action, done. Full autonomy. But if you've
52+
ever built something that runs inside a real company, you know that's not how
53+
trust works. Finance teams don't hand over the keys because your demo looked
54+
good. Operations teams don't let code approve purchase orders because it
55+
passed a benchmark.
56+
</p>
57+
58+
<p class="reveal">
59+
So you need a ratio. How much is code, how much is model, how much is human.
60+
And it turns out there's one that works.
61+
</p>
62+
63+
<h2 class="reveal">60 / 30 / 10</h2>
64+
65+
<div class="ratio-visual reveal">
66+
<div class="ratio-bar">
67+
<div class="ratio-segment ratio-segment--code" style="flex: 6;">
68+
<span class="ratio-pct">60%</span>
69+
<span class="ratio-label">Deterministic</span>
70+
</div>
71+
<div class="ratio-segment ratio-segment--llm" style="flex: 3;">
72+
<span class="ratio-pct">30%</span>
73+
<span class="ratio-label">LLM</span>
74+
</div>
75+
<div class="ratio-segment ratio-segment--human" style="flex: 1;">
76+
<span class="ratio-pct">10%</span>
77+
<span class="ratio-label">Human</span>
78+
</div>
79+
</div>
80+
</div>
81+
82+
<p class="reveal">
83+
<strong>60% deterministic.</strong> Code. Rules. Arithmetic. Structured queries.
84+
The stuff that should never hallucinate because it never involves a model.
85+
Matching a PO against an invoice is math. Checking a threshold is a comparison.
86+
Validating a field is a regex. These steps are the backbone of the pipeline
87+
and they need to be rock solid.
88+
</p>
89+
90+
<p class="reveal">
91+
<strong>30% LLM-assisted.</strong> This is where the model earns its keep.
92+
Reasoning about context. Classifying things that don't fit neatly into rules.
93+
Drafting communication that needs to sound human. Weighing materiality when the
94+
numbers alone don't tell the full story. You want the model here because these
95+
are the steps where code alone falls short.
96+
</p>
97+
98+
<p class="reveal">
99+
<strong>10% human.</strong> Approve. Override. Make the final call on the edge
100+
cases. This isn't busywork, it's the part that keeps the business accountable.
101+
A human looks at what the pipeline produced, confirms it makes sense, and hits
102+
go. Or doesn't, and says why.
103+
</p>
104+
105+
<h2 class="reveal">Why this ratio works</h2>
106+
107+
<p class="reveal">
108+
It's not magic. It's about matching each step to whatever does it best.
109+
</p>
110+
111+
<p class="reveal">
112+
The deterministic 60% gives you <em>reliability</em>. These steps produce the
113+
same output every time for the same input. No temperature, no prompt
114+
sensitivity, no "it worked yesterday but not today." When something goes wrong,
115+
you can trace it. When an auditor asks what happened, you can show them exactly.
116+
</p>
117+
118+
<p class="reveal">
119+
The LLM 30% gives you <em>intelligence</em>. These are the steps that used to
120+
require a person not because they were hard, but because they needed judgment.
121+
"Is this price variance a mistake or a renegotiated contract?" "Should we
122+
escalate this or wait?" "How do I write this email so the vendor actually fixes
123+
it?" Code can't do that. Models can, if you scope them right.
124+
</p>
125+
126+
<p class="reveal">
127+
The human 10% gives you <em>trust</em>. The pipeline doesn't run off into the
128+
dark. Someone is in the loop, but only for the decisions that matter. They're
129+
not reviewing every invoice or reading every email. They're reviewing the ones
130+
the agent flagged as interesting.
131+
</p>
132+
133+
<blockquote class="reveal">
134+
<p>The goal isn't to remove people from the process. It's to stop wasting them on the parts that don't need them.</p>
135+
</blockquote>
136+
137+
<h2 class="reveal">What happens when the ratio is off</h2>
138+
139+
<p class="reveal">
140+
Too much LLM and not enough deterministic? You get inconsistency. The same
141+
invoice gets different results on Tuesday than it got on Monday. Your audit
142+
trail becomes "the model thought this was fine." Good luck explaining that to
143+
compliance.
144+
</p>
145+
146+
<p class="reveal">
147+
Too much deterministic and not enough LLM? You're back to where you were five
148+
years ago. A rules engine that breaks every time reality doesn't fit the rules.
149+
Nobody can explain the edge cases because nobody built for them.
150+
</p>
151+
152+
<p class="reveal">
153+
Too much human and not enough automation? Then you haven't actually automated
154+
anything. You've just added a dashboard to someone's already full day. The whole
155+
point was to free up the team for the work that actually needs their brain.
156+
</p>
157+
158+
<h2 class="reveal">How to think about it for your process</h2>
159+
160+
<p class="reveal">
161+
Take any business process and break it into steps. For each step, ask one
162+
question: <em>does this need judgment or just execution?</em>
163+
</p>
164+
165+
<p class="reveal">
166+
If it's execution, make it deterministic. Write it in code. Test it. Don't
167+
involve a model.
168+
</p>
169+
170+
<p class="reveal">
171+
If it needs judgment, ask a second question: <em>is the judgment routine or
172+
genuinely complex?</em> Routine judgment (classify this, draft that, pick from
173+
these options) is the model's territory. Complex judgment (approve a &euro;500K
174+
exception, override a vendor relationship decision) stays with a person.
175+
</p>
176+
177+
<p class="reveal">
178+
You'll find that most processes naturally land around 60/30/10. Not exactly,
179+
because the numbers aren't the point. The principle is: <strong>build the
180+
pipeline around code, use the model where it adds something code can't, and
181+
keep humans on the decisions that carry real weight.</strong>
182+
</p>
183+
184+
<h2 class="reveal">Credit where it's due</h2>
185+
186+
<p class="reveal">
187+
This idea crystallized for me after conversations with
188+
<a href="https://www.skool.com/ai-automation-society/about" target="_blank" class="inline-link">Nate Herk</a>
189+
and the AI Automation Society community. The framing of agents as participants
190+
in a larger flow, not replacements for the flow, is something I keep coming
191+
back to when designing systems for enterprise clients. The Fibonacci name is
192+
mine, the intuition behind the ratio is shared.
193+
</p>
194+
195+
<div class="article-footer reveal">
196+
<div class="article-footer-label">Connect</div>
197+
<div class="resource-links">
198+
<a href="https://linkedin.com/in/daviddiaztrapero" target="_blank" class="original-link">LinkedIn &#8594;</a>
199+
<a href="https://www.skool.com/ai-automation-society/about" target="_blank" class="original-link">AI Automation Society &#8594;</a>
200+
</div>
201+
</div>
202+
203+
</article>
204+
205+
<section class="more-posts">
206+
<div class="more-posts-title">More writing</div>
207+
<a href="/blog/invoice-verification-agent" class="more-row">
208+
<span class="more-date">2026.04</span>
209+
<span class="more-title">Let AP Clerks Do the Work That Needs a Human</span>
210+
<span class="more-src">CFO Living Examples, Part 2</span>
211+
</a>
212+
<a href="/blog/ar-collections-agent" class="more-row">
213+
<span class="more-date">2026.04</span>
214+
<span class="more-title">Your AR Team Just Got an Agent That Never Sleeps</span>
215+
<span class="more-src">CFO Living Examples, Part 1</span>
216+
</a>
217+
<a href="/blog/multimodal-embeddings" class="more-row">
218+
<span class="more-date">2026.04</span>
219+
<span class="more-title">Multimodal Embeddings: One Model, One Vector Space</span>
220+
<span class="more-src">LinkedIn</span>
221+
</a>
222+
</section>
223+
</main>
224+
225+
</BaseLayout>
226+
227+
<style>
228+
.post-hero { position: relative; padding: 10rem 0 4rem; overflow: hidden; }
229+
.post-hero-bg { position: absolute; inset: 0; background: url('https://images.unsplash.com/photo-1509228468518-180dd4864904?w=1920&q=80') center/cover no-repeat; filter: blur(8px) saturate(0.3) brightness(0.25); transform: scale(1.05); transition: filter var(--ease); }
230+
:global([data-theme="light"]) .post-hero-bg { filter: blur(8px) saturate(0.35) brightness(1.1); }
231+
.post-hero-overlay { position: absolute; inset: 0; background: var(--hero-overlay); mask-image: linear-gradient(to bottom, rgba(0,0,0,0.3) 0%, rgba(0,0,0,1) 70%); -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,0.3) 0%, rgba(0,0,0,1) 70%); }
232+
.post-hero-content { position: relative; z-index: 2; max-width: 720px; }
233+
.post-back { font-size: 0.75rem; color: var(--text-lo); display: inline-flex; align-items: center; gap: 6px; margin-bottom: 2rem; transition: color 0.2s; text-decoration: none; }
234+
.post-back:hover { color: var(--ember); }
235+
.post-meta-top { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; font-size: 0.72rem; color: var(--text-lo); flex-wrap: wrap; }
236+
.post-hero h1 { font-family: 'Libre Baskerville', serif; font-size: clamp(2rem, 4.5vw, 3rem); font-weight: 400; line-height: 1.25; color: var(--text-hi); letter-spacing: -0.02em; margin-bottom: 1.5rem; }
237+
.post-hero h1 .em { color: var(--ember); font-style: italic; }
238+
.post-subtitle { font-size: 1rem; color: var(--text); max-width: 560px; line-height: 1.8; }
239+
.post-tags-row { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-top: 1.5rem; }
240+
.post-tag { font-size: 0.65rem; padding: 3px 8px; border-radius: 4px; border: 1px solid var(--border); color: var(--text-lo); }
241+
.post-tag--ember { color: var(--ember); border-color: var(--ember-border); background: var(--ember-glow); }
242+
.post-tag--gold { color: var(--gold); border-color: rgba(212,166,69,0.2); background: var(--gold-dim); }
243+
244+
.article { max-width: 720px; padding: 4rem 0 6rem; }
245+
.article h2 { font-family: 'Libre Baskerville', serif; font-size: 1.4rem; font-weight: 400; color: var(--text-hi); margin-top: 3rem; margin-bottom: 1rem; padding-top: 2rem; border-top: 1px solid var(--border); }
246+
.article h2:first-child { border-top: none; padding-top: 0; margin-top: 0; }
247+
.article p { font-family: 'Libre Baskerville', serif; font-size: 0.95rem; line-height: 1.9; color: var(--text); margin-bottom: 1.25rem; }
248+
.article strong { color: var(--text-hi); font-weight: 600; }
249+
.article em { color: var(--ember); font-style: italic; }
250+
.article blockquote { border-left: 3px solid var(--blockquote-border); background: var(--blockquote-bg); padding: 1.25rem 1.5rem; margin: 2rem 0; border-radius: 0 8px 8px 0; }
251+
.article blockquote p { font-style: italic; color: var(--text-hi); margin-bottom: 0; font-size: 0.92rem; }
252+
253+
.ratio-visual { margin: 2rem 0; }
254+
.ratio-bar { display: flex; border-radius: 10px; overflow: hidden; height: 72px; border: 1px solid var(--border); }
255+
.ratio-segment { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; transition: all 0.3s; }
256+
.ratio-segment--code { background: var(--bg-card); border-right: 1px solid var(--border); }
257+
.ratio-segment--llm { background: var(--ember-glow); border-right: 1px solid var(--border); }
258+
.ratio-segment--human { background: var(--gold-dim); }
259+
.ratio-pct { font-size: 1.1rem; font-weight: 600; color: var(--text-hi); }
260+
.ratio-label { font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-lo); }
261+
.ratio-segment--code .ratio-pct { color: var(--ash); }
262+
.ratio-segment--llm .ratio-pct { color: var(--ember); }
263+
.ratio-segment--human .ratio-pct { color: var(--gold); }
264+
265+
.inline-link { color: var(--ember); text-decoration: underline; text-underline-offset: 3px; transition: color 0.2s; }
266+
.inline-link:hover { color: var(--gold); }
267+
268+
.article-footer { border-top: 1px solid var(--border); padding-top: 2.5rem; margin-top: 3rem; }
269+
.article-footer-label { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-lo); margin-bottom: 1rem; }
270+
.resource-links { display: flex; gap: 0.75rem; flex-wrap: wrap; }
271+
.original-link { display: inline-flex; align-items: center; gap: 8px; font-size: 0.82rem; color: var(--text-hi); padding: 0.65rem 1.1rem; border: 1px solid var(--border); border-radius: 8px; transition: all 0.2s; text-decoration: none; }
272+
.original-link:hover { border-color: var(--ember-border); color: var(--ember); }
273+
274+
.more-posts { padding: 4rem 0; border-top: 1px solid var(--border); }
275+
.more-posts-title { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-lo); margin-bottom: 1.5rem; }
276+
.more-row { display: grid; grid-template-columns: 90px 1fr auto; gap: 1.5rem; align-items: baseline; padding: 1.25rem 0; border-top: 1px solid var(--border); cursor: pointer; transition: all 0.2s; text-decoration: none; }
277+
.more-row:hover { padding-left: 0.75rem; }
278+
.more-row:hover .more-title { color: var(--ember); }
279+
.more-date { font-size: 0.72rem; color: var(--text-lo); font-variant-numeric: tabular-nums; }
280+
.more-title { font-size: 0.85rem; color: var(--text-hi); transition: color 0.2s; }
281+
.more-src { font-size: 0.65rem; color: var(--text-lo); text-transform: uppercase; letter-spacing: 0.06em; }
282+
283+
@media (max-width: 768px) { .more-row { grid-template-columns: 1fr; gap: 0.3rem; } .post-hero { padding: 8rem 0 3rem; } .resource-links { flex-direction: column; } }
284+
</style>

0 commit comments

Comments
 (0)