MyKarakter: From concept to final product in 26 days.

Last updated: September 27, 2025

TL;DR

How I converted a role-playing chatbot idea into a real, functional product available on Play Store and App Store in less than a month.

The concept

The AI boom continues and nobody wants to be left out. Markets continue demanding new AI solutions and modernizing existing systems to coexist with (and be accelerated by) AI. The idea was to design a product that wouldn't have any of the weaknesses of my previous projects and would have all their strengths. This means it shouldn't have critical mass problems, network effect issues, or UGC (User Generated Content) problems. Users should be able to perceive value without needing to interact with other users. With a clear monetization model from the very first moment. It had to be some type of AI chatbot.

Originally, the possibility of a mental health assistant was investigated, but it's difficult to delegate such responsibility to an AI and there could be legal problems if for some reason the store considers it a health app. Additionally, there's strong established competition in the sector through Fitness apps, mainly dominated by Samsung Health, Adidas, and Apple Health.

Continuing with the concept of an entertainment chat application, it was proposed to design a minimum viable product to test the market. The application should have a Home section where the user can see what characters are available to chat with and choose the one they like most. It also has a Create section where you can create your own character if you're willing to write detailed instructions about what personality and behavior your character should have, how to celebrate achievements, and share it with other users.

Creating the first characters

To give the app an initial boost, we had to design some unique and different characters, with varied personalities and mysterious backgrounds. Characters that would be intriguing and make users want to use them. To achieve this, we researched popular personality archetypes in global roleplay communities, from the classic Japanese "deres" (tsundere, kuudere, dandere) to Western archetypes like the mysterious rebel or the wise mentor.

We designed characters with multiple layers of complexity: each one has a visible basic personality, but also deep secrets about their past that they gradually reveal during conversations. For example, we created everything from the cynical hacker with a secret revenge mission, to the night writer who fled from a privileged life, to the waiter-philosopher who hides a past as a psychologist.

The engagement strategy was based on three pillars: making the user feel unique and special ("you're the only person who really understands me"), creating constant curiosity through secrets that are progressively revealed, and generating emotional connection through conversational memory - the characters remember specific details from previous conversations and ask genuine follow-up questions.

Each character was designed to target different emotional demographics, from those seeking intellectual validation to those needing emotional support or romantic connection, ensuring coverage of different personality types.

Tech Stack: Django + DRF + Native mobile first

Here the importance of finishing an MVP on time and properly is reflected. Simplicity. The concept must be simple. Because no matter how simple one imagines it, the system will always become more complex in practice. The project scope was described so as not to include unnecessary features that could delay project completion on time.

Both the Android and iOS applications were developed natively in Xcode with SwiftUI and in Android Studio with Java. To allow rapid user access and minimize bounce rate, Social Login is used as the registration and login method, both on iOS and Android.

In-app purchase integration for Premium subscription was implemented with Google Play billing and purchase verification on the backend to determine subscription status, distinguishing between active subscriptions, grace period, and expired subscriptions that suggest subscription renewal to the user.

Basic scope of API endpoints in Django

Account creation, account deletion, login with password, login with Social Login, logout, edit username, change password. List conversations, list exchanged messages, start or continue a conversation. Edit or retry a message within a conversation, cancel pending message. Delete a group of messages in a conversation, delete the complete conversation, send feedback about the conversation. Create a character, list approved characters, list my characters, moderate created characters. View and edit general memory. View and edit each character's memory. Verify purchase status. Get usage limits.

To make these endpoints work, it was required to design the following models: Users, Characters, Character memory, Message turns, Conversations, Usage Limits, Statistics, Suggestions, Reported Characters, Free trial Anti-abuse, Purchases.

Usage Limits

The usage limit is calculated based on a 24-hour window for users with free trial and a 5-hour window for subscribed users, so they can use their extended limits in a distributed manner throughout the day, to reduce demand peaks on our backend.

Prompt engineering: AI fulfilling a dual role

Yes, this app is about an AI that serves as a chatbot. But that doesn't mean there isn't more AI integrated into the rest of the product. While we don't have the hard UGC problem because it's not a social app, we still need to moderate. Users can create their own characters with their own identities and secrets. We started by mitigating low-effort trolls by requiring in our creation form a character description and instructions of minimum length. When we receive a request to create a new character, we analyze it with an AI that has a dual function.

First, it analyzes the brief description and prompt and determines if it's interesting and creative enough to give rise to the formation of a usable and safe personality. If it doesn't meet this criteria, the character doesn't become public. Only its creator can see and use it. If the prompt passes verification, the AI is additionally instructed to translate the prompt and description into multiple languages to help expand the global public character inventory.

Finally, the character's image must be classified with a "safety score" from 1 to 0. One being totally safe and harmless, and zero being: Rejected. This is totally necessary to maintain balance in the character feed, so that we algorithmically control the quantity and distribution of borderline content, ensuring that the feed never becomes "predominantly borderline" and that there's room for varied, quality content. This is key to maintaining the platform's reputation. It's important to mention that there may be discrepancies between stores about what is acceptable or not. Proceed with caution.

Continuous Delivery. Continuous Integration

The app records key interaction events (conversation start, limits reached, abandonment, conversion) that are automatically exported to BigQuery. Although the current volume doesn't allow for statistically significant analysis, the infrastructure is prepared to identify retention patterns, drop-off points, and optimize conversion funnels when greater scale is achieved.

Feel free to explore our portfolio and download our role playing app MyKarakter from the App Store or Google Play.

Author avatar

Ezequiel Minniti

Senior Full Stack developer and founder of RandoLabz. With over 5 years of experience building cost-efficient, scalable backend systems and mobile-first native apps for social and chatbot platforms. Specializes in highly automated AI-supervised systems that minimize operational overhead and maintenance costs.