Inspiration
I came up with Pabo in 2023 and started building it, then stopped because I figured AI wrappers were dead. Today, AI applications are a booming market and I wanted to bring my vision of fun speaking practice to the market.
I lived in Korea for a few years and learned the language. When I was there my vocabulary was naturally stretched by conversations I had and daily situations I encountered. Back in the U.S. that has stalled and my speech becomes awkward with less practice. I wanted to naturally grow my vocabulary without having to sift through flashcards or find words that were actually useful in daily life. Real conversations naturally give you that.
In Korea, honorifics are also very important. Speaking at the correct level to different people can be unnatural and hard to know exactly how to act in different situations. That's what this app is perfect for - different characters allow you to roleplay real situations and the AI responds accordingly.
The name of the app is 바보 (Pabo), Korean for "dummy", because this is language speaking for dummies and for people who don't want to sound like a dummy.
What it does
In Pabo you pick a character and talk out loud in Korean, Japanese or Mandarin. There's a Grandma, your Boss, your girlfriend/boyfriend, a Tutor, a Gen-Z friend, a server and a few others. Each one expects the kind of speech their relationship calls for.
Every word you hear and say goes into a word bank for that language, with no setup. The characters bring back words you're still learning and slip in slightly harder ones, so you pick them up by using them. For words that won't stick, you can save them, break Korean words down into their hanja, and run flashcards. If you can't talk out loud, there's a quiet typing mode as well.
How we built it
The app is built in Flutter with a Supabase backend and ai conversation through OpenAI's latest full duplex conversation model which makes conversations feel natural.
Challenges we ran into
Echo on the phone speaker. - The model kept hearing its own voice and thinking I'd interrupted it. I ended up turning interruptions off entirely. I tried different models like Gemini which were cheaper but added complexity to the system and were unreliable. I kept wanting to pursue Gemini for the cost savings but ultimately went with OpenAI's model for the best experience and was able to tune the realtime system to be rock solid. Prompting was also a big issue creating a balance between staying in character and being able to correct users to their level. This took a lot of trial and error and evals are ongoing.
- Staying in character without turning into a tutor. Early Grandma became a grammar teacher by her second sentence. Getting characters to stay in character, talk at your level and correct you like a real person would took a lot of prompt work and a test suite to keep it that way.
Accomplishments that we're proud of
I'm proud of the characters and the design. The characters feel like people and are fun. The grandma will side eye you and the boss will check his watch.
What we learned
People don't want to practice a lesson, they want to practice a person. When a character has an attitude, you care more about getting it right. Getting the app to feel natural past the working prototype took a lot of tuning.
What's next for Pabo:
- Get the iOS version approved and out.
- Improving the experience for people brand new in a language
- adding support for more languages and non-English speakers learning English
Built With
- flutter
- openai
- revenuecat
- supabase
Log in or sign up for Devpost to join the conversation.