DEV Community

Luna
Luna

Posted on • Originally published at builderlog.net

1 Review, 14 Days of Second-Guessing: How One User Broke My Roadmap

Fourteen days after I launched the BOGO deals app, exactly 1 person had left a review — and it was enough to rewrite three items on my roadmap.

I'd been half-expecting silence. That's usually how it goes. You ship, you watch the install counter, you refresh the review tab out of habit, knowing full well nothing's there. So when the notification actually came in, I felt this little jolt. Someone cared enough to type something.

Then I read it.

"Why Can't I Just See the Ones Near Me"

Three stars. The body was two sentences. Something like: "Good idea but I have to scroll through like 50 deals before finding anything useful. Why isn't there a location filter?"

My first reaction — and I'm a little embarrassed about this — was defensive. I'd built a category filter. There was a search bar. Location was on my list, just not at the top. I'd deliberately deprioritized it in v1 because the geolocation API added complexity and cost, and I told myself users would be fine browsing by category first. That felt like reasonable product thinking at the time.

Turns out I was rationalizing.

The plan that lives in your head has no idea what it's like to use the actual app.

The thing about reading a real user complaint is that you can't argue with the experience. This person opened the app, felt friction, and left. That's the receipt. My internal logic — "category filter is enough for now" — never had to survive contact with someone who just wanted to find a deal at a store three blocks away.

The Gap Between "Planned" and "Felt"

I went back through my original planning notes. I'd logged maybe 6 hours of pre-launch user story work, and in that doc, the location filter was sitting in the "Phase 2" column. I'd moved it there around week 3 of the build, when I realized the Maps API integration was going to cost me extra on top of the $9/month I was already paying for the deals data feed. I didn't want another line item before I'd proven the thing out.

That logic made sense to me. It didn't make sense to the person using a deals app who was standing in a parking lot.

What I didn't expect was how much one review would mess with my head. I'd read plenty of advice about not overreacting to single data points. I know all that. But when it's the first data point — when there's nothing else to average it against — it lands with full weight. It's not one voice in a crowd. It's the only voice in the room.

I spent about 4 days going back and forth on whether to build the location filter immediately or hold the line on Phase 2. I made the same pros/cons list twice. I talked myself in and out of it probably 6 or 7 times across those days.

One review with zero comparisons to dilute it is basically undiluted signal — which is exactly what makes it so hard to sit with.

What I Actually Did (And What It Cost)

I ended up pulling the location filter into the current sprint. Not a full "store near you" map view — I didn't have the budget for that yet — but a basic radius filter using the device's location and the coordinates I was already storing for each deal entry. I'd been storing lat/long the whole time and just not surfacing it. That felt a little stupid in retrospect.

The implementation took me about 9 days, working nights. I used the Expo Location library (free, already in the stack) and added a simple distance-sort toggle. No map, just a "sort by: distance / newest / expiring soon" selector at the top. Kept the Maps API spend at zero for now.

I pushed the update on day 23 post-launch. By day 30, the average session length had gone from 48 seconds to 1 minute 41 seconds. I don't know for certain that was the location filter — it could be coincidence, or it could be that the handful of new installs that week were just stickier users. But it moved, and it moved the right direction.

The one-star reviews I'd been bracing for didn't come. The three-star reviewer never updated their rating.

The Thing I'm Still Sitting With

Here's what actually changed for me beyond the feature itself: I had to reckon with the gap between how I think about users and how I actually designed for them.

I'd convinced myself that a category filter was intuitive and good enough. I had zero evidence of that. I just believed it because I built it and it made sense to me. The moment a real person showed up and said "this doesn't work the way I need it to," my internal model just collapsed. Six hours of user story planning didn't survive one paragraph of honest feedback.

That's not a knock on planning — I still do it. But I was treating my planning doc like it was more reliable than it is. It's a guess. A structured guess, maybe, but a guess. A real user is primary source material.

There's a version of "user research" that's just you interviewing your own assumptions.

What I'm trying to do now is hold my roadmap a little looser. I still have a Phase 2 and Phase 3 list. But I'm treating anything past the current sprint as provisional until someone actually runs into it. The list exists to help me think, not to protect me from changing my mind.

One User Is Not "Users"

I do want to say the quiet part: one review is still one review. I could have reacted to this feedback and built something nobody else cared about. That's a real risk. I got lucky that the location filter turned out to be genuinely useful based on what I could measure.

I've also had sessions where I made changes based on one loud signal and the metrics didn't move at all — 3 iterations, 0 measurable impact, several weeks burned. So I'm not holding this episode up as proof that you should always do what one reviewer says.

What I'm holding it up as is this: the first real piece of user feedback deserves more consideration than most, because it's the first time your product met the world and the world talked back. It's worth sitting with that for more than a day, even when it's uncomfortable.

Especially when it's uncomfortable.

The 14 days of second-guessing felt bad. I think they were supposed to.

TL;DR: One 3-star review from the first real user exposed a gap I'd been rationalizing away — I pulled the location filter forward 14 days earlier than planned, session time went from 48s to 1m41s by day 30, and I'm still not sure how much to trust a single data point.


Next episode: I finally tried charging for something — a one-time unlock, $1.99, and the conversion math was not what I'd hoped.


Get the $31 Stack Prompt Pack — $19
The exact prompts, cost calculator, and n8n templates from this stack.

Top comments (0)