I built an app from a hospital bed
- Expense Lens was built in a single weekend from a hospital bed while recovering from foot surgery.
- Five previous failed attempts taught me exactly what features to skip.
- Constraints like limited energy and zero distractions forced clarity that 3 weeks of free time didn't.
- Sometimes you have to build the wrong thing 5 times to understand the right thing.
The story of 5 failed attempts, a foot surgery, and the weekend that changed everything.
I built Expense Lens six times. The first five were terrible.
This is the story of how a linguist with no app development experience, a long history of frustration with expense tracking software, and an unexpected hospital stay ended up shipping a product in a single weekend.
The itch that wouldn't go away
For years, I'd been using expense tracking software that made me want to throw my phone out the window. The app crashed constantly. Receipts got stuck in processing queues for days. The OCR mangled amounts and merchant names so badly that fixing the auto-extracted data took longer than typing it in manually.
And as someone who's lived in five countries since leaving Canada in 2012—UK, Turkey, USA, Switzerland, Germany—the multi-currency support was a joke. I was juggling receipts in pounds, lira, dollars, francs, and euros. Sometimes in the same week. My expense app could barely handle one currency properly, let alone five.
Every few months I'd think: I should just build my own. And every few months I'd talk myself out of it. I'm a linguist. Computational linguistics — Python, R, data analysis. Not a web developer. Not a mobile developer. Not a designer.
But the itch wouldn't go away.
Attempt #1: the christmas sprint (December 2025)
Over the Christmas break, I finally caved. Three weeks of vacation. No client work. The perfect window.
I sat down with a hot coffee and a blank code editor, and started building.
A few days later, I had something that sort of worked. You could upload things. Buttons existed. Screens loaded. But the UI was horrible. Not "needs polish" horrible — "I wouldn't download this if someone paid me" horrible. I'd focused so hard on getting something functional that I'd ignored what it looked like and felt like.
I couldn't look at it anymore. I started over.
Attempts #2 through #5: the graveyard
Over the next few weeks, I built Expense Lens from scratch four more times. Each attempt got a little closer. Each one failed in a new and educational way.
Attempt #2 OK, so make the UI nice first this time. I did. It looked decent. But under the hood? Nothing worked. No real backend logic. No functioning data pipeline. A pretty shell with nothing inside. Turns out you can't just design your way to a working product.
Attempt #3 I tried one of those AI website builders — the kind that promises to build your app for you. It was fast at first. Then it started creating files I couldn't see. Hidden files like .gitignore that silently broke my builds. I'd make a change, hit deploy, and nothing would work. I'd spend hours debugging only to discover the AI had quietly generated something that conflicted with everything else. I lost days to invisible problems I didn't create.
Attempt #4 Different AI platform, same category of problem. This time the logic and backend actually worked — I could scan receipts, store data, the pipeline functioned. But the frontend was horrific, and the platform wouldn't let me customize it enough to fix it. I'd try to move a button or change a layout and hit a wall. The user experience was something I'd be embarrassed to show anyone. If I couldn't make it something I was proud of, what was the point?
Attempt #5 Fine. I'll build it locally. Full control. My machine, my code, my rules. But the frontend framework I chose just didn't click. The coding language felt like fighting the tool instead of building with it. I couldn't make the interface mine. Everything came out looking generic, like a template someone else designed. I wanted Expense Lens to feel like something I'd created, not something I'd configured.
Five attempts. Five different flavors of failure. Nearly a month gone.
I was frustrated, but I'd learned something important: I now knew exactly what I didn't want. Every failed build had sharpened my mental model of what the right product should feel like. I just hadn't built it yet.
The unplanned hackathon
At the end of January, I had minor foot surgery. Nothing dramatic — but it meant a weekend in the hospital, mostly sitting in bed, unable to walk around, with nothing to do but stare at the ceiling and watch bad TV.
My wife and kids were at home. No family visits to fill the time. No errands to run. No school pickups, no dinner to cook, no "can you help me with this for five minutes?" Just me, a hospital bed, and an absurd amount of uninterrupted time.
I brought my laptop. Obviously.
On Friday evening, fueled by painkillers and terrible hospital coffee, I opened a blank project. No plan. No wireframes. No architecture document. Just the accumulated knowledge of five failed attempts and a very clear picture of what I wanted.
I started coding. With AI, obviously — I'm a linguist, not a magician.
The difference wasn't that I'd abandoned AI tools. I was still using AI to help me build, just like attempts #3 and #4. I hadn't abandoned AI tools — I'd just learned how to use them properly. Locally, on my own machine, where I had full control. No platform creating mystery files. No walled garden blocking customization. Just me directing the AI, making the decisions, and keeping my hands on every piece of the codebase.
The other difference was that I wasn't exploring anymore. I wasn't asking "what should this be?" I already knew. Five rebuilds had answered that question. This time I was just executing. I'd learned what I needed from the AI builders, knew which frontend language felt right, understood exactly where the logic needed to live, and had a crystal-clear picture of the UI I wanted.
Friday night Core data model, receipt upload, AI extraction pipeline. The foundation I'd gotten wrong twice before — this time it clicked. Receipt in, data out, stored properly. Done.
Saturday Categories, the smart learning system, and the basics of the UI. Everything I'd overengineered in attempts #3 and #4, I kept simple. Flexible categories that learn from your patterns. A clean interface that doesn't waste your time.
Saturday night Multi-currency support. This was the feature I cared about most — the one no other app got right. 170+ currencies with automatic conversion. I'd lived this problem for over a decade. I knew exactly what it needed to do.
Sunday Projects, analytics, and polish. The features I'd stripped out of attempt #5, added back with restraint. Enough to be useful. Not so much that it felt heavy.
I coded as long as I could stay awake. The nurses probably thought I was losing my mind, typing away at 2 AM with my foot elevated and an IV drip in my arm. But I was in the zone — that rare state where every decision feels obvious and the code just flows.
Monday morning
By Monday morning, I had a working product.
Not a prototype. Not a mockup. A real, functional expense tracking app that I could use. I scanned a parking receipt from the hospital garage — because nothing in Switzerland is free, not even parking at the place where they cut your foot open — and watched the AI extract the merchant, amount, and currency in seconds.
I remember staring at the screen thinking: This is the version.
It wasn't finished. It needed polish, testing, edge cases, mobile optimization, a hundred things. But the core — the thing I'd been trying to build for three weeks — was right. I could feel it.
The difference between this version and the five before it wasn't any single technical decision. It was clarity. I knew what to build, what to skip, and — most importantly — when to stop adding things.
What five failures taught me
If someone asked me "what's the most efficient way to build an app?" I definitely wouldn't say "build it wrong five times first." But honestly? Those five failed attempts were the most valuable part of the process.
Each failure compressed weeks of learning into days. Each rebuild took 3-5 days. Each one eliminated a category of wrong decisions. By attempt #6, I had a mental checklist of things not to do that was more useful than any tutorial or course.
You can't describe "right" until you've built "wrong." I couldn't have described what the right product felt like before I built the wrong versions. The only way to develop taste for your own product is to build things you don't like and figure out why.
How you use AI matters more than whether you use it. I used AI to build all six versions. The difference was in how. AI website builders gave me speed but took away control. Building locally with AI assistance gave me both. The tool didn't change. My understanding of how to use it did.
The hospital bed was a constraint that helped. Limited energy and limited time forced me to make ruthless decisions about what mattered. I couldn't afford to explore, only execute. No family around meant zero distractions. The result was a tighter, more focused product than any of my leisurely Christmas sprint attempts.
Most of building in public isn't inspirational. It's deleting code you spent three days writing because you realize it's wrong. It's starting over. It's the fifth blank project file. The Monday morning moment when it all clicks — that's the highlight reel. The real work is the five attempts nobody sees.
Where it's going
The foundation from that hospital weekend is still the foundation of Expense Lens today. Every feature since — email-in receipts, PDF reports, bulk upload, two-factor auth — has been built on top of what I shipped that Monday morning.
Improvements are coming fast now. The hard part — figuring out what the product should be — is done. Now it's about making it better, faster, and more useful every week.
Expense Lens is now available. It's built for freelancers, expats, and digital nomads who are tired of expense tracking software that doesn't work. AI receipt scanning, 170+ currencies, smart categories that learn from you. Starting at $4.99/month.
If you've ever built something wrong five times before getting it right — you know the feeling. And if you're tracking expenses with something that crashes, gets stuck, or can't handle more than one currency — you know the frustration that started all of this.
Get Started Free at expense-lens.com/join →
Early birds get 30% off their first year.