DEV Community

Cover image for dAIly: AI Planning Agent for My Friend.
Yajush Srivastava
Yajush Srivastava

Posted on

dAIly: AI Planning Agent for My Friend.

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

What I Built

My friend Kushagra is my college mate and a third-year computer science student. During a conversation, he told me about his goals: learn machine learning, participate in GSoC 2027, build projects, and, most importantly, improve his DSA skills and get better at competitive programming.

He knew what he wanted to do. He struggled to fit it all into his day.
On Mondays, his classes run from 1 PM to 5 PM. On Tuesdays, they run from 8 AM to 1:40 PM. Wednesdays stretch from 9 AM to 5 PM. Teachers give assignments as they finish units, mid-semester exams need preparation, and sometimes he travels out of town.

Each day leaves him with a different amount of time and energy.
When he comes home tired, he still has to choose: practise DSA, learn ML, work on a project, or finish an assignment? He spends time deciding, makes a timetable, and then struggles to follow it when things change.

I suggested building an AI agent that could help him plan around those changes. He liked the idea, and I built dAIly specifically for him.
dAIly is a local desktop planning agent. It helps him discuss goals, break them into smaller tasks, and plan his day using his class timetable, deadlines, free time, and energy.

Screenshot of the daily dashboard page, shows planning for today

If a new assignment comes up, he can add it to today’s plan without making it a permanent goal. If his priorities change, he can ask for a new plan. He reviews the suggested changes before applying them and records what he actually did after a focus session.
The aim is to help him choose useful work for the day he actually has.

Demo


The demo uses sample planning history, but the AI responses are generated locally through Gemma.

The five-minute narrated video shows the Today page, adding and discussing goals, planning the day, and tracking progress. It also includes Kushagra’s cameo, where he shares what he liked after trying the app.

Code

Explore the dAIly repository

I built dAIly solo, without using an existing project as a starting point. I used Codex as a coding assistant, wrote substantial parts myself, reviewed almost all the code, and fixed bugs myself.

The application code is MIT licensed. Gemma’s model weights have their own separate terms.

How I Built It

dAIly uses Gemma 3 4B, running locally through Ollama. I built the desktop app with Electron, React, and TypeScript. SQLite stores goals, subtasks, plans, conversations, and focus-session history.

I set up the first routine, sleep schedule, focus preferences, and goal priorities around Kushagra’s needs. Users can change these during onboarding and in the app’s settings.

Project Architechture

From a conversation to a plan

Before exploring the features, Kushagra asked what made dAIly an AI agent rather than a simple chatbot.

The answer is how the conversation leads to actions in the app.

Gemma receives the details it needs for planning: goals, unfinished tasks, deadlines, free time, and recent session outcomes. It reads the user’s update and returns a proposed plan in a structured format. The app checks the proposal and fits the work around classes, other commitments, and breaks. Kushagra reviews it before applying it.
A goal discussion can lead to saved subtasks. An approved plan becomes a schedule. After a focus session, Kushagra reports what happened, and later recommendations can use that information.

These steps are what make dAIly a planning agent. It saves information across conversations and connects its advice to changes the user can approve and carry out.
The user stays in control. The agent cannot silently apply every suggestion, and a timer ending never automatically marks a task as complete.

The hardest part: changing plans without losing things

The hardest part was getting the agent to understand when and why it should change a plan, goal, or subtask.

A new assignment should affect today’s schedule. A goal discussion might change the steps needed to reach that goal. Work interrupted yesterday could affect today’s recommendation, while a deadline tomorrow might change what comes first.

At the same time, the agent needs to keep what the user has already confirmed. Asking for a revised plan should not make an earlier assignment disappear or lose a preference Kushagra just shared.

Making this work meant improving the model instructions, response formats, checks, saved records, and scheduling code.

What testing taught me

One early response suggested 45 minutes of work when only 20 minutes were available. The response was valid JSON, but the plan did not fit the day.

That taught me to check more than the response format. I added checks for available time, shorter blocks when energy is low, valid task IDs, and deadline order. Gemma suggests the work, and the app checks whether it fits into a usable schedule.

In a documented Linux evaluation, I ran six fixed scenarios twice. All 12 passed their automated checks. Planning requests took about 9 to 22 seconds, including requests where an invalid response needed another attempt.

This was a small test. It does not show how fast the app will run on every laptop or prove that every suggestion will be helpful.

Why Does Open Innovation Matter?

To help someone plan, the app needs personal information: their routine, unfinished goals, deadlines, and the days when they struggled to get started.

Running Gemma locally through Ollama lets that information stay on the laptop instead of going to a hosted model API. Once the app and model are installed, the AI can work without an internet connection.

There is also no hosted inference charge for each update or plan revision. Running the model still needs suitable hardware and electricity, but each conversation does not add an API bill.

Using an open-weight model and having the app’s code available locally lets me inspect and change the model instructions, checks, and planning behaviour. I can adjust how suggestions become actions as I learn what works for Kushagra.

That matters because his first trial already showed me something I need to improve.

What Kushagra Said and What Comes Next

Kushagra liked the main flow: discuss a goal, review its subtasks, and then plan the day. It matched what he wanted from our original conversation.

He also pointed out a problem.

Even when he set a 120-minute focus preference, the AI often suggested shorter blocks: 20, 40, or 50 minutes, frequently around an hour at most. He wanted a fuller plan for his available day, but sometimes had to keep asking before the AI gave more time to his work.

That extra back-and-forth made the app less useful to him. Allowing longer focus sessions in the app did not mean the model would choose them when appropriate.

This is what I want to improve next: follow his preferred working style and plan enough work across his free time, while still taking tiredness, classes, and deadlines into account.

His feedback helped me understand what success should look like. dAIly should help him spend less time deciding and make it easier to start the work he cares about.

This started with a conversation between college mates. Now I have a working app, and Kushagra’s experience is helping me decide what to improve next.

Prize Categories

Best Use of Gemma: dAIly uses Gemma 3 4B locally through Ollama for goal discussions and planning.

Top comments (1)

Collapse
 
sa51790saxena profile image
Kushagra Saxena •

nice ... great work