Skip to content
Learn how to build this

Build your own Groveros

Jake built Groveros on Claude Code. Here is how to build yours, one step at a time.

Step 1

Pick where you will build

Pick the tool you will build in. The one Jake used is marked.
Pick where you will build
What Jake used
Optional. It goes straight into the prompt.
Step 2

Your first prompt

Written from this page. Change anything before you send it.

Get set up in Claude Code

  1. Make a Claude account at claude.ai. Claude Code needs a paid plan.
  2. Open claude.ai/code and connect your GitHub account when it asks. That is where your code will live.
  3. 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
Step 3

Build it in this order

One step at a time. Look at each one before you ask for the next.
  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.

Watch for this

Where Jake stepped in

From the build story Claude Code sent. The AI gets things wrong. Part of building is catching it.
Changed direction The AI did

Armed a background wait for the next hourly run before checking the audit log.

Jake did

Asked to just run it now and check everything.

Changed direction The AI did

Asked Jake to run the Granola dry-run curl himself because the API key was not in its shell.

Jake did

Asked Claude to do the dry run here and now, then asked where the curl should be run.

Changed direction The AI did

Reported which calls were on older model IDs and said it had not touched anything.

Jake did

Asked Claude to do the model bumps on his behalf.

Changed direction The AI did

Handed back a one-line git reset for Jake to run after its own attempt was blocked.

Jake did

Said do it for me, then asked why it was blocked and how to stop that happening again.

Said no The AI did

Offered to commit the change that stopped Grover DMing anyone but Jake and open the PR.

Jake did

Said not yet, and redirected: meeting prep should still go to a group DM with the teammates on the call, and read the calendar agenda.

Changed direction The AI did

Finished the BoothIQ removal plan and left the production steps for Jake to run.

Jake did

Asked what Claude could do itself and what he literally had to do, then had Claude merge, migrate, deploy and verify.

Caught a bug The AI did

Reported the project page saved and linked it.

Jake did

Reported the page returned an internal server error and asked Claude to check the system.

Changed direction The AI did

Explained that no admin validate endpoint existed and asked whether to build one or investigate missing validation rows first.

Jake did

Told Claude to build the endpoint.

Changed direction The AI did

Offered to start the Prop Ledger deploy workflow to confirm the new Cloudflare account ID.

Jake did

Asked first for a clear 'data as of October 13' notice at the top of the site, then said merge it and deploy.

Caught a bug The AI did

Shipped a venture-retirement migration that also deleted the VibeWorks Slack workspace record and its scanned-thread history.

Jake did

Approved restoring the 19 rows in production, reconnected Slack, and had the mistake written into the progress notes.

Lessons

What Jake learned

In their own words, from the project page.
What I'd do differently next time
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.
Favorite moment of the build
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.
Step 4

Show what you built