Note: First-time loads and wake-ups from sleep mode can take about 1-2 minutes. If the app does not load immediately, refresh or reopen it once, then wait about a minute.
This project is designed as an executive operating view that helps leadership teams align Customer Success, RevOps, and Growth around one question:
How do we protect and grow ARR this quarter with the highest-confidence actions first?
Key decisions this supports:
- Which accounts should Customer Success prioritize this week to reduce churn exposure?
- Where is the pipeline conversion process breaking, and which stage needs intervention?
- Which customer segments/cohorts offer the strongest expansion and NRR opportunity?
It also provides scenario visibility for how ARR trajectory shifts under different operating assumptions.
Use this sequence for a fast leadership review:
- Open Executive Snapshot and Top Insights to frame risk and upside quickly.
- Set one realistic scenario with date, channel, segment, and executive view mode.
- Review pipeline quality and hygiene to identify conversion leakage.
- Review churn risk and engagement signals to identify ARR exposure.
- Review expansion and cohort trends to identify growth acceleration opportunities.
- Use forecast and what-if controls, then confirm execution owners and SLA windows in Action Playbook.
This is a personal portfolio project that demonstrates decision-support design across Customer Success, RevOps, and Growth functions, with scenario modeling and QA-driven product operations.
- Executive analytics product design and decision-flow structuring
- Revenue funnel and lifecycle analytics (pipeline, churn, expansion, forecast)
- Scenario testing and KPI benchmarking for operating decisions
- QA and release hygiene for analytics product maintenance
The methodology combines product planning, synthetic data generation from scratch, and iterative analytics build cycles. The app uses realistic SaaS simulation to model funnel performance, churn risk, expansion behavior, and scenario outcomes, with assumptions kept transparent so leaders can validate drivers and calibrate confidence.
Development followed an AI-assisted vibe-coding workflow (Claude and GitHub Copilot), with direction led through ideation, planning, execution management, and ongoing maintenance/QA updates.
📈 Sales Funnel Analysis
- Two-panel pipeline diagnostics: stage volume funnel + stage conversion vs target chart
- Auto-identify the largest stage-to-stage conversion drop for immediate intervention
- Track stuck opportunities by channel (defined as currently open opportunities older than 30 days)
- Opportunity lifecycle realism: open, closed-won, and closed-lost states are simulated within the analysis window
- Drill into oldest opportunities to prioritize channel-level follow-up
- Pipeline hygiene by owner table with SLA status and weekly cleanup quota targets
- SLA severity highlighting and downloadable weekly owner cleanup plan (CSV)
- Breached-owner CSV export for leadership standup packets (Critical/Watch breaches only)
- Critical Breach-only CSV export for immediate escalation review
- Export files include packet ID and filter snapshot metadata for traceable leadership reviews
- Closed outcome diagnostics: loss-reason mix and cycle-time distribution by won vs lost outcomes
- Closed-lost trend by quarter in both count and share terms to identify recurring root-cause mix shifts
- Explicit denominator contract: conversion and stuck metrics are tied to the filtered cohort and as-of-date state
- Segment chart uses average churn risk score on a 0-100 scale (higher score = higher churn likelihood)
- Always-visible segment comparison (including low-volume segments) for complete context
- Engagement vs. churn scatter plot to identify at-risk customers
- Engagement score formula shown in-app: 30% feature adoption + 40% monthly usage + 30% support sentiment
- Actionable list of customers requiring intervention
- Signals: engagement score, feature adoption, support sentiment
💰 Expansion & Cohort Analysis
- Base vs. expansion ARR breakdown by segment with ARR displayed in millions (max 2 decimals)
- Cohort retention curve with business interpretation (what it means and why it matters)
- Track which cohorts are expanding fastest and whether retention trend is improving or declining
🔮 ARR Forecast
- 12-month forward projection based on churn and expansion trends
- What-if scenarios: test impact of improving sales conversion
- Forecast adjusts automatically with your filters
🎯 Benchmark Lens Interpretation
- Compare Churn, NRR, SQL→Won, and Expansion against target benchmark ranges
- Adaptive fourth benchmark card: Expansion Rate in Expansion Focus, Pipeline Hygiene in other modes
- Use status signals (Healthy, Watch, Action) to quickly decide where intervention is needed
⚡ Quick Win + Projected Action Impact
- Surface the highest immediate upside lever based on the active filtered context
- Translate each playbook action into directional ARR impact estimates for faster prioritization
🧭 Scenario Readability and Guidance
- Filter-sensitive disclaimers are shown in executive and tab sections to prompt scenario testing
- Each disclaimer includes a short example so users understand how to drive metric changes
- Root-cause preview is elevated as a high-visibility callout with direct guidance to Closed Outcome Diagnostics
- Negative outcome metrics (for example Closed-Lost and stale pipeline counts) use inverse/red semantics
🧭 Action Playbook Cards
- Executive-style priority cards (Critical/High/Monitor) with owner, SLA, trigger, and immediate action
- Priority assignment is calibrated using benchmark drift and leading indicators (not severity labeling alone)
- Projected ARR impact highlighted in each card for faster execution prioritization
- Active Customers: Number of current customers (not churned)
- Current ARR: Total annual recurring revenue from active customers
- Churn Rate: Observed churn share in the current analysis cohort
- NRR: Average account-level net retention proxy from simulated base + expansion ARR
- Reset to recommended defaults: Return to the suggested executive starting context in one click
- Guided usage flow: Executive mode first, then filters, then benchmark/quick-win review
- Date Range: Focus on a specific time period
- Marketing Channels: Filter by organic search, paid ads, referrals, etc.
- Customer Segments: Drill into healthcare, finance, tech, non-profit, manufacturing
- Executive View Mode: Switch between all accounts, at-risk focus, and expansion focus
- What-If Slider: Test impact of improving SQL→Won conversion rate
- Pipeline Risks: Identify conversion bottlenecks, compare conversion rates against target, and isolate currently open stuck opportunities older than 30 days
- Customer Health Actions: Prioritize high-risk accounts and intervention signals
- Expansion Levers: Understand segment-level expansion and cohort retention momentum with interpretation context
- Scenario Forecast: Model ARR outcomes under different assumptions
- Action Playbook: Use priority cards to map observed signals to owner-level actions, SLA, and projected impact
- Quick Win Signal: Use the highlighted top opportunity to decide what should be executed first this cycle
Each core tab includes a denominator contract note so benchmark interpretation remains defensible when filters change.
This dashboard uses realistic SaaS funnel data:
- 1000+ leads/month across 6 marketing channels
- 200+ active customers across 5 industry segments
- Deal sizes: $15K–$200K ARR (realistic for mid-market/enterprise)
- Sales cycles: 45–150 days depending on segment
- Churn patterns: ~8% churn incidence flag in the generated cohort, with risk score influenced by engagement
- Expansion: 0–50% ARR expansion sampled for active (non-churned) customers
All data is statistically realistic for portfolio demonstration and intentionally assumption-driven.
For RevOps teams:
- Identify pipeline bottlenecks and stuck deals
- Forecast revenue with confidence
- Detect early churn signals before they become problems
For Growth leaders:
- Understand which channels and segments drive expansion
- Model impact of improving conversion rates
- Make data-driven decisions on customer prioritization
For Customer Success:
- Find at-risk customers needing intervention
- Understand which engagement signals predict churn
- Track cohort retention over time
- Streamlit: Interactive dashboard framework
- Pandas: Data manipulation and analysis
- Plotly: Interactive visualizations
- NumPy: Numerical simulation
pip install -r requirements.txt
streamlit run app.pyRun this before sharing updates to validate core data contracts and main Streamlit interaction flows:
python qa_smoke.pyThis repo also runs the same smoke suite automatically via GitHub Actions using .github/workflows/qa-smoke.yml.
- Triggered on pushes to
mainandv2-dev - Triggered on pull requests targeting
mainandv2-dev - Can be run manually from GitHub Actions via
Run workflow
The workflow installs dependencies from requirements.txt and runs python qa_smoke.py.
Deploy to Streamlit Cloud, Heroku, or any cloud platform that supports Python.
This project follows a release-first branching model for portfolio clarity.
- main = stable, formal releases only.
- v2-dev = active development and validation branch.
- Feature branches should be created from v2-dev and merged back into v2-dev.
- When a release is ready, promote v2-dev to main, then create a release tag on main.
- Direct commits to main should be avoided unless explicitly required.
Current release status:
- Latest stable release tag: v2.2.3
- Current development release target: v2.2.4 (on v2-dev)
- main carries stable tagged releases; v2-dev is the active development branch
Supporting release documentation:
- Latest stable release summary: RELEASE_v2.2.3.md
- Prior stable release summary: docs/archive/RELEASE_v2.2.2.md
- Earlier stable release summary: docs/archive/RELEASE_v2.2.1.md
- Earlier stable release summary: docs/archive/RELEASE_v2.1.1.md
- Historical readiness checklist: docs/archive/V2_READINESS_CHECKLIST.md
- Historical release draft notes: docs/archive/V2_RELEASE_NOTES_DRAFT.md
- Previous stable release summary: docs/archive/RELEASE_v2.1.0.md
- Historical v2.0 summary: docs/archive/RELEASE_v2.0.0.md
This repo includes a scheduled workflow at .github/workflows/streamlit-keep-alive.yml that pings your deployed Streamlit app every 15 minutes and runs a separate HTTP health check. The workflow normalizes your deployment URL, probes both root and health endpoints, and fails fast if availability checks do not pass.
- Go to your GitHub repo -> Settings -> Secrets and variables -> Actions.
- Create a new repository secret named
STREAMLIT_APP_URL. - Set its value to your deployed Streamlit URL.
- Merge this workflow to
main(scheduled workflows run from the default branch).
You can trigger it anytime from GitHub -> Actions -> Streamlit Keep Alive -> Run workflow.
Note: This helps reduce cold starts but platform-level sleep policies may still apply.
This project was developed through a vibe-coding workflow using Claude and GitHub Copilot, including both the application code and synthetic dataset generation logic built from scratch.
My role covered end-to-end product ownership: ideation, planning, technical direction, execution management, and ongoing maintenance and updates.
This repository is shared for educational and practical learning use. Anyone may use, adapt, and learn from this work. No formal software license is attached.