This project is a fully agentic calendar scheduling assistant using Fetch.ai uAgents, Streamlit for the UI, OpenAI for natural language interpretation, and Google Calendar API for calendar operations.
- streamlit_ui.py – Streamlit app for user login, prompt submission, and confirmation interface
- frontend_agent.py – Formats and sends
CalendarIntentto backend - calendar_agent.py – Handles scheduling logic, conflict checking, and event creation via Google Calendar
- calendar_intent.py – Shared message schema
- 🧠 Natural language to intent conversion using OpenAI
- 🔐 Per-user Google Calendar login (OAuth2)
- 🤖 Agentic backend with automatic conflict checking
- ✅ Human-in-the-loop: event is only booked on user confirmation
- 📨 Multi-turn agent messaging using Fetch.ai's protocol system
- Clone the repo:
git clone https://github.com/your-username/calendar-agentic-assistant
cd calendar-agentic-assistant- Create
.streamlit/secrets.toml:
GOOGLE_CLIENT_ID = "your-client-id"
GOOGLE_CLIENT_SECRET = "your-client-secret"- Install dependencies:
pip install -r requirements.txt- Start the agents:
python agents/calendar_agent.py
python agents/frontend_agent.py- Start the frontend:
streamlit run streamlit_ui.pyGOOGLE_CLIENT_ID– From Google Cloud Console (OAuth credentials)GOOGLE_CLIENT_SECRET– From Google Cloud Console
"Schedule a meeting with Alex tomorrow at 3PM"
The LLM will convert this into a structured JSON intent. The calendar agent checks for conflicts and asks for confirmation if the slot is free.
- Add group availability negotiation
- Use persistent storage for confirmed intent history
- Add Slack or SMS notification integration
- Support for recurring events
Built with ❤️ using Fetch.ai, Streamlit, OpenAI, and Python.