ai newsSa., 24. Okt.
EilmeldungKI-Investitionsboom: Kalender fuer KI-Gesetz veroeffentlicht

Lazy Syllabus Planner: a local AI that tells you the least you need to do this week

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady What I Built A little Python tool that reads your syllabi and tells you the least you have to do this week to not fall behind. You drop your syllabus PDFs (or Word files) in a folder and run python planner.p

dev.toSamstag 01:18 路 24.10.5 Min. Lesezeit
Bild: dev.to

Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady Submission 馃Ε

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady

A little Python tool that reads your syllabi and tells you the least you have to do this week to not fall behind.

You drop your syllabus PDFs (or Word files) in a folder and run python planner.py syllabi. A model on your own laptop finds every due date, then normal code works out the latest day you can start each thing. On my three sample syllabi it printed this:

Next 7 days: 3 thing(s) due, 0 to start. DUE Thu Oct 22 BIO 101: Introduction to Biology: Lab 4 report DUE Fri Oct 23 MATH 152 Calculus II: HW 7 DUE Mon Oct 26 ENG 210 - Writing About Film: Proposal for Essay 2 Enter fullscreen mode Exit fullscreen mode It also makes a plan.md week by week, a deadlines.ics you can import into Google Calendar or Outlook (with a reminder on the day you should start), and a tiny morning.txt. If a week has nothing due, the plan just says "Nothing. Genuinely nothing. Go lie in a hammock." That line is kind of the whole point.

I made this for Slow and Steady because the most boring part of a new term is copying every deadline out of every syllabus, and I wanted my laptop to do that while I do nothing. I also wanted to see how far a small open model on a normal 16 GB laptop could get with no cloud and no API key.

Here's the whole thing from a terminal, on the three sample syllabi in the repo:

python planner.py sample_syllabi --today 2026-10-20 python eval.py Enter fullscreen mode Exit fullscreen mode The first command reads the PDFs and prints the "next 7 days" summary shown above. While it runs, it also prints a line for every item it throws out, like skipped 'Response paper': couldn't find it in the syllabus (possible hallucination). The second command scores the result against the answer key and prints how many of the 20 real deadlines it found. On Windows you can skip the terminal: put PDFs in a folder called syllabi and double-click run.bat.

https://github.com/vectoredgex/lazy-syllabus-planner

Python, Ollama, Qwen 2.5 7B (open weights) by default, Gemma 3 4B as a one-flag alternative, and pypdf. No API keys, no accounts.

My first version was simple: ask the model for the deadlines and believe it. And on my three test syllabi it found all 20 real ones, which honestly surprised me. But it also invented stuff. It made up a "Response paper" that isn't anywhere in the syllabus, and it gave a weekly assignment one random date. A planner that's mostly right is worse than no planner, because you stop double-checking it.

So most of the code is about not trusting the model:

The planning side uses no AI. The model only rates effort from 1 to 5, and plain code turns that into start dates.

To see whether any of this actually helped, I wrote an answer key for three fake syllabi in different styles (a schedule table, paragraphs, and terse lines like HW 9: 11/6 ) plus a small script that scores a run. Good thing I did, because my first round of checks made it worse: 4 wrong items instead of 1. I'd have shipped that without the answer key.

Real numbers from my laptop (i7-1355U, 16 GB RAM, running on the CPU because my MX550 only has 2 GB):

Two runs in a row give the same output. 14 of the 20 calendar events get a real time. The other 6 just don't have a time written in the syllabus.

Yes, it's slow. A first read is about 2 to 3 minutes per syllabus. But results are cached per file, so after that it only re-reads syllabi that changed, and there's a schedule.py that can run it every morning so you never sit and wait. Seemed like the right amount of lazy for Sloth Day.

Since swapping models is one flag, I ran the same test with Google's Gemma 3 4B ( --model gemma3:4b ), also local through Ollama:

Gemma found every real deadline and wrote slightly tidier titles, but it added a second "Research poster draft" on Nov 26, which is actually the Thanksgiving no-class row of the table. My checks let that one through. It wasn't any faster either, since my CPU is the bottleneck, not the model size. So Qwen stays the default, and Gemma is there if you want to try it.

Syllabi have names, emails and office locations in them, and sometimes your own details too. With a local model, none of that leaves my laptop. It works offline, and it's free to run every day for the rest of the term.

Being able to control the setup (prompt, schema, temperature) is what made the checking idea possible, and the answer key only works because the output is repeatable. Swapping models is one flag: --model llama3.1:8b, or something smaller if you only have 8 GB.

I didn't compare it against a hosted model, so I can't say it's more accurate. What I can say is that a 7B model on a normal laptop, with a few cheap checks around it, was accurate enough on my tests, and it stayed private, offline and free.

The first run takes about 7 to 9 minutes for three syllabi, but that's the laptop's time, not mine. After that, a syllabus that hasn't changed is skipped, so a daily run only reads whatever is new. In exchange I get a plan, a calendar file with a reminder on each start-by day, and a two-line morning note, without typing 20 dates into a calendar.

I've only tested it on the three sample syllabi so far, so I can't give you a real-term number yet. Real syllabi are messier, which is why the README says to check the plan against the original.

Gemma: the planner runs Gemma 3 4B locally through Ollama ( --model gemma3:4b ), and I tested it against Qwen on the same answer key (table above).

Quelle: dev.to (dev.to). Original 枚ffnen