This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend
What I Built
Plan My Day is a private, offline timetable planner that I built for a friend who has to fit a long to-do list around a fixed daily routine.
You enter your fixed commitments such as classes, meals and gym sessions, along with the tasks you need to finish. A locally hosted language model turns this information into a structured, time-blocked schedule.
It respects fixed commitments and places demanding work in the user's peak focus window whenever possible.
When plans change, you can describe the change in plain language, such as "move gym to the evening," and the timetable is revised.
Nothing leaves the device. The schedule and personal routine are processed locally using Gemma through Ollama.
Demo
I tested the tool with my friend using their real schedule: their fixed times, actual tasks and preferred focus time.
I generated a timetable using their inputs and then tested the natural-language editing feature by asking the planner to modify the schedule.
The screenshot below shows the Plan My Day interface and generated timetable.

Plan My Day — generating a personalized timetable using a locally running Gemma model.
Code
The complete source code is available on GitHub:
https://github.com/yaansa/planmyday
The repository contains the HTML interface, timetable generation logic, Ollama integration and instructions for running the project locally.
How I Built It
Stack
- Model: Gemma 3, 4B parameters, served locally through Ollama
- Interface: A single HTML file with no framework and no backend
- Language: HTML, CSS and JavaScript
- Hardware: Intel i5, 16 GB RAM and NVIDIA RTX 2050 with 4 GB VRAM
How it works
- The page collects wake and sleep times, the peak focus period, fixed commitments and tasks.
- These inputs are sent to the locally running Ollama endpoint.
- Gemma is instructed to return the timetable in a strict JSON format containing
start,end,titleandtype. - The page validates the model response before displaying it.
- Valid timetable blocks are sorted chronologically and rendered as a visual schedule.
- When the user wants to change the plan, the current timetable and the natural-language change request are sent back to the local model.
- Gemma returns an updated schedule, which is validated and rendered again.
Lessons from the build
Browser security: Opening the HTML file directly from disk caused the browser to block requests to Ollama. Serving the file through a local web server bound to 127.0.0.1 fixed the issue while keeping the application accessible only from my own machine.
Setup cost: The first run requires a one-time download of the Gemma model, which is around 3.3 GB. It took about an hour on a slow connection, but after installation the application can run without an internet connection.
Small-model output: A 4B model cannot always be assumed to return perfectly structured data. I therefore instructed the model to return strict JSON and added validation on the client side. If the response is malformed, the application shows an error instead of rendering a broken timetable.
Why Does Open Innovation Matter?
A daily schedule can contain personal information such as class timings, work routines, exercise schedules and other parts of someone's daily life.
Because Plan My Day uses an open-weight model that runs locally, my friend's routine does not need to be sent to a third-party AI service. The application does not require an account, API key or paid subscription.
Open models also provide flexibility. The model can be selected from the models installed in Ollama, so users can choose a smaller model if they have weaker hardware without changing the application's core logic.
This makes the project practical for students and other users who may not have access to paid AI APIs. Once the model is downloaded, the planner can work offline and does not incur per-request API costs.
For me, open innovation is valuable because it makes AI experimentation more accessible, private and adaptable. Instead of building around one hosted API, the application can work with locally available models and hardware.
Prize Categories
- Best Use of Gemma
Plan My Day uses Gemma 3 locally through Ollama to transform a user's routine and task list into a structured timetable and to revise that timetable based on natural-language change requests.
Top comments (0)