Intel Workbench: Analysis of Competing Hypotheses Tool

[+] Status: Complete [+] Origin: Portfolio Project [+] Date: 2025.01
>> TECH_STACK:
[React][TypeScript][Zustand][Tailwind CSS][Vite]

Intel Workbench implements the Analysis of Competing Hypotheses (ACH) methodology as an interactive web application. ACH is a structured analytic technique developed by Richards Heuer at the CIA to help analysts overcome cognitive biases when evaluating multiple explanations for observed events.

The tool lets analysts define hypotheses, add evidence items with credibility weights, rate each piece of evidence against each hypothesis, and automatically calculate consistency scores. The result is a data-driven approach to intelligence analysis that surfaces the most defensible conclusion while highlighting analytical gaps.

Open Source

This project is open source and available on GitHub

Frontend-only application with Zustand for complex matrix state:

React + TypeScript
UI Framework

Component-driven interface with strict typing for complex matrix state management and hypothesis tracking

Zustand
State Management

Lightweight store for managing hypothesis matrices, evidence chains, and consistency scores without boilerplate

Tailwind CSS
Styling

Utility-first approach for building responsive matrix tables, evidence panels, and scoring visualizations

Vite
Build Tool

Fast HMR during development with optimized production builds for single-page deployment

Methodology ACH Matrix Implementation
Problem: Intelligence analysts need a structured way to evaluate competing hypotheses against available evidence
Solution: Built an interactive matrix where analysts rate each piece of evidence as consistent, inconsistent, or neutral against each hypothesis. Scores auto-calculate to surface the most defensible conclusion
Result: Structured analytic technique reduces cognitive bias in threat assessments
State Management Complex Matrix State with Zustand
Problem: The ACH matrix involves dynamic rows (evidence) and columns (hypotheses) with cell-level ratings that drive aggregate scores
Solution: Used Zustand slices for hypotheses, evidence, and ratings as separate stores with computed selectors for consistency scores, sensitivity analysis, and matrix diagnostics
Result: Clean state architecture handles dynamic matrix dimensions without re-render cascading
UX Design Evidence Credibility Weighting
Problem: Not all evidence carries equal weight. A confirmed IOC matters more than an unverified rumor
Solution: Added credibility and relevance sliders per evidence item that feed into weighted scoring. The matrix visually reflects weight through cell opacity and border intensity
Result: Weighted scoring produces more nuanced results than binary consistent/inconsistent ratings
Analysis Sensitivity Analysis View
Problem: Analysts need to understand which pieces of evidence most influence the conclusion
Solution: Built a sensitivity panel that temporarily removes each evidence item and recalculates scores, highlighting which pieces of evidence are pivotal to the current leading hypothesis
Result: Reveals analytical dependencies and helps identify where additional collection would be most valuable
React Patterns
  • Complex form state
  • Dynamic table rendering
  • Computed selectors
  • Controlled components
State Architecture
  • Zustand store slices
  • Derived state patterns
  • Optimistic updates
  • Undo/redo stack
Intelligence Analysis
  • ACH methodology
  • Cognitive bias mitigation
  • Evidence weighting
  • Sensitivity analysis
UI/UX
  • Interactive matrices
  • Color-coded scoring
  • Responsive tables
  • Export to PDF/JSON
Complete
  • Interactive ACH matrix with dynamic rows/columns
  • Evidence credibility and relevance weighting
  • Automated consistency scoring
  • Sensitivity analysis panel
  • Export to PDF and JSON formats
  • Undo/redo support for matrix edits