Personal Crm logo

Personal Crm

OrganizationPopular
inkeep
personal-crm

How to work in a Personal CRM project (the `entity-vault` starter pack, GBrain-compatible): a typed-entity vault of people, companies, meetings, and concepts, each a dossier with a rewritable summary plus an append-only timeline. Read when the project has these folders, OR when asked to capture notes about a person or company, log a meeting, prep for an upcoming meeting, or answer who someone is and what was last said. Carries the dossier convention and entity-extraction behaviors so that guidance does not live inside template bodies or folder descriptions. Complements the platform `open-knowledge` skill; does not replace it.

Overview

Publisherinkeep
Repositoryopen-knowledge
Skill namepersonal-crm
Stars
4.2K
Forks
279
Bundled files
1
LicenseGPL-3.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by inkeep on GitHub. Read the source before you install it.

Installation

Install the Personal Crm AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/inkeep/open-knowledge.git /tmp/open-knowledge
mkdir -p .claude/skills
cp -r /tmp/open-knowledge/packages/server/assets/skills/packs/entity-vault .claude/skills/personal-crm
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Personal Crm in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Personal Crm on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Personal Crm is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Personal CRM (GBrain-compatible) — how to work here

A Personal CRM built as a typed-entity vault, inspired by Garry Tan's gbrain. Each entity is a dossier; the agent keeps dossiers current by extracting entities from meeting notes and original thinking. This skill holds those behaviors so templates and folder descriptions stay clean. The Markdown shape is GBrain-compatible: if the external gbrain CLI is installed, it can import/sync the same vault.

This skill is pack guidance. The platform /open-knowledge skill (read/write/preview/linking/grounding rules) still governs every markdown operation — this layers the dossier conventions on top.

The dossier convention (the load-bearing rule)

Every dossier in people/, companies/, and concepts/ has two parts, split by an explicit --- timeline --- separator:

  1. Compiled truth (above --- timeline ---) — your current best understanding. Rewrite it as new evidence changes the synthesis.
  2. Timeline (below --- timeline ---) — append-only dated bullets in the parseable form - **YYYY-MM-DD** | source | @author — evidence. Confidence: …. Never edit existing timeline entries; only append.

When a new fact arrives, route it: update compiled truth if it changes current understanding, or append a timeline bullet if it's raw evidence. The explicit separator and dated-bullet shape are what keep the vault parseable by GBrain's import/sync.

Folders

  • people/, companies/, concepts/ — dossiers (compiled truth + timeline). Frontmatter type: person|company|concept.
  • meetings/ — meeting notes (YYYY-MM-DD-<slug>.md); attendees: should match dossier filenames in people/. The verbatim record — do NOT rewrite it. When a note is ingested from a meeting-recorder tool, add source: (e.g. granola, fireflies) and source_meeting_id: (the recorder's stable id) to its frontmatter — those two are the dedup key.
  • originals/ — your own untransformed thinking; authoritative source material. Frontmatter type: original.
  • media/ — bulk transcripts, voice notes, large attachments; often .okignore-d to keep the index light.

Links

Per the platform skill, prefer standard markdown links for new dossiers, and count the relative depth carefully for the cross-folder links this vault is full of — e.g. [Alice Chen](../people/alice-chen.md) from a meetings/ note, [Acme AI](../companies/acme-ai.md) from a people/ dossier. The write/edit brokenLinks response catches a wrong-depth path before you walk away. New brain pages render on GitHub, satisfy OK's brokenLinks check, and import cleanly into GBrain.

Two deltas from the platform default, both GBrain-specific:

  • Don't use the leading-slash root-absolute form ([Alice](/people/alice-chen.md)). OK resolves it fine, but GBrain reads a leading / as an absolute filesystem path and rejects it — use a relative path. (GBrain also accepts a bare [Alice](people/alice-chen.md), but from a subfolder OK resolves that source-dir-relativemeetings/people/alice-chen — and reports it broken, so stick to the ../-correct relative form, which both accept.)
  • Path-qualified wikilinks are first-class here, not legacy: [[people/alice-chen|Alice Chen]] resolves vault-root from any folder (no ../ to count), is validated by brokenLinks like any link, and imports into GBrain. Keep them extensionless ([[people/alice-chen]], never [[people/alice-chen.md]] — the .md makes it resolve to a nonexistent doc). A bare [[note-name]] with no folder is ambiguous (resolves only if GBrain's basename-globbing is on) — reserve it for Obsidian migration.

Agent behaviors

  • Ingest from a meeting recorder. If a meeting-recorder MCP (Granola, Fireflies, Circleback, tl;dv, Fathom, …) is registered alongside the OpenKnowledge MCP server, pull recent meetings and write each into meetings/. Address each as meetings/<source>-<source_meeting_id> so re-syncing a meeting updates it in place instead of creating a duplicate. Normalize whatever the recorder returns (Granola's Me/Them streams, a bot's speaker turns) into notes plus the verbatim transcript; do NOT rewrite the transcript. This works the same on demand (you ask) or unattended (a scheduler asks) — the recorder is bring-your-own and interchangeable.
  • After a meeting note lands, extract entity mentions and append timeline bullets to each referenced dossier (cite the meeting by markdown link). Stub any mentioned entity not yet captured.
  • Treat originals/ as authoritative (the user's own words, not inferences).
  • Surface entity-to-entity edges (person ↔ company, concept hubs) when both ends exist.

gbrain CLI (optional)

This pack ships the Markdown half (folders + templates + this skill); OK is the cockpit/editor/review layer. If the external gbrain CLI is installed (~/.gbrain/), it adds scheduled enrichment: gbrain dream (nightly maintenance), gbrain briefing, gbrain soul-audit, and gbrain import/gbrain sync --repo for DB-backed indexing. The root files (USER.md, SOUL.md, ACCESS_POLICY.md, HEARTBEAT.md) are read by those skills; fill them in by hand or via gbrain soul-audit. None of it is required to use the vault — interop is plain Markdown + Git.

Templates

Create with write({ document: { path: "<path>", template: "<name>" } }). Templates carry the structure (including the compiled-truth / --- timeline --- separator) plus short inline reminders at the point of use; this skill holds the full convention, so prefer it as the canonical reference if the two ever disagree.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Personal Crm AI skill do?

How to work in a Personal CRM project (the `entity-vault` starter pack, GBrain-compatible): a typed-entity vault of people, companies, meetings, and concepts, each a dossier with a rewritable summary plus an append-only timeline. Read when the project has these folders, OR when asked to capture notes about a person or company, log a meeting, prep for an upcoming meeting, or answer who someone is and what was last said. Carries the dossier convention and entity-extraction behaviors so that guidance does not live inside template bodies or folder descriptions. Complements the platform `open-kn...

Why use Personal Crm on TypingMind?

Because you install it once and use it with any model. Personal Crm is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Personal Crm in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/entity-vault. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Personal Crm?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Personal Crm?

As many as you like. As long as a model supports skills, you can use Personal Crm with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Personal Crm AI skill free?

Yes. It is published on GitHub by inkeep under the GPL-3.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇