Inspiration
The absolute chaos at our university's (DTU) admin block. Students and staff are visibly frustrated. I've personally wasted days waiting in lines for simple forms, only to be told to come back tomorrow. I knew this entire manual workflow could be automated.
What it does Admin PLus is an AI-powered portal that replaces the physical line with a smart one. A chatbot (using Gemini) understands a student's request in plain English (e.g., "I lost my ID card"). It instantly identifies and lists the exact documents the student needs. An OCR (Hugging Face) reads the uploaded forms, and a second Gemini call validates them for obvious mistakes. Once approved, it automatically books an appointment by finding an open slot in the admin's real-time Google Calendar. Finally, it uses SendGrid to send a confirmation email to the student with their appointment details.
How we built it This is an "orchestra" of APIs, all controlled by a central FastAPI server written in Python. Chatbot & Validation: Google Gemini API. We don't use it for "chat"; we use it as a powerful function, forcing it to return JSON with strict prompts. OCR: Hugging Face API to run the merterbak/DeepSeek-OCR-Demo model. Scheduling: Google Calendar API. We use a Service Account (a "robot") to find free slots and create events in a shared admin calendar. Email: SendGrid API for sending transactional confirmation emails.
Challenges we ran into Google Calendar API: The setup was a nightmare. Figuring out Service Accounts, JSON keys, and sharing permissions took hours of debugging. Hugging Face Timeouts: The OCR API kept failing with a ConnectTimeout. I learned that free HF Spaces "go to sleep" and you have to "wake them up" by visiting the page in a browser before your script will work. SendGrid 403 Forbidden: My email script kept getting a 403 error. I realized I had to complete the "Single Sender Verification" step to prove I wasn't a spammer.
Accomplishments that we're proud of That all the individual components actually work. This isn't just one script; it's 4-5 different, complex, and authenticated APIs all working together. Getting the data to flow from the chatbot -> to the OCR -> to the validator -> to the calendar -> to the email is the biggest win.
What we learned LLMs are Tools, Not Just Chatbots: The "aha!" moment was forcing Gemini to return only a JSON object. You can "program" an LLM with a good prompt, turning it into a reliable function, not just a toy.
API != Code: 90% of using a powerful API is just debugging permissions, not writing the logic. Test in Isolation: Testing each "limb" (Email, OCR, Calendar) in its own file (test_email.py, etc.) before trying to connect them all was the only way to stay sane.
What's next for Admin PLus Build the Frontend: Create the actual UI (in React) for the student to chat and upload files.
Build the Admin Dashboard: A simple webpage where an admin can see the queue of "Pending" forms and click the "Approve" button (which kicks off the calendar/email automation).
Deploy: Move the FastAPI server from my local machine to a free cloud service so anyone can use it.
Log in or sign up for Devpost to join the conversation.