Sales Intelligence Platform
A win-probability model and executive dashboard for the sales-engineering org of a Fortune 1000 property-data company — built by fusing 70,000+ CRM records with unstructured call transcripts.
Rich data. Zero visibility.
Before the engagement, the client's sales-engineering org had two expensive data assets sitting next to each other with no way to make them talk. The CRM held every closed opportunity — stage, product line, owner, outcome. The call-intelligence platform held the conversations that produced those outcomes. Sixteen tables, none keyed to each other, described the same 1,868 closed deals from two different angles.
Leadership had strong instincts about what a great SE call sounded like: listen more than you talk, run tight cadence, involve the SE early, attach the right mix of products. What they didn't have was an evidence-based way to test those instincts, rank them, or spot the ones that were wrong. The playbook was tribal knowledge passed between reps.
The ask was simple to state and hard to execute: connect the call data to the deal data, then figure out what actually moves the win rate.
Reconcile first. Model second.
I split the problem cleanly in half. Reconciliation came first — nothing else was possible until the sixteen disjoint tables shared a spine. I built a Python pipeline that stitched CRM and call records together using fuzzy account and opportunity matching, timestamp windows, and rep identifiers, then verified overlap on a stratified sample. The output was a single canonical row per closed opportunity, with roughly 70,000 records reconciled overall.
With structured data in place, I turned to the transcripts. Raw text isn't a feature — models need numbers. I built an NLP layer that converted each call into a handful of quantitative engagement signals: talk-to-listen ratio, sentiment polarity across the arc of the call, and objection frequency by category. Those signals joined the CRM features on the reconciled opportunity key.
On top of that unified table I trained an XGBoost classifier for deal outcome and used SHAP to make each prediction inspectable. Then I framed the questions leadership actually cared about as five formal hypotheses — H1 through H5 — and tested each one with the appropriate statistical machinery instead of eyeballing dashboards. Some intuitions held up. Others did not.
An end-to-end pipeline that ships insight, not slides.
The deliverable was a full pipeline, not a notebook. Python jobs ingest raw CRM exports and transcript files, run reconciliation, generate engagement features, score every opportunity, and materialize the outputs for the front end. The same pipeline runs on an anonymized mock dataset shipped with the repo, so the client's team can dogfood the system without ever exposing customer data.
On top of that sits an interactive executive dashboard. Each deal has its own detail view with the top SHAP drivers surfaced in plain English — why this opportunity scored the way it did, what the strongest signals were, and how it compares to the cohort. The hypothesis findings live as their own views so leadership can reference the H1–H5 answers directly.
I also embedded an AI chatbot inside the app for stakeholder Q&A. Executives don't want to filter tables — they want to ask a question in plain language and get a real answer grounded in the data behind them. A live upload path lets the SE ops team drop in refreshed exports and get a re-scored dashboard without touching the code.
The client's first evidence-based view of what closes deals.
The SE org walked out of the engagement with four behavioral drivers isolated as materially predictive, each traceable back to a hypothesis and a statistical test. Multi-product attach (H1) showed a clean monotonic lift from 38.9% to 57% as products moved from one to four, then dropped at 20+ — templated bulk quotes rather than real multi-product deals. Talk-to-listen ratio (H2) was not significant globally at p=0.69, a genuine surprise given how central the metric is to internal coaching. Engagement cadence (H3) was significant with β=-0.0106 on average gap in days (p=0.001). SE involvement (H4) lifted win rate 9pp, from 38% to 47%.
The dashboard, the embedded chatbot, and the anonymized mock dataset let leadership share findings across the org without exposing PII. The live upload path means the analysis compounds — every refresh gets richer instead of restarting from zero.
What I'd do next.
The biggest thing this project taught me is that reconciliation is the moat. Any team can train XGBoost. Very few will do the unglamorous month of fuzzy joins and sanity checks that make the model's inputs mean what you think they mean. Statistical rigor at the hypothesis layer matters just as much — the talk-ratio null result would have been quietly ignored in a dashboard-only workflow.
If I picked the work back up, I'd tighten the sandbagging caveat on H1 by segmenting bulk quotes explicitly, expand the pipeline to additional product lines, and stand up live scoring so the model runs on open opportunities rather than closed ones. On top of that, a coaching-recommendation layer that turns the four drivers into concrete rep-level next actions would move the platform from diagnostic to prescriptive.