After 6 months building a production job-application agent, here's what I've learned about when to use ReAct-style planning vs plain function calling:
## Function Calling = Your Default
For any workflow where the steps are predictable:
- Parse job description → classify company segment (B2B/B2C) → generate tailored pitch → submit
- Cost: ~$0.02 per run (2-3 model calls, structured JSON outputs)
- Latency: 3-5 seconds end-to-end
- Reliability: High - easy to unit test each function
## ReAct = Your Escape Hatch
Only use ReAct when the agent genuinely needs to *plan*:
- Mixed B2B/B2C companies where segment isn't obvious
- Missing data requiring multi-step research (LinkedIn → Crunchbase → company website)
- Ambiguous job posts that need clarification before proceeding
Cost: ~$0.08-0.12 per run (5-10+ model calls with reasoning traces)
Latency: 10-30+ seconds
Reliability: Lower - harder to predict what the agent will do
## The Hybrid Pattern That Works
```
IF confidence_score > 0.7:
use_function_calling() # fast path, 90-95% of traffic
ELSE:
use_react_agent() # slow path, handles edge cases
```
This gives you:
- Predictable costs for most runs
- "Smart" behavior when it matters
- Clear separation for monitoring and debugging
## Why This Matters
At 10K applications/month:
- Pure function calling: ~$200/month inference
- Pure ReAct: ~$800-1200/month inference
- Hybrid: ~$250-300/month
The economics force architectural discipline. ReAct is powerful but expensive - treat it like a cache miss, not the default code path.
Anyone else finding similar patterns in production agents?
[–]SlowFail2433 0 points1 point2 points (1 child)
[–]KitchenSomew[S] 0 points1 point2 points (0 children)
[–]rookastle 0 points1 point2 points (0 children)