STAGE 01
Ingestion
Sanitize and validate raw news. Strip HTML, normalize timestamps, attach source tier classification.
ingestion-validation.ts · I-01, I-02
STAGE 02
Classification
LLM categorizes the event. Detect promotional language, dedupe near-identical articles, classify catalyst subtype.
classifier.ts · digest.ts · promotional.ts · I-03, I-04
STAGE 03
Asset routing
Score each candidate asset's relevance to the event: subject (1.0), directly affected (0.8), basket member (0.5).
asset-router.ts · I-05, I-06, I-07
STAGE 04
Conviction
Multi-component scoring. Adjust by entity history: contradictory recent signals lower conviction.
entity-history.ts · I-15, I-16
STAGE 05
Risk derivation
Stop, target, and horizon drawn from base rates per (catalyst subtype, asset class). No flat templates.
catalyst-subtype.ts · I-10 through I-20
STAGE 06
Conflict detection
Flag signals that contradict each other on the same asset. Relevance-weighted to suppress incidental-mention noise.
conflict.ts · I-09
STAGE 07
Tier assignment
Auto / Review / Info gating. Single-source claims cannot reach Auto regardless of conviction.
tier-resolution.ts · I-21, I-22, I-23
STAGE 08
Persistence
Pre-save invariant gate enforces every rule above. Lifecycle sweeper expires stale signals.
invariants.ts · lifecycle.ts · I-13, I-14, I-30