Build1 publisher2 min readPublished
Consent Belongs in the Decision Path, Where Suppress Is One of Several Trust Actions That Can Change a Score
An InfoQ pattern piece puts consent, fatigue, channel sensitivity and cost inside the ranking path, with five trust actions that adjust a candidate's score and a response payload naming the tier and the rules behind it.
The Engineer · Build desk

What happened
- An InfoQ architecture article argues that consent, fatigue, channel sensitivity, cost and explainability belong inside the personalization decision path instead of a downstream analytics sidecar.
- The author reports that across enterprise programs the recommendation models ranked relevant offers as expected while the production decision path stayed difficult to govern.
- The pattern counts governance as real only when a trust action changes the candidate score, through show, soften, delay, suppress or generic fallback behavior.
- Each response identifies the selected inference tier, the rules that fired, the trust action taken, a score breakdown and the source of the explanation.
- The open-source reference implementation is built on FastAPI with externalized YAML policies, modular scoring, stateful journey memory and optional LLM escalation.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- cost Four policy-selected tiers means four inference paths to test and keep operable, plus the router that picks between them, and the team owning personalization pays that cost.
- decision Externalizing rules into YAML pulls suppression out of model code, so someone has to decide who may edit that file and what review an edit gets.
- capability A response naming the rules fired and the trust action taken lets a complaint about an offer be answered from the API payload rather than reconstructed afterwards from logs and CRM extracts.
Allow a trust action to suppress a candidate and the scoring call inherits that action's inputs. Consent for the current channel, a fatigue count for that offer, and the journey stage held in cross-session memory all have to resolve before a score comes back [1][3][4]. The article puts them there on purpose. Its stated principle is that governance must influence ranking before an experience is delivered [7].
The five trust actions are not equal in implementation cost [3][16]. Show and suppress are a flag on the candidate. Soften implies a lower-intensity variant of the same offer already exists. Delay implies somewhere to hold the candidate and a trigger to re-evaluate it. Generic fallback implies a default that is acceptable on every channel the platform serves.
The tier router is the part I would copy first. Rules, small models, classical ML and an optional LLM sit behind one policy-selected interface, each testable and operable on its own [2][17]. The worked scenario lists provider unavailability alongside consent and fatigue as a reason the relevant upgrade should not ship [8]. Under this design an LLM outage becomes a tier downgrade instead of a failed recommendation request.
The explanation payload is only useful if the five fields stay comparable over time [5][18]. The selected tier and the trust action are enumerations. The rules fired are identifiers, and identifiers are only useful at audit time if a policy edit does not renumber them.
Consent has to be readable per customer per channel on the request path before score-time governance means what it says. The fatigue counter must reflect this session, not last night's batch. And the YAML must have a review path, because externalizing the policy moves suppression out of code review and into a file with its own queue in front of it [6]. Where consent arrives in a nightly CRM export, a suppression decision made inside scoring is asserting a freshness the data does not have. The article's own account of the status quo is that these answers sit scattered across logs, CRM data, dashboards and model prompts while the recommendation returns only an identifier and a score [11].
The evidence here is one practitioner's pattern, drawn from work with architecture, MarTech engineering, data and analytics, product, business and governance teams [12]. In that account, models ranked relevant offers fine and inference routing lived in scattered application logic [12][13]. No latency, cost or uplift figures accompany the pattern [15], so the case for moving governance ahead of ranking rests on traceability. As the article puts it: "This is not primarily a model problem. It is an architecture problem." [10]
What to watch
- Whether the reference implementation publishes latency for a score path that includes the consent and fatigue reads.
- Whether the YAML policy layer gains versioning and an approval path once suppression rules are editable outside code review.
- Whether rule identifiers in the explanation payload stay stable across policy edits.