LearnPath · Gemma 4 E4B (Q4_K_M GGUF)

Gemma 4 E4B-it fine-tuned for LearnPath (مسار), a study-plan generator that runs entirely on your own machine: give it a topic, hours per day and a number of days, and it builds a roadmap, a daily to-do list and free resources for every task.

نموذج مسار: يحوّل الموضوع والوقت المتاح إلى خطة تعلّم يومية بمصادر مجانية، ويعمل محلياً بالكامل.

Masar modeli: konuyu ve ayırabildiğin zamanı ücretsiz kaynaklarla günlük bir öğrenme planına dönüştürür; tamamen yerel çalışır.

The model does the three language steps of that pipeline and answers with JSON only, in English, Arabic or Turkish (the learner's language is passed as en, ar or tr). Scheduling, web search and link checks are ordinary code in the app.

Task Gets Returns
intake topic, level, hours per day, days, goal topic, level, total_hours, realistic, warnings (in the learner's language)
curriculum topic, level, learning-hour budget skills: ordered id, name, hours, depends_on, search_query
rank a skill and numbered search results indexes of the best results (never writes links itself)

Run with Ollama

hf download aab20abdullah/learnpath-gemma4-e4b-gguf --local-dir models/
ollama create learnpath -f models/Modelfile
ollama run learnpath

Modelfile holds the Gemma 4 chat template (thinking off, temperature 0.3, 8k context). The Q4_K_M file is 5.0 GB and runs on CPU or GPU. For dependable JSON, pass the answer's JSON schema as Ollama's format, as the app does.

Prompt format

The model was trained on these exact prompts; other wording works less reliably. The system prompt is fixed per task and the user message is filled in:

intake

[system]
You are a learning planner. Assess whether the learner's time budget is realistic for the topic and level. Reply with JSON only.

[user]
Topic: Python programming
Level: beginner
Hours per day: 2
Days: 30
Goal: general mastery
total_hours must equal 60. Add warnings (in the learner's language: en) if the budget is too small or too large.

curriculum

[system]
You are a curriculum designer. Break the topic into ordered skills. Each skill has a short snake_case id, a name, estimated hours, depends_on (ids of earlier skills only) and a search_query for finding free tutorials. Never output URLs. Reply with JSON only, exactly in this shape: {"skills": [{"id": str, "name": str, "hours": number, "depends_on": [str], "search_query": str}]}

[user]
Topic: Python programming
Level: beginner
Total learning hours available: 48.0. Skill hours must sum to about this.
Skill names in language: en. search_query in English.

rank

[system]
Pick the best free learning resources for a skill from the numbered candidates. Only choose indexes from the list; never invent links. Reply with JSON only.

[user]
Skill: Python loops
Pick up to 2:
0. [video/youtube] Python loops - full tutorial for beginners
1. [article/brave] Best pizza recipes 2026
2. [docs/brave] The for statement - Python documentation

Evaluation

195 held-out examples: 75 topics never seen in training (25 each in English, Arabic and Turkish) for intake and curriculum, plus 45 rank lists that hide 2 good resources among 4 distractors. Greedy decoding, no schema constraint, the same automatic checks for both models. An example passes only if every check holds: valid JSON and schema, total hours, language of names and warnings, dependency order, no URLs, skill count, and picking only good resources. Measured on the 4-bit LoRA model before the GGUF export.

Task Examples JSON valid: base → tuned Pass: base → tuned
intake 75 100% → 100% 0% → 100%
curriculum 75 100% → 100% 87% → 95%
rank 45 100% → 100% 0% → 100%
all 195 33% → 98.0%

The base model's 0% on intake and rank comes mostly from wrong JSON key names. Passing the schema as Ollama's format fixes the keys, so in the app the gain is mainly in the content checks.

Training

  • QLoRA (4-bit base) with Unsloth on one Kaggle T4: LoRA r=16, alpha=32, language layers only, loss on the answers only.
  • Data: 5,701 synthetic examples (curriculum 2,700, rank 1,800, intake 1,201; English 1,911, Turkish 1,901, Arabic 1,889) written by Gemma 4 26B-A4B running locally with llama.cpp, kept only when they pass the same automatic checks. The eval topics are left out.
  • 708 steps in 169 min, final train loss 0.198.

Limitations

  • Made for these three prompts; it is not a general chat model.
  • Skill hours can drift from the budget; the app rescales them to fit.
  • It can only rank the search results it is given.
Downloads last month
137
GGUF
Model size
8B params
Architecture
gemma4
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for aab20abdullah/learnpath-gemma4-e4b-gguf

Finetuned
(453)
this model