Architecture
Architecture
Anomalica turns raw source material into a public, fully-sourced knowledge base. Here is precisely how, end to end - click any step to see what it does, what it produces, and its copyright status.
Copyright follows the source
Public
Human review
—→ data flow · ···→ review / control
Click any box for details
flowchart TB
classDef src fill:#F0D9C9,stroke:#B35A28,stroke-width:1.5px,color:#3a2208;
classDef pub fill:#D1F1F1,stroke:#0B6E6E,stroke-width:1.5px,color:#053333;
classDef rev fill:#E9E5DC,stroke:#5E5A50,stroke-width:1.5px,color:#2c2a24;
classDef store fill:#ffffff,stroke:#5E5A50,stroke-width:1.3px,color:#2c2a24;
raw["Raw sources"]:::src
ingester{{"Ingester"}}:::pub
ingests[("Ingests")]:::src
archive[("sources/ archive")]:::src
workbench{{"Workbench"}}:::rev
digester{{"Digester"}}:::pub
digests[("Digests")]:::pub
assimilator{{"Assimilator"}}:::pub
kg[("SQLite knowledge graph")]:::pub
synthesiser{{"Synthesiser"}}:::pub
briefs[("Briefs")]:::pub
assembler{{"Assembler"}}:::pub
content[("Content")]:::pub
site{{"Site"}}:::pub
brand[("Brand")]:::store
raw -->|"original files (1:1)"| ingester
ingester -->|"records (1:1)"| ingests
ingester -->|"originals + raw transcripts"| archive
ingests -->|"records (1:1)"| digester
digester -->|"digest files (1:1)"| digests
digests ==>|"per-record digests (many -> one)"| assimilator
assimilator <-->|"reads + updates"| kg
kg -->|"entity + its claims"| synthesiser
synthesiser ==>|"a brief per page (one -> many)"| briefs
briefs -->|"the page's brief (1:1)"| assembler
digests -->|"one record (1:1)"| assembler
assembler -->|"entity articles + inspection pages"| content
content -->|"renders"| site
brand -.->|"tokens, logo"| site
ingests <-.->|"review + corrections"| workbench
digests <-.->|"review + corrections"| workbench
archive -.->|"check against source"| workbench
workbench -.->|"digestible signal + visual notes"| digester
click raw nodeClick
click ingester nodeClick
click ingests nodeClick
click archive nodeClick
click workbench nodeClick
click digester nodeClick
click digests nodeClick
click assimilator nodeClick
click kg nodeClick
click synthesiser nodeClick
click briefs nodeClick
click assembler nodeClick
click content nodeClick
click site nodeClick
click brand nodeClick
Local · runs automatically
Claude · the priority queue
Click any card to see how it is scheduled
How it works
The jobs, by where they run