Schedulr.AI is an intelligent scheduling assistant that leverages FastAPI, Google APIs, and modern LLM tools to help users schedule meetings, manage participants, and integrate seamlessly with Google Calendar using natural language.
- Google OAuth2 Authentication: Secure login with Google accounts.
- Natural Language Scheduling: Request meetings using plain English.
- Google Calendar Integration: Automatically creates and manages events.
- LLM-powered Intent Recognition: Advanced language models extract scheduling details and understand user intent.
- Async & Scalable: Built with FastAPI and async SQLAlchemy for high performance.
- Extensible Agent Architecture: Modular agent design for easy extension and maintenance.
- Python 3.12+
- FastAPI
- SQLAlchemy & SQLModel (async)
- Google API Python Client
- Authlib (OAuth2)
- LangChain, LangGraph, Google Gemini
- Uvicorn (ASGI server)
- PostgreSQL (recommended for production)
- Python 3.12 or higher
- PostgreSQL database
- Google Cloud project with OAuth2 credentials
-
Clone the repository:
git clone https://github.com/DebanKsahu/Schedulr.AI.git cd Schedulr.AI -
Install dependencies using uv:
uv sync
-
Configure environment variables:
- Set your Google OAuth2 credentials in
app/core/config.pyor as environment variables. - Set up your PostgreSQL connection string.
- Set your Google OAuth2 credentials in
-
Start the server:
uv run uvicorn app.main:app --reload
-
GET /auth/google/v1/login
Initiates Google OAuth2 login flow. -
GET /auth/google/v1/callback
Handles OAuth2 callback and stores credentials.
-
POST /schedule/v1/schedule_agent
Accepts a scheduling request and returns the agent's response.Request Body Example:
{ "user_id": "string", "thread_id": "string", "user_query": "Schedule a meeting with Alice and Bob tomorrow at 3pm" }
app/
main.py # FastAPI app entrypoint
agent/ # Scheduling agent logic and tools
api/v1/ # API routes (login, scheduling)
core/ # Config, utilities, enums
database/ # Models and DB setup
services/ # Google API integration
Contributions are welcome! Please open issues or submit pull requests for improvements and bug fixes.