Inspiration

SekaiPals is a language-learning app where users can learn a little every day alongside friendly mascot characters, while also enjoying character collection and practical phrases for travel.

We wanted to create a way for people to build a language-learning habit without pressure, whether they are preparing for a trip or simply curious about a new language. Rather than encouraging users to cram through gamified study sessions, we wanted the experience to feel more like discovering "one small, delightful thing a day."

Two mascots, Roundy and Squary, are at the heart of the experience. Instead of feeling like they are being taught by a system, users learn with the characters.

What it does

  • Word of the Day: Users can learn new words and phrases a little at a time each day, with audio and reading aids across a variety of categories and languages.
  • Character Collection: Users can collect a diverse range of mascot characters, including common, rare, language-themed, and action-themed characters. Every character is unlocked through learning and can never be purchased directly. Premium users get more opportunities to learn, but they never receive better odds of unlocking characters.
  • Friendship Level: As users learn more words, their Friendship Level with Roundy and Squary grows. It works together with streaks and weekly missions to make daily learning progress visible.
  • Travel Phrasebook: Users can browse useful phrases for travel and everyday situations in different languages. A flipped-display mode lets users show their phone to someone in front of them so that the phrase appears right-side up from the other person's perspective.
  • Review Quiz / Learning Stats: Premium users can access review quizzes and learning statistics to reflect on their progress and see how their learning is developing.
  • Integration with our sibling product: SekaiPals has a sibling product developed by the same team called Sekaiphone, a real-time speech translation app. We provide paths between the two products: SekaiPals helps users learn languages, while Sekaiphone helps them translate real conversations in real time. Together, they approach language barriers from two different but complementary directions.

How we built it

SekaiPals is built with Flutter, using Riverpod for state management, go_router for navigation, and Slang for internationalization. We also use Firebase Analytics to track screen views and engagement.

Local data is split between SharedPreferences for settings and Hive for learning records, character collections, and streak data. The app initially used SharedPreferences alone, but we later migrated to the current structure as the data model evolved.

RevenueCat powers our monetization end to end. Multiple subscription plans are managed through a single premium entitlement, with free trials available for each plan. The subscription system supports both the App Store and Google Play.

Free users can learn a set amount each day and, if they want to continue, unlock additional learning by choosing to watch a rewarded ad. Premium users can learn more and continue learning without ads.

The paywall (/premium) is accessible only through contextual entry points, such as the Premium option in Settings, a card shown when users reach their daily learning limit, and the locked learning statistics screen. We designed the core learning experience so that users are never interrupted by a forced paywall.

We also deliberately designed the character collection system to sit outside the monetization loop. Characters are earned based on learning activity, not spending. This keeps the sense of achievement from learning separate from the benefits of paying for Premium.

Challenges we ran into

  • Balancing monetization and retention: Early in development, we considered several different monetization models and rejected approaches that we felt could harm the daily learning habit. Rather than choosing what was easiest to implement, we prioritized the impact on the learning experience.
  • App Store distribution configuration: Even after the app passed App Store review, a distribution configuration issue prevented it from appearing on the store. Instead of relying only on what the App Store Connect interface showed us, we investigated the state through the App Store Connect API and identified the cause.

Accomplishments that we're proud of

  • We built a character collection system in which every character can be earned through learning, with no characters locked behind a purchase.
  • We designed our monetization model by first deciding what not to do — avoiding approaches that could damage the learning experience rather than choosing the easiest monetization options and fixing retention problems later.
  • We publicly launched SekaiPals on both the App Store and Google Play within the Shipaton submission period.

What we learned

Keeping the character collection and rarity system completely separate from the paywall may seem like a small design decision, but it has a significant impact on how the app feels.

When users do not unlock a rare character, they never have to wonder whether their odds were reduced because they are not paying users.

This principle of clearly separating reward systems from monetization is something we want to carry forward into any future reward systems we design.

What's next

  • We will continue improving the learning experience and features based on feedback and usage data from real users.
  • We will experiment with user acquisition channels and explore ways to introduce SekaiPals to more people.
  • We plan to deepen the integration with our sibling product, Sekaiphone, a real-time speech translation app, creating a more natural connection between learning a language and using it to communicate in real-world situations.

Built With

Share this project:

Updates

Submission history