A neuropsychology-based AI system that detects cognitive biases in real-time, predicts decision error probability, and learns from outcomes.
Most people make predictable mistakes in decisions due to cognitive biases:
- Loss aversion — avoiding losses more aggressively than pursuing gains (costs traders billions)
- Recency bias — recent outcomes distort judgment (why you panic-sell after losses)
- Overconfidence — believing you're better than you are (startup failures, bad hires)
- Anchoring — first number you hear distorts all subsequent judgments
- Time pressure — rushing decisions increases error rate
These aren't character flaws. They're hardwired neuroscience. But you can detect when they're active and make better choices.
DecisionGuard catches cognitive biases before you make decisions and learns your personal bias patterns over time.
Measures your current cognitive state:
- Time of day (decision quality varies by circadian rhythm)
- Recent decision outcomes (recency bias activation)
- Decision frequency (cognitive load/fatigue)
- Emotional state
Neuropsych basis: Decision-making quality peaks ~9am, dips post-lunch, recovers in late afternoon. Recent losses make you risk-averse; recent wins make you overconfident.
Identifies which cognitive biases are likely active given your context and decision.
Tracks:
- Loss aversion
- Recency bias
- Overconfidence
- Anchoring bias
- Sunk cost fallacy
- Availability heuristic
Each bias has a "probability score" (0-1) based on triggers detected.
Estimates probability you'll regret this decision, accounting for:
- Time pressure (increases errors by 30%)
- Your confidence level (low confidence often correlates with errors)
- Decision stakes (high stakes amplify consequences)
- Active biases (each active bias adds ~15% error probability)
- Cognitive load (making many decisions = fatigue = worse decisions)
Output: A single error probability (0-1) + reasoning.
Records:
- What you decided
- Your context and state at the time
- Predicted biases
- Predicted error probability
- Later: the actual outcome
Stores everything locally in SQLite.
Over time, learns:
- Which biases actually correlate with bad outcomes (for you specifically)
- Your personal decision-making patterns
- Which contexts lead to poor decisions
- How to improve accuracy of future predictions
- Python 3.8+
- No external dependencies for core system
- Flask (optional, for web dashboard)
# Clone or download the code
cd decision_guard
# Install (optional for dashboard)
pip install flask
# Make executable
chmod +x decision_system.py dashboard.pyThat's it. Everything else uses Python stdlib.
python decision_system.py analyzeYou'll be prompted:
Decision type (financial/career/relational/medical/code/other): financial
What decision are you facing? Should I accept this job offer?
How confident are you? (1-10): 6
Are you under time pressure? (y/n): y
Current emotional state: anxious
Decision stakes (low/medium/high/critical): high
Output:
====================================================================
DECISION GUARD: Bias Detection & Error Prediction
====================================================================
Decision ID: #1
YOUR DECISION:
Decision Type: financial
Description: Should I accept this job offer?
Stakes: high
Time Pressure: true
Your Confidence: 6/10
ERROR PROBABILITY: 0.68
RISK LEVEL: HIGH
ACTIVE COGNITIVE BIASES:
• loss_aversion (high): 75%
Triggered by: recent_losses, high_stakes, emotional:anxious
• time_pressure_bias (high): 70%
Triggered by: time_pressure, decision_overload
• anchoring (medium): 52%
Triggered by: time_pressure
RECOMMENDATIONS:
⏸ DELAY: You're under time pressure. Sleep on this decision for 24 hours if possible.
💭 LOSS BIAS: You may be overly cautious due to recent losses. Consider if this is realistic.
🧠 COGNITIVE FATIGUE: You've made many decisions recently. This one might benefit from a fresh mind.
====================================================================
Remember decision ID #1 to log outcome later.
====================================================================
After you make the decision and see the result:
python decision_system.py outcomeDecision ID: 1
Outcome (success/failure/neutral/pending): success
Any notes about what happened? Took the job, turned out well. Was more anxious than necessary.
✓ Outcome recorded. System is learning from this.
python decision_system.py history=====================================================================
DECISION HISTORY
=====================================================================
Total Decisions: 5
Success Rate: 60.0%
#1 | 2024-01-15 | financial
Should I accept this job offer?...
Outcome: success (Error prob: 68%)
#2 | 2024-01-14 | career
Switch teams or stay put?...
Outcome: failure (Error prob: 52%)
Status: (Error prob: 45%)
python dashboard.pyThen open: http://localhost:5000
Dashboard shows:
- Total decisions tracked
- Success rate
- Most common biases
- Decision history with risk levels
- Bias tags for each decision
- Visual error probability bars
Every cognitive bias has a neurobiological mechanism:
Loss Aversion (~2x loss sensitivity vs. gains)
- Amygdala + insula activation on potential losses
- Triggers risk-averse behavior
- Worse after recent losses (sensitized)
Recency Bias (last thing disproportionately influences judgment)
- Working memory + availability heuristic
- Recent outcomes are vivid and easy to recall
- Activates when making similar decisions
Overconfidence (misjudging your own ability)
- Ventromedial prefrontal cortex (vmPFC) overestimates control
- After successes, vmPFC gets overactive
- Time pressure makes it worse (can't access doubt networks)
Anchoring (first number you hear distorts subsequent judgment)
- Numerical priming of semantic networks
- Number becomes "activation baseline" for subsequent judgments
- Especially strong under cognitive load or time pressure
Decision-making quality varies by circadian rhythm:
- 8-11am: Peak decision quality (frontal lobe function peaks)
- 11am-2pm: Post-lunch dip (glucose drop, melatonin rise)
- 2-4pm: Afternoon recovery
- After 6pm: Evening fatigue (decision quality declines)
This isn't willpower. It's neurotransmitter fluctuation.
Recency bias activates because:
- Recent memories are more vivid (still in working memory)
- Amygdala tags recent outcomes as "important"
- Pattern-matching circuits (hippocampus) are primed to repeat recent patterns
After a loss: risk aversion kicks in (you're trying to protect against a repeat) After a win: overconfidence kicks in (you think you've figured something out)
DecisionGuard (Main Orchestrator)
├── ContextAnalyzer
│ ├── Time of day analyzer
│ ├── Recency tracker (recent outcomes)
│ └── Decision frequency monitor (cognitive load)
├── BiasDetector
│ ├── Loss aversion detector
│ ├── Overconfidence detector
│ ├── Recency bias detector
│ ├── Anchoring detector
│ ├── Sunk cost detector
│ └── Availability heuristic detector
├── ErrorPredictor
│ └── Probabilistic error estimation (Bayesian)
├── DecisionDatabase
│ ├── Decision storage (SQLite)
│ ├── Outcome logging
│ └── Pattern learning
└── LearningEngine (Future)
├── Per-user bias calibration
├── Outcome prediction refinement
└── Personalized recommendations
Each component:
- Works independently (testable)
- Can be improved separately
- Feeds into the orchestrator
You're a trader who just lost $50K on a bad trade. A new opportunity shows up. You have 2 hours to decide.
Your Input:
Decision type: financial
Description: Liquidate bonds to buy tech stocks?
Confidence: 7/10
Time pressure: yes
Emotional state: anxious (after loss)
Stakes: high
ContextAnalyzer detects:
- It's 3pm (afternoon recovery period, quality factor 0.9)
- Recent outcomes: 2 losses, 1 win last 24hrs (loss-averse state)
- Decision frequency: 6 decisions in last 2 hours (cognitive load high)
BiasDetector activates:
- Loss aversion: 0.80 (triggered by: recent_losses + high_stakes + emotional:anxious)
- Recency bias: 0.75 (triggered by: high_decision_frequency + recent_losses)
- Overconfidence: 0.40 (confidence level 7 triggers slight overconfidence)
- Anchoring: 0.50 (time pressure present)
ErrorPredictor calculates:
- Base error rate: 30%
- Time pressure multiplier: ×1.3
- Confidence factor: 0.93 (your 7/10 confidence helps slightly)
- Stakes multiplier: ×1.2 (high stakes)
- Bias multiplier: ×1.45 (3 active biases)
- Cognitive load: ×1.2 (making many decisions)
- Final error probability: 0.68 (68% chance of regret)
System recommends:
- ⏸ DELAY — You're under time pressure. Sleep on this 24 hours if possible.
- 💭 LOSS BIAS — Recent losses are making you risk-averse. Is this realistic?
- 🧠 COGNITIVE FATIGUE — You've made many decisions. Fresh perspective needed.
- Tracks which predictions actually matched outcomes
- Updates model per user (people have different baseline biases)
- "You're susceptible to loss aversion (75th percentile), but overconfidence (15th percentile)"
- Different domains have different error patterns
- Traders are loss-averse but good at recency
- Startups are overconfident but bad at sunk costs
- System learns your domain-specific weaknesses
- Integrates voice analysis, text sentiment, physiological signals (if available)
- More accurate than self-reported mood
- "Your vocal stress increased 40% — anxiety bias likely active"
- Group decision-making has different biases than individual
- Tracks "who in your team is likely to be loss-averse right now"
- Recommends decision structure (devil's advocate, pre-mortem, etc.)
- Pop-up reminder when you're about to make a major decision
- "You're trading under time pressure after 3 losses — reconsider?"
- Works across browsers, email, investment platforms, etc.
- AI learns what "success" and "failure" actually mean for each person
- "You thought this was a failure, but it led to 2 better outcomes later"
- Tracks long-term consequences, not just immediate
All data is:
- Local — stored on your machine (
~/.decision_guard/decisions.db) - Yours — no cloud upload, no tracking
- Queryable — it's SQLite, you can query it directly
- Exportable — export to JSON/CSV anytime
# Export your decision history
sqlite3 ~/.decision_guard/decisions.db "SELECT * FROM decisions;" > my_decisions.csverror_probability = base_error_rate ×
(time_pressure_multiplier ×
confidence_factor ×
stakes_multiplier ×
bias_multiplier ×
cognitive_load_factor)
Where:
- base_error_rate = 0.3 (30% of decisions have negative outcomes)
- time_pressure_multiplier = 1.3 if under time pressure, else 1.0
- confidence_factor = 1.0 - (confidence_level/10 × 0.3)
- stakes_multiplier = {0.8, 1.0, 1.2, 1.4} for {low, medium, high, critical}
- bias_multiplier = 1.0 + (number_of_active_biases × 0.15)
- cognitive_load_factor = 1.0 + (load × 0.3)
Result is capped at 0.95 (never 100% certain you'll fail).
CREATE TABLE decisions (
id INTEGER PRIMARY KEY,
timestamp TEXT,
decision_type TEXT,
description TEXT,
confidence_level INTEGER,
time_pressure BOOLEAN,
emotional_state TEXT,
recent_similar_outcome TEXT,
stakes TEXT,
bias_prediction TEXT (JSON),
error_probability REAL,
predicted_biases TEXT (JSON),
outcome TEXT,
notes TEXT
);-
Accuracy: After 20+ decisions with outcomes, check if your error rate matches predictions
- If predicted 65% error and actual is 70%, system is calibrated well
- If predicted 65% and actual is 20%, system is overestimating
-
Bias Detection: Do predicted biases match what you actually did?
- "System said I was overconfident, and I bought too aggressively — correct"
- "System said recency bias, I chased a trend — correct"
-
Outcome Patterns: Do certain decision types have higher error rates?
- Financial decisions: 60% error rate
- Career decisions: 40% error rate
- Relational decisions: 75% error rate
The system learns from your outcomes. To improve:
- Log outcomes every time you can
- Be specific in notes ("worked out better than expected" vs. "success")
- Regular review — check history monthly to spot patterns
- Novel: Bridges neuropsychology + AI + decision science (gaps in current tools)
- Grounded: Every component backed by neuroscience papers
- Practical: Works for students, professionals, traders, anyone making decisions
- Modular: Each subsystem can be evaluated independently
- Extensible: Clear path to add components (personalization, teams, real-time, etc.)
- Ethical: Local-first, privacy-preserving, non-extractive
- GitHub: Full source code, architecture docs, research citations
- Portfolio: Case studies (e.g., "I used this to make 5 decisions, here's what happened")
- Blog: Explainer on "why traders lose money" (cognitive bias deep dive)
- Demo: Working CLI + dashboard showing real decision analysis
- Paper: Could become a paper: "Real-Time Cognitive Bias Detection in Decision-Making"
- Shows you understand neuroscience (memory, emotions, circadian rhythms, biases)
- Shows you can code complex systems (data handling, Bayesian inference, learning loops)
- Shows you think about real-world applications (not just theory)
- Shows you're ambitious (this is a full system, not a toy project)
-
Explore the code:
python decision_system.py help -
Make a test decision:
python decision_system.py analyze
-
View the dashboard:
python dashboard.py # Open http://localhost:5000 -
Log an outcome:
python decision_system.py outcome
-
Check your history:
python decision_system.py history
Pick one subsystem to improve:
- Better emotion detection (voice analysis?)
- Domain-specific bias models (traders vs. entrepreneurs)
- Team dynamics (group decisions)
- Real-time browser integration
- Mobile app
- Kahneman & Tversky (1979) — Prospect Theory, loss aversion
- Bjork & Bjork (1992) — Desirable Difficulties in learning
- DeBondt & Thaler (1995) — Financial decision-making and biases
- Damasio (1994) — Somatic Marker Hypothesis (emotions in decisions)
- Adolphs (2003) — Cognitive neuroscience of human social behaviour
- Rolls (2019) — The Brain and Emotion
- De Cremer & Ruiter (2008) — Advancing the Field of Behavioral Decision Making
- Fischhoff (2013) — The Real World: What Makes Decisions Useful
Questions? Issues? Ideas?
- Check the code comments
- Read the docstrings
- Explore the decision history (your patterns tell a story)
Remember: The system is only as good as your feedback. Log outcomes. Refine.
Built with neuroscience. Powered by your decisions.