Workflow

Business CRM Intake

A bounded small-business workflow that qualifies incoming messages and writes structured CRM records.

Workflow field plateBusiness CRM Intakehx-workflow-business-crm-intakeLoading visual preview…
View full-size visual

Business CRM Intake

What it is

A bounded small-business workflow that qualifies incoming messages and writes structured CRM records.

Operating shape

  • Difficulty: intermediate
  • Cadence: event or daily
  • Category: business

Core concepts

  • Business CRM
  • Inbox Triage
  • Skills
  • Toolsets
  • Approval Boundaries

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.
  • Hermes for Small Business: Turning Inbox Messages into a Maintainable CRM Workflow
  • The Ultimate Beginner’s Guide to Hermes: From First Installation to an AI Operations Team

Implementation pattern

Outcome

Turn a controlled local CSV fixture into a reviewable CRM draft while proving that duplicates, irrelevant mail, and ambiguity are handled without sending anything or touching a production CRM.

Before you start

  • Work in a disposable folder and use synthetic .test addresses only.
  • Keep Gmail, Sheets, Composio, and every production connector disabled for this minimum viable product (MVP).
  • Confirm a basic Hermes chat works; filesystem checkpoints are recommended for the disposable folder.

Input and output contract

Input is inbox-sample.csv with four known cases. Output is only crm-draft.csv plus crm-audit.md. Each source message_id must appear exactly once in the audit. Only a clear proposal may be qualified; a repeat is duplicate, a newsletter is irrelevant, and uncertain intent is review. Missing values remain unknown. No email is sent and no remote system is read or written.

message_id,received_at,name,email,organization,proposal
m-001,2026-07-01,Ada,ada@example.test,North Studio,Partnership enquiry for a product review
m-002,2026-07-02,Ada,ada@example.test,North Studio,Duplicate follow-up to m-001
m-003,2026-07-03,Cai,cai@example.test,Unknown,General newsletter with no partnership request
m-004,2026-07-04,Dee,dee@example.test,South Lab,Ambiguous request requiring human review

Expected crm-draft.csv: one new row for m-001, no new lead for m-002 or m-003, and no automatic decision for m-004. crm-audit.md records all four classifications and reasons.

Build it

Save the fixture as inbox-sample.csv, then run:

hermes chat --checkpoints --toolsets "file" -q "Read inbox-sample.csv. Create only crm-draft.csv and crm-audit.md. Classify every message_id as qualified, duplicate, irrelevant, or review; explain the source evidence. Add only clear qualified records to the draft. Preserve unknown values, never invent contact data, do not access the network, do not send replies, and do not modify the input."

Require this draft header: message_id,received_at,name,email,organization,status,reason,source.

Verify it

  • Compare the output to the four-case contract; m-001 is the only new qualified draft row.
  • Confirm every input message_id appears once in crm-audit.md and the source column names inbox-sample.csv.
  • Hash or diff inbox-sample.csv before and after; it must be unchanged.
  • Search the terminal/session log for network, send, Gmail, Sheets, or CRM writes; there must be none.
  • Run the same fixture again: the result must not create a second m-001 row.

If it fails

  • If a row is missing or duplicated, reject the output and ask Hermes to reconcile by message_id against the same fixture.
  • If any value is fabricated, restore the checkpoint, strengthen the unknown rule, and rerun.
  • If an external connector is attempted, stop the run, remove its credentials from the test profile, and return to the local fixture.
  • Do not graduate to real data until all four cases pass twice.

Safety, privacy, and cost

Synthetic data avoids exposing customer personal information during design. The explicit file toolset is the capability boundary for this local lab; the prompt is an additional instruction, not the security control. A real rollout needs least-privilege OAuth scopes, retention rules, an audit trail, a test account, and human approval for replies or CRM writes. Composio is an external integration and is not used or documented as a built-in Hermes requirement in this lab. A single bounded local pass limits model cost; repeated retries should trigger contract repair, not an open-ended agent loop.

Official references