Catalog Audiences
Why this exists
Some catalogs carry their own learner-persona logic. In these cases, the raw
target_persona label is not enough on its own: the adapter needs a repository-backed
audience block that explains who this learner is in practice and what their core
learning need looks like inside that catalog.
This document defines how catalog-specific audience cases should be stored and used in Fraya's prompt layer.
How catalog audiences should be used
Catalog audiences are deterministic adapter cases.
They should:
- resolve known catalog persona labels into stable audience text;
- preserve catalog-specific phrasing where that wording matters;
- support aliases when a catalog may use more than one label for the same persona.
Catalog audiences should not:
- replace the generic persona model for all workflows;
- invent new persona interpretations beyond the source material;
- force every catalog to use the same routing logic.
Source-of-truth rule
Raw audience-related labels come from the catalog inputs.
Repository-backed audience cases live in the prompt layer via:
prompts/injections/catalog_audiences.yaml
The raw catalog labels are used as routing keys. The injection expands those labels into stable runtime-facing audience blocks that downstream prompts can consume directly.
Current curated entries
The current repository-backed implementation includes municipal persona sets for:
Catalog: municipalities_nl_2026
- the six Dutch municipal persona labels from the municipal persona source;
- a broad municipal-wide audience case for introductory courses aimed at all personas;
- work-practice wording and core online learning need as source-backed audience text.
Catalog: municipalities_de_2026
- the six German municipal persona labels from the German municipal persona source;
- Dutch canonical municipal aliases where they map to the same learner type;
- source-backed focus and future-orientation wording from the German memo.
Related files
prompts/injections/catalog_audiences.yamlprompts/utility/tool_utility_resolve_audience.yamlprompts/injections/persona_model.yaml