01
Context and problem
German studies students at Ivorian universities work with dense course material written in German. General-purpose AI tools often answer off-syllabus, or at a language level far from their documents.
The starting question: how do you help a student understand their own course, rather than a topic in general?
02
My role
I carried the project on my own, from research to launch: product definition, design, full development, deployment and first beta testers.
- 01Product definition
- 02Design of 41 screens
- 03Full-stack development
- 04Deployment and beta
03
Approach
One principle guided every decision: start from the document without being confined to it. The AI stays faithful to the course and clearly flags when it goes beyond it.
Summaries are written in the document's language, with difficult words translated into French. Course themes become clickable to explore each concept.



04
Technical choices
Each choice answers a specific constraint.
- SvelteKit
- TypeScript
- Tailwind CSS
- Drizzle ORM
- Cloudflare
- Claude API
- Better Auth
01Clean Architecture
Domain, application, infrastructure and presentation kept apart, so the product can evolve without a rewrite.
02Cloudflare D1 and R2
Database and document storage close to the application, on the same platform.
03Passwordless sign-in
A one-time code sent by email: nothing for students to remember, no password to protect.
04Conversation history
Sent to the AI with every exchange, so exercises stay consistent from one question to the next.
05
Results
The product went from an idea to a beta used by real students.
- sign-ups in 24 hours on the waitlist
- 110
- screens designed before development
- 41
- sprints delivered
- 5
- beta testers
- 10 to 15
06
What I learned
AI needs context: without the conversation history, exercises ended up contradicting each other. Giving it memory of the exchange fixed the issue.
Choose tools for the runtime from day one: on Cloudflare, I replaced Node.js-oriented libraries with the native Web Crypto API and with unpdf for reading PDFs.




