Pangolingo
An open, extensible language-learning platform, community-built courses, AI-personalized paths, and native-quality audio.
Inspiration
We're language learners, and we kept running into the same wall. Mainstream apps are closed and one-size-fits-all. A tourist and a data scientist get the exact same lessons. You can't shape a course around your own goals, you can't change how the app teaches you, and a progress bar that says "40% complete" tells you nothing about which words you actually know.
Before writing any code, we spent time looking at what already exists: Duolingo, Memrise, Anki, and the newer wave of AI tutor apps. A pattern jumped out. The polished apps like Duolingo and Memrise have great content but are completely closed, with no room to extend or customize. Anki is open and powerful but dated and intimidating, really built for hardcore users. And a lot of the newer AI language apps are essentially a chatbot in a wrapper, with no real course structure, no progress model, and no community behind them.
That gap is what we went after. We wanted something as open and customizable as Anki, but modern and AI-personalized, and aimed at the large group of learners both ends of the market ignore: users who've outgrown beginner gamification but don't want to hand-build flashcard decks.
Who it's for
We deliberately built for learners rather than absolute beginners, and that choice shaped everything. Beginners are already well served by gamified apps. The person who's underserved is the one who knows the basics, has a specific reason to learn (work, travel, a field like data science), and wants control over what and how they study. That learner actually wants customization, which is exactly what the closed apps won't give them.
Languages no one else will build for
One of the things we're most excited about is the long tail. The popular languages are already well covered. What's missing is everything else: minority languages, regional dialects, and endangered languages that no commercial app considers worth the production cost. Because Pangolingo's courses are community-created and AI-assisted, a single motivated speaker can build and share a course for a language that would otherwise have nothing. For endangered languages especially, that's not just a learning tool it's a way to help keep a language alive.
What it does
Pangolingo ships with a library of courses created by the community, so there's something to learn from from the start. On top of that, users can generate their own course on demand with Google Gemini, tailored to their level and goals, which is far more personal than picking from a fixed catalog. More technical users can go further and write their own courses in a scripting language, and if you don't like how a built-in feature behaves, you can change it yourself, with fast compile-and-reload cycles. Every lexical item and sentence is voiced with ElevenLabs text-to-speech.
How we're different
Among the apps we looked at, none combined the three things we cared about. Duolingo and Memrise are structured and polished but closed and not extensible. Anki is open and built for serious learners but isn't AI-personalized and has no real course structure. The AI-chat apps are personalized but lack structure, community, and any way to build on them. Pangolingo is the only one bringing openness, AI personalization, and real course structure together in a single modern app built for the learner.
How we built it
The app is a single Expo and React Native codebase that runs on iOS, Android, and web, written in TypeScript with NativeWind, Expo Router, and React Native Reusables. It's local-first, using Expo SQLite on the device so the learning loop works fully offline, with React Query handling fetching and caching. Course generation runs on Google Gemini through the Vercel AI SDK, and audio is generated with ElevenLabs.
The most important part of the build is how we handle extensibility safely. We let users run course code written by other people, and the obvious danger there is running untrusted code on someone's phone. Our solution is that this code never executes natively. It runs inside an isolated web browser sandbox, so community-authored content stays contained and the device stays safe. That's how the MVP keeps "anyone can build a course" from turning into "anyone can run anything on your phone."
Challenges we faced
The hardest problem was safe extensibility. Letting the community write and share course code without letting that code touch the device took real thought, and running it in a browser sandbox instead of natively was the insight that made open extensibility safe enough to actually ship.
Choosing the right user was its own challenge. It was tempting to chase beginners, since that's the biggest and most obvious market. The harder and, we think, smarter call was to commit to learners, where the real unmet need and our actual advantage live.
We also had to be disciplined about scope in a single day. We cut aggressively to ship a coherent core: community courses, AI generation, audio, and the sandboxed extensibility model. We'd rather show a real, honest slice than fake a finished product. And because a lot of the tooling we used was built for web React, we had to rebuild parts of it with React Native components to get a true native experience.
What we learned
The opportunity is in the middle of the market. It's crowded at the beginner end and at the power-user end, but the modern, open, AI-personalized middle is wide open. We also learned that openness is a security problem before it's a feature problem: "anyone can build a course" only works if untrusted code can't harm a device, and sandboxing is what made the whole idea viable. Finally, cutting early and staying honest beat trying to ship something ambitious but broken.
What's next
This MVP was the foundation, and the direction we're most excited about is making the AI far deeper than what we have today. Right now course generation is a single call to a language model. The real vision is a proper generation system: a multi-stage pipeline that plans a course, generates each unit, and then validates what it produced — cross-checking generated vocabulary against dictionaries so nothing is invented, and constraining example sentences to words the learner has actually seen. The AI tutor follows the same arc. Instead of a generic chatbot, it becomes context-aware: it knows your current unit, your vocabulary, and the specific mistakes you've been making, and teaches against them.
We also want to push the extensibility further. Beyond authoring new courses, users will be able to reshape existing ones — changing how a course behaves, swapping in different exercise types, or adapting someone else's course to their own way of learning, all without touching the original. Openness shouldn't stop at creation; it should extend to remixing what's already there.
Another direction we care about is breaking the dependency on a fixed language pair. Most apps assume you learn through English a Spanish speaker studies French via English content. Pangolingo has no reason to bake in a single source language: a course should be learnable from whatever language the user already speaks, so a French speaker can learn Japanese, a Turkish speaker can learn Italian, and so on, without English sitting in the middle.
Around that core, we want to grow the open side of the platform: a real course marketplace, stronger authoring tools for community creators, and a deliberate push to support under-resourced and endangered languages that mainstream apps overlook. The through-line is the same one we started with an open platform where the community and increasingly capable AI build language courses together, including for the languages, and language pairs, that no one else will.
Built with
Expo, React Native, TypeScript, NativeWind, Expo Router, Expo SQLite, Google Gemini, ElevenLabs, Vercel AI SDK, Bun
Built With
- bun
- elevenlabs
- expo-router
- expo-sqlite
- expo.io
- javascript
- nativewind
- openai
- react-native
- react-query
- rxdb
- typescript
- vercel-ai-sdk
Log in or sign up for Devpost to join the conversation.