Simsima

Travel connected

Visit Website
August 13, 2026 AI wrote most of my code. That was the easy part.

I'm a product manager, not a developer. Ten years in travel and aviation: booking funnels, GDS connections, checkout A/B tests. I did a full-stack bootcamp a few years back so I could argue with engineers in their own language, and I came out of it able to build things, slowly.

In early 2026 I started Simsima, a travel eSIM store. Web app, mobile app, backend, my own brand and catalog, 190+ countries, 25 languages. I run it alone. AI coding tools wrote most of the code.

The part everyone wants to hear about is how fast that went. It went fast. I shipped a working store in weeks instead of the six months a team of four would have needed. Fine.

The part nobody talks about is what happened after, so that's what this post is.

simsima homepage

Shipping the app took weeks. Running a store took months.

A store is not an app. An app is code you control. A store is a machine with money moving through it, third-party APIs that lie to you, tax rules, a payment processor, an email provider, a CDN, and customers in twenty-five languages who notice everything.

Every serious problem I've had came from that second category. Here are the real ones.

Stripe took money and no order existed. Payments landed, customers got charged, and no eSIM went out. The webhook was configured. It fired. Something downstream ate the event. I found out from a customer, not from a dashboard. I now run an hourly reconciler that walks recent charges and checks each one has a matching order, because a webhook is a promise and promises break in production.

Confirmation emails went out in French to people who don't speak French. The function that resolved a customer's language defaulted to fr when it couldn't find one, and it couldn't find one most of the time. My own default language, quietly applied to Japanese and Brazilian buyers. Nobody complained. They just didn't come back. The fix was three lines and a database column. Finding it took a week of staring at my funnel wondering why non-European retention looked so bad.

Cloudflare blocked my own suppliers. I turned on bot protection, which is the responsible thing to do. It started serving challenge pages to the server-to-server webhooks my eSIM providers use to tell me an order is ready. Machines can't solve a captcha. Orders sat in limbo. Security features break integrations in ways no test suite catches, because your test suite doesn't run through your CDN.

My cache filled the disk and took the site down. Next.js writes incremental static pages to disk. My host's disk is ephemeral and small. The cache grew until there was no room left, and the whole thing stopped serving. That's an outage caused by a framework default I never chose and didn't know existed.

My analytics undercounted my own sales by half. I write this post, go to check my funnel, and PostHog shows 28 purchases against 61 real orders in the database. The purchase event fires in the browser on the confirmation page, and half my customers pay and close the tab without ever seeing it. I'd been reading a 3% conversion rate for weeks. The real number is 16%. Every conclusion I drew from that funnel was drawn from a number that was wrong by a factor of five. Fire your revenue events from the server.

I priced everything wrong from the start. I launched on a flat markup, which is what everyone does. Then I actually computed it: provider cost, Stripe's percentage, Stripe's fixed fee, EU VAT, refund rate. On small orders, the fixed costs ate the entire margin. A €3 sale was losing me money once the fixed fee and VAT landed. I rebuilt pricing around net profit per order instead of markup, and added a small-order fee. That's not a coding problem. No AI was going to tell me my unit economics were upside down, because it can't see my Stripe balance.

None of this is code. All of it is the job.

What AI is genuinely good at, and where it stops

Good at: the second version of anything. Once I knew what my admin dashboard needed to show, describing it and getting it built took an afternoon. Same for migrations, scripts, translation pipelines, one-off data audits. The boring surface area of a business, the stuff a real team never has time for, is where I got the most leverage. My backoffice has real-time margin tracking and unit economics per order. On a team that's a two-week sprint someone keeps deprioritizing. Solo, it was a weekend.

Good at: languages. Twenty-five locales, fully translated, with the tone reviewed per language. That would have been a budget line item. It was a pipeline.

Bad at: anything it can't observe. AI cannot see your production database, your payment processor, your CDN config, or your customers. When I described a bug, I'd get a confident, plausible fix for a bug I didn't have. The debugging skill that mattered was refusing to accept a fix until I'd reproduced the failure myself.

Bad at: knowing what to build. Which is the whole job, and also the reason being a PM turned out to be an advantage rather than a handicap. Every good session starts with a spec, a user story, and a definition of done. That's the thing PMs do that developers often skip, and it's now the bottleneck skill.


The one product decision that actually moved a number

Every eSIM company sends you a QR code. You scan it with another phone, or you copy a forty-character activation string by hand. It works and it's miserable.

I built a Smart Link instead: one tap in the confirmation email installs the eSIM. It's the feature I fought hardest for and almost cut, because the QR code technically works. Activation rate went up 22% against the QR-only flow.

That's a bigger win than anything I did to the funnel. Removing friction from the moment after the sale beat every optimization I made before it.


Numbers, and they're small

First paying order: June 14, 2026. Two months later: 61 orders, €878 in revenue, €269 in net profit. That's 30.6% net margin after supplier cost, Stripe fees and EU VAT, which is the number I care about, because the markup version of that number was a fiction.

By month: €226 in June, €348 in July, €305 in the first eleven days of August. Average order is €14.40, so this is a business that needs volume, not price.

40 customers across 21 countries. Top five by orders: United States, Germany, Pakistan, Japan, Mexico. I marketed in none of them.

The number that made me keep going: 12 of those 40 customers bought again, and one has ordered seven times. In a category where people travel three times a year and switching costs are zero, repeat purchase within eight weeks is the signal that the loyalty mechanics work.

Funnel over the same window, unique visitors: 255 reached a plan page, 169 added a plan to the cart, 67 started checkout, 40 paid. That's 16% of plan-page visitors buying, and 60% of started checkouts completing. Traffic is my problem, not conversion.

Zero paid ads so far. Acquisition is SEO, referrals, and cashback, because in a category with no switching costs, the thing that brings people back is credit they've already earned.

One acquisition detail I didn't expect: my first attributable AI-search sale came from Perplexity. Someone asked an assistant for the best eSIM in Hong Kong and bought from me. I publish an llms-full.txt so models describe my product correctly. Treat that the way you treated Google in 2010.

If you're a PM thinking about doing this

You're more ready than you think, and less ready than the AI-build posts suggest. You can get a product live. You will then discover that a product is maybe a fifth of a business, and the other four fifths are VAT rules, deliverability, fraud, reconciliation, and support tickets at 11pm.

I'd do it again. But I'd stop telling people the code was the hard part, because it wasn't, and pretending otherwise sets up everyone who reads these posts for a bad surprise.

Happy to answer anything about the stack, the pricing model, or the multilingual SEO bet in the comments.

Comment

About

I wanted to prove that one person can run a real global e-commerce business end to end, so I built Simsima: my own eSIM brand, my own catalog, 240 countries, 25 languages, web app, mobile app and backend, all solo.