Why a Morning CRM Briefing Is a Killer Use Case
Every sales manager, agency owner, and support lead starts their day the same way: opening the CRM to check what happened overnight. Overdue invoices, new leads, unassigned tickets, project delays — the information exists, but getting to it requires logging in, clicking around, and mentally assembling the status quo before you can act on it.
That is friction. And friction compounds across a team.
The Problem: CRM Blind Spots
A busy PerfexCRM instance generates events continuously — new leads from the contact form, payments from Stripe, tickets from email, project updates from staff. By morning, you have dozens of items to triage but no consolidated view of "what matters today." You either build a custom dashboard (engineering cost, maintenance cost) or you open five tabs and scan manually (time cost, attention cost).
The Solution: Cron + AI + MCP
What if your CRM messaged you every morning with exactly what needs attention — on WhatsApp, Telegram, or Slack — summarized in natural language and tailored to your role?
That is exactly what Hermes Agent built-in cron scheduler does, and in this tutorial we will build it end-to-end in about 10 minutes.
What Is Hermes Agent Built-in Cron Scheduler?
Hermes Agent is an open-source, self-improving AI agent built by Nous Research, released under the MIT license on GitHub where it has gathered over 87,000 stars. Unlike traditional chatbots, it ships with a built-in cron scheduler, a messaging gateway for WhatsApp, Telegram, Slack, Discord, Signal, and Email, and native support for the Model Context Protocol (MCP). That combination makes it the first self-hosted AI agent framework to pair scheduled execution with direct API access to a CRM.
The cron scheduler is the key differentiator for our use case. Instead of wiring up OS-level cron jobs and shell scripts, you define recurring work in natural language: "Every weekday at 8 AM, check overdue invoices and message me the top 5 on WhatsApp." Hermes handles the rest.
How Does Hermes Cron Differ From Traditional Cron?
Traditional Unix cron executes a shell command on a schedule. That is it. If you want the command to talk to an API, format the response intelligently, and route it to WhatsApp, you write glue code and maintain it forever.
Hermes cron is different because each scheduled run is a full AI session. The agent wakes up, loads your skills and memory, calls tools (including MCP tools pointing to PerfexCRM), decides what to do based on the prompt, and routes the output through the messaging gateway you configured. The job definition is just natural language.
Technical details worth knowing:
~/.hermes/cron/jobs.json~/.hermes/cron/output/{job_id}/{timestamp}.mdWhy This Matters for CRM Automation
Most CRM notifications are dumb: you get an email every time anything happens. Hermes cron is smart — you describe the outcome you want and the agent figures out which API calls to make, what to filter, and how to format the message. This is the difference between "you have 47 new emails today" and "3 invoices from last week are still unpaid, Acme Corp is 15 days overdue for $4,200 and should probably get a phone call."
Prerequisites Before You Start
You will need:
If you already have OpenClaw set up, the Hermes installation is similar and both can coexist on the same machine.
How to Build a PerfexCRM Morning Briefing Bot in 10 Minutes
Five steps, most of them copy-paste.
Step 1: Install Hermes Agent and the PerfexAPI MCP Server
The full install guide is on the Hermes Agent + PerfexCRM landing page, but the short version is:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bashThen add the PerfexCRM MCP server to ~/.hermes/config.yaml:
mcp_servers:
perfexcrm:
url: "https://your-crm.com/api/v1/mcp"
headers:
X-API-KEY: "your-api-key-here"Replace the URL with your PerfexCRM installation and the key with the one you created in the prerequisites step. The MCP server is built into the PerfexAPI module as of v2.8.0 — no extra install needed on the CRM side.
Step 2: Test the MCP Connection With a Manual Query
Before scheduling anything, verify the connection works. Start Hermes:
hermes startThen in the CLI or your linked messaging app, type: "What overdue invoices do I have in PerfexCRM?"
If Hermes returns a list like this, you are good:
3 overdue invoices found:
- INV-1208: Acme Corp, $4,200 (15 days overdue)
- INV-1210: TechStart, $3,100 (8 days overdue)
- INV-1215: WebCorp, $950 (2 days overdue)If Hermes returns an error about missing tools or authentication, check that MCP is enabled in your PerfexCRM admin panel under Setup, API and Webhooks, Settings, Advanced.
Step 3: Create Your First Cron Job in Natural Language
This is where the magic happens. With Hermes running, send this command:
/cron add "0 8 * * 1-5" "Every weekday at 8 AM, query PerfexCRM for overdue invoices, top 5 new leads from the past 24 hours, and any high-priority tickets opened yesterday. Summarize in a friendly briefing format and send to my WhatsApp."The 0 8 * * 1-5 is a standard cron expression meaning "at 0 minutes past hour 8, every day, every month, Monday through Friday." The quoted string is the prompt Hermes will run when the job fires.
Hermes stores this in ~/.hermes/cron/jobs.json and will wake up every weekday at 8 AM to execute the prompt as a full AI session.
Step 4: Route the Output to WhatsApp (or Telegram, Slack, Signal)
If you have not connected a messaging channel yet, do it now:
hermes channel add whatsappScan the QR code with WhatsApp on your phone. Hermes now has a direct line to message you. Repeat with telegram, slack, or signal if you want cross-platform delivery.
In the cron prompt above, the phrase "send to my WhatsApp" is the routing instruction. Hermes will use your configured WhatsApp session to deliver the briefing. If you want it on Telegram instead, replace "WhatsApp" with "Telegram" — or keep both and let Hermes post to both channels.
Step 5: Verify the Scheduled Run
To test without waiting until 8 AM tomorrow, run the job manually:
/cron run morning-briefing-jobYou should receive the briefing in your messaging app within a few seconds. Check ~/.hermes/cron/output/morning-briefing-job/ for the Markdown log if you want to audit the exact API calls Hermes made.
What Can You Put In a CRM Briefing?
All 170 PerfexAPI endpoints are available as tools. Here are four role-specific briefing prompts that work as drop-in replacements for the cron prompt above.
Sales Team Briefing (Leads and Pipeline)
> "Check PerfexCRM for leads created in the last 24 hours. Show name, company, source, and estimated value for each. Then give me the pipeline total by status (contacted, qualified, proposal-sent). Keep it under 10 lines."
Finance Briefing (Overdue Invoices and Cash Flow)
> "List all overdue invoices grouped by age bucket (1 to 7 days, 8 to 14 days, 15+ days). For each, show client name, amount, and days overdue. Also total payments received yesterday. Send as a plain text summary."
Support Briefing (Ticket SLA and Unassigned)
> "Find all open support tickets older than 24 hours with no assigned staff. Also list high-priority tickets still open after 4 hours. Format as a prioritized list."
Executive Briefing (KPIs Across All Teams)
> "Give me a one-line KPI summary: new leads yesterday, invoices paid yesterday, tickets resolved yesterday, active projects. Then flag anything that changed more than 20% week over week."
Going Beyond Morning Briefings: 3 Advanced Patterns
The same cron infrastructure unlocks several other workflow patterns that are hard to build any other way.
Pattern 1: Alert Me Only When X Happens (Conditional Cron)
Not every cron job needs to message you. Some should stay silent unless a threshold is crossed. For example: "Every hour during business hours, check for invoices that became overdue in the last hour. If none, do nothing. If one or more, message me on Slack with the list and a reminder to call the client."
Hermes handles the conditional logic inside the AI session — the cron fires, the agent checks the condition, and only sends a message if the condition matches. No glue code needed.
Pattern 2: Weekly KPI Reports to a Slack Channel
Replace your weekly team meeting check-in with a cron job: "Every Monday at 9 AM, compute last week revenue, new leads, closed deals, and active projects. Format as a Slack-friendly markdown report and post to the hash-crm-weekly channel."
Because Hermes has a persistent messaging gateway, the same agent can message individuals privately and post to channels — same cron schema, different routing phrase.
Pattern 3: Auto-Learned Reminders via Memory.md
Hermes has a built-in memory system (~/.hermes/MEMORY.md) that persists between sessions. You can teach it patterns by example: "Remember: whenever I say weekly report, use the Monday morning briefing format." Next time you invoke a weekly report — whether from cron or chat — Hermes follows the remembered pattern automatically.
This is where "self-improving" comes in. The more you use it, the more it learns your conventions.
How Is This Different From n8n Scheduled Workflows?
Both n8n and Hermes Agent can schedule recurring work against the PerfexCRM API. The difference is in how you define the work.
In n8n, you build a visual workflow: Cron node then HTTP Request node then Function node then Slack node, with explicit mapping between each step. The workflow is deterministic — it runs exactly the same every time.
In Hermes, you write a natural-language prompt and let the AI figure out the steps. The execution is adaptive — if the data looks different, the agent can adjust what it reports without you rewriting the workflow.
For fixed, high-volume processes (e.g., "sync every new Stripe payment to PerfexCRM"), n8n is the right tool. For flexible, prompt-driven reporting (e.g., "summarize what matters this morning"), Hermes is the right tool. You can absolutely use both on the same CRM — they connect through the same MCP server and the same API key.
Frequently Asked Questions
Does Hermes Agent cron run if my computer is off?
No. Hermes Agent runs as a local process on whatever machine you installed it on. If the machine is off or asleep, cron jobs do not fire. For 24/7 reliability, install Hermes on a small VPS, Raspberry Pi, or home server that stays on — it only needs around 256 MB of RAM and minimal CPU when idle. Any $5 per month VPS from Hetzner, DigitalOcean, or Vultr is more than enough.
Can I schedule jobs in natural language?
The cron timing uses standard cron syntax (0 8 * * 1-5 for weekday mornings at 8 AM). The instruction, however, is fully natural language — whatever you type as the prompt is what the agent will execute when the job fires. You can ask Hermes to help you construct the cron expression itself if you are not fluent in cron syntax; it will translate phrases like "every weekday at 8" into the correct expression.
Does the cron job count against my LLM API budget?
Yes. Each cron firing is one complete LLM session with full tool access, so it consumes tokens the same way as a manual chat. For a daily 8 AM briefing, that is about 30 calls per month per job. Using Claude Sonnet or GPT-4, expect $2 to $5 per month per scheduled briefing. Using a local model like Llama 3 or Mistral via Ollama, the cost is zero — just CPU time.
Can multiple team members get different briefings from one Hermes instance?
Yes. Hermes supports multi-agent routing with isolated workspaces per user. You can define one cron job per user, each with a different prompt routed to that user personal messaging channel, all running on the same Hermes installation. Permissions are controlled per-user via separate PerfexCRM API keys — the sales team key can see leads but not invoices, the finance team key sees invoices but not tickets, and so on. This mirrors the PerfexCRM staff permission system.
What happens if PerfexCRM is down when the cron fires?
The cron job still fires, Hermes still tries to call the MCP tools, and the API call fails gracefully with an error message. The failure is logged to ~/.hermes/cron/output/{job_id}/{timestamp}.md for auditing. The agent can be configured to retry on failure (via the prompt itself, e.g., "if PerfexCRM is unreachable, try again in 5 minutes") or to send you a notification that the job failed so you can investigate.
Can I use this with OpenClaw instead?
Yes, but with more work. OpenClaw does not ship with a built-in cron scheduler, so you would use OS-level cron (macOS launchd, Linux systemd timers, or classic crontab) to trigger shell commands that invoke the OpenClaw CLI with a specific prompt. It works, but you lose the natural-language job definition and you have to manage two scheduling systems instead of one. If scheduling is central to your workflow, Hermes is the better fit. For broader messaging platform coverage (20+ platforms), OpenClaw wins — see our OpenClaw WhatsApp CRM guide for the full story.
Is the cron job output stored anywhere I can audit?
Yes. Hermes writes a Markdown log for every cron execution to ~/.hermes/cron/output/{job_id}/{YYYY-MM-DD-HH-mm-ss}.md. The log includes the prompt that was run, the tools that were called (including every PerfexCRM API request), the LLM responses, and the final message sent to your channel. This makes it easy to audit what your agent did at 8 AM three weeks ago — or to debug why a briefing looked wrong.
What Is Next?
Building the morning briefing is the beginning, not the end. Once Hermes is scheduling against PerfexCRM, you can expand in several directions:
All of these use the same PerfexAPI module and the same MCP server you already configured. One install, infinite workflows.
For a side-by-side comparison with our other integration options, see the integrations hub. For the full technical architecture and advanced MCP configuration, the Hermes Agent + PerfexCRM landing page has everything you need.
If you get stuck building your briefing, open a support ticket — we love seeing what people automate with the module.
*Last updated: April 2026*
Ready to Get Started?
Get the complete PerfexCRM API module with MCP, webhooks, n8n node, and more.
View Pricing