Inspiration

We kept coming back to the same scene: the homework is open, the pen is ready, and nothing happens.

One member of our team knows that feeling firsthand through ADHD. We had tried planners, timers, reminders, and AI tutors. They could organize the work or explain it once we were moving. The blank-page moment came earlier.

We heard the same tension in interviews with neurodivergent learners. One high-school participant described days when a single read was enough, and other days when even simple material would not stick. The assignment had not changed. Their ability to enter it had.

This is not a small homework problem. In one longitudinal study, middle-school students with ADHD submitted about 12 percentage points less homework than their classmates (Langberg et al., 2016).

We decided to build for the few minutes before studying begins. The question behind Millie was simple:

What if the learner did not have to start first?

How neurodivergent learners shaped Millie

What we heard

Before choosing a product direction, we held three early interviews with neurodivergent learners and compared what we heard with our team's lived experience.

The details were different, but the moment was recognizable: knowing the assignment did not guarantee a first action. Studying beside someone could help. Being reminded, tested, or pushed could make the task feel heavier. Being asked for help felt different because the learner had something useful to contribute.

How it became Millie

We sketched several ways to make the first move smaller and talked the ideas through with friends and peers. The direction we kept returning to was a classmate who had already started.

That classmate would work on the learner's actual assignment, get stuck at one believable point, and ask for help. A planner gives the learner another thing to organize. A solver takes the work away. Millie creates one small reason to look at the task.

Our core design insight became:

The first interaction should already be a small part of the work.

What changed when people used it

We then put a working prototype in front of six participants. Their feedback changed V2 in ways we would not have found by polishing the interface alone.

One participant said that opening another app and setting everything up was enough reason to swipe the reminder away. Millie now asks one task-specific question before setup.

Another opened the prototype to answer a question and wondered why they had suddenly landed inside a study session. We added a doorway: the question stays visible, and the learner chooses whether to enter.

The sharpest feedback was about trust. Generic praise made the character's need for help feel fake. In V2, Millie stops, checks the learner's idea, and visibly changes its own work. A short reply or silence is also valid. Millie does not keep asking just to keep the conversation alive.

Our demo shows the full set of five participant feedback → V2 change decisions.

What it does

Millie begins with homework the learner already has. They can add a photo, PDF, or text assignment. Millie reads it and starts a small piece.

In our route-planning demo, Millie works out an 11-hour route and gets stuck on the order of the stops. It asks the learner to check one thing. The learner can tap a quick reply, explain, say "I don't know," or leave.

If the learner points out a mistake, Millie pauses and rewrites the route on screen. The reply has a visible consequence.

Millie then points back to the learner's own page: "Write the route in order on your worksheet." It gets quiet while the learner writes. By that point, the learner has already read the problem, noticed relevant information, made a decision, and touched the real assignment.

That is the whole loop:

Millie starts → the learner changes its attempt → Millie hands the task back

How we built it

Millie is a mobile-first web app built with React, TypeScript, Vite, and a self-hosted Node.js backend. It accepts image, PDF, and text assignments. OpenAI handles multimodal document input, and the backend can use OpenAI or DeepSeek for text interactions.

The system keeps its private understanding of the assignment separate from what Millie can show. Millie's visible work comes from the task, its own incomplete attempt, or something the learner has contributed. When the learner replies, the model asks a practical question: can Millie continue, or does it need a smaller clarification?

Before generated text reaches the screen, an answer-leakage check looks for final answers and restricted steps. Anything that crosses the line is retried. This lets Millie understand enough to ask a real question without finishing the assignment for the learner.

The learner's input also changes Millie's animation state. It writes, stops to think, looks confused, reacts when an explanation helps, and returns to quiet work. We kept the assignment and the current exchange in view instead of letting messages pile up like a normal chat.

W3C COGA gave us a useful design check: keep the path short, keep the task visible, limit interruption, and show what happened after an action.

Challenges we ran into

Making a smart model less helpful

Language models love completing the answer. Millie only works when it stops at the useful point.

Our first attempts swung between two bad extremes. Obvious mistakes felt staged. Clean, confident solutions left no reason for the learner to join in. We narrowed Millie's uncertainty to things a classmate could plausibly check: what the question is asking, which condition matters, or whether two pieces of information connect. The leakage check handles the rest.

Knowing when to shut up

We initially treated every pause as a reason to say something. Participants made it clear that companionship can mean leaving someone alone while they work.

V2 accepts a short reply or silence, keeps the learner in control at the doorway, and returns Millie to its own work after the handoff. Once the learner is moving, Millie should get out of the way.

Accomplishments that we're proud of

We built a real end-to-end prototype around a learner's own assignment. It reads uploaded homework, makes an incomplete attempt, asks a question, uses the learner's explanation, changes its work, and returns one action to the learner's page.

The prototype is live at millie.yaobii.com. The current build passes 96 automated tests, lint, TypeScript type-checking, and a production build.

We are especially proud that participant feedback changed working software during the hackathon. The question now comes before setup. The doorway gives the learner control. Millie's work changes when the learner helps. Those are small product decisions, but they are the reason the interaction feels believable.

What we learned

Friendly is easy. Needed is harder.

Participants liked the character, then asked why it needed them. That question changed how we thought about the entire product. Every request from Millie creates a promise: if the learner contributes something useful, they should see where it went.

A second lesson was that reducing cognitive load is about decisions, not decoration. A clean screen still feels heavy if the learner has to open an app, choose a task, set up a session, and decide what to ask. V2 starts with one question tied to the real homework.

What's next for Millie

These were early interviews and prototype sessions, so we are not claiming a long-term effect yet. The next test is repeated use with real homework: how long does it take to make the first mark, does another action follow, and when does Millie's invitation start to feel like pressure?

Learners should be able to choose the kind of presence they want. Some may prefer an active invitation. Others may want Millie sitting quietly from the start, or appearing only after they feel stuck.

The goal is not a bigger dashboard. It is a better first minute.

Selected references

Built With

Share this project:

Updates

Submission history