CodeixLab designed and engineered a private, invitation-only learning platform for a private school in Italy. The first programme is an adaptive Italian course that takes invited learners from beginner level through A1 and A2. It is deliberately not a generic LMS: the platform keeps measuring what each learner has actually learned, compares it with the time they have, and adapts the plan.
Project overview
- Industry: Education and language learning
- Services: SaaS product development, mobile app development, UI/UX product design, AI automation and integrations
- Platforms: Learner app on web and mobile (Flutter), staff and admin web console
- Tech stack: Ruby on Rails 8.1, PostgreSQL, Solid Queue, Hotwire (Turbo), Tailwind, Flutter, Riverpod, OpenRouter (Claude, Gemini TTS, speech transcription, image and video models), Kamal, Docker, Sentry
The challenge
The school’s learners speak English, Hindi, Urdu, Arabic and Bengali, and some cannot read any language fluently, including their own. They need to learn Italian on a phone or a browser, within a weekly study budget they choose themselves. The goal is measurable proficiency, not ticking off lessons.
The teacher already had a curriculum: a course deck in Italian, English and Urdu. The platform had to teach exactly that content, in that order, without an AI model inventing phrases. At the same time, pass marks, chapter unlocks and study time had to be decided by rules the school controls, and AI spending had to stay inside a fixed monthly allowance.
Our approach
The teacher’s deck as the curriculum spine
The deck was transcribed once with a vision model into a reviewed curriculum file. Lessons, concepts, teaching cards, practice, checks and exams are built from those slides. Rails validates every generated item against the lesson’s source: a card’s Italian must come from the slides or from words already taught, and invalid items are dropped rather than shown.
AI that is useful but bounded
AI generates teaching content, translations, illustrations and voice. It never decides pass or fail, unlocks, workload or permissions. Those are deterministic Rails commands, and every AI call has a schema check and a fallback, so the course keeps working when a provider does not.
Learning by hearing and watching
For learners who struggle to read, each phrase is said aloud by a server-generated Italian voice, created once and shared by every learner. Word cards carry a consistent illustrated scene, and phrase cards are presented by a talking presenter clip.
One learner client everywhere
A single Flutter codebase serves the learner on the web and on mobile, including right-to-left layouts for Urdu and Arabic. It talks only to a versioned JSON API, and holds no business rules of its own.
Key features
- Invitation-only access, with no public sign-up
- Interface and explanations in five languages, with Italian as the target
- Teach-first onboarding, plus an optional placement that can move a learner ahead
- Weekly plans that never exceed the learner’s chosen study time
- Chapter finals of 30 questions across reading, writing and speaking, graded on the server against a configurable pass mark
- Spoken answers transcribed and shown to the learner before submission
- Spaced review of weak concepts and targeted revision after a failed attempt
- Streaks and study-day goals with no points, lives or leaderboards
- A teacher workspace showing who needs attention, weak concepts, failed assessments and weekly study compliance
- Role-based admin for administrators and staff, enforced on every request
Engineering decisions that mattered
- Rules on the server, not in the app: hiding a button is not authorization; policies run on every action.
- Never fail a learner on a technical fault: a missing question pool, a speech outage or an unprocessed recording produces a clear “unavailable” state, never a failed attempt.
- Cost as a product rule: AI spend is reserved before each call against a shared monthly allowance, with a protected share for speaking.
What this means for your project
If you run a school, training programme or any course that needs adaptive learning with real accountability, the same patterns apply: your curriculum stays the source of truth, AI does the heavy lifting inside clear limits, and every result can be explained. Explore our full-stack development, SaaS development, mobile app development, UI/UX design, AI automation and Results as a Service offerings, or book a free consultation to talk through your idea.
Outcome
An adaptive, curriculum-faithful language course with server-side grading, spoken finals, multilingual and right-to-left support, and AI spending kept inside a fixed monthly allowance.
