Business CRM
What it is
A workflow that turns inbound messages into qualified records and follow-up actions.
In plain terms
A small law firm’s intake paralegal is the closest real-world analogy here: they read every new inquiry, decide whether it’s worth opening a file for, and log the details — but they’re never the one who gets to send the retainer agreement. Business CRM gives Hermes that same intake role over an inbox: sorting genuine prospects from noise and keeping a running record, while the actual outreach stays a separate, deliberate step.
Why it matters
A Gmail enquiry becomes a CRM row through the same two primitives that drive any Hermes automation: a SKILL.md document, managed by skill_manager_tool, that encodes the qualification rules and duplicate checks, fired on a schedule by the single cronjob tool instead of running continuously. The safety boundary here is not an approval prompt — the write-path deny list protects credential files like SSH keys, .env files, and token stores, never ordinary records — so an early deployment stays safe by withholding a send-capable tool until the qualification rules are proven, not by gating the write itself.
How it works
Turning an inbox into a working CRM starts with writing the qualification rules down as a document: skill_manager_tool.py (tools/skill_manager_tool.py) rejects a SKILL.md that skips YAML frontmatter, lacks a name or description field, or has no real body text after it — so the rule-set a scheduled job runs has to actually spell out what counts as a lead before Hermes will save it. The scheduled job then reads new mail against those written rules and records qualifying contacts using the file toolset’s read_file, write_file, and patch (tools/file_tools.py) — patch in particular supports fuzzy matching, so appending one more row to a running contact log doesn’t require rewriting the whole file from scratch every time a new prospect shows up.
A concrete example
Picture a boutique consultancy’s shared inbox getting a message from a stranger asking about rates.
- A cron job fires every fifteen minutes, loads a SKILL.md titled “lead-qualification” that spells out what counts as a real prospect versus spam, and checks the new message against it.
- The message names a specific project and a budget range, so it passes the check.
- Hermes patches a new row onto contacts.md with the sender’s name, company, and a one-line summary of what they want.
- No email goes out automatically — that step waits for a person to review the log and decide how to respond.
How it connects
This note belongs to the Workflow Patterns family. Its closest neighboring concepts are: Daily Priority Ritual, Inbox Triage, Agent Runtime.
Source evidence
vendor/hermes-agent/toolsets.py#<file>— Structural Source Map fallback for toolsets.py. A core source file in the Tool Registry and Toolsets structure within Tools, Toolsets, and MCP.vendor/hermes-agent/toolsets.py#<file>— Structural Source Map fallback for toolsets.py. A core source file in the Tool Registry and Toolsets structure within Tools, Toolsets, and MCP.vendor/hermes-agent/toolsets.py#<file>— Structural Source Map fallback for toolsets.py. A core source file in the Tool Registry and Toolsets structure within Tools, Toolsets, and MCP.
Workflows
- Business CRM Intake
Related articles
- Hermes for Small Business: Turning Inbox Messages into a Maintainable CRM Workflow
