[{"data":1,"prerenderedAt":951},["ShallowReactive",2],{"category-data-app-store":3},[4],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":10,"date":11,"image":12,"alt":13,"ogImage":12,"tags":14,"published":22,"body":23,"_type":944,"_id":945,"_source":946,"_file":947,"_stem":948,"_extension":949,"sitemap":950},"/blogs/shipping-elsewhere-indie-ai-may-2026","blogs",false,"","Shipping Elsewhere - An Indie Dev's Honest Postmortem on Building an AI App Solo","Costs, mistakes, App Store rejections, and the moments that made it worth it - the unvarnished story of shipping a Swift-and-AI indie app to the App Store in 2026.","18th May 2026","/blogs-img/blog6.jpg","Building Elsewhere - indie AI app postmortem",[15,16,17,18,19,20,21],"indie","swift","swiftui","ai","app-store","postmortem","business",true,{"type":24,"children":25,"toc":929},"root",[26,35,49,134,139,144,150,155,166,171,177,182,187,222,234,244,250,255,283,288,293,302,308,313,347,359,365,370,375,380,398,403,412,418,423,598,610,616,626,631,750,762,767,785,790,796,801,854,860,865,893,898,904,909,914,919,924],{"type":27,"tag":28,"props":29,"children":31},"element","h3",{"id":30},"the-numbers-first",[32],{"type":33,"value":34},"text","The numbers, first",{"type":27,"tag":36,"props":37,"children":38},"p",{},[39,41,47],{"type":33,"value":40},"It's May 2026. ",{"type":27,"tag":42,"props":43,"children":44},"strong",{},[45],{"type":33,"value":46},"Elsewhere: Parallel Lives",{"type":33,"value":48}," has been live for about seven months. Here's the unvarnished snapshot:",{"type":27,"tag":50,"props":51,"children":52},"ul",{},[53,64,74,84,94,104,114,124],{"type":27,"tag":54,"props":55,"children":56},"li",{},[57,62],{"type":27,"tag":42,"props":58,"children":59},{},[60],{"type":33,"value":61},"Lines of Swift:",{"type":33,"value":63}," ~12,400",{"type":27,"tag":54,"props":65,"children":66},{},[67,72],{"type":27,"tag":42,"props":68,"children":69},{},[70],{"type":33,"value":71},"Time from first commit to App Store live:",{"type":33,"value":73}," 4 months, mostly nights and weekends",{"type":27,"tag":54,"props":75,"children":76},{},[77,82],{"type":27,"tag":42,"props":78,"children":79},{},[80],{"type":33,"value":81},"Total spend on AI APIs to date:",{"type":33,"value":83}," $341",{"type":27,"tag":54,"props":85,"children":86},{},[87,92],{"type":27,"tag":42,"props":88,"children":89},{},[90],{"type":33,"value":91},"Total spend on services (RevenueCat, Sentry, Apple Developer):",{"type":33,"value":93}," $138",{"type":27,"tag":54,"props":95,"children":96},{},[97,102],{"type":27,"tag":42,"props":98,"children":99},{},[100],{"type":33,"value":101},"Total revenue, gross:",{"type":33,"value":103}," $4,830",{"type":27,"tag":54,"props":105,"children":106},{},[107,112],{"type":27,"tag":42,"props":108,"children":109},{},[110],{"type":33,"value":111},"Total revenue, after Apple's cut + processors:",{"type":33,"value":113}," $3,290",{"type":27,"tag":54,"props":115,"children":116},{},[117,122],{"type":27,"tag":42,"props":118,"children":119},{},[120],{"type":33,"value":121},"Net so far:",{"type":33,"value":123}," ~$2,800",{"type":27,"tag":54,"props":125,"children":126},{},[127,132],{"type":27,"tag":42,"props":128,"children":129},{},[130],{"type":33,"value":131},"App Store rejections survived:",{"type":33,"value":133}," 3",{"type":27,"tag":36,"props":135,"children":136},{},[137],{"type":33,"value":138},"It's not a unicorn. It's not failing. It's a small, real, growing thing. And it taught me more about indie iOS development in seven months than the previous five years combined.",{"type":27,"tag":36,"props":140,"children":141},{},[142],{"type":33,"value":143},"This is the postmortem I'd want to read.",{"type":27,"tag":28,"props":145,"children":147},{"id":146},"what-elsewhere-actually-is",[148],{"type":33,"value":149},"What Elsewhere actually is",{"type":27,"tag":36,"props":151,"children":152},{},[153],{"type":33,"value":154},"A narrative AI app. You give it a short biography. It writes life events shaped by that biography — the job offer, the missed text, the move you almost made. You pick A or B. The universe splits. You walk into the version of you that took the other path and read a 90-word poem of who you became.",{"type":27,"tag":36,"props":156,"children":157},{},[158,160],{"type":33,"value":159},"There's no winning. No leaderboards. No FOMO. The pitch I settled on: ",{"type":27,"tag":161,"props":162,"children":163},"em",{},[164],{"type":33,"value":165},"\"Live every choice you didn't.\"",{"type":27,"tag":36,"props":167,"children":168},{},[169],{"type":33,"value":170},"If you're picturing a meditation app and a Reigns-style choice game had a quiet, philosophical child — that's about right.",{"type":27,"tag":28,"props":172,"children":174},{"id":173},"mistake-one-i-built-the-ai-before-the-product",[175],{"type":33,"value":176},"Mistake one: I built the AI before the product",{"type":27,"tag":36,"props":178,"children":179},{},[180],{"type":33,"value":181},"For the first six weeks I obsessed over prompt engineering, model selection, event generation quality, narrator voice, the works. I had a beautifully tuned Gemini pipeline before I had a single screen worth shipping.",{"type":27,"tag":36,"props":183,"children":184},{},[185],{"type":33,"value":186},"This was the wrong order. Users don't experience your prompt. They experience:",{"type":27,"tag":50,"props":188,"children":189},{},[190,195,200,212,217],{"type":27,"tag":54,"props":191,"children":192},{},[193],{"type":33,"value":194},"The onboarding flow",{"type":27,"tag":54,"props":196,"children":197},{},[198],{"type":33,"value":199},"The pacing of the first event",{"type":27,"tag":54,"props":201,"children":202},{},[203,205,210],{"type":33,"value":204},"How a choice ",{"type":27,"tag":161,"props":206,"children":207},{},[208],{"type":33,"value":209},"feels",{"type":33,"value":211}," on tap",{"type":27,"tag":54,"props":213,"children":214},{},[215],{"type":33,"value":216},"Whether the universe map is legible",{"type":27,"tag":54,"props":218,"children":219},{},[220],{"type":33,"value":221},"How the paywall lands",{"type":27,"tag":36,"props":223,"children":224},{},[225,227,232],{"type":33,"value":226},"I should have built the empty shell with placeholder text first, shipped TestFlight to ten friends, and figured out the ",{"type":27,"tag":161,"props":228,"children":229},{},[230],{"type":33,"value":231},"feel",{"type":33,"value":233},". Then plugged in the real model. Instead I had a \"brilliant\" AI and a clunky app, and TestFlight users politely told me the AI was fine but they couldn't tell what they were supposed to do.",{"type":27,"tag":36,"props":235,"children":236},{},[237,242],{"type":27,"tag":42,"props":238,"children":239},{},[240],{"type":33,"value":241},"Lesson:",{"type":33,"value":243}," the AI is plumbing. The product is the user's nervous system. Get the nervous system right first.",{"type":27,"tag":28,"props":245,"children":247},{"id":246},"mistake-two-i-priced-too-low",[248],{"type":33,"value":249},"Mistake two: I priced too low",{"type":27,"tag":36,"props":251,"children":252},{},[253],{"type":33,"value":254},"My initial pricing:",{"type":27,"tag":50,"props":256,"children":257},{},[258,263,268,273,278],{"type":27,"tag":54,"props":259,"children":260},{},[261],{"type":33,"value":262},"5 free splits forever",{"type":27,"tag":54,"props":264,"children":265},{},[266],{"type":33,"value":267},"$0.99 for 30 more",{"type":27,"tag":54,"props":269,"children":270},{},[271],{"type":33,"value":272},"$2.99 for 100",{"type":27,"tag":54,"props":274,"children":275},{},[276],{"type":33,"value":277},"$7.99 for 300",{"type":27,"tag":54,"props":279,"children":280},{},[281],{"type":33,"value":282},"$2.99/month for unlimited",{"type":27,"tag":36,"props":284,"children":285},{},[286],{"type":33,"value":287},"A friend who runs a successful indie portfolio looked at this and said, simply, \"your monthly is cheaper than your medium pack — nobody will buy the pack.\" He was right. Conversion to the monthly was 8%. Conversion to one-time packs was 1.4%.",{"type":27,"tag":36,"props":289,"children":290},{},[291],{"type":33,"value":292},"I held this pricing for two months because changing prices feels scary. When I finally raised the monthly to $4.99 and kept the packs the same, pack purchases tripled within a week. The monthly conversion barely moved (8% → 7%). Net revenue per user went up 41%.",{"type":27,"tag":36,"props":294,"children":295},{},[296,300],{"type":27,"tag":42,"props":297,"children":298},{},[299],{"type":33,"value":241},{"type":33,"value":301}," anchor pricing matters more than absolute pricing. If your subscription is cheaper than your packs, your packs are dead inventory.",{"type":27,"tag":28,"props":303,"children":305},{"id":304},"mistake-three-i-underestimated-review",[306],{"type":33,"value":307},"Mistake three: I underestimated review",{"type":27,"tag":36,"props":309,"children":310},{},[311],{"type":33,"value":312},"Apple rejected Elsewhere three times before approving it. Each rejection was reasonable in retrospect:",{"type":27,"tag":314,"props":315,"children":316},"ol",{},[317,327,337],{"type":27,"tag":54,"props":318,"children":319},{},[320,325],{"type":27,"tag":42,"props":321,"children":322},{},[323],{"type":33,"value":324},"First rejection:",{"type":33,"value":326}," \"Subscription terms unclear in description.\" I had buried the auto-renewal language. Fix: explicit paragraph in the App Store description with price, duration, and how to cancel. Approved on resubmission.",{"type":27,"tag":54,"props":328,"children":329},{},[330,335],{"type":27,"tag":42,"props":331,"children":332},{},[333],{"type":33,"value":334},"Second rejection:",{"type":33,"value":336}," \"Demo account not required, but onboarding unclear during review.\" The reviewer couldn't get past biography input — they thought it was broken. Fix: pre-populated a sample biography in App Review Notes and added a \"Skip\" button to onboarding. Approved.",{"type":27,"tag":54,"props":338,"children":339},{},[340,345],{"type":27,"tag":42,"props":341,"children":342},{},[343],{"type":33,"value":344},"Third rejection:",{"type":33,"value":346}," \"AI-generated content may produce inappropriate material — please describe content moderation.\" This was the one that scared me. Fix: I wrote a one-page document on system prompt safety rails, content filtering, and what categories are blocked (self-harm, sexual content, real-person impersonation). Pasted it into Notes. Approved within 24 hours.",{"type":27,"tag":36,"props":348,"children":349},{},[350,352,357],{"type":33,"value":351},"The third one is the lesson worth keeping. ",{"type":27,"tag":42,"props":353,"children":354},{},[355],{"type":33,"value":356},"In 2026, Apple cares about how your AI is constrained.",{"type":33,"value":358}," They don't expect perfection. They expect that you've thought about it, have rails, and can articulate them. Indie devs who treat AI as \"just call the API and ship\" will hit walls. Have a content moderation document ready before submission.",{"type":27,"tag":28,"props":360,"children":362},{"id":361},"the-thing-i-got-right-shipping-ugly",[363],{"type":33,"value":364},"The thing I got right: shipping ugly",{"type":27,"tag":36,"props":366,"children":367},{},[368],{"type":33,"value":369},"The first public version of Elsewhere had ugly typography in two places, no iPad layout, no haptics on choice buttons, no Live Activities, no widget. It was missing things I considered table-stakes.",{"type":27,"tag":36,"props":371,"children":372},{},[373],{"type":33,"value":374},"I shipped it anyway.",{"type":27,"tag":36,"props":376,"children":377},{},[378],{"type":33,"value":379},"Within a week of going live I had three pieces of user feedback that completely rewrote my roadmap:",{"type":27,"tag":50,"props":381,"children":382},{},[383,388,393],{"type":27,"tag":54,"props":384,"children":385},{},[386],{"type":33,"value":387},"\"I keep wanting to share the poem I got\" → I added share cards.",{"type":27,"tag":54,"props":389,"children":390},{},[391],{"type":33,"value":392},"\"The universe map is beautiful but I can't find my favorite past universe\" → I added pinning.",{"type":27,"tag":54,"props":394,"children":395},{},[396],{"type":33,"value":397},"\"It feels weird to play this app at the gym, I want it for bedtime\" → I added a \"quiet night\" theme.",{"type":27,"tag":36,"props":399,"children":400},{},[401],{"type":33,"value":402},"None of these were on my pre-launch roadmap. All of them came from real users. If I'd polished for another two months before shipping, I would have polished the wrong things.",{"type":27,"tag":36,"props":404,"children":405},{},[406,410],{"type":27,"tag":42,"props":407,"children":408},{},[409],{"type":33,"value":241},{"type":33,"value":411}," the version that ships teaches you the version you should have built. Polish after, not before.",{"type":27,"tag":28,"props":413,"children":415},{"id":414},"the-swift-ai-stack-by-line-count",[416],{"type":33,"value":417},"The Swift / AI stack, by line count",{"type":27,"tag":36,"props":419,"children":420},{},[421],{"type":33,"value":422},"For anyone wondering what's actually in there:",{"type":27,"tag":424,"props":425,"children":426},"table",{},[427,451],{"type":27,"tag":428,"props":429,"children":430},"thead",{},[431],{"type":27,"tag":432,"props":433,"children":434},"tr",{},[435,441,446],{"type":27,"tag":436,"props":437,"children":438},"th",{},[439],{"type":33,"value":440},"Layer",{"type":27,"tag":436,"props":442,"children":443},{},[444],{"type":33,"value":445},"LOC",{"type":27,"tag":436,"props":447,"children":448},{},[449],{"type":33,"value":450},"Notes",{"type":27,"tag":452,"props":453,"children":454},"tbody",{},[455,474,492,510,528,546,564,582],{"type":27,"tag":432,"props":456,"children":457},{},[458,464,469],{"type":27,"tag":459,"props":460,"children":461},"td",{},[462],{"type":33,"value":463},"SwiftUI views",{"type":27,"tag":459,"props":465,"children":466},{},[467],{"type":33,"value":468},"4,200",{"type":27,"tag":459,"props":470,"children":471},{},[472],{"type":33,"value":473},"Smaller than I expected",{"type":27,"tag":432,"props":475,"children":476},{},[477,482,487],{"type":27,"tag":459,"props":478,"children":479},{},[480],{"type":33,"value":481},"Domain / state (Observable models)",{"type":27,"tag":459,"props":483,"children":484},{},[485],{"type":33,"value":486},"2,800",{"type":27,"tag":459,"props":488,"children":489},{},[490],{"type":33,"value":491},"Pure Swift, no UI",{"type":27,"tag":432,"props":493,"children":494},{},[495,500,505],{"type":27,"tag":459,"props":496,"children":497},{},[498],{"type":33,"value":499},"AI service layer (Gemini + on-device)",{"type":27,"tag":459,"props":501,"children":502},{},[503],{"type":33,"value":504},"1,400",{"type":27,"tag":459,"props":506,"children":507},{},[508],{"type":33,"value":509},"Heavy retry / fallback logic",{"type":27,"tag":432,"props":511,"children":512},{},[513,518,523],{"type":27,"tag":459,"props":514,"children":515},{},[516],{"type":33,"value":517},"SwiftData persistence",{"type":27,"tag":459,"props":519,"children":520},{},[521],{"type":33,"value":522},"900",{"type":27,"tag":459,"props":524,"children":525},{},[526],{"type":33,"value":527},"Migrated from Isar in month 3",{"type":27,"tag":432,"props":529,"children":530},{},[531,536,541],{"type":27,"tag":459,"props":532,"children":533},{},[534],{"type":33,"value":535},"RevenueCat purchase service",{"type":27,"tag":459,"props":537,"children":538},{},[539],{"type":33,"value":540},"600",{"type":27,"tag":459,"props":542,"children":543},{},[544],{"type":33,"value":545},"Receipt validation eats lines",{"type":27,"tag":432,"props":547,"children":548},{},[549,554,559],{"type":27,"tag":459,"props":550,"children":551},{},[552],{"type":33,"value":553},"Content moderation + safety rails",{"type":27,"tag":459,"props":555,"children":556},{},[557],{"type":33,"value":558},"480",{"type":27,"tag":459,"props":560,"children":561},{},[562],{"type":33,"value":563},"Worth every line",{"type":27,"tag":432,"props":565,"children":566},{},[567,572,577],{"type":27,"tag":459,"props":568,"children":569},{},[570],{"type":33,"value":571},"Tests",{"type":27,"tag":459,"props":573,"children":574},{},[575],{"type":33,"value":576},"1,300",{"type":27,"tag":459,"props":578,"children":579},{},[580],{"type":33,"value":581},"Mostly snapshot + parser tests",{"type":27,"tag":432,"props":583,"children":584},{},[585,590,595],{"type":27,"tag":459,"props":586,"children":587},{},[588],{"type":33,"value":589},"Misc helpers",{"type":27,"tag":459,"props":591,"children":592},{},[593],{"type":33,"value":594},"720",{"type":27,"tag":459,"props":596,"children":597},{},[],{"type":27,"tag":36,"props":599,"children":600},{},[601,603,608],{"type":33,"value":602},"About 60% of the codebase is ",{"type":27,"tag":161,"props":604,"children":605},{},[606],{"type":33,"value":607},"not",{"type":33,"value":609}," AI-related. This is normal. AI is a slice. The product is everything else.",{"type":27,"tag":28,"props":611,"children":613},{"id":612},"money-breakdown-may-2026",[614],{"type":33,"value":615},"Money breakdown, May 2026",{"type":27,"tag":36,"props":617,"children":618},{},[619,621],{"type":33,"value":620},"Most-asked question by other indies: ",{"type":27,"tag":161,"props":622,"children":623},{},[624],{"type":33,"value":625},"what does it actually cost to run an AI app?",{"type":27,"tag":36,"props":627,"children":628},{},[629],{"type":33,"value":630},"Monthly operating cost at current scale (~800 monthly active users):",{"type":27,"tag":424,"props":632,"children":633},{},[634,650],{"type":27,"tag":428,"props":635,"children":636},{},[637],{"type":27,"tag":432,"props":638,"children":639},{},[640,645],{"type":27,"tag":436,"props":641,"children":642},{},[643],{"type":33,"value":644},"Service",{"type":27,"tag":436,"props":646,"children":647},{},[648],{"type":33,"value":649},"Monthly cost",{"type":27,"tag":452,"props":651,"children":652},{},[653,666,679,692,705,718,731],{"type":27,"tag":432,"props":654,"children":655},{},[656,661],{"type":27,"tag":459,"props":657,"children":658},{},[659],{"type":33,"value":660},"Gemini API (paid tier)",{"type":27,"tag":459,"props":662,"children":663},{},[664],{"type":33,"value":665},"$32",{"type":27,"tag":432,"props":667,"children":668},{},[669,674],{"type":27,"tag":459,"props":670,"children":671},{},[672],{"type":33,"value":673},"RevenueCat",{"type":27,"tag":459,"props":675,"children":676},{},[677],{"type":33,"value":678},"$0 (under MTR limit)",{"type":27,"tag":432,"props":680,"children":681},{},[682,687],{"type":27,"tag":459,"props":683,"children":684},{},[685],{"type":33,"value":686},"Sentry",{"type":27,"tag":459,"props":688,"children":689},{},[690],{"type":33,"value":691},"$0 (developer plan)",{"type":27,"tag":432,"props":693,"children":694},{},[695,700],{"type":27,"tag":459,"props":696,"children":697},{},[698],{"type":33,"value":699},"Apple Developer",{"type":27,"tag":459,"props":701,"children":702},{},[703],{"type":33,"value":704},"$8.25 (annualized)",{"type":27,"tag":432,"props":706,"children":707},{},[708,713],{"type":27,"tag":459,"props":709,"children":710},{},[711],{"type":33,"value":712},"Replicate (AI images)",{"type":27,"tag":459,"props":714,"children":715},{},[716],{"type":33,"value":717},"$14",{"type":27,"tag":432,"props":719,"children":720},{},[721,726],{"type":27,"tag":459,"props":722,"children":723},{},[724],{"type":33,"value":725},"Domain + hosting (this blog)",{"type":27,"tag":459,"props":727,"children":728},{},[729],{"type":33,"value":730},"$4",{"type":27,"tag":432,"props":732,"children":733},{},[734,742],{"type":27,"tag":459,"props":735,"children":736},{},[737],{"type":27,"tag":42,"props":738,"children":739},{},[740],{"type":33,"value":741},"Total",{"type":27,"tag":459,"props":743,"children":744},{},[745],{"type":27,"tag":42,"props":746,"children":747},{},[748],{"type":33,"value":749},"~$58/month",{"type":27,"tag":36,"props":751,"children":752},{},[753,755,760],{"type":33,"value":754},"Revenue at the same scale: about ",{"type":27,"tag":42,"props":756,"children":757},{},[758],{"type":33,"value":759},"$520/month",{"type":33,"value":761}," net.",{"type":27,"tag":36,"props":763,"children":764},{},[765],{"type":33,"value":766},"That's a ~9x margin. For an indie app with no marketing budget, no team, and no growth hacks beyond word of mouth. It works because:",{"type":27,"tag":314,"props":768,"children":769},{},[770,775,780],{"type":27,"tag":54,"props":771,"children":772},{},[773],{"type":33,"value":774},"The on-device foundation model handles the cheap calls.",{"type":27,"tag":54,"props":776,"children":777},{},[778],{"type":33,"value":779},"Caching kills 18% of cloud calls before they hit Gemini.",{"type":27,"tag":54,"props":781,"children":782},{},[783],{"type":33,"value":784},"The subscription is structured so power users subsidize light users.",{"type":27,"tag":36,"props":786,"children":787},{},[788],{"type":33,"value":789},"If I were doing every call on Gemini cloud, my margin would be closer to 2x. The 2026 stack is what makes indie AI apps actually viable.",{"type":27,"tag":28,"props":791,"children":793},{"id":792},"what-id-tell-anyone-starting-now",[794],{"type":33,"value":795},"What I'd tell anyone starting now",{"type":27,"tag":36,"props":797,"children":798},{},[799],{"type":33,"value":800},"Five things, in order of weight:",{"type":27,"tag":314,"props":802,"children":803},{},[804,814,824,834,844],{"type":27,"tag":54,"props":805,"children":806},{},[807,812],{"type":27,"tag":42,"props":808,"children":809},{},[810],{"type":33,"value":811},"Ship the ugly version.",{"type":33,"value":813}," You will polish the wrong things otherwise.",{"type":27,"tag":54,"props":815,"children":816},{},[817,822],{"type":27,"tag":42,"props":818,"children":819},{},[820],{"type":33,"value":821},"Anchor your pricing.",{"type":33,"value":823}," Subscription should be more expensive than your second-largest pack.",{"type":27,"tag":54,"props":825,"children":826},{},[827,832],{"type":27,"tag":42,"props":828,"children":829},{},[830],{"type":33,"value":831},"Write a content safety doc before submission.",{"type":33,"value":833}," Apple will eventually ask. Have it ready.",{"type":27,"tag":54,"props":835,"children":836},{},[837,842],{"type":27,"tag":42,"props":838,"children":839},{},[840],{"type":33,"value":841},"Use on-device for cheap calls.",{"type":33,"value":843}," Your wallet and your users' latency thank you.",{"type":27,"tag":54,"props":845,"children":846},{},[847,852],{"type":27,"tag":42,"props":848,"children":849},{},[850],{"type":33,"value":851},"Talk to ten users in TestFlight before launch.",{"type":33,"value":853}," Not your friends. Not Twitter followers. Real users.",{"type":27,"tag":28,"props":855,"children":857},{"id":856},"where-elsewhere-goes-next",[858],{"type":33,"value":859},"Where Elsewhere goes next",{"type":27,"tag":36,"props":861,"children":862},{},[863],{"type":33,"value":864},"Roadmap, in priority order, for the next six months:",{"type":27,"tag":50,"props":866,"children":867},{},[868,873,878,883,888],{"type":27,"tag":54,"props":869,"children":870},{},[871],{"type":33,"value":872},"Sign in with Apple + iCloud sync (most-requested feature)",{"type":27,"tag":54,"props":874,"children":875},{},[876],{"type":33,"value":877},"iPad layout (the third-most-requested, behind sync)",{"type":27,"tag":54,"props":879,"children":880},{},[881],{"type":33,"value":882},"Apple Intelligence Writing Tools integration in the journal feature",{"type":27,"tag":54,"props":884,"children":885},{},[886],{"type":33,"value":887},"A Steam build for the desktop crowd (separate codebase pain incoming)",{"type":27,"tag":54,"props":889,"children":890},{},[891],{"type":33,"value":892},"Localization to JA, DE, ES (top 3 non-EN markets by revenue per install)",{"type":27,"tag":36,"props":894,"children":895},{},[896],{"type":33,"value":897},"Nothing flashy. Everything earned.",{"type":27,"tag":28,"props":899,"children":901},{"id":900},"the-moment-that-made-it-worth-it",[902],{"type":33,"value":903},"The moment that made it worth it",{"type":27,"tag":36,"props":905,"children":906},{},[907],{"type":33,"value":908},"About two months after launch I got an email from a user. She'd hit a universe in Elsewhere where her alter-ego was named \"the one who said yes.\" She wrote that she'd been holding back from saying yes to something real in her actual life and seeing it written by an AI broke something open.",{"type":27,"tag":36,"props":910,"children":911},{},[912],{"type":33,"value":913},"She thanked me. For a little app I built between bedtimes and morning meetings.",{"type":27,"tag":36,"props":915,"children":916},{},[917],{"type":33,"value":918},"That's the thing nobody tells you about indie. The numbers matter. The architecture matters. The App Store matters. But the moment a stranger emails you because your code touched their actual life — that's the thing that gets you to the next build.",{"type":27,"tag":36,"props":920,"children":921},{},[922],{"type":33,"value":923},"I'm still here. Still building. Still saying yes.",{"type":27,"tag":36,"props":925,"children":926},{},[927],{"type":33,"value":928},"— Met",{"title":8,"searchDepth":930,"depth":930,"links":931},2,[932,934,935,936,937,938,939,940,941,942,943],{"id":30,"depth":933,"text":34},3,{"id":146,"depth":933,"text":149},{"id":173,"depth":933,"text":176},{"id":246,"depth":933,"text":249},{"id":304,"depth":933,"text":307},{"id":361,"depth":933,"text":364},{"id":414,"depth":933,"text":417},{"id":612,"depth":933,"text":615},{"id":792,"depth":933,"text":795},{"id":856,"depth":933,"text":859},{"id":900,"depth":933,"text":903},"markdown","content:blogs:10. shipping-elsewhere-indie-ai-may-2026.md","content","blogs/10. shipping-elsewhere-indie-ai-may-2026.md","blogs/10. shipping-elsewhere-indie-ai-may-2026","md",{"loc":5},1780164681787]