Next Best Action (NBA)
Decide which single action matters most for a given customer right now, across every competing program.
Vertical: BTL · Status: ⬜ Planned Back to BTL · workflows index
Trigger
Per customer, on a schedule and on significant events.
Flow
collect eligible actions across ALL programs
(cross-sell - top-up - renewal - winback - app adoption ...)
|
score each: fit - timing - value - fatigue
|
apply frequency cap and channel budget
|
select ONE <- the whole point
|
hand to that workflow for execution
The problem it solves
Once several Program workflows run, a single customer qualifies for several at once. Without arbitration each program messages independently, the customer gets four messages in a week, and the best-performing program is simply the one that ran first.
NBA is the arbitration layer. It is listed on page 2 as a target-state capability, and it only becomes meaningful once more than one program exists.
Agents involved
Would sit on the intelligence layer, reading eligibility, history and fatigue from one place.
Strong case for an agent on ranking; the eligibility rules themselves stay deterministic.
Blocked on
Everything else. NBA needs at least two live programs to arbitrate between, plus CRM and channel layers.
Build it last, but design the frequency cap first - retrofitting fatigue control across running programs is far harder than starting with it.
Roadmap source
Page 2 - NBA in the target-state list — see roadmap_ref_extracted.md.