Staff / Principal Analytics Leader · West Palm Beach, FL

Measurement
Systems.
Real Decisions.

8+ years building analytics infrastructure that shapes how companies allocate capital, scale channels, and understand their customers. Fluent in SQL, Python, and statistical modeling — with active practice in quant finance, LLM tooling, and Web3 analytics.

8+
Years Experience
$10M+
Budget Influenced
20%
CAC Reduction
1M+
CRM Records Modeled
01

Core Competencies

Analytics & Measurement
MMMCausal InferenceIncrementality TestingA/B ExperimentationAttribution ModelingFunnel AnalysisRetention ModelingKPI DesignProduct Analytics
Modeling & Statistics
Predictive ModelingTime-Series (Prophet, ARIMA)Regression (Log, Saturation)Cohort & Survival AnalysisAnomaly DetectionDiminishing ReturnsQuant Backtesting
Data & Tools
SQL (Advanced)Pythonpandas · numpy · scikit-learnstatsmodels · ProphetTableau · Power BIGA4 · RockerboxBigQuery · dbt
Emerging & Strategy
LLM ToolingWeb3 / On-Chain AnalyticsPine Script v6Tokenomics ResearchPrompt EngineeringCAC & LTV OptimizationBudget Allocation
02

Experience

Senior Marketing Analyst — Business AnalyticsJun 2022 — Present
SimplePractice · SaaS · Health & Wellness

Own the full measurement and analytics infrastructure — attribution, MMM, product analytics, and experimentation. Embedded IC partner to VPs across Marketing, Product, Customer Success, and Sales.

↓ 20% CAC$10M+ Budget Guided16% Conversion Lift60% Latency Reduction↑ 40% Social Performance
Senior Business Intelligence EngineerJan 2021 — Jun 2022
REEF Technology · Logistics · 4,500+ Locations

Owned BI infrastructure across operations, finance, and workforce planning. Built forecasting models, real-time dashboards, and automated pipelines consumed by 20+ stakeholders.

↓ 20% Delivery Time↓ 10% Labor Costs↓ 40% Report Prep
Customer Experience Insight AnalystMar 2020 — Dec 2020
ADT · Security Technology

CX analytics across ecommerce, field services, and call center environments — linking behavioral signals to conversion, churn risk, and cost per acquisition.

↓ 10% Spam Rate↓ 8% Cost Per LeadClickstream → UX Impact
Senior Analyst — Consumer ServicesAug 2017 — Mar 2020
Newell Brands · Fortune 500 CPG · 50+ Product Lines

Python ML pipelines over 1M+ CRM records, anomaly detection systems, and feature engineering for production ML compliance workflows.

↓ 35% Processing Time1M+ CRM Records↑ 10% Agent Utilization
03

Analytics Dashboards

Representative dashboard frameworks built in Tableau and Power BI across marketing attribution, operational BI, and customer lifecycle analytics. Layouts reflect real work; metrics are illustrative.

Marketing Attribution & Channel Performance
Q4 2024All Channels
Total Conversions
8,412
↑ 16.3% QoQ
Blended CAC
$143
↓ 20% YoY
LTV : CAC
4.2×
↑ 0.6× QoQ
Ad Spend
$1.2M
+5% QoQ
Weekly Conversions by Channel
Paid SearchPaid SocialOrganicDirect
Revenue Attribution
ChannelShareCAC
Paid Search38%$118
Paid Social25%$167
Organic SEO20%$44
Direct11%$29
Referral6%$61
CAC Trend — 12-Month Rolling (Rockerbox + GA4 Unified)
Blended CAC--- Paid-Only CAC
Operational KPI Dashboard — Logistics & Fleet
Live · Samsara APIAll Regions
Avg Delivery Time
38 min
↓ 20% vs baseline
Fleet Utilization
84%
↑ 11% MoM
Labor Cost/Route
$14.20
↓ 10% YoY
On-Time Rate
91%
↑ 7pts QoQ
Delivery Volume by Region (Weekly)
Labor Cost Distribution
Driver Hours
78%
Dispatch Ops
14%
Overtime
8%
Demand Forecast vs Actual — Time-Series Model (Regression + Seasonality)
Actual Volume--- Forecast
Customer Lifecycle Analytics — Ecommerce & Field Ops
All SegmentsFY 2020
Conversion Rate
3.8%
↑ post UX changes
Cost Per Lead
$38
↓ 8% routing model
Churn Risk Flagged
12%
Identified early
SMS Spam Rate
2.1%
↓ 10% reduction
Conversion Funnel — Digital Acquisition (Clickstream → CRM)
Site Visit
100% — 42,000
Product Page
68% — 28,560
Quote Request
22% — 9,240
Call / Chat
10% — 4,200
Conversion
3.8% — 1,596
04

Media Mix Modeling — Methodology

End-to-end MMM framework built and owned at SimplePractice. Designed to quantify true channel contribution, model saturation and diminishing returns, and drive $10M+ in annual budget allocation decisions.

1
Data Integration & Preparation

Unified spend, impression, and conversion data across all paid and organic channels from GA4, Rockerbox, and platform APIs. Validated data quality, handled missing values, and constructed a clean time-series panel at weekly granularity covering 2+ years of history.

GA4RockerboxBigQueryPython / pandasSQLdbt
2
Adstock & Saturation Transformations

Applied geometric decay adstock to model carryover effects after campaigns end. Used Hill function saturation curves to model diminishing returns per channel — distinguishing channels with remaining headroom from those already saturated, enabling precise marginal ROI estimates.

Adstock (Geometric Decay)Hill Function SaturationDiminishing ReturnsLag Optimization
3
Regression Framework & Control Variables

Log-log regression with channel spend as inputs, revenue/conversions as outputs. Controlled for seasonality (Fourier terms), pricing changes, product launches, and macro trends — isolating true media contribution from external noise and confounders.

Log-Log RegressionFourier SeasonalitystatsmodelsMulticollinearity ControlsInteraction Terms
4
Incrementality Validation

Validated MMM outputs against geo-based holdout experiments. The $40K/week Paid Social + Bing non-brand test produced a 16% conversion lift and 5% CAC increase — confirming model predictions within confidence bounds and becoming the organizational standard for channel validation.

Geo Holdout Testing$40K/wk Incrementality ExperimentCausal InferenceConfidence Intervals
5
Budget Optimization & Executive Output

Used calibrated model to run budget scenario simulations — optimizing channel allocation to maximize expected conversions at a target CAC. Translated outputs into Tableau scenario dashboards for VP-level quarterly budget reallocation decisions.

Budget Scenario SimulationMarginal ROI Curvesscipy.optimizeTableauExecutive Reporting
05

Customer Analytics Journey Framework

Full-lifecycle measurement architecture tracking the customer from first impression through retention and expansion. Applied across SaaS, security technology, and CPG environments.

Phase 01
Awareness & Acquisition
Paid Search · Social · SEO
Impression → Click
CTR 3.2%
Paid CAC
$143 avg
Channel Count
6 active
MMM + Rockerbox unified attribution
Phase 02
Activation & Conversion
Landing Page · Trial · Demo
Visit → Trial
22% CVR
Trial → Paid
38% rate
Time to Convert
14 days
Funnel analysis + A/B experiments on key pages
Phase 03
Engagement & Retention
Product · Email · Support
D30 Retention
82%
Feature Adoption
61% D30
Churn Risk Flagged
12%
Cohort models + event schema (Product Eng partnership)
Phase 04
LTV & Expansion
Upsell · Referral · Renewal
Avg LTV
$602
LTV : CAC
4.2×
Expansion Rev %
22%
Survival analysis + LTV cohort model
06

Quantitative Trading System

All-in-One Trend System built in Pine Script v6 for TradingView. Multi-factor systematic strategy combining Fibonacci composite MAs, weekly HTF trend confirmation, Stochastic RSI momentum, VWAP alignment, and ATR-based risk management — with volume/impulse and slope filter layers. Supports both long and short signals with configurable RR and re-entry logic.

all_in_one_trend_system.pine — Pine Script v6
✓ Production · 4H Chart · Long + Short
//@version=6
indicator("All-in-One Trend System",
  overlay = true,
  max_lines_count = 500,
  max_labels_count = 500)

// ── INPUT GROUPS ────────────────────
grp_ma    = "Moving Averages"
grp_stoch = "Stochastic RSI (internal)"
grp_trend = "Trend Logic"
grp_sys   = "System / Risk"
grp_vis   = "Visibility / Layout"

// ── WEEKLY SMA LENGTHS ──────────────
len50w  = input.int(50,  "50W SMA",  group=grp_ma)
len100w = input.int(100, "100W SMA", group=grp_ma)
len200w = input.int(200, "200W SMA", group=grp_ma)

// ── FIBONACCI EMA LENGTHS ───────────
fibLen1 = input.int(8,  "Fib EMA 1", group=grp_ma)
fibLen2 = input.int(13, "Fib EMA 2", group=grp_ma)
fibLen3 = input.int(21, "Fib EMA 3", group=grp_ma)
fibLen4 = input.int(34, "Fib EMA 4", group=grp_ma)
fibLen5 = input.int(55, "Fib EMA 5", group=grp_ma)

// ── WEEKLY MAs (HTF via security) ───
sma50w  = request.security(
  syminfo.tickerid, "W", ta.sma(close, len50w))
sma100w = request.security(
  syminfo.tickerid, "W", ta.sma(close, len100w))
sma200w = request.security(
  syminfo.tickerid, "W", ta.sma(close, len200w))

// ── FIBONACCI COMPOSITE MA ──────────
ema1 = ta.ema(close, fibLen1)
ema2 = ta.ema(close, fibLen2)
ema3 = ta.ema(close, fibLen3)
ema4 = ta.ema(close, fibLen4)
ema5 = ta.ema(close, fibLen5)

fibComposite = (ema1+ema2+ema3+
                 ema4+ema5) / 5.0

// ── INTERNAL STOCH RSI ──────────────
rsi       = ta.rsi(close, 14)
rsiLo     = ta.lowest(rsi, 14)
rsiHi     = ta.highest(rsi, 14)
rsiRange  = rsiHi - rsiLo
stochRaw  = rsiRange != 0.0 ?
  (rsi - rsiLo) / rsiRange * 100.0 : 0.0
k         = ta.sma(stochRaw, 3)

// ── TREND CONDITIONS ────────────────
maBull    = sma50w > sma100w and
             sma100w > sma200w
maBear    = sma50w < sma100w and
             sma100w < sma200w

bullTrend = maBull
  and close > fibComposite
  and close > ta.vwap(hlc3)
  and k > 55

bearTrend = maBear
  and close < fibComposite
  and close < ta.vwap(hlc3)
  and k < 45

// ── VOLUME IMPULSE FILTER ───────────
volMA    = ta.sma(volume, 20)
volRel   = volMA > 0 ? volume / volMA : 1.0
bodyPct  = close != 0.0 ?
  math.abs(close-open)/close*100.0 : 0.0
bigMove  = volRel > 2.0 and bodyPct > 1.5
bearImpulse = bigMove and close < open
bearBlock   = ta.barssince(bearImpulse) < 2

// ── ENTRY SIGNALS ───────────────────
crossUp   = ta.crossover(close, fibComposite)
crossDown = ta.crossunder(close, fibComposite)

longSignal  = bullTrend and crossUp
              and not bearBlock
shortSignal = bearTrend and crossDown

// ── ATR RISK MANAGEMENT ─────────────
atr      = ta.atr(14)
stopMult = 1.5
rrRatio  = 2.0

// ── PERSISTENT STATE ────────────────
var bool  inLong     = false
var bool  inShort    = false
var float longStop   = na
var float longTarget = na
var float shortStop  = na
var float shortTarget= na

if longSignal and not inLong
    inLong      := true
    inShort     := false
    longStop    := close - atr * stopMult
    longTarget  := close + atr * stopMult * rrRatio

if shortSignal and not inShort
    inShort     := true
    inLong      := false
    shortStop   := close + atr * stopMult
    shortTarget := close - atr * stopMult * rrRatio

// ── EXITS ───────────────────────────
if inLong
    if low <= longStop or high >= longTarget
        inLong := false
if inShort
    if high >= shortStop or low <= shortTarget
        inShort := false

// ── PLOTS ───────────────────────────
plotshape(longSignal,
  style=shape.triangleup,
  location=location.belowbar,
  color=color.lime, text="LONG")

plotshape(shortSignal,
  style=shape.triangledown,
  location=location.abovebar,
  color=color.red, text="SHORT")

// ── INFO PANEL (top right) ──────────
var table panel = table.new(
  position.top_right, 1, 6,
  border_width=1)

// ── ALERTS ──────────────────────────
alertcondition(longSignal,
  title="Long Entry",
  message="LONG {{ticker}} {{interval}}")
alertcondition(shortSignal,
  title="Short Entry",
  message="SHORT {{ticker}} {{interval}}")
System Overview
4-Layer Confirmation Architecture
All four layers must agree simultaneously before a signal fires — macro weekly trend, Fibonacci composite price structure, VWAP alignment, and Stochastic RSI momentum. This multi-filter design substantially reduces false positives by requiring confirmation across independent market dimensions.
Layer 1 · Macro Trend
Weekly MA Stack (50W / 100W / 200W)
Uses request.security() to pull higher-timeframe weekly SMAs onto the 4H chart. Bull trend requires 50W > 100W > 200W — institutional-grade trend confirmation. This prevents taking countertrend entries in structurally bearish weekly environments.
Layer 2 · Price Structure
Fibonacci Composite MA (8/13/21/34/55 EMA)
Averages five Fibonacci-sequence EMAs into a single dynamic composite line. Acts as adaptive support/resistance. Entry triggers on ta.crossover(close, fibComposite) — price reclaiming the composite from below while all trend conditions are confirmed.
Layer 3 · Momentum + VWAP
Stochastic RSI K > 55 + Price Above VWAP
Custom Stochastic RSI calculated internally — K above 55 for longs, below 45 for shorts. Asymmetric thresholds align with trend direction rather than mean-reversion. VWAP confirmation adds institutional price reference — entries above VWAP on longs only.
Layer 4 · Impulse Filter
Volume Spike + Big Candle Body Detection
Blocks entries that would fade a high-volume bearish candle — defined as volume > 2× 20-bar MA and body > 1.5% of price. Uses ta.barssince(bearImpulse) < 2 to maintain a 2-bar impulse window. Optional slope/curvature filter on fibComposite also available.
Risk Management
ATR Stops (1.5×) · Target (2:1 RR) · Persistent State
Stops at 1.5× ATR(14) below entry; targets at 2:1 RR. Persistent var state variables track open positions across bars. Auto-exits on stop/target hit with visual markers. Configurable re-entry, RR, ATR multiplier, and all filter toggles via input groups.
Applications + Alerts
Crypto + Equities · Live TradingView Alerts
Designed for 4H timeframe across crypto assets (BTC, ETH, Base-chain tokens) and equities. Six alertcondition() blocks for entry, stop hit, and target hit — deliverable via TradingView webhook to any endpoint. Info panel shows live trend state, ATR, and trade distances.
07

Web3 Projects

🥝
The Kiwi Club
Web3 Community Project

Web3 community project exploring community tokenomics, holder analytics, and the intersection of social coordination and decentralized data systems.

ZANE
Base Chain · Uniswap V2

ZANE token deployed on Base — practical application of tokenomics research. Hands-on experience with smart contract deployment, on-chain liquidity mechanics, DeFi protocol interaction, and community analytics on Base L2.

Let's work together.

Open to Staff / Principal Analytics, Data Science, and Senior IC roles at high-growth companies.