{"id":49250474,"url":"https://github.com/solomonneas/intel-workbench","last_synced_at":"2026-04-25T00:02:57.678Z","repository":{"id":337129294,"uuid":"1152260966","full_name":"solomonneas/intel-workbench","owner":"solomonneas","description":"Portfolio project","archived":false,"fork":false,"pushed_at":"2026-04-20T22:55:37.000Z","size":154,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-21T00:38:20.965Z","etag":null,"topics":["analysis","cybersecurity","intelligence","osint","research","security-tools","threat-intelligence"],"latest_commit_sha":null,"homepage":"https://intel-workbench.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/solomonneas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"solomonneas","ko_fi":"solomonneas","buy_me_a_coffee":"solomonneas"}},"created_at":"2026-02-07T16:05:04.000Z","updated_at":"2026-04-20T22:55:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/solomonneas/intel-workbench","commit_stats":null,"previous_names":["solomonneas/intel-workbench"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/solomonneas/intel-workbench","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solomonneas%2Fintel-workbench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solomonneas%2Fintel-workbench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solomonneas%2Fintel-workbench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solomonneas%2Fintel-workbench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solomonneas","download_url":"https://codeload.github.com/solomonneas/intel-workbench/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solomonneas%2Fintel-workbench/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32245156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analysis","cybersecurity","intelligence","osint","research","security-tools","threat-intelligence"],"created_at":"2026-04-25T00:02:56.929Z","updated_at":"2026-04-25T00:02:57.668Z","avatar_url":"https://github.com/solomonneas.png","language":"TypeScript","funding_links":["https://github.com/sponsors/solomonneas","https://ko-fi.com/solomonneas","https://buymeacoffee.com/solomonneas"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/React-18-61DAFB?style=flat-square\u0026logo=react\u0026logoColor=white\" alt=\"React\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/TypeScript-5-3178C6?style=flat-square\u0026logo=typescript\u0026logoColor=white\" alt=\"TypeScript\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Tailwind_CSS-3-06B6D4?style=flat-square\u0026logo=tailwindcss\u0026logoColor=white\" alt=\"Tailwind CSS\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Zustand-4-FFD43B?style=flat-square\" alt=\"Zustand\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Vite-7-646CFF?style=flat-square\u0026logo=vite\u0026logoColor=white\" alt=\"Vite\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-green?style=flat-square\" alt=\"MIT License\" /\u003e\n\u003c/p\u003e\n\n# 🛡️ Solomon's Intel Workbench\n\n**Structured analytic techniques for cyber threat intelligence. Built for the modern analyst.**\n\nIntel Workbench is an interactive Analysis of Competing Hypotheses (ACH) tool that brings rigorous intelligence methodology to the browser. Score evidence against hypotheses, identify cognitive biases, and export structured assessments. Zero backend, full offline capability, and five distinct visual themes.\n\n![Intel Workbench](docs/screenshots/dashboard.png)\n\n---\n\n## ✨ Features\n\n- **ACH Matrix** : Interactive evidence-vs-hypothesis grid with consistency ratings (C/I/N/NA), weighted scoring, and automatic preferred-hypothesis identification\n- **Cognitive Bias Checklist** : Heuer \u0026 Pherson taxonomy with 12 biases across Cognitive, Analytical, and Social categories; track mitigation notes per bias\n- **Score Visualization** : Real-time normalized score bars showing hypothesis support levels with color-coded confidence indicators\n- **Evidence Weighting** : Credibility and relevance ratings (High/Medium/Low) that feed into weighted inconsistency scores\n- **Export \u0026 Import** : Full JSON export/import for backup and sharing; Markdown export for report generation\n- **5 Visual Themes** : Langley (classified intel), Terminal (hacker/OSINT), Analyst's Desk (clean professional), Stratcom (military command), Cyber Noir (cyberpunk)\n- **In-App Guided Tour** : First-visit walkthrough powered by driver.js highlighting every major feature\n- **Built-In Documentation** : Comprehensive help page covering ACH methodology, scoring, bias awareness, and keyboard shortcuts\n- **Offline-First** : All data persisted in localStorage; works without any server\n- **Keyboard Accessible** : Full keyboard navigation across the matrix grid\n\n---\n\n## 🏗️ Architecture\n\nIntel Workbench is a **single-page React application** with no backend dependencies:\n\n```\nBrowser\n  └─ React 18 (SPA, React Router v6)\n       ├─ Zustand Store ← persist middleware → localStorage\n       ├─ ThemeContext (per-variant color tokens)\n       ├─ Pages: Home / ACH / Bias / Export / Docs\n       └─ 5 Variant Layouts (lazy-loaded)\n```\n\n- **State Management:** Zustand with `persist` middleware writes to `localStorage` under the key `intel-workbench-projects`\n- **Routing:** React Router v6 with nested variant routes (`/v1/*`, `/v2/*`, …, `/default/*`) and a variant picker at `/`\n- **Theming:** `ThemeContext` provides color tokens per variant; components read them via `useTheme()`\n- **Code Splitting:** Variant layouts are `React.lazy()` loaded to keep the initial bundle small\n\n---\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- **Node.js** ≥ 18\n- **npm** ≥ 9\n\n### Install \u0026 Run\n\n```bash\ngit clone https://github.com/solomonneas/intel-workbench.git\ncd intel-workbench\nnpm install\nnpm run dev\n```\n\nOpen [http://localhost:5173](http://localhost:5173) in your browser.\n\n### Build for Production\n\n```bash\nnpm run build\nnpm run preview\n```\n\n---\n\n## 🛠️ Tech Stack\n\n| Layer | Technology | Purpose |\n|-------|-----------|---------|\n| **Framework** | React 18 | Component UI |\n| **Language** | TypeScript 5 | Type safety |\n| **Styling** | Tailwind CSS 3 | Utility-first CSS |\n| **State** | Zustand 4 | Global state + persistence |\n| **Routing** | React Router 6 | Client-side navigation |\n| **Icons** | Lucide React | Consistent icon set |\n| **Bundler** | Vite 7 | Dev server + build |\n| **Tour** | driver.js 1.3 (CDN) | Guided onboarding |\n\n---\n\n## 📁 Project Structure\n\n```text\nintel-workbench/\n├── index.html                 # Entry point + CDN links\n├── package.json\n├── vite.config.ts\n├── tailwind.config.js\n├── tsconfig.json\n├── public/\n│   └── vite.svg\n└── src/\n    ├── main.tsx               # React root\n    ├── App.tsx                # Router + variant routes\n    ├── index.css              # Tailwind layers + component classes\n    ├── components/\n    │   ├── ach/\n    │   │   ├── ACHMatrix.tsx  # Interactive hypothesis matrix\n    │   │   └── ACHScoreBar.tsx\n    │   ├── bias/\n    │   │   └── BiasChecklist.tsx\n    │   ├── layout/\n    │   │   └── AppShell.tsx   # Default sidebar layout\n    │   └── GuidedTour.tsx     # driver.js onboarding tour\n    ├── contexts/\n    │   └── ThemeContext.tsx    # Theme color provider\n    ├── data/\n    │   ├── biasData.ts        # Cognitive bias catalog\n    │   └── sampleProject.ts   # Sandworm sample data\n    ├── pages/\n    │   ├── HomePage.tsx       # Project list \u0026 creation\n    │   ├── ACHPage.tsx        # Matrix workspace\n    │   ├── BiasPage.tsx       # Bias review\n    │   ├── ExportPage.tsx     # JSON/Markdown export\n    │   ├── DocsPage.tsx       # In-app help \u0026 documentation\n    │   └── VariantPicker.tsx  # Theme selector landing\n    ├── store/\n    │   └── useProjectStore.ts # Zustand store (persisted)\n    ├── types/\n    │   └── index.ts           # TypeScript interfaces\n    ├── utils/\n    │   ├── achScoring.ts      # Scoring algorithms\n    │   ├── id.ts              # ID generator\n    │   └── useBasePath.ts     # Variant-aware navigation\n    └── variants/\n        ├── v1/Layout.tsx      # Langley (intel agency)\n        ├── v2/Layout.tsx      # Terminal (hacker)\n        ├── v3/Layout.tsx      # Analyst's Desk (clean)\n        ├── v4/Layout.tsx      # Stratcom (military)\n        └── v5/Layout.tsx      # Cyber Noir (cyberpunk)\n```\n\n---\n\n## 🎨 5 Variants\n\nEach variant wraps the same core pages in a unique visual identity:\n\n| Variant | Theme | Aesthetic |\n|---------|-------|-----------|\n| **v1 : Langley** | Intelligence Agency | Dark navy, gold accents, serif type, classified stamps |\n| **v2 : Terminal** | Hacker / OSINT | Pure black, matrix green, scanline overlay, monospace |\n| **v3 : Analyst's Desk** | Clean Professional | Light backgrounds, blue accents, content-first layout |\n| **v4 : Stratcom** | Military Command | OD green, amber accents, grid patterns, military time |\n| **v5 : Cyber Noir** | Cyberpunk | Neon cyan + magenta, glow effects, glass-morphism |\n\nAll variants share the same Zustand store and page components. Switching themes is instant : just navigate back to the variant picker at `/`.\n\n---\n\n## 📊 ACH Methodology\n\n**Analysis of Competing Hypotheses** (ACH) is a structured analytic technique developed by Richards J. Heuer Jr. at the CIA. Instead of seeking evidence to *confirm* a preferred hypothesis, ACH forces analysts to:\n\n1. **Enumerate all reasonable hypotheses**\n2. **List all significant evidence and arguments**\n3. **Rate each evidence item against each hypothesis** as Consistent (C), Inconsistent (I), Neutral (N), or Not Applicable (NA)\n4. **Score inconsistencies** : the hypothesis with the *fewest* weighted inconsistencies is the most supported\n5. **Identify and mitigate cognitive biases** that might distort the analysis\n\nThe key insight: **disprove rather than prove.** A single strong inconsistency can eliminate a hypothesis, while consistent evidence alone cannot confirm one.\n\n### Scoring Formula\n\n```text\nScore = Σ (weight × rating_value)\n\nwhere:\n  rating_value: I = +2, N = 0, C = −1\n  weight:       credibility_multiplier × relevance_multiplier\n  multipliers:  High = 1.5, Medium = 1.0, Low = 0.5\n```\n\nLower (more negative) scores indicate stronger support. The hypothesis with the lowest score is flagged as **preferred**.\n\n---\n\n## 📄 License\n\nMIT : see [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolomonneas%2Fintel-workbench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolomonneas%2Fintel-workbench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolomonneas%2Fintel-workbench/lists"}