Inspiration

Children learn and engage differently, and we wanted to make storytelling more personal, meaningful, and accessible.

The idea behind Tamseel AI came from a simple question: what if a child could become the hero of their own story?

We wanted parents to be able to create stories tailored to their child's interests, age, language, and imagination instead of relying only on generic, pre-written stories.

Tamseel AI combines personalized storytelling with illustrations and narration, allowing parents to create experiences that are fun for children while keeping age appropriateness and child safety at the center.

Our vision is to turn ordinary screen time into a more creative and meaningful storytelling experience.

What it does

Tamseel AI is an AI-powered personalized children's story generator for Android and iOS.

Parents can create a story by choosing:

  • Genre
  • Theme
  • Character
  • Setting
  • Story language
  • Reader age

They can also create custom characters and provide custom themes and settings.

Tamseel then asynchronously generates a complete illustrated and narrated story using Google Gemini models. A typical story contains 8–10 scenes, with narration text, illustrations, and audio narration for each scene.

The app also provides a story discovery experience with pre-created, trending, featured, recent, and recommended stories.

Tamseel currently supports 16 story languages, making personalized storytelling accessible to families across different linguistic backgrounds.

Most importantly, the experience is designed around two users: parents, who want quality, safety, and value, and children, who want imagination, fun, and engaging stories.

How we built it

Tamseel AI is built with Kotlin Multiplatform (KMP) for Android and iOS, allowing us to share application logic while still respecting platform-specific requirements.

The mobile application uses Kotlin and Compose Multiplatform, while the backend is built with:

  • Firebase Cloud Functions
  • TypeScript
  • Firebase Firestore
  • Firebase Storage

Story generation is designed as an asynchronous workflow rather than a single synchronous request.

When a parent starts generating a story, the request becomes a generation job. Backend functions orchestrate multiple AI operations, store the generated metadata in Firestore, and store multimedia assets in Firebase Storage.

This architecture allows the mobile application to remain responsive while long-running AI generation takes place in the backend.

KMP was particularly valuable because Tamseel is fundamentally the same product on Android and iOS, but still needs platform-aware handling for authentication, media, networking, and other platform-specific capabilities.

Challenges we ran into

We didn't face any major blockers. The main challenges were maintaining consistent navigation and UI across Android and iOS, integrating some Firebase SDKs with KMP, and implementing Google and Apple authentication, which required platform-specific code.

We also faced some limitations with the maturity of multiplatform media-player libraries. We were able to work through these issues and contribute improvements back to the KMP ecosystem.

Built With

  • analytics
  • coil
  • compose
  • datastore
  • firebase
  • firestore
  • gemini
  • gitlive
  • kmp
  • koin
  • kotlin
  • ktor
  • media
  • navigation
  • revenuecat
  • serialization
Share this project:

Updates

Submission history