AI System for Time-to-Value Tracking
Time-to-Value (TTV) — the time from contract signing to when the customer first receives significant value from the product. In B2B SaaS, this is a leading indicator of long-term retention: customers who reach an Aha-moment within < 14 days have 40% higher retention than those who never reach it.
Defining the Aha-Moment
Aha-moment = first achievement of a value milestone: Specific definitions depend on the product:
- CRM: first successfully closed deal via the system
- Analytics platform: first dashboard viewed with real data
- Automation: first successfully executed workflow
- Communications: first 10 messages from team
Defining milestone through data:
def identify_aha_moment(product_events, cohort):
"""
Correlation analysis: which action predicts retention best?
Method: find events after which 90-day retention is maximal
"""
event_types = product_events['event_type'].unique()
correlations = {}
for event in event_types:
users_with_event = product_events[product_events['event_type'] == event]['user_id'].unique()
retention_with = cohort[cohort['user_id'].isin(users_with_event)]['retained_90d'].mean()
retention_without = cohort[~cohort['user_id'].isin(users_with_event)]['retained_90d'].mean()
correlations[event] = retention_with - retention_without
return sorted(correlations.items(), key=lambda x: x[1], reverse=True)[:5]
TTV Forecasting
Early prediction of stuck customers:
Onboarding journey — sequence of steps. ML predicts the probability that a customer will never reach the Aha-moment:
def predict_at_risk_onboarding(account_id, days_since_signup):
events = get_product_events(account_id, days=days_since_signup)
features = {
'setup_completion_pct': events['setup_steps_completed'] / total_setup_steps,
'integrations_connected': events['integrations_count'],
'users_invited': events['team_members_invited'],
'login_frequency': events['unique_login_days'] / days_since_signup,
'support_tickets_opened': events['support_tickets'],
'training_modules_completed': events['training_completion'],
'days_since_signup': days_since_signup,
'plan_tier': account['plan'],
'company_size': account['employee_count']
}
risk_score = onboarding_risk_model.predict_proba([features])[0][1]
return risk_score
Time horizon: Day 3, day 7, day 14 — control points. If on day 7 the risk forecast > 0.6 → trigger intervention.
TTV Segmentation
By company size: Enterprise (500+): TTV 30-60 days (complex integration, many stakeholders). SMB (< 50): TTV 7-14 days (self-serve onboarding).
By acquisition channel: Organic/self-serve → faster (customer knows why they came). Sales-led → slower (needs customization).
By use case: Customer clustering by their goal. Different onboarding paths for different clusters — personalized recommendations for next step.
Intervention Engine
Automated vs. Human interventions:
def select_intervention(account, risk_score, bottleneck):
if risk_score > 0.8:
# Critical — CSM intervenes manually
return {
'type': 'human',
'action': 'schedule_call',
'owner': assign_csm(account),
'message_template': 'high_risk_outreach'
}
elif risk_score > 0.5 and bottleneck == 'integration':
# Automatic — in-app tooltip + email
return {
'type': 'automated',
'channel': ['in_app_tooltip', 'email'],
'content': 'integration_setup_guide',
'timing': 'next_login'
}
else:
return {'type': 'monitor', 'next_check': 3} # days
A/B testing interventions:
- Control group vs. group with nudge
- Metric: TTV (days to Aha), 30-day activation rate
- Bayesian A/B test: stop when posterior probability > 95%
Cohort Analytics
TTV Cohort Chart: Classic visualization: X-axis — days from registration, Y-axis — % customers who reached Aha. Comparison of cohorts (different months, different channels, plans).
Bottleneck Analysis: Onboarding steps funnel: where do most customers "get stuck"? Step with largest drop-off — priority for UX improvement.
def funnel_analysis(onboarding_steps, cohort):
funnel_rates = {}
for i, step in enumerate(onboarding_steps):
users_reached = cohort[cohort['max_step_reached'] >= i]['count']
users_completed = cohort[cohort['max_step_reached'] >= i+1]['count']
funnel_rates[step] = users_completed / users_reached
return funnel_rates
Median TTV by segments: Weekly monitoring. Rise in median TTV → problem in onboarding (regression in product, ICP change).
Integration
Product Analytics: Amplitude, Mixpanel, Heap — event sources. Warehouse: Snowflake/BigQuery — feature store for model.
CRM: Salesforce Custom Object "Onboarding Progress" — visibility for CSM. Health Score combines with TTV progress.
In-app Messaging: Intercom, Pendo, Appcues — delivery channels for automated interventions based on ML triggers.
Timeline: Aha-moment definition + TTV cohort analytics + basic risk scoring — 3-4 weeks. ML prediction of at-risk accounts + intervention engine + A/B test framework — 6-8 weeks.







