Skip to main content

Propensity Scoring Pipeline

BigQuery ML + XGBoost

The propensity scoring pipeline is the core of ConversionOS. It takes raw customer/prospect data, engineers predictive features, trains gradient-boosted models, and outputs calibrated probability scores.

Pipeline Architecture

Raw Events → Feature Engineering → Training → Scoring → Tier Assignment → CDP Export
(BigQuery) (BQML) (BQML) (SQL Logic) (Scheduled)

Feature Categories

Behavioral Features (25-40 features)

FeatureDescriptionSignal
pageviews_7dPage views in last 7 daysRecency
engagement_recency_ratio7d events / 30d eventsMomentum
product_page_viewsViews of product/pricing pagesIntent
form_startsForm interactions without completionFriction signal
return_visit_rateSessions with prior visits / totalInterest depth

Transactional Features (10-15 features)

FeatureDescriptionSignal
days_since_last_purchaseRecency of last transactionEngagement decay
purchase_frequency_90dTransactions per 90 daysLoyalty
avg_order_valueAverage transaction amountValue tier
product_diversityUnique categories purchasedBreadth

Engagement Features (15-20 features)

FeatureDescriptionSignal
email_open_rate_30dOpens / sends in 30 daysChannel engagement
email_click_decay7d clicks / 30d clicksEmail momentum
call_center_contactsSupport interactionsRisk/friction
nps_scoreNet Promoter Score (if available)Satisfaction

External Features (5-10 features)

FeatureDescriptionSignal
competitive_density# competitors in service areaMarket pressure
credit_tierAppended from identity resolutionQualification
household_income_bandDemographic appendCapacity

Model Configuration

CREATE OR REPLACE MODEL `project.conversionos.acquisition_propensity`
OPTIONS(
model_type = 'BOOSTED_TREE_CLASSIFIER',
input_label_cols = ['converted'],
-- Tree parameters
num_parallel_tree = 5,
max_tree_depth = 6,
learn_rate = 0.1,
subsample = 0.8,
-- Regularization
l1_reg = 1.0,
l2_reg = 1.0,
min_split_loss = 0.1,
-- Training config
early_stop = TRUE,
min_rel_progress = 0.001,
max_iterations = 100,
data_split_method = 'RANDOM',
data_split_eval_fraction = 0.2,
-- Explainability
enable_global_explain = TRUE
) AS
SELECT * EXCEPT(user_id) FROM `project.conversionos.feature_table`;

Score Calibration

Raw model probabilities must be calibrated before use in business rules:

  1. Platt scaling — Apply logistic regression on holdout set to calibrate probabilities
  2. Threshold tuning — Set tier boundaries based on precision/recall tradeoff at each tier
  3. Business validation — Verify that HIGH tier converts at 3-5x the base rate

Monitoring

Schedule weekly checks for:

  • Score distribution shift — KL divergence between current and training distributions
  • Feature importance drift — Top 10 features should remain stable
  • Conversion rate by tier — Each tier should maintain expected conversion multiples
  • AUC-ROC trend — Should not degrade more than 0.02 between retraining cycles