BUILDING & APPS
Build a Jarvis that briefs you every morning ⚡
Master this high-ROI AI workflow: I actually built my own Jarvis, a command center that reads me my whole day out loud in a British butler voice every morn
Master this high-ROI AI workflow: I actually built my own Jarvis, a command center that reads me my whole day out loud in a British butler voice every morning, so this is the real, honest version, not a demo. You don't download Jarvis, you assemble it: Claude is the brain, MCP connectors are its hands, and Fish Audio is the voice. Everything below is what I did, generalised so you can point it at your life, your apps, and your own context. This guide covers both my reels: the quick morning-brief build and the fuller brain-and-hands build (comment JARVIS on either).
The real unlock of AI agents is not full autonomy, but human-in-the-loop systems design. Structure your agent inputs with explicit constraints, negative prompts, and automated test checkpoints. When building tools, keep token consumption lean by caching system prompts and isolating tasks into specialized sub-agents.
What you're actually building 🧠
Three pieces, that's the whole thing:
1. The dashboard (build this anytime) 🖥
This is the cinematic shell from the reel. It's optional, the brief works without it, but it's the fun part. The move is to hand Claude Code a picture of the vibe you want and let it build the interface. Here's the kind of reference image to give it:
Drag that image (or your own) onto the Claude Code terminal, paste it, or reference it with @reference.jpg, then use this prompt. It builds the interface, screenshots its own work, compares it to your reference, and fixes the gaps, which is Anthropic's own recommended build loop:
2. What you need ✅
- 💳 A Claude Pro ($20/mo) or Max ($100/mo) plan for Claude Code, sub-agents and scheduled routines. Pro is plenty for one daily brief (it allows several routine runs a day); Max is only worth it for heavier all-round use. The voice is separate, that's a Fish Audio account, free to start, not gated by your Claude plan.
- 💻 Claude Code:
npm install -g @anthropic-ai/claude-codethen runclaude, or use claude.ai/code. Docs: code.claude.com/docs - 🎙 A Fish Audio account for the voice.
- 🔌 The apps you want Jarvis to see (Gmail, Google Calendar, Notion, Slack if you run a team), with accounts you can log into.
- 📝 A simple priorities note or Notion page (even 5 ranked bullets). Your brief ranks what matters from this, so if you don't have one, make one first, or that part of the brief has nothing to pull.
How to add any connector: in Claude Code run claude mcp add --transport http NAME https://the-mcp-url/mcp, then /mcp to finish the login. On the web, add them at claude.ai/customize/connectors (do this too if you'll run a scheduled routine). Always confirm with /mcp and do one read-only test before you let it write anything.
3. The Jarvis build manual 📋
This is the heart of it, the prompt that turns Claude from a chatbot into your assistant. It briefs you on your life, not a generic template. Two steps: first give Claude a CLAUDE.md so it knows who you are, then paste the build manual.
Step A, give it a CLAUDE.md (who you are). In your project folder, ask Claude Code to "create a CLAUDE.md" and fill it in. This one file is why your Jarvis is yours, not a clone, so make it specific. A good starter skeleton:
Step B, paste the build manual. This is the real architecture behind my Jarvis, a skill that gathers your day into one ranked, spoken brief that ends by asking what to do first:
4. Connect your apps (one at a time) 🔌
Add these in order, and do a read-only test after each before moving on:
- 📅 Google Calendar so it can see your day. Add the connector, then test: "What's on my calendar today?"
- 📥 Gmail so it can triage and draft. The official Gmail connector can read, label and DRAFT, but it cannot send, by design, so drafts land in your Drafts and you hit send. Test: "Group my unread email from the last 2 days into needs-a-reply, FYI, ignore, and draft replies for the first group."
- 📝 Notion so it can read your tasks and write your brief to a page. Test: "Read my tasks page and list my top 3 for today."
- 💬 Slack so it can message your team (draft-first, same as email). Add the Slack connector, then test: "Read my last 10 mentions and draft replies, don't send." Skip this one if you don't run a team.
- ➕ Optional, for founders and marketers connect more, like RevenueCat to pull your revenue charts, or your ad-platform data for spend. Keep these read-only.
5. Skills: trigger it by phrase 🎯
A skill is a saved playbook Claude runs when you name it. Your morning brief is one. Add more the same way, each is a small markdown file in ~/.claude/skills/, and the easiest way to make one is to ask Claude Code to write it. Good ones to add next:
In Claude Code you can fire a skill by name or slash command, and Claude will also reach for one automatically when your request matches what it does.
6. Give it a voice with Fish Audio 🎙
This is the part that makes it feel like Jarvis. Sign up at Fish Audio. Its free S2.1 Pro model (model string s2.1-pro-free) is the best voice quality for the price (the top open-weight voice model, a fraction of ElevenLabs' cost), and it's free via the API right now.
- 🇬🇧 Pick or design a voice Use a ready voice from the Voice Library (there's a "Butler" and calm British voices), design a brand-new one from a text prompt ("calm British butler, warm, measured"), or clone your own from about 10 seconds of clean audio. Don't clone a real celebrity.
- 🆔 Copy your voice's reference ID Open your chosen or cloned voice on Fish Audio and copy its reference ID (the string on the voice's page, in its URL like
fish.audio/m/<id>). That ID is what tells the API which voice to speak in, you'll paste it into the prompts below. - 🔑 Grab your API key, store it safely Copy your key, then in Claude Code add it as an environment variable (an env secret) named
FISH_API_KEY. That keeps your key out of your code so it can't leak. Never paste a key straight into a file you'd share. - 🎭 Add emotion so it doesn't sound flat On the S2.1 model you drop tags right into the text, like
[calm] Your 3pm is confirmed. [amused] Shall I cancel the 4pm as well? - 🔧 Wire it up Have Claude Code write the little script that sends your brief to Fish Audio and plays it (prompt below).
Want to actually talk to it? This is the localhost bridge that turns the dashboard into a Jarvis you speak to, exactly how I built mine. Paste this into Claude Code, then open it at localhost (not the file) so the mic works:
s2.1-pro-free model is free via the API through 31 August 2026 (check the current status, Fish has extended this window before). After that it's pay-as-you-go, about $15 per million characters, or paid plans from about $11/mo, pennies per spoken brief either way. Note for non-English: scripts like Chinese cost roughly 3x per character.7. Run it on a schedule ⏰
Two ways to run it every morning, pick based on whether you want it to actually speak:
/schedule daily brief at 9am, or set it at claude.ai/code/routines. It runs on Anthropic's cloud even with your laptop shut, but it can't play audio or reach local files, so you get a text brief waiting in Notion.~/Scripts/.8. Make it yours, and keep making it yours 🔧
Here's the honest truth, and the best part. Your Jarvis will not be perfect on day one. Sometimes the voice lags a second. Sometimes the brief pulls the wrong thing or misses a priority. That is completely normal, and it is not a wall, it's the starting point.
Because the whole thing is built in plain English, you fix it by just telling Claude Code. Everything is adjustable, editable, improvable:
You're not locked into anything. Talk to it, watch what it gets wrong, describe the fix, repeat. That back-and-forth is how it slowly becomes something that fits your mornings perfectly, not a generic assistant.
s2.1-pro-free. (3) no sound, browsers block autoplay, so trigger audio with a click, and always open the dashboard at localhost (not the file) so the mic and audio both work.⚠️ Keep a human in the loop
The links 🔗
🎩 Fish Audio (the voice): fish.audio
🤖 Claude + Claude Code: claude.com and code.claude.com/docs
📥 Gmail, 📅 Google Calendar and 📝 Notion connectors: add them at claude.ai/customize/connectors