valentine-agent
v0.1.0
Published
Know before you walk in. The open-source agent that remembers every founder your fund has talked to. Read-only.
Downloads
134
Readme
✦ Valentine
Know before you walk in. The open-source agent that remembers every founder your fund has ever talked to — and reads your CRM the moment it matters.
npx github:80x-djh/valentine init # connect your CRM (read-only token)
npx github:80x-djh/valentine acme.com # one verdict before the callOnce published to npm this shortens to
npx valentine-agent <domain>.
You're about to take a founder call. You run valentine acme.com. Two seconds
later: "⚠ Sarah emailed Acme's founder 3 weeks ago — logged 'passed, too early.'"
Or a clean ✅. Then you walk in.
Use it inside Claude (or Cursor, or any MCP host)
Valentine ships as an MCP server, so your AI
app can check the CRM for you mid-conversation — "anything on acme.com before my
call?" Add it to Claude Desktop's config (~/Library/Application Support/Claude/
claude_desktop_config.json):
{
"mcpServers": {
"valentine": { "command": "npx", "args": ["-y", "github:80x-djh/valentine", "mcp"] }
}
}Restart Claude, set your keys once with valentine init, and ask away. Read-only,
on your machine — see AGENTS.md for Cursor, Claude Code, etc.
It reads. It never writes.
Valentine surfaces and warns — it never touches your data, sends a message, or moves a deal. There are no write tools in the codebase, by design.
How it works — three moving parts
- A connector (
src/connectors/) — read-only CRM access behind a smallCRMConnectorinterface. Attio and Affinity out of the box; HubSpot / Salesforce are one new file away. - An agent (
src/agent.ts) — the loop: model thinks → calls a read tool → gets the result → repeats → callssubmit_verdict. ~40 lines, hand-rolled on the Anthropic API so you can read every line. - A trigger (
src/cli.ts) — CLI today;valentine watch(calendar) and a Slack command on the roadmap.
The rules it runs by live in src/prompt.ts. Full design in SPEC.md.
Hand it to your agent
Valentine is built to be driven by other agents, not just typed by hand.
- Headless CLI — set the env vars and run
npx valentine-agent --json acme.com. It never prompts under--jsonor a non-TTY, and exit codes encode the verdict (0clean ·10prior contact ·20ambiguous). - MCP server —
valentine mcpexposes one read-only tool,valentine_verdict(target), for any MCP host (Claude Desktop, Cursor, Hermes, openclaws…). - Full instructions for agents live in
AGENTS.md.
Your keys, your data
Runs with your CRM token, on your machine. Nothing leaves the fund. Keys are
stored locally at ~/.valentine/config.json (or via env: VALENTINE_ATTIO_KEY,
VALENTINE_AFFINITY_KEY, ANTHROPIC_API_KEY).
Develop
npm install
npm run dev -- acme.comLicense
MIT — clone it, read every line, fork it. No black box between you and your founders.
