I Built a Google Chat Bot That Understands 14 Commands. Runs on Vercel for Pennies.
Google Chat webhook + OpenAI classification + GitHub Issues + Google Calendar/Tasks/Drive/Contacts. One bot replacing 5 apps.

Why Google Chat?
Because it's open all day. Email, Slack, Notion, Todoist — more apps to switch between. But Chat is just a tab in Gmail. It's always there.
So I thought: what if I had one bot I could write to in natural language and it just handles things? No switching between 5 apps.
How It Works
I write a message in Google Chat. The message hits a Vercel serverless function as a webhook. It sends it to OpenAI GPT-4.1-mini, which classifies the intent and extracts parameters. Then it executes.
14 intents the bot handles:| Intent | What it does | Example |
|---|
| create_issue | Creates GitHub issue | "create task: fix login" |
|---|---|---|
| query_status | Searches issues | "what are my open tasks?" |
| calendar_query | Today's calendar | "what do I have today?" |
| calendar_create | New event | "schedule meeting with Jake tomorrow at 10" |
| tasks_query | Open tasks | "show my tasks" |
| tasks_complete | Complete task | "done: grocery shopping" |
| contacts_search | Search contacts | "find contact Smith" |
| contacts_create | New contact | "save contact: Peter, peter@company.com" |
| drive_search | Search Drive | "find the AI presentation" |
| braindump | Capture thought | "braindump: idea for new product..." |
| url_dump | Save link | "save URL: https://coolsite.com" |
| weekly_checkin | Weekly reflection | "weekly checkin: this week I..." |
| checklist_done | Check off item | "done: morning workout" |
| general | Help | "what can you do?" |
AI Classification — How It Knows What I Want
The whole trick is one OpenAI call. The system prompt defines all 14 intents and GPT-4.1-mini returns structured JSON:
- intent — which of the 14
- title — task/event name
- priority — p1/p2/p3
- labels — relevant tags
GPT-4.1-mini is perfect for this — fast, cheap, and classification accuracy is over 95%. No fine-tuning needed, just a solid system prompt.
Stack
| Layer | Technology |
|---|
| Webhook | Vercel serverless (TypeScript) |
|---|---|
| AI classification | OpenAI GPT-4.1-mini |
| Tasks | GitHub Issues API |
| Calendar | Google Calendar API |
| Tasks | Google Tasks API |
| Files | Google Drive API |
| Contacts | Google People API |
| Notifications | n8n webhooks |
Everything runs on Vercel free/hobby tier. Google APIs use OAuth with refresh token. GitHub uses a personal access token.
What Surprised Me
1. Google Workspace Add-on format is weird. The response must be in DataActions format with an XML wrapper. Not JSON, not plain text. Spent half a day getting it to work. 2. Intent classification needs examples. Without few-shot examples in the system prompt, GPT confused "calendar_query" and "tasks_query". Adding 2-3 examples per intent fixed it. 3. Braindump is the killer feature. It was supposed to be a minor intent, but I use it the most. I type a thought into Chat, it saves as a GitHub Issue with "braindump" label. Once a week I sort through them.What It Costs
| Service | Monthly cost |
|---|
| Vercel | $0 (hobby tier) |
|---|---|
| OpenAI (classification) | ~$1-2 |
| GitHub | $0 |
| Google APIs | $0 |
| Total | ~$1-2/month |
For $2/month I have a personal assistant that's always online and never forgets.
If someone told me a year ago I'd build my own AI assistant for the price of a coffee, I wouldn't have believed them. But here we are.
Interested in the article?
Let's discuss what this kind of automation can do in your company.
Free consultation