I graduated UCF with a Computer Engineering degree in May 2000. Then life happened. Twenty-five years later, I'm sitting in front of Xcode again โ except now there's an AI model on the other end of an API key, and the entire developer experience has been rewritten under me.
This is the story of how I rebuilt the muscle, picked a market, and shipped the RDR2 Companion to the App Store. It's also the playbook for anyone else returning to development in the AI era โ or starting from zero.
The opening
Red Dead Redemption 2 has sold over 60 million copies worldwide and remains one of the most beloved open-world games ever made. Players continue active 100% completion runs years after launch โ a community of speedrunners, completionists, lore hunters, and photographers who would all benefit from a deeper, AI-powered reference at their fingertips.
That's a serious, durable audience.
I'd been using Claude for months as a thinking partner โ long after the "is AI a fad?" debate had been settled in my mind. The question was no longer whether AI would change software, but whether I could build something real with it before everyone else figured it out.
Why RDR2 specifically
RDR2 was a forcing function for three reasons:
- Defensible demand. The game has a cult following that won't dissipate. Speedrunners, completionists, lore hunters, photographers โ they all need a companion.
- No first-party alternative. A native iOS app โ AI-powered, comprehensive, always-on โ is genuinely useful for a game with this much depth and longevity. RDR2 deserves the best possible reference companion.
- Small enough to finish. RDR2's content is bounded: 105 main missions, 175 collectibles, ~200 hunting targets, the Strangers, the gunslingers. I could capture it all in a database. That's not true for an MMO or a procedural game.
First architectural decisions
Three decisions made everything else easier:
1. Native SwiftUI, not cross-platform
I considered Flutter and React Native. I rejected both. The app needs to feel iOS โ gesture-perfect, system-integrated, fast. Cross-platform frameworks promise reuse but tax every interaction with a thin layer of "almost native." For a consumer iOS app fighting for retention, that tax is fatal.
2. Backend proxy from day one
Anthropic's API key cannot live in your app binary. iOS app binaries are extractable. Anyone with five minutes and a tool called class-dump can find your key. So the Claude API call goes through a Railway-hosted proxy. The app talks to my-backend.railway.app/chat; the backend talks to api.anthropic.com. I wrote the full architecture in a separate post on this exact pattern.
3. Aether AI as a platform, not a feature
I wrote the AI layer as a generic GameType enum from the very first commit. That way, when GTA V comes next, when GTA VI launches, when Forza Horizon 6 ships โ the engine is reusable. RDR2 was the first installation of a platform, not a one-off product. This single decision has saved me probably six months of future work.
The Railway backend
Railway is what AWS Lambda should have been: I push code from my Mac, Railway builds it, Railway deploys it, Railway gives me a URL. No IAM, no CloudFormation, no console-clicking-marathon. The backend is ~250 lines of Node.js:
// 1. Receive request from iOS app
// 2. Validate it (rate limit by device ID)
// 3. Forward to Anthropic with the system prompt
// 4. Stream the response back
That's it. Cost so far: about $7/month for the Railway hobby plan, which has been more than enough headroom for our current traffic. I covered the Railway vs AWS tradeoffs in detail elsewhere.
Native SwiftUI, not React Native
SwiftUI in 2026 is not the SwiftUI of 2020. It's mature. NavigationStack, @Observable, async/await everywhere, structured concurrency. The mental model is closer to React than UIKit โ but with native performance and zero bridge overhead.
The RDR2 app uses:
SFSpeechRecognizerfor voice input (on-device, free, accurate)StoreKit 2for the in-app purchaseUserDefaultsfor the AI's persistent memory (yes, really โ JSON-encoded summaries, capped at ~4KB)URLSessionwith async streaming for the Claude API responses
No external dependencies except Anthropic SDK. The whole project compiles in under 8 seconds on an M3 MacBook Air.
Wiring up Claude
The system prompt is where the product lives. RDR2 Companion's Aether persona is built from:
- A detailed identity ("You are Aether โ an expert on Red Dead Redemption 2โฆ")
- Game knowledge constraints ("You know everything about the base game and Online; do not invent content that doesn't exist")
- Voice/tone instructions ("Be helpful, period-appropriate, occasionally referential to the Old West")
- The user's persistent memory summary, injected each session
- Multi-turn history for the current chat
I iterated on this prompt for weeks. Tiny phrasing changes produced massive behavior changes. The single biggest win: telling Claude to ask clarifying questions when the user's request is ambiguous instead of guessing. That doubled perceived intelligence overnight.
Persistent AI memory
One of the things that makes Aether feel alive is that it remembers. Most chatbots don't. Each session, before sending the user's message, the app reads a stored "memory summary" from UserDefaults and prepends it to the system prompt. After each session, the app asks Claude to update that summary with anything important learned.
The memory lives only on the user's device. Nothing leaves their phone except the messages themselves. This was both a privacy choice and a cost choice โ no database, no per-user storage costs.
StoreKit 2 and the pricing pivot
RDR2 Companion launched at $0.99 โ one-time, no subscription. The reasoning at launch:
- Lowest possible friction on the App Store. Tap, Touch ID, done.
- No "is this worth $5/month?" decision. It's a cup of coffee, less than half.
- Volume play. Tens of millions of RDR2 owners. Small conversion percentages still produce meaningful numbers.
By v1.2.0, we pivoted to a freemium model: free download, 4 free AI questions to try, then $2.99 one-time to unlock unlimited AI chat. The reasoning for the pivot:
- Lower the bar for trial. "Free" beats "$0.99" on App Store browse behavior โ users tap it without thinking.
- Let the product sell itself. 4 AI questions is enough for a player to feel the value firsthand. The unlock decision becomes a no-brainer.
- Higher LTV per converting user. $2.99 from a converted user beats $0.99 from a less-convinced one, and the funnel actually qualifies better.
The GTA V Companion launches with the same freemium model from day one โ same Aether engine, same $2.99 unlock, free trial questions built in.
App Store submission
Apple reviewed the RDR2 Companion on the first try and approved it. That sentence sounds boring; it is not. The first-try approval rate for AI apps is wildly inconsistent. I covered the full review playbook in a dedicated submission guide, but the highlights:
- Trademark disclaimer. Apple checks for Rockstar/Take-Two trademark misuse. The disclaimer on every page of the app and website covers this.
- Privacy nutrition label. "Collected data" is real legal exposure. The RDR2 app collects nothing, which made this easy.
- AI content rating. Apple expects you to declare AI-generated content. We did.
- Demo video. A 30-second screen recording showing core functionality dramatically reduces review questions.
Lessons I'd tell past-me
Start with the smallest market you can defend
RDR2 owners are not "gamers" โ they're a specific subgroup with specific needs. Trying to serve "anyone who games" would have produced a bland app. Specificity is a moat.
The hard part is finishing
AI tools make the first 80% of an app shockingly fast. The last 20% โ TestFlight, IAP edge cases, App Store metadata, support pages, marketing copy โ is where 90% of indie attempts die. Budget for the finish, not the start.
Voice is underrated
Adding SFSpeechRecognizer was an afternoon. The retention impact was huge. People who would never type a long question will happily speak one while their hands are on a controller.
Document everything as you go
This post exists because I kept a journal during the build. Every error, every fix, every architectural decision. Future-you will thank past-you. Or โ and this is the AI-era version โ future-Claude can read your CLAUDE.md and recover context for you instantly.
What's next
The Aether AI platform is the long game. Same engine, new game world:
- GTA V Companion โ Coming Soon
- GTA VI Companion โ Day-one launch in 2026
- Forza Horizon 6 โ In development
- 007: First Light โ In development
The consulting practice grows alongside it. Every app I ship is proof of work that I know what I'm talking about when a client asks how to integrate Claude into their iOS product. Book a call if that's you.
Fall 2026 is the goal: a profitable, flourishing app studio + consultancy. We're getting there one build at a time.
- Anthropic โ Claude API documentation
- Apple โ StoreKit 2 reference
- Apple โ App Store Review Guidelines
- Railway โ Deployment documentation
- Rockstar Newswire โ Official Rockstar announcements