Build your own Groveros
Jake built Groveros on Claude Code. Here is how to build yours, one step at a time.
Pick where you will build
Pick the tool you will build in. The one Jake used is marked.Your first prompt
Written from this page. Change anything before you send it.Get set up in Claude Code
- Make a Claude account at claude.ai. Claude Code needs a paid plan.
- Open claude.ai/code and connect your GitHub account when it asks. That is where your code will live.
- Start a new session, paste the prompt below, and send it.
I want to build my own version of Groveros. Groveros is: One-tap personal capture system: press the iPhone Action Button, speak, and the thought lands classified in a Today dashboard. A personal capture-and-act system. Jake presses the iPhone Action Button, speaks, and the thought is transcribed, classified and filed into a Today dashboard. Grover, the assistant seat, then scans Gmail, Calendar, Granola and Slack, prepares drafts and meeting briefs, and queues anything outbound as an approval card that only Jake can approve. Build it in this order, one step at a time. After each step, show me what you built and ask me what to change before you go on. 1. The first screen. Ask for the main screen and nothing else. Look at it. Say what is wrong. 2. Capture in one tap. Action Button → Apple Shortcut → Worker /ingest → ElevenLabs Scribe v2 → Claude Haiku 4.5 structured classification → D1. A failed ingest still inserts a row; no capture is ever dropped. 3. Every channel feeds the same table. Twilio SMS from Sarah, photo capture into R2, hourly Gmail scans with bill detection, Slack scans, and Granola call transcripts that file promises and owed items. 4. Today dashboard at jakepaul.io/groveros. Today, master list, project boards, Now mode, the Garden for stalled work, you-owe and owed-to-you ledgers, a morning brief with web push, and a daily summary page. 5. Grover on every item. Per-item assistant on Claude Fable 5.1 in a single chat rail, plus Ask over the whole corpus of items, email and Slack. 6. Prepare, then Jake approves. Email sends, RSVPs, calendar events with Google Meet links and Slack posts as Jake are approval cards. One file, actions.ts, is the only code that calls Gmail send or Calendar write. 7. Meeting prep every five minutes. Thirty minutes before a work meeting Grover DMs a brief to Jake and the VibeWorks teammates on the invite, with Granola history of past calls with those people. 8. Reply drafts at scan time. Free/busy windows, preferences and sender timezone feed gated auto-drafts for known senders; draft-to-sent corrections are captured for a later tuning pass. 9. Agents and shipping discipline. A groveros-mcp Worker exposes twelve tools to Claude as a connector. GitHub Actions apply migrations before deploys; 102 worker tests plus MCP and Prop Ledger suites. 10. Try it with a real person. Hand it to one person who would use it. Fix what confused them first. 11. Publish it. Press publish, send the link to one person, and give it a page on VibeWorks. Start with step 1 only. When the first version works, remind me to give it a page at https://getvibeworks.ai/users/register
Build it in this order
One step at a time. Look at each one before you ask for the next.-
The first screen
Ask for the main screen and nothing else. Look at it. Say what is wrong.
-
Capture in one tap
Action Button → Apple Shortcut → Worker /ingest → ElevenLabs Scribe v2 → Claude Haiku 4.5 structured classification → D1. A failed ingest still inserts a row; no capture is ever dropped.
-
Every channel feeds the same table
Twilio SMS from Sarah, photo capture into R2, hourly Gmail scans with bill detection, Slack scans, and Granola call transcripts that file promises and owed items.
-
Today dashboard at jakepaul.io/groveros
Today, master list, project boards, Now mode, the Garden for stalled work, you-owe and owed-to-you ledgers, a morning brief with web push, and a daily summary page.
-
Grover on every item
Per-item assistant on Claude Fable 5.1 in a single chat rail, plus Ask over the whole corpus of items, email and Slack.
-
Prepare, then Jake approves
Email sends, RSVPs, calendar events with Google Meet links and Slack posts as Jake are approval cards. One file, actions.ts, is the only code that calls Gmail send or Calendar write.
-
Meeting prep every five minutes
Thirty minutes before a work meeting Grover DMs a brief to Jake and the VibeWorks teammates on the invite, with Granola history of past calls with those people.
-
Reply drafts at scan time
Free/busy windows, preferences and sender timezone feed gated auto-drafts for known senders; draft-to-sent corrections are captured for a later tuning pass.
-
Agents and shipping discipline
A groveros-mcp Worker exposes twelve tools to Claude as a connector. GitHub Actions apply migrations before deploys; 102 worker tests plus MCP and Prop Ledger suites.
-
Try it with a real person
Hand it to one person who would use it. Fix what confused them first.
-
Publish it
Press publish, send the link to one person, and give it a page on VibeWorks.
Where Jake stepped in
From the build story Claude Code sent. The AI gets things wrong. Part of building is catching it.Armed a background wait for the next hourly run before checking the audit log.
Jake didAsked to just run it now and check everything.
Asked Jake to run the Granola dry-run curl himself because the API key was not in its shell.
Jake didAsked Claude to do the dry run here and now, then asked where the curl should be run.
Reported which calls were on older model IDs and said it had not touched anything.
Jake didAsked Claude to do the model bumps on his behalf.
Handed back a one-line git reset for Jake to run after its own attempt was blocked.
Jake didSaid do it for me, then asked why it was blocked and how to stop that happening again.
Offered to commit the change that stopped Grover DMing anyone but Jake and open the PR.
Jake didSaid not yet, and redirected: meeting prep should still go to a group DM with the teammates on the call, and read the calendar agenda.
Finished the BoothIQ removal plan and left the production steps for Jake to run.
Jake didAsked what Claude could do itself and what he literally had to do, then had Claude merge, migrate, deploy and verify.
Reported the project page saved and linked it.
Jake didReported the page returned an internal server error and asked Claude to check the system.
Explained that no admin validate endpoint existed and asked whether to build one or investigate missing validation rows first.
Jake didTold Claude to build the endpoint.
Offered to start the Prop Ledger deploy workflow to confirm the new Cloudflare account ID.
Jake didAsked first for a clear 'data as of October 13' notice at the top of the site, then said merge it and deploy.
Shipped a venture-retirement migration that also deleted the VibeWorks Slack workspace record and its scanned-thread history.
Jake didApproved restoring the 19 rows in production, reconnected Slack, and had the mistake written into the progress notes.
What Jake learned
In their own words, from the project page.I started this with a simple goal: a one-click voice prompt for a to-do list. It turned into a much bigger personal and professional self-organization assistant. Next time, I would put together a much more detailed plan before going in so the work was more structured and organized. I definitely spun in some circles here and there, but it was still a lot of fun.
My favorite moment of the build was when I told my partner Sarah to text this phone number with a request for me, and it just showed up in my to-do list under personal with a deadline and organized with all my other stuff. It was very cool to see that what I built worked that quickly and that smoothly, and that it’s something we’ve incorporated into our day-to-day life.