What is Outcome-Driven Development?
Outcome-driven development is a methodology where you define what success looks like, generate tests as hypotheses, and observe real outcomes at every stage. Unlike traditional approaches that focus on implementation details, ODD keeps you anchored to measurable results. The key insight: tests produce outcomes, but they are experimental outcomes whose validity is bounded by the test context.The Progression: From Intent to Outcomes
1. Start with a Goal
A goal is intent, direction, and preference. No outcomes yet - only what you want to achieve.2. Define Criteria
Criteria translate intent into what winning would look like. They set expectations but still aren’t outcomes. In our framework, there are two types of criteria:- Success Criteria: Measurable conditions that define success.
- Constraints: Conditions that define failure.
Success Criteria
Defined ingoal.py, each SuccessCriterion represents a measurable condition:
Constraints
Also ingoal.py, Constraint defines boundaries the agent must respect:
Criteria are expectations - measurable thresholds that define success and failure.
3. Generate Tests
Tests are hypotheses about outcomes. Each test implicitly says:“If the system behaves correctly, outcome X should occur under condition Y.”Tests are measurement instruments, not outcomes themselves. They encode your assumptions about what correct behavior looks like.
4. Run Tests → Observe Outcomes
When you run tests, you finally have outcomes. But be precise about what kind: These are observed outcomes in a controlled environment.
Why these are outcomes: Something actually happened. The system interacted with inputs. Effects were observed, not imagined.
Why they’re limited: They don’t yet tell you whether users trust the agent, whether it reduces real workload, or whether edge cases in the wild dominate behavior.
Outcome Structure
Defined indecision.py, the Outcome class captures everything about an execution result:
The Feedback Loop
Outcome-driven development depends on closing the loop: Outcomes inform updates at every level:- Update the system - Fix bugs, improve prompts, add guardrails
- Adjust criteria - Thresholds may be too strict or too lenient
- Revisit the goal - Sometimes the original intent was not accurate or not up to date. Developer need to revisit and update the goal accoding to the outcomes. However, the framework should not be able to change the original goal to ensure the goal is consistent and respected.
The Outcome Taxonomy
All results are outcomes - they differ by context and validity, not by kind.Test Outcomes
Controlled environment. Known inputs. Repeatable conditions.- High internal validity
- Limited external validity
- Fast feedback loop
- Low cost to observe
Operational Outcomes
Real users in limited deployment. Shadow mode or pilot groups.- Moderate internal validity
- Growing external validity
- Reveals integration issues
- Surface unexpected edge cases
Real-World Outcomes
Full production. Business metrics. User trust.- Full external validity
- Highest signal quality
- Slowest feedback loop
- Highest cost to observe
Example: Support Agent Development
Phase 1: Define
Goal:Phase 2: Test Outcomes
Run automated tests against synthetic tickets. Each test produces anOutcome:
Weighted score: 78% (below 90% threshold)
Insight: Resolution and escalation need work. The
HybridJudge recommends REPLAN - adjust prompts, add examples.
Phase 3: Operational Outcomes
Deploy to 5% of traffic in shadow mode:
Insight: Real traffic reveals edge cases tests missed. Update test suite.
Phase 4: Real-World Outcomes
Full production deployment:Best Practices
Weight Criteria Carefully
Higher weights on critical criteria ensure the 90% threshold reflects true success
Use Hard Constraints for Safety
Cost limits, PII protection, and scope boundaries should be hard constraints
Let llm_judge Handle Nuance
Use
llm_judge metric for quality criteria that can’t be measured programmaticallyTrust the Judgment Actions
ACCEPT, RETRY, REPLAN, ESCALATE - let the HybridJudge guide the response
Next Steps
Goals and Outcomes
See the canonical goal model used by Hive runtime and evaluation
Evolution
Understand how outcome gaps drive iterative agent improvement
Agent Architecture
Learn about nodes, edges, and the agent graph structure
Build Your First Agent
Create your first outcome-driven agent