Viewing as: Manager Switch: HR Colleague

Product Analyst — impact

Cases with the decision and the result: what changed, and why.

All projects

Experiments

Volta Neobank — Product Analytics

Task
Find the critical onboarding step and prove it so the conclusion cannot be dismissed as a convenient sample
Result
KYC fix: +5.72pp conversion (p<0.0001) → €208.5K over 12 months at 13.9× ROI; M3 retention +9.2pp
Pythonpandas / NumPy +4

Experiments

A/B Testing Methodology Toolkit

Task
Make the method guarantees verifiable, backed by a simulation run rather than by a citation
Result
CUPED cuts variance 17.7% (SE 0.00360 → 0.00327) and the delta method finds a +0.51 pp CTR lift at p < 0.0001 with SRM p = 0.8376 — all 18 modules calibrated by simulation
PythonNumPy / SciPy +2

Analytics

Cohort Analysis Dashboard

Task
Make retention and LTV readable per acquisition cohort rather than as a single average
Result
Python inside Tableau: 4 cohort calculations on a TabPy server and 65 tests; the cohort matrix replaces average retention and shows churn speed and where monetization diverges
Pythonpandas +3

Analytics

RFM Analysis of Bank Clients

Task
Replace the single offer with targeted segments, each with its own retention strategy
Result
Six named segments; the top 20% of clients hold 38.2% of revenue (Gini 0.324), and Champions — 6.4% of the base — drive 12.1% of revenue
PythonSQL +1

Analytics

Churn Prediction — Leakage-Free Retention Model

Task
Score the model so its offline quality is not an artifact of leakage
Result
The top 10% riskiest catches 54.4% of churners at 5.44x lift, but only 1.75x on the at-risk subgroup: 69.7% of the cohort is a near-guaranteed negative by construction.
PythonLightGBM +5

Analytics Real + synthetic

SQL Analytics Case Study

Task
Build cases where every query answers a product question and reproduces with one command
Result
The funnel drops 78% at add-to-cart → checkout (54% is the view→cart step); retention falls from ~19.5% (D1) to ~4% (D30); only 3.5% repeat; on real data 72.4% return
SQLdbt +4

Engineering

ClickHouse — ten SQL cases on 50M rows

Task
I needed a lab where every case is scored against a snapshot and an independent engine, and the optimisation win is measured with the query text held constant
Result
The snapshot and seven DuckDB twins agree, slow and fast SQL are pinned as identical by a test, and the projection clears the ≥10× speed-up threshold the suite asserts on a full scan
ClickHouseDuckDB +5

Analytics

Delivery Control Tower

Task
Build a reproducible loop: ETL, marts, order forecast, bottleneck analysis, testable hypotheses and a SQL layer with measured optimizations
Result
Best WAPE 6.01% at h=7 with seasonal_naive; delivery time barely moves with load (rho = −0.092), yet snacks take 40.0 min against 26.6 min for pizza; the mp channel share grew 5.7 pp
pythonsql +2

Analytics Real data

GMV Drop RCA — root cause on real data

Task
I needed to decompose the drop down to a concrete segment and prove the attribution was complete rather than a convenient slice
Result
UK decile-1 explains 56.2% of the named drop (−£195,218.25); the full attribution reconciles to £0.00 against an overall −10.0% decline
Pythonpandas +6

Analytics

Classifieds liquidity — a measurability audit

Task
I needed to measure how far the proxy drifts from the planted truth per category, and to test whether a paid-visibility decision survives that correction
Result
The proxy reads 0.2413 against a truth of 0.3070, an error of −0.0657 (−21.4%); after correction the worst category misses by 1.61 pp, and paid visibility yields −2.47% contacts per session at p = 0.308
Pythonpandas +5

Experiments

Causal / Uplift — CUPED and Individual Treatment Effects

Task
Implement CUPED and uplift modeling and prove neither is biased where the true answer is known in advance
Result
CUPED cuts the standard error 26% (5.5k users per arm instead of 10k), and a pre-registered break-even threshold of 0.05 ships the campaign to new users only.
PythonLightGBM +5

Experiments

CRM Experiment Lab — Segment-Stage Randomization, GCG and Net Effect

Task
I needed a lab where every CRM experiment stage is checked against data with a known answer and can be made to fail visibly
Result
Segment-stage randomization holds SRM at p=0.266, GCG uplift is +0.9968 [0.9433, 1.0502], and the net effect is +50.5 per 1,000 treated — positive, but the unsubscribe guardrail breaches.
Pythonpandas / NumPy +5

Analytics

SERP Rank Lab

Task
Find out how much revenue ranking for money produces, and what that revenue is paid for in clicks
Result
On a synthetic log: +34.45% revenue per search for −16.84% CTR; the rollout returns −14.26% (p = 0.11) and −16.05% conversion → do not ship
PythonDuckDB +4

Analytics

Sales Calls Analytics Dashboard

Task
Take call breakdown off manual review and name the funnel step that loses the most clients
Result
An answer in a minute: which step loses the client and what to fix; the funnel yields weighted contact loss and a first A/B scenario
PythonStreamlit +1

Analytics

ML Fundamentals — scikit-learn Pipeline

Task
Build preprocessing correctly for modern scikit-learn: no leakage, no reliance on a random seed, reproducible at every pipeline stage
Result
A split reproducible without a seed (Train (8, 5), Test (2, 5)), four synthetic datasets and 21 tests (7 + 9 + 5) that keep the pipeline runnable
Pythonscikit-learn +3

Analytics

RAG Evaluation Harness — retrieval and generation metrics

Task
Build a pipeline with an offline eval harness that separates retrieval from generation metrics and runs without API keys
Result
recall@5 and MRR = 1.00 over 20 questions and 0.00 on an 11-question control set of retrieval misses (MRR@all 0.12) — the metric can fall; correctness 0.37 for the offline baseline (faithfulness ≡1.00 is an extractive invariant); retrieval and generation scored separately
Pythonscikit-learn +4

Product

TaskFlow — PostHog Product Analytics Pipeline

Task
Define events without PII leaks, get them into the analytics tool, and turn raw events into decisions
Result
Onboarding test on a seeded stream: completion 55.9% → 70.8% (+26.6%, χ² = 40.10, p < 0.0001, SRM p = 0.90), and 6.3% of completed signups reach a paid upgrade
PythonPostHog +5
View Project

Repo is private — available on request

Product

Product Analytics + A/B on Supabase

Task
Own the multi-tenant setup end to end: auth, per-org isolation, event ingest, and the experiment result computed in the database
Result
A/B concluded on a seeded stream: control 29.6% vs treatment 40.7%, +11.1pp at p ≈ 1.7e-10 (chi-square); metrics computed in the live DB for any client
PythonStreamlit +3

Product

Product Analytics Dashboard (Streamlit)

Task
Build the metrics so they read as one coherent story rather than a set of disconnected charts
Result
Funnel, Retention, Revenue, and Segments read from one consistent base; the same UI became the Supabase project's presentation layer
PythonStreamlit +1
View Project

Repo is private — available on request

Engineering

Airflow DAG Platform

Task
Replace the manual export with a reproducible, idempotent pipeline with DQ validation, failure alerts and run metrics
Result
Three DAGs on one shared template and 72 tests without Airflow services or a DB; the full DAG runs in 440 s, 413 s of it in the forecast task
PythonApache Airflow 3 +5

Experiments

Data Analyst Telegram Bot

Task
Check a hypothesis right in Telegram — get a correct result with guardrails from a CSV, without BI and without a notebook
Result
From a CSV — p-value, lift and 95% CI in under 30 seconds, plus a power note and a chart; /export returns a standalone HTML report
Pythonaiogram +6
View Project

Repo is private — available on request

Analytics

Python Analytics Playground

Task
Turn the routine into shared modules that teammates can extend without fear of breaking existing behavior
Result
pytest coverage ≥80%; modules stay small and single-purpose, requirements live in the PRD, and the tool extends without breakage
Pythonpandas / NumPy +3

Engineering

Scrolly English Speaking

Task
Close the gap between grammar and live speech: give learners situations where phrases are used, not recognized
Result
Narrative and visualization in sync: the chart changes as the reader reaches a paragraph; a new scene is just a data file plus MDX
AstroTypeScript +3

Engineering

Digital Garden — EQ in IT

Task
Publish a personal Zettelkasten as a static site where the links between notes are visible to the reader
Result
Links over chronology: backlinks make each note a node, and the graph turns note accumulation into a navigable structure
TypeScriptQuartz v4 +2

Analytics

LinkedIn Content Analytics

Task
Answer not 'how many impressions did I get' but 'which format to write next — and is the difference even established'
Result
50,101 impressions, 9,440 reach, 1.71% ER over 12.10.2025 — 11.10.2026; three of four comparisons landed inside the noise, and that is recorded as the result
Pythonopenpyxl +3
View Project

Repo is private — available on request

Analytics

Promo Margin Lab — what a promo rouble actually earns

Task
Measure promo in margin roubles and choose depth and store set under a budget so that the numbers can be re-checked
Result
Promo returns +68.5 m RUB of revenue and −24.4 m RUB of profit; 97.9% of waves lose money at a breakeven depth of 1.0–19.5% against 25.4% actual, and on one budget the optimiser earns +231 496 ₽ versus +136 648 ₽ for top-15%
Pythonpandas +6

Analytics

Product A/B & Funnel Analytics — Conversion versus Retention

Task
Tie the experiment result to the funnel, cohort retention and unit economics, then issue one management verdict
Result
SHIP: activation → paid +19.59% (p=0.000946) with no guardrail degradation; at an equal step conversion adds +10.00% to LTV versus +8.65% for retention
Pythonpandas / NumPy +5

Engineering Real data

OSS catalog — 47 projects from one source

Task
I needed a catalog where the data comes from one machine-owned source, pages are built from it, and a repeated sync does not overwrite authored edits
Result
47 project pages and 15 metadata fields are built from one TOML file; a repeated render is idempotent, and 26 tests cover all three record-matching branches
AstroTypeScript +5

Engineering

Matemarketing 2026 Programme — a static replica

Task
Take a third-party interface apart down to measurable quantities and rebuild it with no build step and no backend
Result
The grid matches the original to the pixel: 99 px time column, 420 px hall column, 391 px card, 550 px row, grid top at y = 414; tests catch data and layout drift
HTMLCSS +2

Send the task

Describe the product and the question — I'll come back with an analysis plan: which metrics to look at, what data it needs, and how long it takes.

Discuss a task →