Lead PM owning the digital roadmap for two national retail brands across web and native app, from search & discovery to checkout to personalization. I run a test-and-learn practice where every experience I ship is measured, and the lift is the point.
The problem: Shoppers on product listing pages struggled to narrow large catalogs and dropped before they ever reached a product. The most-used filters were buried behind an extra tap that pulled people out of the browsing journey, so they went unused.
Started as a one-tap quick-filter surface placed directly in the listing flow and proved out through a controlled split test on the highest-traffic categories, so the read would be fast and decisive. The validated concept then graduated into a permanent, self-tuning capability, scaled across hundreds of PLPs.
Clear conversion and revenue-per-session lift in test, exposed to 500K+ sessions, then shipped and engaged with by 5M+ sessions to date. What began as a single experiment is now a durable surface that keeps the most-used filters What began as a single experiment is now a durable surface that keeps the most-used filters in the browsing journey instead of buried a tap away.
To make the surface self-tuning rather than hand-curated, I worked cross-functionally with IT to build a data flow that takes standard site-filter engagement data, pipes it into a Google Cloud project, and feeds it back into Algolia as a dedicated index. That index dynamically populates each PLP's most-engaged standard filters as quick filters, so the surface adapts over time to what shoppers actually use, at scale, without manual upkeep.
A storefront that talks back. I owned the rollout and monitoring of a high-scale conversational shopping agent, built on Google's largest LLMs, that handles product discovery, side-by-side comparison, customer care, and add-to-cart inside one contextually aware surface. The mandate: prove customers want it, then find where to put it.
Owned and monitored a controlled rollout of the agent at scale, synthesizing the experience data for both internal leadership and Google as the external partner. I went deep on the conversational sessions themselves, reading real exchanges to understand what customers came to the agent to do, and where it delivered.
The signal was clear: customers who engaged converted and added to bag at materially higher rates, confirming strong receptivity to the experience. Initial entry-point visibility landed at the industry benchmark for a net-new surface: enough to validate demand, and enough to tell us the next unlock was discoverability, which set up Phase 2: contextually aware prompts placed where intent already lives.
Phase 2 moved the agent from a single entry point to contextually aware PDP prompts, surfacing the assistant at the moments a shopper is already weighing a product, comparing options, or looking for an answer. Given the conversion and add-to-bag lift among users who open it, the program is now scaling into new global elements and surfaces, expanding where the agent meets the customer rather than waiting for the customer to find it.
The problem: Search was hidden behind a tap in the mobile nav. I tested surfacing it directly, and the right call was to read the two brands separately and split the decision rather than ship or kill across the board.
A/B tested an always-visible search field in the mobile nav across both brands, with two variants. I read results per-brand and per-variant rather than in aggregate, because aggregate would have masked a real divergence.
One brand showed a statistically significant unique-conversion lift, a clear ship. The second brand showed an add-to-bag decline at high significance, which I would not ignore for the sake of a clean launch. Variant 2 showed no lift on either brand.
Shipped the winner, killed variant 2, and held the second brand pending a session-replay investigation into why the add-to-bag metric moved. Holding to diagnose is a decision, not indecision.
The problem: Our personalization tool was rendering directly on transaction-critical surfaces, including checkout, putting marketer velocity and revenue-path stability in tension. I redesigned the model to resolve that tension instead of trading one for the other.
Designed a model where engineering owns the actual rendering on critical surfaces and the personalization platform operates only as a server-side allocation and measurement relay, passing results to analytics. Documented it as a PRD with a bow-tie process diagram so engineering, marketing, and analytics shared one source of truth.
Removes the third-party tool from the transaction-critical render path while preserving the ability to allocate and measure tests. Marketers keep their experimentation surface, engineering keeps control of checkout stability.
Rolling the model out MVP-first, proving it on a contained surface before generalizing. The principle: experimentation infrastructure should never be a single point of failure on the path to revenue.
I run product like an experimentation program, but what I ship are experiences. Every initiative starts with a hypothesis tied to a behavioral signal, gets sized against revenue impact and build effort, and ships as the smallest version that can prove or kill the idea.
I read results per-segment and per-brand, not in aggregate, because that's where the real decision lives. A win on one brand and a regression on another isn't a wash; it's two different ships. I'm comfortable killing my own ideas when the data says so, and equally comfortable holding a launch to diagnose why a metric moved before reacting.
I work close to the stack. I write the PRD, scope the Jira ticket, design the measurement framework, and sit with engineering on the architecture, so the test that ships is the test we can actually trust.
The loop
Search, personalization & experimentation
Commerce & content
Data & analytics
Lifecycle



