01
I go to the source before committing to a solution
The first framing of a problem is usually someone's assumption. A request arrives with a solution baked in — bulk cancellation tools, a multi-month PSP build, a reporting feature that dumps more data. The instinct to start building is strong. I've learned to resist it.
In 2020, when COVID hit and tour operators were inundated with cancellation requests, our CS team escalated to Product with a clear ask: give operators tools to mass-cancel and mass-rebook on behalf of their customers. I didn't have database access. I navigated the process to get it — first non-engineer at FareHarbor with read-only Postgres access — queried the bookings data directly, and found that cancellation actions were never consistent across activities or companies within the same company. The pattern was clear: individual bookers were making their own decisions. Operators acting en masse would have generated a new wave of exceptions on top of the existing problem.
Bulk ops would have given operators a hammer for a problem that needed a scalpel — and mass-cancelling on behalf of customers would have generated disputes.
I took both the data and the operator evidence back to CS. What moved them wasn't an argument — it was seeing that their proposed solution would create a new problem on top of the existing one. We redesigned toward self-serve. Online cancellations went from 0% to 30% of channel mix within four months. → Full story
The same pattern appears in the PayPal validation: when commercial leadership pushed for a full PSP build into three markets, the missing piece wasn't a counter-argument — it was evidence. A two-week validation run produced a concrete requirements document. The full PSP investment that followed was informed rather than assumed. → Full story
02
Measurement is a design decision, not an afterthought
When I ran FareHarbor's first A/B test in November 2023, I pre-registered the minimum detectable effect, calculated the sample size against it, and held the run length when the early signal was tempting. On day 14, the p-value was 0.13 — near 90% confidence, below threshold. I didn't stop.
Stopping early on a near-significant signal is how false-positive culture gets baked in. This was the first experiment the company had ever run. The decision mattered less for that one test than for the precedent it set. → Full story
Measurement rigour shows up in smaller decisions too. When I shipped the COVID cancellation feature, there was no instrument to measure adoption. I built FareHarbor's first Grafana cancellation dashboard because I wanted to know whether the design was working — not because anyone asked for it. When I ran the AVS dispute backtest, I waited for the average dispute window to close before measuring, controlled for seasonality and channel mix, and built a hand-computed validation check before trusting AI-generated output.
Rigour isn't something I add at the end. It's how I frame the work from the start — and it's how I earn the right to cite the numbers I cite.
The corollary: I'm honest about what a number is and isn't. A dispute rate correlation is directional evidence, not a causal claim. A time-to-insight reduction applies to a specific cohort, not the whole user base. Qualifying numbers doesn't weaken them — it's what makes them trustworthy. → Full story
03
When something is blocked, I look for the third option
My VP of Product carried a hard-no to leadership on a multi-month PSP build into Thailand, South Africa, and Vietnam. He was overruled immediately. The soft-no path was closed. The choice looked binary: build the PSP, or keep losing the argument.
I found a third option. PayPal supported two of the three markets out of the box. Integration was two weeks rather than multi-month. The trade-offs were documented explicitly — thinner feature set, known FX limitations, weaker support — but it preserved the one thing Commercial needed to test demand: live online bookings. The pitch to leadership wasn't "don't build the PSP." It was "build it after we know what we're building it for." → Full story
The same logic appears in the AVS story. Commercial had blocked adding billing address fields to checkout — a reasonable call based on prior friction complaints. Rather than fighting the block, I designed a segment-specific A/B test: merchants with above-average dispute rates and below-average acceptance. The test ran on a population where the upside was highest and the friction risk was most defensible. The finding — that AVS improved conversion on cart-style checkouts while hurting one-page checkouts — meant the rollout could be scoped precisely enough that Commercial's original objection no longer applied. The block became a green light. → Full story
Constraints often produce sharper solutions than open mandates. A hard no is sometimes just an incomplete framing of the problem.
04
I surface structural problems honestly, even when it costs me
In September 2024 I went to my GPM with a specific framing: payments and reporting couldn't be held apples-to-apples. The north-star metrics were too different. Reporting items would always lose to payments in prioritisation cycles — not because they were less important, but because the comparison was structurally unfair. I could do more with two more engineers, and that wasn't on the table either.
The Insights team was approved. A new PM joined in February 2025. The first thing they shipped was a menu reorganisation I'd designed but never had the capacity to deliver. The vision I'd authored survived the ownership change intact. → Full story
The same move appeared in the Billing story. Under the weight of the dLocal expansion and a growing Solvimon implementation, I raised the capacity constraint to my GPM honestly rather than quietly managing it. The Billing team was created as a result. I now mentor the Billing PM — the most substantive intervention being a ledger redesign where the team's initial direction would have stored accrual statuses as mutable state. I reframed the design around immutable facts, validated with the Accounting Manager, and the team redesigned around the correct model. → Full story
If I'm holding two surfaces and doing neither at full depth, the organisation is paying Staff PM cost for Senior PM output. That's a structural problem, not a workload complaint.
Both times I let go of scope I'd argued for and cared about. The pattern isn't selflessness — it's the pragmatic version of operating at the right altitude. A surface I've handed off with a strong vision and a good handover document compounds. A surface I'm grinding through under-resourced doesn't.