# harshitpatilx/bob-ai-hackathon-cipher-matrix architecture

> Architecture diagram of the GitHub repository harshitpatilx/bob-ai-hackathon-cipher-matrix, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/harshitpatilx/bob-ai-hackathon-cipher-matrix
- Repository: https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix

## Overview

CFNA turns case files or pasted investigation material into a correlated fraud network, analyzes its money flow and likely roles, then produces an interactive report and FIR-ready brief. The main flow is explicit in `pipeline.py`; the browser entry point is supported by `serve.py` documentation and its form handler. Analysis internals are shown as meaningful stages, while unsampled implementation details and uncertain links are omitted. IBM Bob is an optional narrative hook; the README says local deterministic analysis is the active behavior.

Main entry points: [`src/cfna/pipeline.py`](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/pipeline.py) (Case Pipeline), [`src/cfna/serve.py`](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/serve.py) (Browser Form), [`src/cfna/cli.py`](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/cli.py) (Command Line), [`src/cfna/intake.py`](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/intake.py) (Form Intake)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Case Intake"]
  node_cli["Command Line<br/>[cli.py]"]
  node_browser["Browser Form<br/>[serve.py]"]
  node_intake["Form Intake<br/>[intake.py]"]
  node_pipeline["Case Pipeline<br/>[pipeline.py]"]
end

subgraph group_correlation["Evidence Correlation"]
  node_loaders["Case Loader<br/>[loaders.py]"]
  node_entity_extract["Entity Extraction<br/>[entities.py]"]
  node_relation_extract["Relation Discovery<br/>[relations.py]"]
  node_case_graph["Case Graph<br/>[models.py]"]
end

subgraph group_analysis["Investigation Analysis"]
  node_metrics["Network Metrics<br/>[metrics.py]"]
  node_patterns["Pattern Detection<br/>[patterns.py]"]
  node_roles["Role Assessment<br/>[hierarchy.py]"]
  node_risk["Risk Scoring<br/>[risk.py]"]
  node_hierarchy["Hierarchy Builder<br/>[hierarchy.py]"]
  node_timeline["Activity Timeline<br/>[timeline.py]"]
  node_evidence["Evidence Summary<br/>[evidence.py]"]
  node_bob["Narrative Insights<br/>[__init__.py]"]
end

subgraph group_delivery["Investigation Outputs"]
  node_html_report["Interactive Network Report<br/>[html_report.py]"]
  node_fir["FIR Brief<br/>[fir.py]"]
  node_json_exports["Case And Network JSON<br/>[pipeline.py]"]
end

node_investigator(("Investigator"))
node_case_material["Case Material"]
node_output["Investigation Results"]

node_investigator -->|"runs case"| node_cli
node_case_material -->|"supplies files"| node_cli
node_investigator -->|"enters case"| node_browser
node_browser -->|"submits fields"| node_intake
node_intake -->|"creates case"| node_pipeline
node_cli -->|"runs analysis"| node_pipeline
node_pipeline -->|"loads case"| node_loaders
node_loaders -->|"returns records"| node_pipeline
node_pipeline -->|"extracts entities"| node_entity_extract
node_pipeline -->|"discovers relations"| node_relation_extract
node_entity_extract -->|"adds entities"| node_case_graph
node_relation_extract -->|"adds relations"| node_case_graph
node_pipeline -->|"computes metrics"| node_metrics
node_pipeline -->|"classifies patterns"| node_patterns
node_pipeline -->|"assigns roles"| node_roles
node_pipeline -->|"scores risk"| node_risk
node_pipeline -->|"builds hierarchy"| node_hierarchy
node_pipeline -->|"builds timeline"| node_timeline
node_pipeline -->|"builds evidence"| node_evidence
node_pipeline -.->|"requests insights"| node_bob
node_pipeline -->|"renders report"| node_html_report
node_pipeline -->|"renders brief"| node_fir
node_pipeline -->|"writes exports"| node_json_exports
node_html_report -->|"publishes HTML"| node_output
node_fir -->|"publishes brief"| node_output
node_json_exports -->|"writes JSON"| node_output
node_browser -->|"serves reports"| node_output
node_investigator -->|"reviews findings"| node_output

click node_cli "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/cli.py"
click node_browser "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/serve.py"
click node_intake "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/intake.py"
click node_pipeline "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/pipeline.py"
click node_loaders "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/ingest/loaders.py"
click node_entity_extract "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/extract/entities.py"
click node_relation_extract "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/extract/relations.py"
click node_case_graph "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/models.py"
click node_metrics "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/metrics.py"
click node_patterns "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/patterns.py"
click node_roles "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/hierarchy.py"
click node_risk "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/risk.py"
click node_hierarchy "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/hierarchy.py"
click node_timeline "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/timeline.py"
click node_evidence "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/evidence.py"
click node_bob "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/bob/__init__.py"
click node_html_report "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/report/html_report.py"
click node_fir "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/report/fir.py"
click node_json_exports "https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/pipeline.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_browser,node_intake,node_pipeline toneBlue
class node_loaders,node_entity_extract,node_relation_extract,node_case_graph toneAmber
class node_metrics,node_patterns,node_roles,node_risk,node_hierarchy,node_timeline,node_evidence,node_bob toneMint
class node_html_report,node_fir,node_json_exports toneRose
class node_investigator,node_case_material,node_output toneIndigo
```

## Components

### Case Intake

- [Command Line](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/cli.py): `src/cfna/cli.py`
- [Browser Form](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/serve.py): `src/cfna/serve.py`
- [Form Intake](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/intake.py): `src/cfna/intake.py`
- [Case Pipeline](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/pipeline.py): `src/cfna/pipeline.py`

### Evidence Correlation

- [Case Loader](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/ingest/loaders.py): `src/cfna/ingest/loaders.py`
- [Entity Extraction](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/extract/entities.py): `src/cfna/extract/entities.py`
- [Relation Discovery](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/extract/relations.py): `src/cfna/extract/relations.py`
- [Case Graph](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/models.py): `src/cfna/models.py`

### Investigation Analysis

- [Network Metrics](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/metrics.py): `src/cfna/analysis/metrics.py`
- [Pattern Detection](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/patterns.py): `src/cfna/analysis/patterns.py`
- [Role Assessment](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/hierarchy.py): `src/cfna/analysis/hierarchy.py`
- [Risk Scoring](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/risk.py): `src/cfna/analysis/risk.py`
- [Hierarchy Builder](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/hierarchy.py): `src/cfna/analysis/hierarchy.py`
- [Activity Timeline](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/timeline.py): `src/cfna/analysis/timeline.py`
- [Evidence Summary](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/analysis/evidence.py): `src/cfna/analysis/evidence.py`
- [Narrative Insights](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/bob/__init__.py): `src/cfna/bob/__init__.py`

### Investigation Outputs

- [Interactive Network Report](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/report/html_report.py): `src/cfna/report/html_report.py`
- [FIR Brief](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/report/fir.py): `src/cfna/report/fir.py`
- [Case And Network JSON](https://github.com/harshitpatilx/bob-ai-hackathon-cipher-matrix/blob/main/src/cfna/pipeline.py): `src/cfna/pipeline.py`

### Other components

- **Investigator**
- **Case Material**
- **Investigation Results**

## Connections

- Investigator → Command Line: runs case
- Case Material → Command Line: supplies files
- Investigator → Browser Form: enters case
- Browser Form → Form Intake: submits fields
- Form Intake → Case Pipeline: creates case
- Command Line → Case Pipeline: runs analysis
- Case Pipeline → Case Loader: loads case
- Case Loader → Case Pipeline: returns records
- Case Pipeline → Entity Extraction: extracts entities
- Case Pipeline → Relation Discovery: discovers relations
- Entity Extraction → Case Graph: adds entities
- Relation Discovery → Case Graph: adds relations
- Case Pipeline → Network Metrics: computes metrics
- Case Pipeline → Pattern Detection: classifies patterns
- Case Pipeline → Role Assessment: assigns roles
- Case Pipeline → Risk Scoring: scores risk
- Case Pipeline → Hierarchy Builder: builds hierarchy
- Case Pipeline → Activity Timeline: builds timeline
- Case Pipeline → Evidence Summary: builds evidence
- Case Pipeline → Narrative Insights: requests insights
- Case Pipeline → Interactive Network Report: renders report
- Case Pipeline → FIR Brief: renders brief
- Case Pipeline → Case And Network JSON: writes exports
- Interactive Network Report → Investigation Results: publishes HTML
- FIR Brief → Investigation Results: publishes brief
- Case And Network JSON → Investigation Results: writes JSON
- Browser Form → Investigation Results: serves reports
- Investigator → Investigation Results: reviews findings
