Inspiration
I kept coming back to a simple question: what happens after we tell an AI assistant that we're going to do something?
Most assistants are good at answering questions, but following through is a different problem. A commitment can get lost in a conversation, and even when an AI knows what to do, letting it act on our behalf requires trust.
That's why I started building PROMISE. I wanted an assistant that could remember commitments, figure out the next step, and help get it done without taking control away from the user.
What it does
PROMISE turns commitments into actions that can be tracked and verified.
A user can say something like, "I need to meet Andi tomorrow at 10 AM." PROMISE captures the commitment, keeps its source context, and prepares a calendar action when asked to handle it.
Before an external action is executed, PROMISE asks for explicit approval. Once approved, it can create the event in Google Calendar and record the outcome.
It also tracks action status and maintains an audit trail. Rejected actions cannot be executed, and safeguards help prevent duplicate actions.
How we built it
I built PROMISE with Python, FastAPI, Next.js, and the Model Context Protocol (MCP). The project has a shared application layer behind its web interface, REST API, and MCP server, so the core workflow doesn't depend on a particular client.
I also built a browser-based Alexa+-style simulator to test the conversational experience, along with an interactive commitment card that lets users trigger follow-through actions.
Google Calendar is the first real external integration. PROMISE also includes an optional Amazon Bedrock Converse provider for structured commitment extraction and configurable AWS storage adapters. Local development uses deterministic extraction by default, which makes the workflow easier to test consistently.
Challenges we ran into
The biggest challenge was making the workflow reliable beyond a successful demo.
A model suggesting an action is one thing; executing it safely is another. I had to pay attention to approval state transitions, rejected actions, concurrent requests, retries, and the possibility of creating the same calendar event more than once.
Another challenge was testing the Alexa+-style experience without depending on access to a physical device or a gated developer environment. The local simulator and MCP protocol logs helped me inspect tool calls and understand what was happening at each step.
Accomplishments that we're proud of
The most satisfying milestone was seeing a commitment move through the complete workflow and create a real Google Calendar event after approval.
I'm also proud that the project is more than a single demo script. The application logic is shared across interfaces, the workflow has an audit trail, and approval and duplicate-execution safeguards are covered by automated tests.
The current test suite reports 601 passing tests, including regression tests for rejection and concurrent calendar execution.
What we learned
We learned that an agent doing useful work needs more than a capable model. It needs clear boundaries, reliable state transitions, context, and a way to verify what happened.
We also learned the value of separating the application from the interface. MCP made it possible to expose the same capabilities through a different client without rewriting the core workflow.
Most importantly, trust has to be part of the architecture from the beginning, not something added after the agent can already take action.
What's next for PROMISE
The next step is to make PROMISE easier to use in everyday life: improve commitment detection, expand integrations, and make follow-through more useful across different kinds of tasks.
I'd also like to test the experience with more MCP-capable clients and make deployment easier beyond the local development setup.
The long-term goal is straightforward: an assistant that doesn't just remember what you said, but helps you follow through—with your permission and a clear record of what it did.
Built With
- amazon-web-services
- fastapi
- mcp
- nextjs
- python
Log in or sign up for Devpost to join the conversation.