Document Purpose: This document provides a comprehensive specification of ODIE—the reasoning engine that anchors all intelligence, learning, and action around explicitly defined outcomes. ODIE is not analytics, not recommendations, not workflow automation. ODIE is the judgment layer that answers: "Given what we're trying to achieve, what should change now?"
Created: January 2026
Status: Conceptual Architecture & Implementation Specification
ODIE (Outcome Driven Intelligence Engine) is a continuous reasoning engine that provides motivation and purpose to AI systems. Unlike traditional analytics ("what happened?") or prediction engines ("what might happen?"), ODIE answers a fundamentally different question:
"Given what we are trying to achieve, what should change now?"
This makes ODIE the goal-first cognition layer—the component that ensures all system behavior is anchored to explicit, measurable outcomes rather than features, metrics, or assumptions.
ODIE synthesizes multiple frameworks into a unified reasoning engine:
| Framework | Perspective | What It Contributes |
|---|---|---|
| Jobs-to-Be-Done (JTBD) | Product & Market | "Customers hire products to accomplish jobs" |
| Outcome-Driven Innovation (ODI) | Innovation Methodology | Structured outcome statements, opportunity scoring |
| CD-MAP | Customer Lens | Customer-Driven Mission Achievement Process |
| Outcome-Based Logic | Reasoning | Decisions evaluated against outcome impact |
| Positive Psychology | Human Potential | Focus on strengths and optimal functioning |
These are not competing models—they are different projections of the same engine:
Outcomes are not KPIs. Outcomes are not metrics. Outcomes are not goals in a slide deck.
In ODIE, an Outcome is:
Critical Distinction:
Outcome ≠ Metric
Metric = signal (a measurement)
Outcome = desired state change (what we're trying to achieve)
ODIE does not ask:
ODIE asks:
"Did this move the outcome closer to completion?"
This becomes the engine's internal scoring mechanism. All reasoning, all recommendations, all actions are evaluated against this single criterion.
Traditional AI: Train → Optimize → Deploy → Hope
ODIE mirrors human behavior:
ODIE Cycle:
Sense → Reason → Act → Observe Outcome Delta → Update Beliefs
This is fundamentally different from:
Train → Optimize → Deploy → Hope
This is a subtle but critical distinction:
But:
This allows ODIE to:
Traditional market research segments customers by demographics (age, income, location).
ODIE segments by outcome priorities:
This reveals distinct groups with different unmet needs—far more actionable than demographic segments.
ODIE operates as a continuous, never-terminating loop:
┌─────────────────────────────────────────────────────────────┐
│ ODIE REASONING LOOP │
│ (Never Terminates) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 1. SENSE │
│ - Ingest signals (data, events, user input, system │
│ changes, external sources) │
│ - Detect changes in environment │
│ - Identify new information relevant to outcomes │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 2. CONTEXTUALIZE │
│ - Update state based on new signals │
│ - Map signals to relevant outcomes │
│ - Identify which outcomes are affected │
│ - Assess current position relative to desired state │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 3. REASON │
│ - Evaluate outcome deltas (progress or regression) │
│ - Surface tensions, conflicts, stalls │
│ - Identify opportunities (underserved outcomes) │
│ - Calculate opportunity scores │
│ - Generate action hypotheses │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 4. DECIDE │
│ - Select actions based on outcome impact (not accuracy) │
│ - Prioritize by opportunity score │
│ - Consider constraints and risks │
│ - Generate recommendations with expected deltas │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 5. ACT │
│ - Trigger systems, workflows, humans, or agents │
│ - Execute selected actions │
│ - Communicate decisions with rationale │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 6. OBSERVE │
│ - Capture new signals resulting from actions │
│ - Measure actual outcome movement │
│ - Compare expected delta vs. actual delta │
│ - Record what happened │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 7. ADAPT │
│ - Update beliefs based on observations │
│ - Revise confidence levels │
│ - Refine outcome definitions if needed │
│ - Adjust action hypotheses for future cycles │
│ - Learn without overwriting (belief revision) │
└─────────────────────────────────────────────────────────────┘
│
│
───────┴───────
│
▼
[Return to SENSE]
Critical: This loop never terminates. ODIE is always sensing, always reasoning, always adapting.
The fundamental anchor of ODIE. Everything else exists to serve outcomes.
Outcome:
# Identity
outcome_id: string (unique identifier)
name: string (human-readable)
description: string (detailed explanation)
# Definition
desired_state: string (what success looks like)
current_state: string (where we are now)
context: object (situation, customer, job, constraints)
# Structure (JTBD format: Direction + Measure + Object + Context)
direction: minimize | maximize | maintain | achieve
measure: string (what we're measuring)
object: string (what we're measuring it on)
outcome_context: string (when/where this applies)
# Example: "Minimize the time it takes to understand claim status when checking online"
# Hierarchy
parent_outcome_id: string (optional, for decomposition)
child_outcomes: [outcome_ids] (sub-outcomes)
related_outcomes: [outcome_ids] (connected but not hierarchical)
# Status
status: not_started | in_progress | achieved | blocked | abandoned
progress: 0-100 (percentage toward desired state)
confidence: 0-100 (certainty in progress measurement)
# Prioritization
importance: 0-100 (how much this matters)
satisfaction: 0-100 (how well currently served)
opportunity_score: calculated (importance - satisfaction)
priority: calculated (opportunity × weight)
# Time
time_horizon: immediate | short_term | medium_term | long_term
deadline: timestamp (optional)
created_at: timestamp
updated_at: timestamp
# Constraints
constraints: [constraint_ids]
dependencies: [outcome_ids] (must complete first)
blockers: [blocker_ids] (currently preventing progress)
Observable data that indicates outcome state or change.
Signal:
# Identity
signal_id: string (unique identifier)
name: string (human-readable)
# Source
source: string (where this signal comes from)
source_type: system | user | external | derived
# Content
type: metric | event | feedback | observation | inference
value: any (the actual signal data)
unit: string (measurement unit if applicable)
# Quality
confidence: 0-100 (certainty in signal accuracy)
reliability: 0-100 (consistency of this source)
freshness: timestamp (when signal was captured)
# Relationships
linked_outcome_ids: [outcome_ids] (which outcomes this affects)
supporting_belief_ids: [belief_ids] (which beliefs this supports)
contradicting_belief_ids: [belief_ids] (which beliefs this contradicts)
# Metadata
timestamp: timestamp (when captured)
context: object (situation when captured)
raw_data: object (original unprocessed data)
Provisional models about how the world works, subject to revision.
Belief:
# Identity
belief_id: string (unique identifier)
statement: string (the belief in natural language)
# Classification
type: assumption | hypothesis | inference | fact
domain: string (what area this belief applies to)
# Evidence
supporting_signals: [signal_ids] (evidence for)
contradicting_signals: [signal_ids] (evidence against)
supporting_beliefs: [belief_ids] (other beliefs that support)
contradicting_beliefs: [belief_ids] (other beliefs that contradict)
# Confidence
confidence: 0-100 (certainty in this belief)
confidence_trend: increasing | stable | decreasing
# Lifecycle
status: active | suspended | revised | disproven
created_at: timestamp
last_updated: timestamp
revision_history: [previous_versions]
# Impact
affected_outcomes: [outcome_ids] (which outcomes depend on this belief)
affected_actions: [action_ids] (which actions assume this belief)
A proposed action with expected outcome impact.
ActionHypothesis:
# Identity
action_id: string (unique identifier)
name: string (human-readable)
description: string (what this action involves)
# Hypothesis
hypothesis: string (why we think this will work)
expected_outcome_delta: object (predicted impact per outcome)
- outcome_id: string
expected_change: number (how much progress expected)
confidence: 0-100 (certainty in prediction)
# Risk Assessment
risk: 0-100 (probability of negative outcomes)
risk_factors: [descriptions of what could go wrong]
reversibility: fully | partially | irreversible
# Cost
cost: object (resources required)
- type: time | money | tokens | compute | human_effort
amount: number
unit: string
# Dependencies
dependencies: [action_ids] (must complete first)
prerequisites: [conditions that must be true]
required_beliefs: [belief_ids] (assumptions this action relies on)
# Execution
execution_plan: object (how to carry out)
required_approvals: [approval_requirements]
status: proposed | approved | in_progress | completed | failed | cancelled
# Results (after execution)
actual_outcome_delta: object (what actually happened)
lessons_learned: string (what we learned)
The high-level "job" that contains related outcomes.
Job:
# Identity
job_id: string (unique identifier)
name: string (human-readable job statement)
# JTBD Structure
job_statement: string (When [situation], I want to [motivation], so I can [outcome])
functional_aspects: [what the customer is trying to accomplish]
emotional_aspects: [how the customer wants to feel]
social_aspects: [how the customer wants to be perceived]
# Relationships
related_outcome_ids: [outcome_ids] (outcomes that serve this job)
# Context
trigger_context: string (when this job arises)
success_definition: string (how customer knows job is done)
failure_modes: [common ways the job fails]
# Hiring/Firing
current_solutions: [what customers currently "hire" for this job]
firing_triggers: [what causes customers to "fire" current solutions]
hiring_criteria: [what customers look for when "hiring"]
Limitations that bound possible actions.
Constraint:
# Identity
constraint_id: string (unique identifier)
name: string (human-readable)
description: string (detailed explanation)
# Type
type: hard | soft (hard = must satisfy, soft = prefer to satisfy)
category: resource | policy | technical | regulatory | ethical
# Definition
condition: string (what must be true)
enforcement: automatic | manual | advisory
# Scope
applies_to: [outcome_ids or action_ids]
exceptions: [conditions where constraint doesn't apply]
# Status
status: active | suspended | expired
valid_from: timestamp
valid_until: timestamp
ODIE uses opportunity scoring to prioritize where to focus:
Opportunity Score = (Importance × Weight) - (Satisfaction × Weight)
Where:
Standard Weights:
Opportunity = Importance + (Importance - Satisfaction)
= Importance + Importance - Satisfaction
= (2 × Importance) - Satisfaction
| Opportunity Score | Interpretation |
|---|---|
| > 10 | Significant opportunity (underserved, important) |
| 6-10 | Moderate opportunity (worth attention) |
| 0-5 | Appropriately served or low importance |
| < 0 | Over-served (may be wasting resources) |
Outcome: "Minimize time to understand claim status when checking online"
Importance: 85 (very important to customers)
Satisfaction: 42 (poorly served currently)
Opportunity = (2 × 85) - 42 = 170 - 42 = 128
Interpretation: Very high opportunity—important outcome that's underserved
"Learning should not overwrite intelligence."
Traditional ML: Retrain the model → old knowledge lost or corrupted
ODIE approach: Layered memory with belief revision
┌─────────────────────────────────────────────────────────────┐
│ LAYER 1: OUTCOME MEMORY (Long-lived, Stable) │
│ - Outcome definitions │
│ - Job definitions │
│ - Constraints │
│ - Strategic priorities │
│ Persistence: Years │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ LAYER 2: BELIEF MEMORY (Medium-lived, Revisable) │
│ - Current beliefs and assumptions │
│ - Confidence levels │
│ - Supporting/contradicting evidence │
│ Persistence: Months (with continuous revision) │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ LAYER 3: SIGNAL MEMORY (Short-lived, Temporal) │
│ - Recent signals and observations │
│ - Event history │
│ - Trend data │
│ Persistence: Days to weeks (decays) │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ LAYER 4: ACTION MEMORY (Medium-lived, Experiential) │
│ - Actions taken │
│ - Expected vs. actual outcomes │
│ - Lessons learned │
│ Persistence: Months (compressed over time) │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ LAYER 5: CONTEXT MEMORY (Ephemeral, Situational) │
│ - Current conversation context │
│ - Active session state │
│ - Working hypotheses │
│ Persistence: Session or task duration │
└─────────────────────────────────────────────────────────────┘
When new evidence arrives:
1. RECEIVE new signal
2. IDENTIFY affected beliefs
- Which beliefs does this signal support?
- Which beliefs does this signal contradict?
3. UPDATE confidence
- Supporting evidence → increase confidence
- Contradicting evidence → decrease confidence
- Weight by signal reliability and freshness
4. EVALUATE threshold
- If confidence drops below threshold → suspend belief
- If contradicting evidence overwhelming → revise belief
- If supporting evidence strong enough → strengthen belief
5. PROPAGATE changes
- Which outcomes depend on revised beliefs?
- Which action hypotheses are affected?
- Recalculate priorities if needed
6. PRESERVE history
- Log the revision with rationale
- Keep old belief version for reference
- Enable rollback if revision was wrong
ODIE provides the "why" and "what" while Archer provides the "how" and "when":
Archer: "New signals detected from CRM and email"
↓
ODIE: "These signals indicate Outcome X is regressing.
Opportunity score increased to 87.
Recommend Action Y with expected delta of +15."
↓
Archer: "Routing recommendation to user via Teams.
Awaiting approval to execute Action Y."
ODIE provides to Archer:
Archer provides to ODIE:
ODIE uses Cogniscient as its persistent knowledge substrate:
ODIE needs to store → Cogniscient persists:
- Outcomes → Entity graph nodes
- Relationships → Graph edges
- Beliefs → Nodes with confidence properties
- Signals → Time-stamped events linked to entities
- History → Temporal relationships
ODIE provides to Cogniscient:
Cogniscient provides to ODIE:
ODIE decides, Fluxio executes:
ODIE: "Action Y should be executed with these parameters"
↓
Fluxio: Routes to appropriate agent/tool
↓
Agent/Tool: Executes action
↓
Fluxio: Returns result
↓
ODIE: "Actual delta was +12 vs. expected +15.
Updating belief confidence.
Action hypothesis accuracy: 80%."
ODIE provides to Fluxio:
Fluxio provides to ODIE:
When ODIE needs to recommend actions, Librarian helps select the best executor:
ODIE: "To achieve Outcome X, we need capability Y"
↓
Librarian: "For capability Y in this context,
resource Z has score 87 with high confidence"
↓
ODIE: "Incorporating resource recommendation into action hypothesis"
# Create/Manage Outcomes
POST /outcomes
Request: Outcome definition
Response: outcome_id, initial state
GET /outcomes/{outcome_id}
Response: Full outcome state
PUT /outcomes/{outcome_id}
Request: Updated fields
Response: Updated outcome
DELETE /outcomes/{outcome_id}
Response: Confirmation
# Signal Processing
POST /signals
Request: New signal data
Response: signal_id, affected outcomes, belief updates
GET /signals?outcome_id={id}&since={timestamp}
Response: Relevant signals
# Belief Management
GET /beliefs?outcome_id={id}
Response: Beliefs affecting this outcome
POST /beliefs/revise
Request: belief_id, new evidence
Response: Updated confidence, revision details
# Opportunity Scoring
GET /opportunities
Response: Ranked list of outcomes by opportunity score
GET /opportunities/{outcome_id}
Response: Detailed opportunity analysis
# Action Recommendations
POST /recommend
Request: Context, constraints
Response: Ranked action hypotheses with expected deltas
GET /actions/{action_id}/evaluate
Request: actual_results
Response: Comparison to expected, belief updates
# Reasoning Queries
POST /reason
Request: Question about outcomes/state
Response: Reasoned answer with supporting evidence
GET /status
Response: Current state of all active outcomes
# ODIE emits events for:
outcome.created
outcome.updated
outcome.progress_changed
outcome.achieved
outcome.blocked
signal.received
signal.linked_to_outcome
belief.created
belief.revised
belief.disproven
action.recommended
action.approved
action.executed
action.evaluated
opportunity.threshold_crossed # When opportunity score exceeds threshold
For MVP, implement:
Skip for MVP:
| Data Type | Recommended Storage |
|---|---|
| Outcomes | Relational DB or document store |
| Signals | Time-series database |
| Beliefs | Graph database (for relationships) |
| Action history | Append-only log |
| Context | In-memory with periodic persistence |
Job: "When I have a support issue, I want to get it resolved quickly,
so I can get back to my work"
Outcomes:
- Minimize time to reach a support agent
- Minimize time to understand my issue
- Minimize time to resolve my issue
- Maximize accuracy of first response
- Minimize effort required from me
Signals:
- Call wait times (system)
- First call resolution rate (system)
- Customer satisfaction scores (feedback)
- Repeat contact rate (system)
- Escalation frequency (system)
ODIE Operation:
1. Sense: Detect increasing wait times
2. Contextualize: Link to "minimize time to reach agent" outcome
3. Reason: Outcome is regressing, opportunity score increasing
4. Decide: Recommend capacity adjustment or callback option
5. Act: Trigger notification to operations team
6. Observe: Monitor wait times after intervention
7. Adapt: Update belief about optimal staffing levels
Job: "When I encounter a player, I want to pursue my goals while
responding authentically, so I remain a believable character"
Outcomes:
- Acquire gold for my shop (functional)
- Maintain reputation in the village (social)
- Feel secure about my family's future (emotional)
- Avoid conflict with the thieves' guild (constraint)
Signals:
- Player interaction outcomes
- Shop revenue
- Reputation changes from world events
- Guild activity in the area
ODIE Operation:
1. Sense: Player approaches with stolen goods to sell
2. Contextualize: Opportunity to acquire goods cheaply,
but risk to reputation if caught
3. Reason: Gold outcome would improve, reputation outcome at risk,
guild constraint relevant
4. Decide: Decline obviously stolen goods, offer to buy
"legitimately acquired" items
5. Act: Generate dialogue reflecting internal conflict
6. Observe: Track player response and subsequent interactions
7. Adapt: Update beliefs about this player's alignment
Job: "When I have free time, I want to make progress on what matters,
so I live a fulfilling life"
Outcomes:
- Improve physical fitness
- Advance career skills
- Strengthen family relationships
- Build financial security
- Pursue creative expression
Signals:
- Activity tracking data
- Learning platform usage
- Calendar analysis (family time)
- Financial account data
- Creative output frequency
ODIE Operation:
1. Sense: Week with low family time, high work hours
2. Contextualize: "Strengthen family relationships" outcome regressing
3. Reason: Opportunity score rising, conflict with "advance career" outcome
4. Decide: Recommend scheduling protected family time,
suggest work boundary adjustments
5. Act: Create calendar blocks, send gentle reminder
6. Observe: Track if recommendations are followed, family sentiment
7. Adapt: Learn optimal work-life balance for this individual
| Aspect | Traditional Analytics | ODIE |
|---|---|---|
| Question | "What happened?" | "What should change?" |
| Orientation | Past (descriptive) | Future (prescriptive) |
| Output | Reports, dashboards | Recommendations, actions |
| Learning | Batch retraining | Continuous belief revision |
| Anchor | Data | Outcomes |
| Aspect | Recommendation Engines | ODIE |
|---|---|---|
| Goal | Predict preferences | Achieve outcomes |
| Metric | Click-through, engagement | Outcome progress |
| Scope | Single decision point | Continuous journey |
| Adaptation | User modeling | Belief revision |
| Aspect | OKRs | ODIE |
|---|---|---|
| Focus | Organizational performance | Customer/user outcomes |
| Cadence | Quarterly | Continuous |
| Measurement | Key results | Outcome deltas |
| Guidance | Goal setting | Action recommendation |
| Relationship | ODIE informs what OKRs should target |
ODIE is the judgment layer for agentic systems—the component that ensures all intelligence, learning, and action is anchored to explicit, measurable outcomes.
Key Characteristics:
Integration Role:
The Ultimate Question ODIE Answers:
"Given what we're trying to achieve, what should change now?"
Document created January 2026