Snap: A Simple Dutch Learning Tool Built Around AI


Snap is a small Dutch learning system designed to turn real content, such as YouTube videos, into useful language practice. It comes from my own experience learning Dutch — I kept struggling with consistency and real feedback, so I wanted to make my learning journey fun, fast and efficient.

The idea is simple: instead of chatting freely with an AI and hoping for consistent results, Snap gives the AI a clear job. It can generate quizzes, explain words, conjugate verbs, grade writing, and adapt exercises to your Dutch level.

Why was Snap created?

Large language models like ChatGPT, Claude, and Gemini are very good at language, but they are general-purpose tools.

If you ask the same question in different ways, you may get very different results. They also do not automatically know your preferred difficulty, learning target, grading rules, or how you want progress stored.

Snap puts structure around the AI.

Instead of repeatedly writing prompts like:

"I am a B1 Dutch learner. Please make five questions about this video and keep them at my level…"

you can simply run:

/quiz <youtube-url>

Snap already knows your level, difficulty, preferred quiz format, and learning goal.

What does Snap do?

Snap currently provides a few focused learning tools.

You can generate quizzes from videos, practise writing, submit your own Dutch sentences for feedback, look up words, get quick definitions, and see verb conjugations.

For example:

/usage bijzonder

gives you a detailed explanation of the word, while:

/define bijzonder

gives you a much shorter answer.

There is also a learner profile where you can set things such as:

Snap then uses those settings whenever it talks to the AI.

How does it work?

The system has several layers.

Snap is the actual Dutch learning application.

Pi is the agent framework that runs Snap's commands and connects them to an AI model.

Claude, ChatGPT, DeepSeek, or another LLM provides the language intelligence. The model generates questions, explanations, corrections, and feedback.

Gondolin provides an isolated environment for the agent.

QEMU provides the virtual-machine technology that makes that isolation possible.

A simplified view looks like this:

graph TD
    You --> Snap --> Pi --> AI[AI model]

And around the agent there is an isolated environment:

graph TD
    Computer[Your computer] --> QEMU[QEMU virtual machine] --> Gondolin --> PiSnap[Pi + Snap]

This matters because Pi is a coding agent. Coding agents can potentially read files, execute commands, and modify things on a computer. Running the agent in an isolated environment reduces how much of your real machine it can access.

What happens when you create a quiz?

Suppose you run:

/quiz https://youtube.com/...

Snap first fetches the video's transcript.

It then combines the transcript with information from your profile, such as your B1 level and preferred difficulty.

Snap builds a carefully structured instruction for the AI:

Learner: B1
Difficulty: medium
Questions: 5

Here is the video transcript...

Create five Dutch questions.
Return the result as JSON.

The AI generates the questions.

Snap then checks the response, displays the quiz, accepts your answers, grades them when necessary, and saves the results.

This is an important part of the design: the AI does the language reasoning, while normal code handles predictable things such as saving files, calculating scores, applying limits, and validating output.

Why not just use ChatGPT directly?

You certainly can.

Snap is not trying to replace ChatGPT or Claude. It uses models like these underneath.

The difference is structure.

A normal AI conversation looks roughly like:

graph LR
    You --> Prompt --> AI --> Response

Snap looks more like:

graph TD
    You --> Command --> Profile["Profile + rules + source material"] --> AI
    AI --> Structured["Structured response"] --> Validation --> Activity["Learning activity"] --> Saved["Saved result"]

That makes the experience more repeatable and easier to improve over time.

What does Snap not do?

Snap is not its own AI model.

It does not train a new language model or somehow contain all Dutch knowledge itself. It depends on an external LLM for most language reasoning.

It also does not automatically remember every conversation. AI calls are intentionally kept small and mostly independent.

Some features are still unfinished, including deeper statistics, word-history tracking, adaptive question counts, and better handling of very long source material.

And because the AI is still an AI, its answers are not guaranteed to be perfect. Snap can make the workflow more controlled, but it cannot completely remove model mistakes.

What should you expect?

Snap should be thought of as an experimental learning tool rather than a replacement for a teacher.

Its goal is to make AI-assisted Dutch practice more focused:

teachers define the learning standards, code handles the predictable mechanics, and the AI handles language reasoning.

That separation is also the basic systems-design idea behind Snap.

Instead of asking one large AI system to do everything, each part gets a clear responsibility:

Component Responsibility
Snap learning experience
Pi agent framework
LLM language reasoning
Gondolin isolation
QEMU virtualization
Code rules and mechanics
knowledge/ teaching standards

The result is a small example of how an AI chat model can be turned into a more deliberate product: not by making the model smarter, but by designing a useful system around it.