Feed Enrichment
Turn a raw scraped row into a decision-ready card - summary, category, geography, keywords, scores.
Vertical: Digital · Status: ✅ Live Back to Digital · workflows index
Trigger
Fully automatic. Background worker polling every ~2 seconds.
Flow
claim one pending item (atomic, per tenant)
|
LLM pass: summary - category - geo_state - keywords
authenticity - brand fit + cited guideline ids
|
deterministic pass: authority score - persona matches
|
status: ready (or failed, retried up to 3x)
The deliberate split
Not everything comes from the model:
| From the LLM | Computed |
|---|---|
| Summary, category, geo, keywords | Authority score |
| Authenticity, brand fit | Persona matches |
Authority is a property of the source, not the story - so it is computed from source priority, weight and the trusted-source list. Personas are matched by rule, because an article never states its reader's age or profession.
Agents involved
Discovery Agent. Per-tenant mode: full (default) - no_summary - off.
Gaps
Serial - one item at a time, so a large sweep drains slowly. Reads only the first 5 000 characters of an article.
Roadmap source
Page 1 data layer; page 2 target-state Data Enrichment — see roadmap_ref_extracted.md.