Inspiration

As students, our lives are scattered across different mediums: a PDF syllabus from a professor, a grainy screenshot of a registration portal, or a quick text from a lab partner. Manually transcribing these into a calendar is a friction point that leads to missed deadlines. We wanted to build a "frictionless" assistant that lived where we already spend our time—iMessage. The goal was simple: if you can see your schedule, your AI should be able to "see" it too and sync it instantly.

What it does

Chrono AI is an intelligent iMessage agent that acts as a bridge between your messy documents and your Google Calendar.

Visual Sync: Users can simply text a screenshot of a course schedule or a PDF syllabus to the agent.

Intelligent Parsing: It extracts dates, times, and locations, then presents a structured summary for the user to review.

Natural Language Control: Beyond documents, users can chat with it to move meetings, delete labs, or ask, "What does my Thursday look like?"

Safety First: It features a robust "Undo" command and a confirmation flow to ensure no "hallucinated" events ever end up on your actual calendar without permission.

How we built it

The project is built on a hybrid Node.js and Python architecture:

The Brain (Node.js): Handles the iMessage stream via the Photon SDK and manages the conversation logic and Google Calendar API integration.

The Parser (Python/FastAPI): A specialized sidecar service using PyMuPDF and MiniMax-M2.7. We separated this because document extraction requires heavy-duty processing that Python handles more gracefully.

LLM Integration: We utilized MiniMax-Text-01 for natural language understanding and tool-calling, allowing the agent to decide when to search, create, or delete events based on a user's text.

Database: A local SQLite instance (via agent.db) tracks user sessions and OAuth tokens.

Challenges we ran into

The biggest hurdle was document layout variety. A syllabus doesn't look like a weekly calendar view. Initially, the LLM would miss deadlines buried in tables or footnotes. We solved this by creating a dedicated Python sidecar that pre-processes PDFs and images before sending structured text to the model, significantly increasing extraction accuracy.

Another challenge was macOS permissions. Since the agent reads the local iMessage database, navigating "Full Disk Access" and privacy sandboxing required careful environment configuration to ensure the bot could reliably see incoming attachments.

Accomplishments that we're proud of

We are particularly proud of our "Undo" system. Managing state in a chat-based calendar tool is tricky—if the AI deletes the wrong event, it's a disaster. We implemented a "last-action" cache that stores the previous state of any modified event, allowing users to simply text "Wait, undo that" to instantly revert any Google Calendar change.

What we learned

We learned that UI is often better than AI for confirmation. While we could have let the AI automatically add events, we realized that a "Human-in-the-loop" confirmation step via iMessage buttons/text was essential for user trust. We also gained deep experience in cross-language microservices, specifically how to pipe data between Node.js and Python efficiently.

What's next for Chrono AI

The next step is Multi-modal Proactivity. We want Chrono AI to not just react to messages, but to look at your upcoming week and text you if it notices a conflict between a newly uploaded syllabus and an existing doctor's appointment. We also plan to move beyond the local macOS environment to a cloud-based relay to make the service accessible to non-Mac users.

Built With

Share this project:

Updates