Inspiration

Scheduling meetings and managing a busy schedule as students with a lot of commitments is hard. We each manage 3+ calendars, with events ranging from classes, club and work meetings, and dinners with friends.

Keeping track of what you're doing and who you're meeting is something that can easily slip through the cracks, and when people reach out over email, it gets even harder navigating back and forth between calendars, mail clients, and your own personal preferences.

What it does

To address this, we built sched, an AI agent that lives in your email and intelligently schedules meetings based on your calendar and what it knows about you and the person requesting to meet.

When someone reaches out to you asking to meet, you reply and cc our sched agent, which will then spin up and effectively become your personal executive assistant: intelligently creating an event and invite depending on the urgency of the request (based on both who sends it and the content of the initial email) and your schedule + what sched has learned over time about you (morning/afternoon meeting preference, spacing preferences between meetings, time zones, etc.) and the other user. Sched responds naturally (from its own email) to the inviter with some proposed times, and intelligently handles multi-turn conversations in the thread to come to a time that works for both of you (erring on the side of giving you times that you prefer). If the inviter has a sched account for themself, then sched already knows their preferences and thus performs the entire back-and-forth internally, with no human-to-human conversation needed because your personal agents handle it themselves. Depending on the context of the meeting, sched will either create a Google Meet link for the event or just make a regular calendar event.

Sched resides entirely in your email, including the onboarding! Just send an email to sched@agentmail.to and it'll walk you through connecting your calendar and providing any initial preference information (which gets learned additionally over time).

While the primary functionality of sched is fully in the email inbox, we've built two web interfaces to make sched even more powerful. The first is an interactive chat and calendar view, where Sched can easily ask you for your permission or opinion on an event it might be scheduling, which it can then learn from and not ask you about in the future. The second is more about the broader implication of the future of agent-to-agent communication for the sake of human meetings: the connection graph. The 3D graph visualizer shows you all the users in your organization and draws weighted edges between people who have met and introduces you to their mutuals, allowing you to directly email them and schedule a time to meet!

How we built it

To build the mail agent, we used the AgentMail API to handle reading incoming emails to a fixed inbox and send the responses to each person. We developed the agent architecture around the Claude Agent SDK and added custom tools to link into the AgentMail sending functions + read/write access to user Google and Outlook calendars via Composio connectors.

Our backend is built with Hono in TypeScript and NodeJS, with endpoints for general database access (we used Supabase and the Prisma ORM) as well as webhooks for AgentMail. The frontend visualizer is built with NextJS using the ReactForceGraph library to make the 3d simulated connection graph, with a custom Three.JS shader for the glowing effects.

Challenges we ran into

A major challenge we ran into was latency with the API. For testing purposes, we created a proxy tunnel with ngrok, but we faced major issues with the speed of email reception and sending via AgentMail. We unfortunately don't have much control with how fast the email servers send or recieve emails, but we addressed this by tightening up our agent loop as much as possible to keep the latency that we could control as minimal as possible.

Accomplishments that we're proud of

We're very proud of having our agent be intelligent to handle multi-turn conversation with the requester and using the tone as well as user preferences to allow scheduling based on inherent priority of certain events. This is something that differentiates our product from most other calendar assistants because this inherent understanding of what each human involved needs for scheduling is something that is not easy to do unless it's your main focus, which it was for us.

We're also very proud of how our agent is proactive at learning its owners preferences correctly. When the agent asks its owner for permission to schedule time, it'll learn the preference and won't ask again unless it makes sense given the context. Especially when the agent is interacting with another user who has their own sched agent, the competing preferences result in the best compromise for both parties.

What we learned

We learned how important maintaining context in multi-turn conversations is, especially when the agents really have motivations to give their owners the preferred time, we see truly smart scheduling behavior where the agents act correctly on the owner's behalf. Additionally, we learned how powerful using connectors is: using Composio to access Google Calendar rather than just using the Google Calendar API or MCP by itself allowed enabling Outlook access to be a 5 minute change rather than a major one.

What's next for sched

Sched currently resides fully in email, which is where most (but not all) meeting scheduling occurs. In order to make Sched a truly useful personal assistant, it should be able to connect to other messaging tools like Slack, iMessage, and more.

Built With

Share this project:

Updates