# skb-by/cbr-news-materials architecture

> Architecture diagram of the GitHub repository skb-by/cbr-news-materials, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/skb-by/cbr-news-materials
- Repository: https://github.com/skb-by/cbr-news-materials

## Overview

This repository publishes an OSINT monitoring product: public reports, coded-news tables, and maps built from an operational news corpus that is explicitly outside the repository. The main public workflow is a report and OI export, alongside a separate news-map build; the README describes the analysis stages and the resulting user-facing views. A second, distinct branch maintains and publishes a DARPA-focused working register. The graph includes the sampled builders and major documented capabilities; unsampled implementation details and links between separate builders are omitted rather than inferred.

Main entry points: [`news-map/index.html`](https://github.com/skb-by/cbr-news-materials/blob/main/news-map/index.html) (News map), [`darpa-programs/data/darpa_programs.csv`](https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/data/darpa_programs.csv) (DARPA datasets), [`scripts/public_export.py`](https://github.com/skb-by/cbr-news-materials/blob/main/scripts/public_export.py) (Public exporter), [`scripts/build_news_map.py`](https://github.com/skb-by/cbr-news-materials/blob/main/scripts/build_news_map.py) (News map builder)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public monitoring"]
  node_report["Current report"]
  node_oi_method["OI 5×5 guide<br/>[OI_5x5.md]"]
  node_oi_tables["OI tables<br/>[README.md]"]
  node_news_map["News map<br/>[index.html]"]
  node_registry_map["Registry map<br/>[index.html]"]
end

subgraph group_news["News analysis"]
  node_oi_builder["OI page builder<br/>[build_oi_page.py]"]
  node_exporter["Public exporter<br/>[public_export.py]"]
  node_news_builder["News map builder<br/>[build_news_map.py]"]
  node_news_map_data["News map data<br/>[data.js]"]
  node_news_contour["News entities<br/>[contour.js]"]
  node_live_db[("Operational news DB")]
end

subgraph group_registry["Entity registries"]
  node_registry_data["Registry map data<br/>[data.js]"]
  node_companies["Company register<br/>[companies.csv]"]
  node_registry_links["Registry links<br/>[links.json]"]
  node_mention_gap["Mention gap analysis<br/>[mention_gap.py]"]
end

subgraph group_darpa["DARPA research"]
  node_darpa_runner["DARPA register<br/>[darpa.py]"]
  node_darpa_data["DARPA seed data<br/>[darpa_data.py]"]
  node_darpa_tables["DARPA datasets<br/>[darpa_programs.csv]"]
  node_proxy_check["Subsidiary checks<br/>[proxy_detector.py]"]
  node_subawards["Subaward research<br/>[sam_subawards.py]"]
  node_revolving_door["Personnel research<br/>[revolving_door.py]"]
end

node_reader(("Public reader"))
node_sec["SEC EDGAR"]
node_usaspending["USAspending"]

node_reader -->|"reads"| node_report
node_reader -->|"explores"| node_news_map
node_reader -->|"explores"| node_registry_map
node_reader -->|"consults"| node_oi_method
node_reader -->|"reads"| node_oi_tables
node_oi_builder -->|"reads rules"| node_oi_method
node_exporter -->|"writes"| node_report
node_exporter -->|"writes"| node_oi_tables
node_news_builder -->|"reads"| node_live_db
node_news_builder -->|"generates"| node_news_map_data
node_news_map -.->|"displays"| node_news_map_data
node_news_map -.->|"uses entity data"| node_news_contour
node_registry_data -->|"generated from"| node_companies
node_registry_data -->|"generated from"| node_registry_links
node_darpa_runner -->|"loads seed data"| node_darpa_data
node_darpa_runner -->|"exports tables"| node_darpa_tables
node_proxy_check -->|"reads organizations"| node_darpa_tables
node_proxy_check -->|"queries"| node_sec
node_subawards -->|"reads organizations"| node_darpa_tables
node_subawards -->|"queries"| node_usaspending

click node_report "https://github.com/skb-by/cbr-news-materials/blob/main/%D0%90%D0%9A%D0%A2%D0%A3%D0%90%D0%9B%D0%AC%D0%9D%D0%AB%D0%99_%D0%9E%D0%A2%D0%A7%D0%81%D0%A2.md"
click node_oi_method "https://github.com/skb-by/cbr-news-materials/blob/main/OI_5x5.md"
click node_oi_tables "https://github.com/skb-by/cbr-news-materials/blob/main/data/oi5x5/README.md"
click node_oi_builder "https://github.com/skb-by/cbr-news-materials/blob/main/scripts/build_oi_page.py"
click node_exporter "https://github.com/skb-by/cbr-news-materials/blob/main/scripts/public_export.py"
click node_news_builder "https://github.com/skb-by/cbr-news-materials/blob/main/scripts/build_news_map.py"
click node_news_map "https://github.com/skb-by/cbr-news-materials/blob/main/news-map/index.html"
click node_news_map_data "https://github.com/skb-by/cbr-news-materials/blob/main/news-map/data.js"
click node_news_contour "https://github.com/skb-by/cbr-news-materials/blob/main/news-map/contour.js"
click node_registry_map "https://github.com/skb-by/cbr-news-materials/blob/main/map/index.html"
click node_registry_data "https://github.com/skb-by/cbr-news-materials/blob/main/map/data.js"
click node_companies "https://github.com/skb-by/cbr-news-materials/blob/main/companies.csv"
click node_registry_links "https://github.com/skb-by/cbr-news-materials/blob/main/map/links.json"
click node_mention_gap "https://github.com/skb-by/cbr-news-materials/blob/main/scripts/mention_gap.py"
click node_darpa_runner "https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/scripts/darpa.py"
click node_darpa_data "https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/scripts/darpa_data.py"
click node_darpa_tables "https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/data/darpa_programs.csv"
click node_proxy_check "https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/scripts/proxy_detector.py"
click node_subawards "https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/scripts/sam_subawards.py"
click node_revolving_door "https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/scripts/revolving_door.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_report,node_oi_method,node_oi_tables,node_news_map,node_registry_map toneBlue
class node_oi_builder,node_exporter,node_news_builder,node_news_map_data,node_news_contour,node_live_db toneAmber
class node_registry_data,node_companies,node_registry_links,node_mention_gap toneMint
class node_darpa_runner,node_darpa_data,node_darpa_tables,node_proxy_check,node_subawards,node_revolving_door toneRose
class node_reader,node_sec,node_usaspending toneIndigo
```

## Components

### Public monitoring

- [Current report](https://github.com/skb-by/cbr-news-materials/blob/main/%D0%90%D0%9A%D0%A2%D0%A3%D0%90%D0%9B%D0%AC%D0%9D%D0%AB%D0%99_%D0%9E%D0%A2%D0%A7%D0%81%D0%A2.md): `АКТУАЛЬНЫЙ_ОТЧЁТ.md`
- [OI 5×5 guide](https://github.com/skb-by/cbr-news-materials/blob/main/OI_5x5.md): `OI_5x5.md`
- [OI tables](https://github.com/skb-by/cbr-news-materials/blob/main/data/oi5x5/README.md): `data/oi5x5/README.md`
- [News map](https://github.com/skb-by/cbr-news-materials/blob/main/news-map/index.html): `news-map/index.html`
- [Registry map](https://github.com/skb-by/cbr-news-materials/blob/main/map/index.html): `map/index.html`

### News analysis

- [OI page builder](https://github.com/skb-by/cbr-news-materials/blob/main/scripts/build_oi_page.py): `scripts/build_oi_page.py`
- [Public exporter](https://github.com/skb-by/cbr-news-materials/blob/main/scripts/public_export.py): `scripts/public_export.py`
- [News map builder](https://github.com/skb-by/cbr-news-materials/blob/main/scripts/build_news_map.py): `scripts/build_news_map.py`
- [News map data](https://github.com/skb-by/cbr-news-materials/blob/main/news-map/data.js): `news-map/data.js`
- [News entities](https://github.com/skb-by/cbr-news-materials/blob/main/news-map/contour.js): `news-map/contour.js`
- **Operational news DB**

### Entity registries

- [Registry map data](https://github.com/skb-by/cbr-news-materials/blob/main/map/data.js): `map/data.js`
- [Company register](https://github.com/skb-by/cbr-news-materials/blob/main/companies.csv): `companies.csv`
- [Registry links](https://github.com/skb-by/cbr-news-materials/blob/main/map/links.json): `map/links.json`
- [Mention gap analysis](https://github.com/skb-by/cbr-news-materials/blob/main/scripts/mention_gap.py): `scripts/mention_gap.py`

### DARPA research

- [DARPA register](https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/scripts/darpa.py): `darpa-programs/scripts/darpa.py`
- [DARPA seed data](https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/scripts/darpa_data.py): `darpa-programs/scripts/darpa_data.py`
- [DARPA datasets](https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/data/darpa_programs.csv): `darpa-programs/data/darpa_programs.csv`
- [Subsidiary checks](https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/scripts/proxy_detector.py): `darpa-programs/scripts/proxy_detector.py`
- [Subaward research](https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/scripts/sam_subawards.py): `darpa-programs/scripts/sam_subawards.py`
- [Personnel research](https://github.com/skb-by/cbr-news-materials/blob/main/darpa-programs/scripts/revolving_door.py): `darpa-programs/scripts/revolving_door.py`

### Other components

- **Public reader**
- **SEC EDGAR**
- **USAspending**

## Connections

- Public reader → Current report: reads (evidence: `README.md`)
- Public reader → News map: explores (evidence: `README.md`)
- Public reader → Registry map: explores (evidence: `README.md`)
- Public reader → OI 5×5 guide: consults (evidence: `README.md`)
- Public reader → OI tables: reads (evidence: `README.md`)
- OI page builder → OI 5×5 guide: reads rules (evidence: `scripts/build_oi_page.py`)
- Public exporter → Current report: writes (evidence: `scripts/public_export.py`)
- Public exporter → OI tables: writes (evidence: `scripts/public_export.py`)
- News map builder → Operational news DB: reads (evidence: `scripts/build_news_map.py`)
- News map builder → News map data: generates (evidence: `scripts/build_news_map.py`)
- News map → News map data: displays
- News map → News entities: uses entity data
- Registry map data → Company register: generated from (evidence: `map/data.js`)
- Registry map data → Registry links: generated from (evidence: `map/data.js`)
- DARPA register → DARPA seed data: loads seed data (evidence: `darpa-programs/scripts/darpa.py`)
- DARPA register → DARPA datasets: exports tables (evidence: `darpa-programs/scripts/darpa.py`)
- Subsidiary checks → DARPA datasets: reads organizations (evidence: `darpa-programs/scripts/proxy_detector.py`)
- Subsidiary checks → SEC EDGAR: queries (evidence: `darpa-programs/scripts/proxy_detector.py`)
- Subaward research → DARPA datasets: reads organizations (evidence: `darpa-programs/scripts/sam_subawards.py`)
- Subaward research → USAspending: queries (evidence: `darpa-programs/scripts/sam_subawards.py`)
