
Under the Hood: OnePay’s Next-Best-Action Engine
How a shared decisioning system helps personalize products and features for millions of customers

Share
In this Article
Share
OnePay builds a broad and growing suite of financial products: banking, credit, investing, wireless, and more. With each new product, the same question surfaces: how do we connect the right customers with the products that are most relevant to them?
That question gets harder fast. A rapidly expanding product lineup, with hundreds of features and capabilities across them, each with different eligibility rules and adoption patterns. Millions of customers, each at a different point in their financial journey. The number of feature-customer combinations is enormous. It is far larger than any manual process can evaluate at the individual level, no matter how thoughtful the targeting.
And the complexity isn’t just scale. Each feature has its own eligibility criteria, its own adoption dynamics, its own audience. What makes a customer a good fit for a savings product is different from what makes them a good fit for credit-building or investing. A customer who qualifies for five products at once deserves to see the one that is most relevant to them right now, not simply whichever happens to be in the current cycle.
We needed more than a targeting engine. We needed a shared AI system that could learn from customer behavior across the portfolio, evaluate which products and which features within those products were most relevant to a customer’s current context, rank those options effectively, and keep improving over time. That system is the Next-Best-Action (NBA) engine.
This post is a high-level look at how it works.
One System for Every Product
Before NBA, adding a new product meant building new recommendation logic from scratch. Each feature had its own criteria, its own rules, its own delivery path. That approach worked when the set of products and features OnePay offered was small, but it couldn’t scale with the pace we ship new products.
The NBA engine replaces that with a shared framework. The framework operates at two levels. At the ecosystem level, it helps determine which products are most relevant for each customer. Within those products, it can also learn which specific features or experiences are most useful to surface next. That lets OnePay personalize not just across products, but within them. When a new product or feature launches, the team defines what adoption looks like for that feature, specifies who is eligible, and validates the output through a repeatable onboarding path, not a greenfield build. The shared ML infrastructure for modeling, scoring, ranking, and delivery is already in place.
Because the framework is shared, the same ranking logic powers every recommendation surface: in-app placements, push notifications, marketing campaigns, and internal analytics. It does this without turning each channel into its own targeting silo. One engine, many surfaces, consistent relevance.

The NBA flywheel: customer signals feed a shared learning system that ranks products fairly across the portfolio, delivers recommendations across surfaces, and uses outcomes to keep improving.
Understanding Our Customers
The foundation of NBA is a deep, continuously refreshed picture of every customer. The engine draws on hundreds of signals across the customer relationship to build a predictive view of each customer, not just what products someone has, but how their financial picture is changing over time.
Those signals span the full breadth of the customer journey. Account and product history tells us what a customer has adopted and how they use it. Financial health indicators (balance trajectories, cash-flow patterns, spending trends) reveal whether someone is building stability or navigating a tight stretch. Engagement signals capture how a customer interacts with the app: what they explore, how often, through which channels. Activity metrics track the rhythm of deposits, payments, referrals, and more.
Taken together, these signals become the substrate for the engine’s AI models. They allow the system to identify which signals are most predictive of adoption for each product, infer where a customer is in their financial journey, and update recommendations as that journey changes. We don’t just know what a customer has — we know how their financial picture is changing.
This matters because the right recommendation depends entirely on context. A customer who just got paid and is starting to build savings needs a different suggestion than someone showing early signs of cash-flow stress. A user exploring credit-building for the first time is in a different moment than someone already actively investing. The engine sees these differences because it assembles a rich, multi-dimensional view of each customer and keeps that view fresh as their situation evolves.

Hundreds of customer signals from parallel data pipelines converge into a unified view of each customer.
That freshness is important. Financial lives move quickly. A recommendation that was right last month may not be right today. The engine updates its view of each customer on an ongoing basis, so the products it surfaces stay aligned with where customers actually are, not where they were.
How the System Learns and Keeps Recommendations Fresh
NBA is not just a centralized recommendation service. It is a learning system. The models are trained to estimate product relevance from customer behavior, and the hard part is making those judgments comparable across very different products.
Building a model to score a single product for a single customer is relatively straightforward. The harder challenge is comparing many products fairly. Different products have different adoption rates, different eligibility rules, and different base-rate dynamics. A raw relevance score for a credit product and a raw score for a savings product are not on the same scale. If you rank them directly, you get misleading results. The NBA engine addresses this by calibrating each product’s scores against real-world outcomes and then normalizing across the portfolio, so a high-relevance recommendation for one product can be compared fairly against a high-relevance recommendation for another. That normalization is what makes cross-product ranking principled rather than ad hoc.
As new data arrives, the model is retrained. Every retraining cycle goes through validation before anything reaches a customer: calibration checks, stability comparisons against the prior cycle, and distribution monitoring. In financial services, an AI system that can’t demonstrate its own reliability shouldn’t be making recommendations. We treat governance as a first-class part of the system, not an afterthought.
The engine drives relevance; policy and business judgment still shape the final recommendation set. Business teams retain control through a configurable policy layer, including confidence thresholds, strategic priorities for new launches, and diversity constraints. That keeps the system’s output aligned with both data and business intent.
Building the Intelligence Layer for OnePay
The NBA engine changed how OnePay approaches personalization. Instead of each product maintaining its own targeting logic, there is a shared system that any product can onboard into. Early results bear this out: NBA-powered recommendations have driven 2-3x higher click-through rates compared to non-personalized outreach. And as the engine improves, with better signals, smarter models, and better ranking, every product benefits at once.
That compounding effect is what makes NBA a flywheel. More products create more outcomes, more outcomes create better signals, and better signals lead to more relevant recommendations across the entire ecosystem. The investment goes both ways: the engine gets better because products use it, and products perform better because the engine improves.
We are continuing to invest in the engine to support more adaptive, context-aware decisioning powered by advances in AI and aligned with how quickly our customers’ financial lives change.
We’re building the intelligence layer behind a financial platform that serves millions. If applied machine learning at scale excites you (recommendation systems, personalization, causal inference), we’d love to hear from you. Visit onepay.com/careers to see our open roles.