Next best product engine¶
| ID | MOD-107 |
| System | SD06 |
| Repo | bank-risk-platform |
| Build status | Not started |
| Deployed | No |
What it does¶
MOD-107 computes a ranked list of next best products for every active customer on a weekly Snowflake run. It takes the eligible product set from MOD-105, scores each eligible product against a set of customer signals, and writes the top 3 ranked products per customer to Postgres for consumption by MOD-108 (offer engine), MOD-083 (agent assist back-office view), and MOD-077 (app insight cards).
Why it exists¶
Commercial reason: Next best product is the primary mechanism for deepening customer relationships. The bank's growth model (BG-003, BG-005) depends on expanding product holdings per customer — an NBP recommendation that surfaces the right product at the right moment drives conversion without requiring a sales team.
Conduct reason: Scoping recommendations to the eligibility matrix (MOD-105) ensures every surfaced product is one the customer can actually obtain. This directly satisfies CON-006 (product suitability) and avoids the mis-selling risk of promoting products a customer would be declined for.
Ranking model¶
| Signal | Source | Weight direction |
|---|---|---|
| Eligible product (binary gate) | MOD-105 | Must be ELIGIBLE — ineligible products excluded |
| Relationship gap | Products held vs products in same segment peer group | Higher gap → higher rank |
| Churn / health score | MOD-040 | High churn risk → prioritise retention products (savings rate, loyalty offer) |
| Customer ROTE contribution | MOD-106 | Products that improve customer-level ROTE ranked higher |
| Behavioural signals | Spend categories, idle cash detected, FX activity | Idle cash → savings product; regular FX → multi-currency wallet |
| Recency of prior offer | MOD-108 offer history | Products offered and rejected recently ranked lower (cooling-off period: 90 days) |
| Product lifecycle stage | Product register | Products in sunset / under-capacity ranked lower |
Weights are configurable per product class in a Snowflake configuration table. Model version is recorded on every output row.
Data model¶
-- product_intelligence.next_best_product (Snowflake — written weekly)
CREATE TABLE product_intelligence.next_best_product (
party_id VARCHAR NOT NULL,
jurisdiction VARCHAR NOT NULL,
rank INT NOT NULL, -- 1 = highest ranked
product_id VARCHAR NOT NULL,
score NUMBER(8,6) NOT NULL, -- 0.0–1.0
primary_signal VARCHAR NOT NULL, -- top-contributing signal name
model_version VARCHAR NOT NULL,
evaluated_at TIMESTAMP_NTZ NOT NULL,
PRIMARY KEY (party_id, rank, evaluated_at)
);
Results are written back to Postgres (product_intelligence.nbp_current) for fast app reads — only the current week's top 3 per customer are held in Postgres; Snowflake retains full history.
Output destinations¶
- MOD-108 reads NBP rankings to prioritise which eligible products generate offers.
- MOD-083 (agent assist) surfaces the top 3 NBP in the agent's customer 360 view.
- MOD-077 (app dashboard) reads NBP for insight cards — surfaces as contextual prompts.
Fairness monitoring¶
Weekly fairness report computes recommendation rate by jurisdiction, age band, and customer segment. Any product where recommendation rate differs by more than 10 percentage points across demographic groups triggers a nbp.fairness_breach alert to the compliance team for model review.
Module dependencies¶
Depends on¶
| Module | Title | Required? | Contract | Reason |
|---|---|---|---|---|
| MOD-105 | Product eligibility engine | Required | — | Eligible product set from MOD-105 is the input constraint — NBP ranks within the eligible set only. |
| MOD-040 | Churn & health score engine | Required | — | Churn probability and financial health score from MOD-040 are ranking inputs — retention-risk customers receive retention-oriented product recommendations. |
| MOD-106 | ROTE engine | Optional | — | Customer ROTE from MOD-106 informs ranking to favour products that improve overall relationship profitability. |
| MOD-104 | AWS shared infrastructure bootstrap | Required | — | AWS shared infrastructure provisioned by MOD-104 is required before this module can be deployed. |
Required by¶
| Module | Title | As | Contract |
|---|---|---|---|
| MOD-108 | Product offer engine | Hard dependency | — |
Policies satisfied¶
| Policy | Title | Mode | How |
|---|---|---|---|
| CON-006 | Product suitability and governance | CALC |
NBP recommendations are scoped strictly to the customer's eligible product set from MOD-105 — no product outside the eligibility matrix can appear as a next best product. |
| CON-001 | Customer Fairness & Conduct Policy | CALC |
Ranking model is periodically tested for demographic fairness — no protected characteristic may systematically suppress product recommendations for a customer group. |
Capabilities satisfied¶
(No capabilities mapped)
Part of SD06 — Snowflake Analytics & Risk Platform
Compiled 2026-05-22 from source/entities/modules/MOD-107.yaml