cd /news/ai-tools/i-built-my-friend-an-offline-ai-to-j… · home › topics › ai-tools › article
[ARTICLE · art-144803] src=dev.to ↗ pub= topic=ai-tools verified=true sentiment=↑ positive

I built my friend an offline AI to justify skipping 8 AM classes🎓

A developer built ShouldISkipClass.ai, an open-source, fully local web app that uses Google's Gemma 3 (4B) model via Ollama to advise students on whether they can safely skip a class based on attendance percentage, teacher strictness, proxy availability, and their day's timetable. The Flask backend sends a system prompt to the local model, which returns strict JSON with a verdict (SAFE TO SKIP, ATTEND, or RISKY SKIP), a risk score out of 10, and practical tips, keeping student data off corporate servers. The developer said the hardest part was forcing the LLM to emit consistent JSON without markdown code fences.

by read2 min views2 publishedOct 4, 2026

This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend 🎃

My friend is constantly doing mental gymnastics every morning: "If I skip OS today but my friend marks proxy, can I still afford to bunk Physics tomorrow without falling below 75%?"

The math is stressful, the stakes are high, and honestly, they just wanted to know if they could sleep in.

So for this weekend challenge, I built them ShouldISkipClass.ai—a 100% local, privacy-first AI web app that acts as their personal (and brutally honest) attendance advisor. It takes their schedule, calculates the risks, and tells them exactly what to do.

My friend was completely against typing their terrible grades and attendance records into ChatGPT. Student data is personal!

That’s why I chose to build this using Gemma 3 (4B) running locally via Ollama.

The stack is super lightweight:

Instead of writing complex if/else statements for every possible scenario, the frontend collects the context (current attendance, teacher strictness, proxy availability, and their full day's timetable) and passes it to Flask.

Flask then sends a highly specific system prompt to the local Gemma model. Gemma acts as the advisor, looking for massive schedule gaps or "sleep tax" morning classes, and returns a strict JSON response with a verdict (SAFE TO SKIP, ATTEND, or RISKY SKIP), a risk score out of 10, and witty practical tips.

The hardest part was actually getting the LLM to output consistent JSON without wrapping it in markdown code blocks! I had to tweak the system prompt heavily to force Gemma to behave exactly as a structured API response.

I also spent a lot of time polishing the frontend UI to ensure there was zero scrolling required. We wanted a dashboard that felt like a command center for bunking classes.

The project is fully open-source and I’m actively looking for contributors for Hacktoberfest!

🔗 GitHub Repository:

An open-source AI-powered college attendance advisor that runs 100% locally.

Built with Gemma (Google's open-weight model) via Ollama — your academic data never leaves your machine.

Tell it your attendance percentage, teacher strictness, upcoming tests, and more — and it uses Gemma (running locally via Ollama) to analyze whether you can safely skip your next class.

Features:

Closed API Our Approach
Your grades sent to corporate servers Everything stays on YOUR laptop
$20/month API costs 100% free to run
Can't customize

If you want to run it yourself, just install Python and Ollama, run ollama pull gemma3:4b, and ask the AI if you should skip your next lecture! Happy hacking! 💻🎓

── more in #ai-tools 4 stories · sorted by recency
── more on @gemma 3 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-built-my-friend-an…] indexed:0 read:2min 2026-10-04 · —