TeachMe.To
I take care of conversion for a lessons marketplace, from the first search to the checkout. I design the tests, build them in the real codebase and read what happened.
- Role
- Product designer & design engineer, growth
- Period
- Jun 2025 — now
- Status
- Ongoing
- Built with
- Figma, Next.js, TypeScript, PostHog, Claude Code
TeachMe.To is a marketplace where people book lessons with local coaches, in 250+ US cities. I joined in June 2025 as a product designer on growth, and my job is basically to get more of the people who land on the site to find the right coach and book.
For most of my career, that job would stop at a Figma file. Here it doesn’t. I find the problem, design the change, build it in our Next.js app, set up the tracking, ship it as an experiment and then read the numbers with the team to decide what stays.
The experiment log
I’ve run 40+ experiments here in the last year. Before June 2026 I designed and read them and our engineers built them. Since then I’ve done 15 of them end to end, code included. Every test starts with a metric we agree on before launch, and when a test loses, we write down why. Half of the ten below lost, and I think those taught us as much as the wins.
- H.5Home hero searchMore people got from the homepage to a coach’s page (+6–7%), and nothing else broke in 18 days. Live for everyone.HomepageQualified demand+25.5%Won · shipped
- GRO-582Listing enquiry form redesignA very clear result (p < 0.0001), and it didn’t take sales away from checkout. Live.ListingEnquiry rate+75%Won · shipped
- P.4Parent quotes on the youth landing pageJust a copy change. Real quotes from parents worked better than our sales pitch.LandingLanding → checkout+55%Won · shipped
- C.6Pack-aware risk-free guaranteeNot statistically significant, but an 86–94% chance to win, above the 80% we had agreed on. Shipped.CheckoutCheckout completion+17.4%Won · shipped
- L.6Inline pack selector on listingsDidn’t reach our bar, but 30% fewer people dropped off at the price step, so we shipped it as a product decision.ListingRevenue per visitor+8.8%Inconclusive
- P.6“Who is it for” intent routerMore clicks, fewer purchases. What we kept: 1 in 4 people who clicked told us they were shopping for a kid or a partner.LandingRevenue per visitor−12%Lost · killed
- M.6Affiliate co-branding41% more leads, but they didn’t turn into buyers. Killed.Cross-surfaceNet revenue per visitor−39%Lost · killed
- H.4Skill & coach explorer on homeFewer people converted. Killed on day 23.HomepageConverters−24.6%Lost · killed
- M.5Hide the quality-score gaugeOur theory was wrong. People clicked the same either way, across 18K sessions.BrowseCheckout → paidFlatLost · killed
- C.8Pack ladder 1 / 3 / 5 / 10We kept the original and turned the idea into a 1 / 5 / 10 version, running now.CheckoutContribution per visitorLostLost · killed
A form that got 75% more enquiries
A lot of people on a coach’s page aren’t ready to book yet. They have a question first: is this coach good with kids, do they have a slot on weekends, what should I bring. The old way to ask them wasn’t great.
I designed a new enquiry form: one screen, with a small chat-style bubble and quick questions that change depending on the sport. We tested it against the old one and the new form got 75% more enquiries, with a very clear result, and it didn’t take sales away from checkout. The team’s projection put it at about $1.3M a year.
Later, a chat version of the form looked like it beat it by a third. When we dug into it, most of that lift came from a free-lesson button inside the chat, and without it the difference was noise. So the form stayed, and what we did keep from the chat test was the parent-first copy on the question chips, since most people who typed a question were asking about a kid.
Rebuilding search, one step at a time
The homepage search used to be a two-step pop-up: pick where, then pick what. It had no tracking at all, so nobody knew how many people gave up in the middle. On browse, the skill picker was opened and abandoned about a quarter of the time.
I did this in steps. First a homepage redesign with the search right in the hero, tested in three versions, and the light one won, with 24% more people reaching browse. Then I added tracking to the old search before touching it again, so we’d have something honest to compare against.
Then I built a single search box that understands skills, coach names and places. It went through six design rounds, and along the way we fixed a bug where the arrow button skipped the new search entirely, which would have ruined the test. It won: more people got from the homepage to a coach’s page (+6–7%), qualified demand went up 25.5%, and nothing else broke in 18 days. In September I brought the same search to the browse pages, where it replaced the old pickers, and it’s now live for everyone.
Online lessons and the move to packs
This summer the company decided to stop offering free trials and subscriptions and sell lesson packs instead, and to launch online lessons. The decision was leadership’s. Making it happen across the whole site, in one go, was on me.
I mapped every place that had to change, 16 surfaces in total, checked them against the experiments that were running, and paused or called the ones that would get in the way. I designed the new pack selector for checkout and the new trust copy, split the work into cards, and wrote the go-live runbook with SEO, help center, sales, ads and legal, including the same-day update to the terms of service. It went out as one coordinated release.
Conversion came back close to where it was in the free-trial days, and now every one of those checkouts is paid.
A guarantee people could actually see
We had a risk-free guarantee at checkout, but it sat below the fold and wasn’t tied to what you were buying. Only about 3 in 100 people at that step ever opened it, and two thirds of them were on a phone.
I explored four directions and picked the one that ties the guarantee to the pack you selected, with the amount, right above the Buy button on mobile and desktop. Completed checkouts went up 17.4%. It wasn’t statistically significant, but it had an 86–94% chance to win, above the 80% bar we had agreed on, and the downside was small, so we shipped it and kept watching. The numbers held after launch.
Measuring the right thing
For a while we were judging tests by conversion rate, and it couldn’t see something important: a lot of people don’t buy online, they send an enquiry and book through our sales team. So a test could send more good leads and still look like a loss.
With the team I moved us to a metric we call qualified demand, checkouts plus qualified leads, over the people who visit the shopping pages. I also fixed tracking at the source. About 20% of bookings were being counted twice, and a chunk of people in checkout tests were being labelled with the wrong variant. Every read we’ve done since depends on that cleanup, which is not glamorous work, but it’s the reason I trust the numbers above.
Keeping quality up
In July I took over checkout, landing pages, browse and filters, and we no longer had a dedicated QA person. So I wrote a QA gate that scores each change on six kinds of risk and tells you how much testing it needs: self-QA, a second pair of eyes, or a full independent pass. The team still uses it.
I also audited the design system across four codebases, 2,654 components, and found four different sets of tokens, two slightly different brand blues and hundreds of one-off sizes. I fixed the web app and the coach dashboard. The mobile apps are still on the list.