Skip to content

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