Every capability Robert can turn on or off per client. Exact config changes, what each feature does, and suggested monthly add-on pricing. Build each client's setup from these building blocks.
Never show a new client locked or grayed features on day one. Showing features they can't access signals "you're paying for the small version" — Hormozi framing. It creates anxiety, not desire. The correct sequence: prove value first, reveal expansion second.
# Enabled automatically when TELEGRAM_TOKEN is set in .env # and the gateway is running. No additional config. TELEGRAM_TOKEN=YOUR_BOT_TOKEN_HERE TELEGRAM_ALLOWED_USERS=CLIENT_TELEGRAM_USER_ID TELEGRAM_HOME_CHANNEL=CLIENT_TELEGRAM_USER_ID
# Write SOUL.md to the profile directory # See Runbook Step 4 for the full template nano ~/.hermes/profiles/[CLIENT]/SOUL.md # Restart gateway after writing or editing hermes profile use [CLIENT] && hermes restart
# Included in hermes-cli toolset — no additional config # Ensure hermes-cli is in the toolsets list: toolsets: - hermes-cli # Optionally reinforce in SOUL.md: # "When [CLIENT] says 'remind me' or 'note:', capture it explicitly"
# Switch to client profile and add the cron hermes profile use [CLIENT] hermes cron add \ --name "morning-briefing" \ --schedule "0 8 * * 1-5" \ --deliver telegram \ --prompt "You are Jeeves, [CLIENT_NAME]'s AI chief of staff. \ Deliver ONE morning briefing message. Include: open tasks, \ today's priorities, any flagged items from yesterday. \ Start with a brief uplifting note. Under 200 words. One message only." # Weekdays only: 0 8 * * 1-5 # Every day: 0 8 * * * # Custom time: 0 7 * * 1-5 (7am)
# 1. Run Google OAuth flow for this client # (Client approves in their browser, token stored locally) hermes profile use [CLIENT] hermes tool google-calendar auth # Token saved to: ~/.hermes/secrets/google_token_[CLIENT].json # 2. Add to profile .env: GOOGLE_OAUTH_TOKEN_PATH=/Users/robert/.hermes/secrets/google_token_[CLIENT].json GOOGLE_CALENDAR_ID=primary # 3. Restart gateway hermes restart
# 1. Add weekly review cron hermes profile use [CLIENT] hermes cron add \ --name "weekly-parking-lot-review" \ --schedule "0 17 * * 5" \ --deliver telegram \ --prompt "Review [CLIENT_NAME]'s parking lot. \ Read ~/.hermes/profiles/[CLIENT]/workspace/parking-lot.md. \ Send a Friday review: what's open, what's overdue, top 3 for next week." # 2. Create the parking lot file mkdir -p ~/.hermes/profiles/[CLIENT]/workspace echo "# [CLIENT_NAME]'s Parking Lot\n" > \ ~/.hermes/profiles/[CLIENT]/workspace/parking-lot.md # 3. Add instruction to SOUL.md: # "When capturing tasks, append them to # ~/.hermes/profiles/[CLIENT]/workspace/parking-lot.md"
# Add to profile alongside morning briefing hermes profile use [CLIENT] hermes cron add \ --name "end-of-day" \ --schedule "0 17 * * 1-5" \ --deliver telegram \ --prompt "End of day wrap for [CLIENT_NAME]. Review open tasks. \ Send: 3 wins from today (or best attempts), 3 open items still pending, \ top 3 priorities for tomorrow. Short. Encouraging. Under 150 words."
# 1. Complete Gmail OAuth for client hermes profile use [CLIENT] hermes tool gmail auth # Token saved to: ~/.hermes/secrets/gmail_token_[CLIENT].json # 2. Add to profile .env: GMAIL_OAUTH_TOKEN_PATH=/Users/robert/.hermes/secrets/gmail_token_[CLIENT].json GMAIL_SCAN_LABELS=INBOX,IMPORTANT GMAIL_SCAN_INTERVAL_MINUTES=30 GMAIL_VIP_SENDERS=boss@company.com,client@example.com # 3. Add email scan cron hermes cron add \ --name "email-scan" \ --schedule "*/30 8-18 * * 1-5" \ --deliver telegram \ --prompt "Scan Gmail for [CLIENT_NAME]. Surface only emails that \ need action or are from VIP senders. Skip newsletters and marketing. \ If nothing urgent: send nothing. Only Telegram if there's something real."
# 1. Create follow-up tracking file mkdir -p ~/.hermes/profiles/[CLIENT]/workspace echo "# Follow-Up Tracker\n" > \ ~/.hermes/profiles/[CLIENT]/workspace/follow-ups.md # 2. Add daily follow-up check cron hermes cron add \ --name "follow-up-check" \ --schedule "0 9 * * 1-5" \ --deliver telegram \ --prompt "Check follow-ups for [CLIENT_NAME]. Read \ ~/.hermes/profiles/[CLIENT]/workspace/follow-ups.md. \ Surface any follow-ups where the deadline has passed. \ For each, ask if they'd like a draft response." # 3. Add to SOUL.md: # "When [CLIENT] says 'follow up with X in N days', log it to follow-ups.md"
# No additional toolsets required — built into base model capability # Key: Add detailed voice/style to SOUL.md so drafts sound like the client # Add to SOUL.md > Communication Style section: # "When drafting content, match [CLIENT]'s voice exactly: # - Sentence length preference: [short/medium] # - Emoji use: [yes/no/minimal] # - Topics they post about: [LIST] # - Tone: [professional/conversational/etc] # NEVER post live. Always draft and send for approval first." # Optional: add LinkedIn toolset if client wants scheduling toolsets: - hermes-cli - web # allows research-backed drafts
# 1. Add n8n and supabase toolsets to profile config toolsets: - hermes-cli - n8n # trigger V4 agent workflows - supabase # read/write client data - web # research + web access # 2. n8n keys are inherited from global ~/.hermes/.env # 3. Add client-specific routing rules to SOUL.md: # "When routing to V4 agents, always load [CLIENT]'s brand context first # from ~/.hermes/profiles/[CLIENT]/workspace/brand-context.md" # 4. Create brand context file from client intake nano ~/.hermes/profiles/[CLIENT]/workspace/brand-context.md
# Requires Tier 3 base (n8n toolset active) # Add optional weekly SEO cron: hermes cron add \ --name "weekly-seo-pulse" \ --schedule "0 8 * * 1" \ --deliver telegram \ --prompt "Run weekly SEO pulse for [CLIENT_NAME]. \ Use Patel agent framework. Check current ranking signals for \ their top 5 keywords. Surface any quick-win opportunities. \ Deliver as a concise Monday briefing." # Add to SOUL.md: # "For SEO questions, invoke the Patel agent workflow via n8n"
# Requires Tier 3 base # Enable image input so Jeeves can analyze ad screenshots agent: image_input_mode: auto # already default, verify it's set # Add to SOUL.md: # "For paid ads questions, use the Burnett agent workflow. # Client's ad platforms: [Facebook/Google/etc] # Monthly budget: [AMOUNT] — never suggest over this"
# 1. Add Postiz credentials to client .env POSTIZ_API_KEY=CLIENT_POSTIZ_API_KEY POSTIZ_WORKSPACE_ID=CLIENT_WORKSPACE_ID # 2. Add content pipeline to SOUL.md: # "Content production pipeline: # 1. Brief → Porter/Vee for strategy # 2. Drafts → Ogilvy for copy # 3. Review → Hemingway for QA # 4. Approval → Telegram to [CLIENT] # 5. Schedule → Postiz API # NEVER schedule without explicit approval." # 3. Add weekly content cron (optional) hermes cron add \ --name "weekly-content-prompt" \ --schedule "0 9 * * 1" \ --deliver telegram \ --prompt "Monday content kickoff for [CLIENT_NAME]. \ Ask what topics they want to cover this week. \ Surface 3 content angle suggestions based on their business."
Beta pricing — adjust based on what Robert learns from Dylan and Kara. These are starting points, not gospel. Build trust first, optimize pricing later.
What to change for each feature. Profile = ~/.hermes/profiles/[CLIENT]/
| Feature | Tier | File Changed | What You Add |
|---|---|---|---|
| Telegram Bot | Core | .env | TELEGRAM_TOKEN, TELEGRAM_ALLOWED_USERS |
| Persona Voice | Core | SOUL.md | Write the persona file, restart gateway |
| Morning Briefing | T1 | cron/jobs.json | hermes cron add (schedule 0 8 * * 1-5) |
| Calendar | T1 | .env | GOOGLE_OAUTH_TOKEN_PATH, run OAuth flow |
| Parking Lot | T1 | cron/jobs.json + SOUL.md | Friday cron + parking-lot.md instruction |
| Email Scanning | T2 | .env + cron/jobs.json | GMAIL_OAUTH_TOKEN_PATH + scan cron |
| Follow-Up Tracking | T2 | cron/jobs.json + SOUL.md | follow-ups.md + daily check cron |
| Content Drafting | T2 | SOUL.md + config.yaml | Voice rules in SOUL.md, web toolset |
| V4 Agent Access | T3 | config.yaml | Add n8n, supabase toolsets |
| SEO Agent | T3+ | cron/jobs.json + SOUL.md | Weekly SEO cron + Patel routing rule |
| Ads Agent | T3+ | config.yaml + SOUL.md | image_input_mode: auto + Burnett routing |
| Social Scheduling | T3+ | .env + cron/jobs.json | POSTIZ_API_KEY + content pipeline cron |