Plan My Day - Private Offline AI Timetable Planner
This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend Plan My Day - A Private Offline AI Timetable Planner 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. The user enters fixed commitments such as classes, meals and gym sessions, along with the tasks they need to complete. A locally hosted language model turns this information into a structured, time-blocked schedule. The planner tries to respect fixed commitments and place demanding tasks within the user's preferred focus period whenever possible. When plans change, the user can describe the change in plain language, such as "move gym to the evening," and the timetable is regenerated. The main idea was to build something genuinely useful for a real person while keeping their daily routine private. Nothing leaves the device. The schedule and personal routine are processed locally using Gemma through Ollama. Demo I tested Plan My Day with my friend using their real schedule, including their fixed commitments, actual tasks and preferred focus period. I first generated a timetable from 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 the 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 Tech Stack - Model: Gemma 3, 4B parameters - Local model runtime: Ollama - Frontend: HTML, CSS and JavaScript - Architecture: Single HTML file with no framework and no backend - Hardware: Intel i5, 16 GB RAM and NVIDIA RTX 2050 with 4 GB VRAM How It Works - The page collects the user's wake and sleep times, preferred 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 ,title andtype . - The application 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 generates an updated schedule, which is validated and rendered again. Challenges and Lessons Learned 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. Initial model setup: The first run requires a one-time download of the Gemma model, which is around 3.3 GB. After the model is installed, the application can run without an internet connection. Structured output from a small model: A 4B model cannot always be expected to return perfectly structured data. I therefore instructed Gemma 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. Users can select from models available through Ollama and choose a smaller model if they have limited hardware, without changing the core idea of the application. 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 without 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. What I Learned Building Plan My Day taught me that using a local AI model is not only about connecting an application to an LLM. I had to think about browser security, local networking, structured model outputs, validation and how to make AI-generated results reliable enough for an actual user. The project also showed me how useful small local models can be when privacy and simplicity matter more than having access to a large cloud-based model. Prize Category - 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. Links GitHub: https://github.com/yaansa/planmyday Built for: A real friend and their daily routine Model: Gemma 3 (4B) running locally through Ollama Top comments (0)
Comments
No comments yet. Start the discussion.