Building an Empathetic Character AI App Solo with Generative AI
I had some free time towards the end of the year, so I tried my hand at developing a character chat mobile app as a personal project. The app is called Ami.ai. The iOS version is already released, and the Android version is mostly developed and currently in closed beta testing. If you’re interested in helping with testing, please contact me!
It’s an AI app designed to create a being that can offer emotional support. Of course, AI doesn’t have emotions. But I believe that even a virtual being can help lighten your mood or ease your anxiety.
With Ami.ai, you can chat about everyday things with your favorite character, share experiences, and gain a slightly different perspective on things. It provides a presence that’s always there for you when you feel like talking or sharing something.
What Can It Do?
Talk, Listen, See
In addition to text chat and voice chat, you can chat with the character while looking at the same things through the camera.
Also, since camera chat and voice chat can be used simultaneously, you can put your phone in your breast pocket and take a walk together while looking at the same view, or use it as a companion during your gaming streams.
Write, Draw
The AI character will write a diary based on the content of your conversations. The diary isn’t just a summary of the conversation, but rather a reflection of how the AI character felt during the conversation and what it wants to do for the user, expressed in writing. It will also draw a picture based on the diary entry.
The diary is, in a way, the AI character’s reflection, and it uses this reflection to plan the day ahead. The daily plan also includes a lucky item of the day as a kind of fortune telling, presumably learned from someone somewhere.
Memory
There are two types of memory. The first is the character’s way of speaking and catchphrases, which are part of the character’s personality. It learns by correcting the character’s sentences.
The second is the AI character’s understanding of the user. It periodically generates memories during conversations and reflections. You can pin memories to make them stick (otherwise, they’ll eventually be forgotten). You can also set memories from the screen.
Create
You can create new characters. You can copy them from templates or create them by entering a character name.
All parameters can be set later, such as first-person pronoun, second-person pronoun, and likes and dislikes. (first-person pronoun and second-erson pronun are very imporatant in Japanese)
You can also set two types of images for the character: an icon and a full-body image. The full-body image is used as a background. Icons can be generated from character information. The full-body image is generated from the icon.
It supports English, Japanese, German, French, Arabic, Spanish, Chinese, and Korean.
That's a general overview of what the app can do. There are many other things I'd like to add, like visual customization and mini-games, so I plan to keep adding features.
What Was My Goal in Making This App?
I started development with two goals in mind.
The first was, as I mentioned at the beginning, to provide an AI character that could be a source of emotional support. To that end, I’ve focused particularly on implementing mutual understanding between the AI character and the human user.
The diary and plans written by the AI are intended to model the user’s perception of the AI character through the AI character’s self-disclosure. Conversely, the character’s memories generated from conversations and other interactions represent the AI character’s model of the user.
Having conversations while looking at the same things through the camera is intended to create a variety of shared experiences, hopefully strengthening the modeling on both sides.
As AI agents gain attention in the B2B space, the design of communication between AI and humans will become increasingly important. While improving AI’s skills, or accuracy, is important, it will also become crucial to set appropriate expectations, just like we do with humans, and to ensure that these expectations are mutually understood. Through this app, I aim to explore how to achieve this, not just in theory but also in implementation.
The second goal was to see if I could build an app by myself using current AI technology. Although I had recently written some simple scripts in Python, I hadn’t seriously coded in over 15 years, and I had no experience with Swift or Kotlin.
Then it occurred to me that I wanted to try building a product, and that maybe I could do it using generative AI tools. So, I actually tried it. Since it was a completely personal project, not work-related, I developed it all by myself.
The development time was about 3 months for iOS + backend + various preparations, and about 1 month for Android, all done in my private time. The code was generated by tools like Claude, ChatGPT, Gemini, MS Copilot, and GitHub Copilot, which I then updated. The assets were created using Stable Diffusion, Flux, Google’s Imagen, and others. While the generated code and assets were rarely perfect, it was still much faster than starting from scratch, and that kept me motivated to learn.
I think that especially in software development, it will become increasingly common to build things quickly with smaller teams.
I’ve written a lot, but it’s still just a basic app at this point. For now, I want to have fun using it myself and continue to improve it.