Product analyst at Amber, a student housing marketplace operating in 250+ cities worldwide.
Funnel drops, A/B test results, and the tooling that makes those answers repeatable.
250+
cities in Amber’s markets
2M+
beds on the platform
3 yrs
at Amber, across three roles
2×
company Rewards & Recognition
Selected work
01Traffic quality
Separating automated traffic from real demand
Problem
A traffic segment's year-on-year growth looked strong while its conversion rate moved the
other way. Two signals that should agree, disagreeing.
Approach
Automated traffic tends to leave a consistent signature across geography, device and session
behaviour. I built a session-level classifier on those signals and recomputed the affected
metrics on a clean denominator.
Outcome
Once automated sessions were separated out, both signals reconciled — the growth
and the conversion decline were largely the same artefact. Traffic quality is now part of the
standard metric definition rather than an afterthought.
02Experimentation
A pricing change that helped one step and nothing after it
Problem
The available evidence for a pricing change was a cross-sectional comparison between properties
that happened to price differently. That design cannot separate price from everything else
about a property.
Approach
Some properties had actually changed price tier, and the change logs recorded when.
That gave me a real before and after. I ran difference-in-differences inside those properties
against ones that never switched, over matched windows, and checked the pre-trends lined up.
Outcome
A clear, statistically significant gain at the payment step and
no detectable effect on bookings. The friction was real, but students who
balked simply converted another way. That moved the decision off a revenue case and onto a
friction one.
Why the comparison had to change
The first comparison is the one people reach for. It is also the one that cannot
tell you whether price caused anything.
03Pricing
Where conversion breaks against the local market
Problem
Partners needed a defensible reference point for pricing against their own local market rather
than a judgement call. The open question was what a property priced well above its local
level actually gives up in conversion.
Approach
Took what students actually paid per city as the reference rather than listed prices,
bucketed every property by how far it sat from its own city's median, and measured the share
of properties in each band that booked at all.
Outcome
An inverted-U with a sharp edge: conversion holds a little either side of the local
market level, then falls away quickly above it. That curve is now the reference point
for price reviews.
04Tooling
Automating the funnel post-mortem
Problem
Funnel investigations were manual, slow and hard to reproduce. Supply movements, term dates and
attribution changes all look like product regressions until you rule them out, and ruling
them out took about a week.
Approach
I put the method into code. Python and SQL over the warehouse, with a supply check that has to
pass before a cause is attributed to UX, plus academic calendar seasonality, traffic-quality
exclusion, funnel decomposition, and ranked hypotheses at the end.
Outcome
A normal investigation went from about a week to under an hour. The bigger
win is that it gives the same answer whoever runs it.
The order the checks run in
Encoding the order is most of the value. It is what stops the investigation
reaching a different conclusion depending on who runs it.
05Data quality
A duplicate problem that flipped conclusions
Problem
A student who returns creates several lead records, so any lead-level metric read without
deduplication can turn one person into a trend.
Approach
I used a structural filter that is known at the point the record is created, so there is no
outcome leakage, then re-ran the affected metrics on both bases to quantify the difference.
Outcome
A large share of records were duplicates, and they moved the two key quantities in
opposite directions — so deduplication is not a uniform correction, it can
change a conclusion outright. The filter is now the canonical basis for lead-level reporting.
Also built
Cohort segmentation of the lead base. Ten populations with very different
win rates, now used to decide how each one gets contacted instead of treating them all the
same.
Property recommendation engine. Candidate generation and ranking for agents,
the chatbot and students, scored with nDCG@10 against a popularity baseline.
The reporting layer. Tableau, Metabase and Looker Studio dashboards used
daily by product, supply and ops, plus 100+ hours a month of manual reporting moved onto
scheduled pipelines.
How I work
Before anyone acts on a number I want to know it is real. Duplicate rows, attribution changes
and automated traffic can each produce a confident and completely wrong answer, so I check the
denominator before the insight.
The other habit is not stopping at the first metric that moves. A lift at one step of the
funnel is a hypothesis. The question is whether it survives to bookings, and often it does not.
Saying so is part of the job.