Show HN: I Built an AI Choose Your Own Adventure (iOS) Game
Backstory: I got laid off back in December while I was on parental leave from a job I really loved. I was shocked and really bummed for a few days. Then I reframed the situation to myself. I've always wanted to build a business for myself. I brainstormed ideas and built a bunch of prototypes. I used ChatGPT heavily to churn out a ton of boilerplate code when I couldn't be at my computer (usually when contact napping my newborn).

The Idea: This app (Parallel Pages) started as an idea to create stories with AI, then I had a mental leap to those Choose Your Own Adventure type books from the 90s (are they still a thing?). I did some research on the current market (there's a few competitors of similar-ish functionality). Reception of those users was that they were excited about the concept, but the apps were lacking. I was excited about the idea, wasn't overly complex (this was a constraint for me bc of limited focus time) and got to building.

Features:
- Create characters that will be used in the stories you create. Generate avatars for them
- Creating a story with your characters, location, image style, and story genre. Each page generates an accompanying image.
- Choosing a generated path to progress the story forward, or writing your own path.

Implementation:
- The interface is all SwiftUI (combination of using my friend's tool https://trace.zip to generate components, then building out the screens myself)
- The BE is Firebase. I built out a few cloud functions to do make calls to OpenAI for text and image generation. The functions are responsible for writing to Firestore and Firebase Storage. The client gets most of its data from the responses of these functions, but there's a few reads where the client queries Firestore directly (this is on my tech debt list to wrap this in a cloud function. i already ran into an issue where i shipped a bad query ).
- Originally, in my prototype, I had all the OpenAI logic and calls implemented on the client using the MacPaw OpenAI library. This was a terrible pattern for production (because the API key would be stored on device and vulnerable if a user decompiles the app).

Challenges:
- Image consistency: OpenAI doesn't provide a seed param for image generation. Without this, I have not been able to figure out any way to consistently generate a character's image to look the same
- Generating choices: This was a challenge of prompt engineering that took weeks to refine. At the end of each page, the app suggests a few possible choices you can make to move the story forward in a logical way. For the longest time, the choices the GPT would output would pretty consistently be along the lines of either: go forward and do the thing; take a minute to reflect on what happened.
- Getting GPT to return fully populated and valid JSON: sometimes it would forget a comma, sometimes it invents a key or removes a key, sometimes it would leave a value blank. I ended up using Function Calling tool and prompted the GPT to always call the function and to always populate every value. This was before they introduced json mode. This fixed most of the JSON issues.

Marketing and Business:
As an engineer trying to be an entrepreneur, I've been trying to put on the more uncomfortable hats. I created an S-Corp to release the app under (for personal legal protection, and specifically S-Corp instead of LLC bc I learned that its much more tax advantageous to do so). After releasing the app about two months ago, I'm trying to figure out how to get traction. I tried Reddit and Snapchat ads so far. Got a few hundred clicks but no downloads. I have the Apple App Store Search ads running and have a few downloads from that. But man, marketing is hard and expensive.

Feedback:
If you made it this far, I really appreciate you reading through this and would love to hear some feedback about either the app itself, or any marketing tips if that's within your domain of knowledge. Thank you!