Content OS

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 LLMComputed
Summary, category, geo, keywordsAuthority score
Authenticity, brand fitPersona 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.

Source: roadmap/workflows/digital/feed-enrichment/README.md