Inspiration

Freelancers rarely lose a client because one day goes wrong. They lose them when a promise breaks and the client finds out first: the proposal that was "coming today", the invoice that was "going out tonight". Calendars and assistants manage time. Nobody manages the promises.

What it does

DayLoop is a simulated Alexa+ experience.

  • Morning. "Alexa, build my day." The agent reads the calendar, task board, team chat and client inbox itself, moves an internal meeting out of a client-call clash, packs tasks by priority and checks every promise made to a client against the plan. It drafts a note to a blocked teammate and a reply with a real deadline to the client who is waiting.
  • Midday. "I'm 40 minutes behind." It replans from 14:40, sees that the invoice promised to Tom no longer fits today while his bug fix still lands before his 16:00 call, and drafts an honest heads-up before Tom has to chase you.
  • Evening. "Close my day. Everything's done except the monthly report. And no calls before 10 tomorrow." It scores the day (2 promises kept, 1 renegotiated, 0 broken silently), carries unfinished work over and saves the preference to memory.
  • Next morning. A new session with memory only. DayLoop speaks first: a client booked 09:30 overnight, which breaks yesterday's rule, so it proposes 10:00 and drafts the note. The unfinished report goes first, and the renegotiated invoice lands before the noon it promised.

Nothing leaves DayLoop without your approval: every message and calendar move waits in an approval tray.

How we built it

  • One tool registry. Four simulated service adapters (calendar, tasks, team chat, client inbox) plus memory and a planner: 19 tools with zod schemas and MCP annotations (readOnly, openWorld, destructive).
  • A real MCP server. Built on @modelcontextprotocol/sdk over Streamable HTTP (stateless). It serves the 19 tools plus dayloop_ask, dayloop_action, dayloop_state and dayloop_reset, so any MCP client, an Alexa+ agent included, can drive DayLoop. The demo video runs the web app on top of this server.
  • Visible orchestration. The agent never touches state directly. Every action is a tool call shown live in the Agent Steps panel, and the send tool refuses without approvedByUser: true.
  • Computed, not scripted. The planner (conflict resolution, learned preferences, priority packing), the promise ledger and Day 2 are all computed from state. Be 20 or 90 minutes late, or ask for "no calls before 11", and you get a different plan, draft and Day 2. Covered by tests.
  • Echo Show style UI in React + Vite. State persists in localStorage in the browser and in a JSON file on the server.
  • Built with Claude Code.

Challenges we ran into

Keeping a simulation honest: every card, number and draft had to come from state that really changed. Recording the demo against the final build caught a real bug: before Day 2 was planned, the promise ledger showed a renegotiated promise as "at risk". It was fixed and covered by a test before the final recording.

Accomplishments that we're proud of

The promise ledger as a first-class object, the "tell them before they chase you" heads-up, and a Day 2 that is built from memory alone.

What we learned

Agent orchestration is easiest to trust when every step is a visible tool call and every outgoing action needs a yes.

What's next for DayLoop

Swap the simulated adapter handlers for real calendar, task and inbox APIs behind the same tool names, and connect the MCP server to Alexa+ as a real integration.

Built With

Share this project:

Updates

posted an update —

Try DayLoop in 2 minutes

No install: open https://zroit.github.io/dayloop/, press Reset demo, then tap the suggested line under the conversation: build the day, "I'm 40 minutes behind", close the day, then Day 2.

Nothing is scripted. Type your own line, like "I'm 90 minutes behind" or "no calls before 11", and the plan, the client heads-up and Day 2 all change, because they are computed from state.

The same agent also runs as an MCP server over Streamable HTTP:

  npm install
  npm run mcp        # 23 tools at http://localhost:8787/mcp
  npm run mcp:demo   # plays both days over MCP
  npm test           # planner, promises and both days end to end

Code: https://github.com/zroit/dayloop Video: https://youtu.be/PfehSqxoCR0

This is the submitted build; nothing has changed since the deadline.

Log in or sign up for Devpost to join the conversation.

Submission history