i got my first refund request three months into running respira for wordpress.
€199. order #xyz. a customer named M.P. who was “genuinely excited on day one” but ran into walls i didn't know existed.
he asked for his money back under my 30-day guarantee. i gave it to him immediately-no questions, no negotiation, no “let me help you debug this” dance.
but then i did something that changed the trajectory of the product.
i read his email again.
the email that became a roadmap
here's what M.P. told me (lightly edited):
“Claude token usage is significantly higher than when working locally, which blows through my budget much faster than expected.”
“The approval interface is hard to navigate: Respira creates multiple copies of pages, and I was unable to figure out how to ensure the correct page gets updated.”
“Multi-site management is too complex: configuring the claude.json file and the switch site feature don't work reliably for me.”
three problems. specific. actionable. brutally honest.
and every single one was correct.
the part where i could've gotten defensive
there's a moment when you read feedback like this where your brain offers you a way out:
“well, most users figure it out”
“maybe he didn't read the docs”
“power users don't mind a little complexity”
i've built software for 24 years. i know this voice. it's the voice that protects your ego at the expense of your product.
M.P. didn't owe me debugging time. he didn't owe me patience. he paid €199 for a tool that would make his work faster, and it was making his work slower.
the product wasn't good enough. full stop.
instead of excuses
i took his three pain points and turned them into three features.
problem 1: token usage burning through budgets
respira was sending verbose json payloads back and forth with claude. complete. thorough. and expensive.
i rebuilt the mcp response system to be compact by default. discovery + patch flows instead of full payload extraction.
result: 60-70% token reduction on typical wordpress editing workflows.
M.P. was right. it was too expensive.
problem 2: approval interface creating duplicate chaos
every edit created a new duplicate. five duplicates for one page. which one has the latest changes? which one should i approve?
i added working copy consolidation. the system now reuses the latest open working copy instead of creating new duplicates. older versions get archived to history.
result: one clear “approve this” button. no more guessing.
M.P. was right. it was confusing.
problem 3: multi-site setup requiring json surgery
manual json editing. unclear which site was active. switch failures.
i built a dashboard config generator that exports installer commands and ai setup prompts. zero manual json editing. one-time install tokens. client-specific configs.
result: copy command, run in terminal, done.
M.P. was right. it was too complex.
the dedication
i shipped all three fixes as respira 4.2.0 in 9 hours after reading the refund request.
i dedicated the release to M.P., the customer who gave me the feedback i needed to hear.
at the bottom of the release page, there's a dedication:
“This release is dedicated to M.P., who gave us the specific feedback we needed to make Respira better for everyone. Your three pain points became our three biggest improvements. Thank you for being honest, for asking for your money back, and for saying you'd give us another shot. This one's for you.”
he said in his email: “I fully intend to come back and try it again in a few months.”
this release is specifically designed to make that return successful.
what refunds actually mean
i'm a solo founder. respira is nights and weekends.
that €199 refund was real money. it hurt.
but here's what else was real:
260 WordPress sites using the product. 271,236 lines of code shipped through ai assistants. 3,022 pages edited, 284 posts edited. 4,238 ai agents connected across Claude Code, Cursor, and Codex.
one refund doesn't mean the product is broken. it means one person found the exact edges where it breaks.
and if you're building something real, those edges are gold.
the alan watts angle
there's an alan watts quote i keep coming back to:
“the only way to make sense out of change is to plunge into it, move with it, and join the dance.”
M.P.'s refund request was change. unexpected. uncomfortable. the first one always is.
i could've resisted it. gotten defensive. written it off as an edge case.
instead i plunged into it. moved with it. joined the dance.
and the product got better.
building in public actually means listening
“building in public” has become startup performance art. post your revenue. share your struggles. cultivate vulnerability as a brand strategy.
but real building in public means this:
when someone tells you your product isn't good enough, you believe them.
you don't spin it. you don't rationalize it. you don't wait for three more customers to say the same thing.
you fix it.
M.P. gave me three specific, actionable problems. i shipped three specific, actionable fixes.
that's the dance.
what's next
if you're running WordPress sites and hitting token budget limits, approval confusion, or multi-site setup friction-respira 4.2.0 fixes all three.
if you're building a product and you get a refund request with specific feedback-read it twice. then ship the fixes.
and if you're M.P. reading this: thank you. seriously. come back when you're ready. this one's for you.
release notes: https://www.respira.press/releases/4.2.0
github: https://github.com/webmyc/claude-skills-wordpress
building respira for wordpress from brașov, romania.
nights and weekends.
simple systems that breathe.
p.s. - if you're a solo founder who's gotten that first refund request and felt the gut punch, reply to this email. i want to hear your story.


