Skip to content

tga-cheetung/account-intelligence-vault

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Account Intelligence Vault

The 20-minute scramble before every account touch

It's 1:45pm. You have a discovery with Acme Corp at 2pm.

Your CRM tells you Acme is Stage 2 — Qualified, owner is Jane, ARR band is $25-50M. Useful — and not what you actually need.

What you need walking into that room:

  • Why we reached out the first time
  • What the contact said two quarters ago
  • Which signal made us score them a 9
  • Who else at the company we've touched, and what they said
  • What changed at Acme between January and now

That intel exists. It's spread across last campaign's reply log, a Notion page someone wrote in March, a Fathom transcript from a discovery that went sideways, a Slack thread two operators remember, and an AE's head who left in April.

So you spend twenty minutes Frankensteining it back together from six tabs. Then you walk in.

Every AE does this. Every RevOps lead has watched it happen. The CRM was supposed to fix it; it doesn't. Notion was supposed to fix it; it didn't. Adding a tenth tool to the stack will not fix it either.

The thing actually missing is a place for the story of an account to live — one place per account, agents can read it before they act, every signal that fires gets appended automatically, and six months in, the file is sharper than any human could rebuild from scratch.

That's what this repo is.

Who it's for

  • Founder-led GTM teams where the founder is the AE, the CSM, and the marketer, and the intel that lives in their head is the company's main liability
  • RevOps leaders who have watched the CRM-notes-field experiment fail three times and want a real narrative layer their agents can actually use
  • Lean GTM operators running outbound + content + customer expansion against the same target list, where every channel needs context the others generated
  • Anyone shipping AI agents into a sales motion who has discovered that agents need persistent context to be useful past their first prompt

If you have less than ~1,000 active accounts and you are tired of intel evaporating between touches, this is for you. Past that, the architecture is still useful — but read docs/failure-modes.md first; you'll be planning a migration earlier than you think.

What the repo gives you

One markdown file per target account. Agents read it before every score, every email, every call. Every signal gets appended automatically. After six months, every account has a compounding dossier your CRM can't store.

This is the foundational layer that turns a flat markdown vault into a compounding GTM intelligence asset — applied to one specific problem: account-level intel that lives across CRM, Slack, Fathom, your inbox, and your head.

It is a working system, not a tutorial. Drop it onto an agent that supports the Claude Code Skill spec (Claude Code, Cursor, Cline, Windsurf — anything that reads markdown skills) and the slash commands work immediately.

What this targets

Input: a domain. That's it.

Output:

  • A per-account markdown file in vault/accounts/<domain>.md with YAML frontmatter, firmographics, a chronological signal log, a people graph, an interaction history, open questions, and an agent-notes appendix.
  • A /dossier <domain> slash command that returns a 5-bullet brief in ~4 seconds.
  • A scheduled heartbeat.py job that watches signal sources, appends new entries to the right account file, and surfaces what changed this week.
  • A /account-append slash command that writes a new signal or interaction into the correct file with the right metadata.

Why a vault and not just your CRM

Your CRM stores fields: name, title, domain, stage, ARR. It is bad at stories: why you reached out, what the contact said two quarters ago, which signal made you score this account a 9, what changed at the company between touches.

That intel lives somewhere now — a Notion page nobody updates, a Fathom transcript nobody re-watches, a Slack thread two operators remember. The vault makes it queryable. Agents read it before they act. The CRM stays the source of truth for structured fields; the vault is the source of truth for narrative.

Concretely:

CRM Vault
Firmographics, stage, ARR yes mirrored in frontmatter
Signal log, "why we reached out" weak (notes field) chronological, structured
People graph, multi-thread weak wikilinks [[person]]
Interaction log across channels partial unified
Agent-readable needs SQL or an integration one grep
Compounds over time only with discipline by design

The 60-second principle

  1. One file per account (vault/accounts/<domain>.md). The filename is the domain. No exceptions. This is your join key against everything else.
  2. YAML frontmatter mirrors the CRM (account id, stage, tier, owners, status). Agents filter by frontmatter — fast, no full-file reads.
  3. Body is the story. Signal log, people graph, interaction log, open questions. New entries go at the top of each section (newest-first).
  4. Agents append, never rewrite. The heartbeat job and slash commands write below an explicit marker so human edits and agent edits don't fight.
  5. Summary at the top, log below. A 5-bullet summary lives near the top of the file. Agents read the summary by default; full log on demand. This keeps token cost flat as the file grows.

Repo structure

account-intelligence-vault/
├── README.md
├── LICENSE
├── CLAUDE.md
├── .gitignore
├── vault/
│   ├── README.md
│   ├── _templates/
│   │   ├── account.md
│   │   ├── interaction.md
│   │   └── person.md
│   ├── accounts/
│   │   └── EXAMPLE-acme-corp.md
│   ├── people/
│   │   └── EXAMPLE-jane-doe-acme.md
│   └── signals/
│       └── signal-catalog.md
├── .claude/
│   └── skills/
│       └── account-vault/
│           └── SKILL.md
├── scripts/
│   ├── requirements.txt
│   ├── heartbeat.py
│   ├── ingest_signal.py
│   └── summarize_account.py
├── docs/
│   ├── architecture.md
│   ├── crm-mirror.md
│   └── failure-modes.md
└── examples/
    ├── pre-call-dossier.md
    ├── outbound-pre-send.md
    └── weekly-account-review.md

Install

# 1. Clone
git clone https://github.com/tga-cheetung/account-intelligence-vault.git
cd account-intelligence-vault

# 2. Install Python deps (one-shot summary + heartbeat)
pip install -r scripts/requirements.txt
export ANTHROPIC_API_KEY=sk-ant-...

# 3. Drop the skill into Claude Code's skills directory
mkdir -p ~/.claude/skills/account-vault
cp .claude/skills/account-vault/SKILL.md ~/.claude/skills/account-vault/

# 4. Open the vault folder with Claude Code
cd vault
claude

# 5. Inside Claude Code:
> /account-vault new acme.com
> /account-vault dossier acme.com

That is the whole integration. Claude Code reads markdown files natively; the skill teaches it the schema and the slash commands. No MCP server, no plugin, no API key beyond your Anthropic key.

How to tune it for your own ICP

Three places to edit; the rest of the repo is generic.

  1. vault/signals/signal-catalog.md — the signal taxonomy. Out of the box it has ten common B2B signals (leadership change, funding, hiring surge, product launch, partnership, layoffs, post engagement, conference appearance, competitor mention, technographic change). Add yours. The taxonomy is what the ingest_signal.py script and slash commands route off.
  2. vault/_templates/account.md — the per-account schema. Add ICP-specific frontmatter fields (e.g., arr_band, compliance_required, vertical_specialization). The skill auto-detects and surfaces them in dossiers.
  3. scripts/heartbeat.py — the signal adapters. Stubs are included for: Trigify saved-search results, RSS feeds, manual CSV drops. Add an adapter for whatever signal source your stack uses (Apify scrape, Apollo enrichment, your CRM webhook).

The skill itself is provider-agnostic. The scripts are where stack-specific glue lives.

Why this beats the alternatives

Alternative Why this is better
CRM notes field No structure, no search, no agent access, no chronology
Notion per-account pages Slow to read, expensive to query at agent-scale, no agent-write protocol
Vector DB over your CRM Loses chronology, opaque to humans, expensive to maintain
Just stuff context in CLAUDE.md Hits the context window before you say hello

Markdown wins because (a) agents read it natively at zero translation cost, (b) you can grep it with one shell command, (c) you can diff it in git for a full history of what changed when, (d) it survives every model and every agent — switch from Claude Code to Cursor and the vault still works.

The thing the markdown-is-not-memory critics get right: it does not scale to 50,000 accounts. Read docs/failure-modes.md for the thresholds and the migration path to a real database when you outgrow this.

Bigger picture

This is the foundational layer. The same pattern produces vaults for replies, ICP refinement, deal rooms, customer success — every place where chronology and narrative matter and your CRM stores fields. Ship this first; the others build on top.


Built by The GTM Architects. MIT licensed. PRs welcome.

About

One markdown file per target account. Agents read it before every score, email, and call. Every signal compounds. Public Claude Code skill + heartbeat + per-account schema that mirrors your CRM.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages