Case Study
NBPA CRM
The Salesforce system of record and internal operations platform behind NBPA Portal: the backend the mobile app reads from and writes to, and the day-to-day system NBPA staff use to run Player Experience, Legal, Finance, and Communications.
Role: Director of Digital Product · Platform: Salesforce (Sales Cloud & Experience Cloud) · Launched: November 2025
The Opportunity
Before Salesforce, NBPA staff tracked players, certified agents, contracts, and financial advisor relationships across disconnected spreadsheets, email threads, and undocumented institutional knowledge, with no shared system of record and no way to see the full picture of service delivered to any one player. As Director of Digital Product, I was tasked with building that system of record and, on top of it, a nine-endpoint REST API layer that could safely power a public-facing mobile app, NBPA Portal, for four different portal personas without ever giving the app direct access to the org.
Product Process
- 01
Discovery & Requirements
Mapped how Player Experience, Legal, Finance, and Communications actually tracked players, agents, contracts, and every touch point delivered to a player, and scoped which of that could become structured Salesforce objects versus stay a manual staff process.
- 02
Design
Designed the data model (player, agent, financial advisor, and contract/change-request objects) and the Experience Cloud community that would host four distinct portal personas, using the same Figma user story map that scoped the mobile app.
- 03
Build
Directed the engineering team building roughly 107 Apex classes and a nine-endpoint REST API layer on Sales Cloud and Experience Cloud, plus Lightning Web Components and four embedded Vue single-page apps for internal staff dashboards.
- 04
Launch & Rollout
Launched org-wide in November 2025 alongside the mobile app, onboarded every PA and T450 staff member, and personally ran training as lunch-and-learns rather than a one-off announcement.
Leadership & Team
NBPA CRM was a real cross-functional delivery. I led the data model and integration decisions (which systems needed a direct Apex integration versus a staff workflow), the requirements gathering across Player Experience, Legal, Finance, and Communications, and the staff rollout and training. An engineer I directed implemented the Salesforce org itself: the Apex REST layer, the trigger-based automation, and the embedded Lightning/Vue admin tools described below.
Key Features
Player, Agent & Advisor System of Record
Player, agent, and financial-advisor records, including legal, banking, and representation history, live in Salesforce as the single source of truth the mobile app reads from and writes to.
Quality Touch Point (QTP) Staff Workflow Engine
An internal task and checklist system tracks every service interaction delivered to a player, foundation setup, facility usage, fine arbitration, financial audits, and more, and routes it to staff by department.
Agent Certification & Infraction Pipeline
Agent applications (bar admissions, employment history, government IDs, references) and the full infraction lifecycle, auto-detected via Sportsradar and arbitrated by Legal, run end-to-end in Salesforce.
Finance Operations
Live AP/AR balances and vendor sync through Sage Intacct, payee management through Tipalti, and digital 1099 delivery replace manual, per-player lookups.
Communications & Events
Mass texting through Twilio with full history on every player's profile, plus event registration and DocuSign e-signed waivers for union events.
Embedded Staff Admin Tools
Four Vue single-page apps, a QTP dashboard, email notifications, player insights, and a facility scheduler, run inside Lightning pages through a custom Salesforce-as-a-backend bridge, giving staff purpose-built tools beyond standard Salesforce screens.
System Architecture & Tech Stack
The mobile app and this CRM are two sides of the same system. Salesforce is the system of record; nine Apex REST controllers, covering players, agents, financial advisors, medical professionals, and a public/unauthenticated surface, are the only door into it from outside, and the mobile app authenticates as a genuine Experience Cloud portal user rather than through a separate token scheme. Internally, that same schema powers a distinct set of tools staff use directly: Lightning pages, trigger-based automation across roughly 114 triggers, and four embedded Vue single-page apps. A custom schema-to-TypeScript codegen tool keeps the mobile app's types and the Vue admin tools' types in sync with the live Salesforce schema automatically, so the two sides can't silently drift apart.
Salesforce Platform
Integrations
Design & Operations Decisions
- Row-level access enforced in code, not sharing rules. Every mobile-facing REST controller deliberately runs without sharing, with row-level access enforced by explicit query filters instead, so the mobile app only ever sees the logged-in player's, agent's, or advisor's own records.
- Four Experience Cloud profiles, one org. NBPA Player, NBPA Agent, NBPA Financial Advisor, and NBPA Medical Professional are separate, auto-provisioned Salesforce profiles, so each portal persona only sees the metadata relevant to their role.
- Per-relationship permissions, not blanket access. A financial advisor's ability to view documents or update banking info is a flag on the relationship itself, grantable and revocable per player, not an all-or-nothing account setting.
- A homegrown error log, not a black box. Every unhandled exception in the REST layer writes a structured log record automatically, giving staff a queryable history instead of a silent failure.
- Department routing reuses the Role Hierarchy. Internal QTP staff tasks are routed by matching a task's department to a staff member's Salesforce role, rather than building a separate assignment system.
Planning: The User Story Map
Scoping the CRM meant mapping requirements across far more than the four portal personas. Legal, Finance, Player Experience, Brand Partnerships, Brand Comms, Crisis Management, Mental Health, Licensing, and Operations all fed into one Salesforce user story map, tying together players, agents, contracts, financial advisors, events, QTPs, waivers, and roster data into a single system, the same map that scoped the mobile app on the other side of this system.

Outcomes
Salesforce launched alongside the Portal in November 2025 as the organization's CRM. I planned and led the staff rollout myself, running training as lunch-and-learns rather than a one-off announcement. It now powers core workflows across Player Experience, Legal, Finance, and Communications, replacing siloed spreadsheets and undocumented individual knowledge with a shared system of record.
The most significant outcome is visibility the NBPA never had before. Quality Touch Points are tracked org-wide, over 4,200 delivered this fiscal year alone, and staff can open a player's profile and see the full picture of service delivered to them: foundation setup, facility usage, fine arbitration, financial audits, and more. That's the first meaningful layer of institutional data in the union's history.
The agent side shows the same shift. Over 200 agent applications, from intake through certification, have been processed end-to-end in Salesforce this fiscal year, and the full infraction lifecycle, detection through Sportsradar, arbitration by Legal, and player communication, now runs as one structured workflow instead of manual record-keeping and siloed email.
On the finance side, live AP/AR balances flow in through the Sage Intacct integration and 1099s are delivered digitally, cutting the manual, per-player work that used to eat staff time every tax season.
Reflections & What's Next
Salesforce is now the operational backbone the union didn't have before, and the roadmap keeps building on that foundation: a Salesforce-native AI agent trained on NBPA data to answer questions about contracts, QTPs, and market value; an Acuity integration to validate incoming financial data from players and advisors; a Bank of America integration to centralize agent-dues payments; and a Circle of Influence feature to map the contacts closest to each player, populated both manually and automatically from facility check-in data.