On this page

This is not Salesforce. As one of Wire's use cases, it is a markdown-based client directory where every client is a page, every interaction is a dated entry, and Wire enforces that nothing falls through the cracks. It is a CRM for people who think in files, not databases.

18 monthsAverage SaaS CRM cycle before teams switch tools
70%Knowledge management overhead cut by AI agents on plain-text vaults
2 pluginsFull CRM feature parity achieved in Obsidian with markdown frontmatter
0Migration cost when your data is already plain text

The Problem with SaaS CRM

Small agencies and freelancers cycle through CRM tools every 18 months: Notion, Airtable, HubSpot free tier, back to spreadsheets. Each migration loses history. The CRM is always behind because updating it means switching context from actual work to a separate tool. Meanwhile, the real client history lives in email threads and Slack messages that are unsearchable.

The deeper problem is format lock-in. Proprietary databases require export, conversion, and re-import every time you switch tools. Plain text requires none of that. As Eric J. Ma, a technical manager who uses a flat-file system to manage 12 direct reports across 2 teams, put it in March 2026: "Text files are as primitive as it gets: no proprietary formats, no vendor lock-in, just files that can be read on any system. When AI coding agents arrived, my vault was already in a format they could process natively. No migration needed. No conversion layer. No API integration."

That is the architectural bet Wire makes. Plain text with YAML frontmatter is both human-readable and machine-native. You never need to migrate again.

How Wire Fits

Wire treats clients as content. Each client is a section. Each project is a page. The same pipeline that builds a public website builds your private client archive.

Frontmatter becomes your structured data: client name, industry, contract status, key contacts, project dates. All in YAML, all validated at build time. Missing required fields trigger BUILD REFUSED. No half-filled client pages sitting in your archive. Wire catches incomplete records before they become invisible gaps.

The news command monitors each client's industry for developments. When a competitor launches a product, Wire finds it. When their industry gets regulated, Wire flags it. This is proactive intelligence, not reactive data entry.

The crosslink command connects related clients, shared projects, and recurring patterns automatically. Client A and Client B are both in fintech. Wire links them. The internal linking system handles this across your entire archive without manual effort.

Full-text search via search_index.json lets you query across all clients instantly. "Which client mentioned GDPR compliance?" becomes a search query, not a 30-minute email dig. The llms.txt output means you can ask an AI to summarize your history with any client directly, without building a separate retrieval pipeline. For teams already exploring that approach, the Replace RAG with Static Content use case covers the full architecture.

Set noindex: true in wire.yml and deploy behind your VPN. The archive stays private.

What the Community Has Already Built

The flat-file CRM pattern is not theoretical. Three open-source projects independently arrived at the same architecture Wire uses.

A sales professional documented a fully functional Obsidian CRM with account dashboards, kanban pipelines, contact engagement scoring, weekly reports, click-to-dial contacts, document storage, RSS feeds, and an internal wiki, using only 2 plugins and markdown frontmatter. The 2-plugin constraint was deliberate: fewer plugins mean less breakage and lower maintenance burden.

hal_md takes a different angle. The MIT-licensed Python project converts LinkedIn chats, Signal messages, and SMS backups into the same markdown format used for People, Organization, and Place entities. It uses slug fields as unique identifiers across entities and people: [] arrays in frontmatter for cross-referencing. Helper scripts handle recent communications lookup and contact frequency analysis.

Markdown CRM is the minimal version: an MIT-licensed template that proves the pattern works with zero infrastructure.

All three projects independently discovered the same gap: the pattern works, but enforcement is missing. The Obsidian CRM creator limited plugins to reduce breakage. hal_md's README acknowledges the setup requires patience. Markdown CRM provides templates but no validation. Ma handles data integrity through manual review passes. Each project found the need for the guardrails Wire provides: frontmatter validation, build-time quality checks, and automated consistency enforcement.

AI Agents and the Plain-Text Advantage

Ma's experience quantifies what the architectural choice is worth. After integrating AI coding agents into his plain-text vault, knowledge management overhead dropped from 30-40% of his time to under 10% (self-reported, March 2026). His system tracks 24-48 active project threads across 12 people using three structured note types: people dossiers, project control towers, and meeting logs.

The reason AI agents work so well on plain text is format compatibility. There is no API to integrate, no export to run, no conversion layer to maintain. The agent reads the same files you do. Ma's conclusion: "I chose plain text and graphs. I chose not to lock my data inside a vendor system. I chose freedom and sovereignty for my information."

One caveat: Ma reports approximately one hallucination every 4-5 AI sweeps of his vault, usually traceable to inaccurate meeting transcripts rather than agent errors. Wire's build-time validation catches structural errors before they propagate, but transcript accuracy remains a human responsibility.

Setting Up Your Client Archive

wire.yml

Organize by client status or project type. A simple nav structure:

nav:
  - index.md
  - Active Clients:
    - Overview: clients/index.md
  - Past Clients:
    - Overview: archive/index.md
  - Projects:
    - Overview: projects/index.md

Frontmatter Schema

Wire validates known frontmatter keys. For CRM data, use tags and sources for structured metadata:

---
title: Client Name
description: Brief context and industry
tags:
  - industry
  - status
sources:
  - https://example.com/client-news
---

Prompt Overrides

Write a _styleguide.md for client profiles. Lead with business context, not contact details. Track decisions and their rationale. Link to project deliverables and related client pages. Date every interaction note.

The Archive Layer

When a client relationship ends, move them from clients/ to archive/. Wire's redirect system handles the URL change. The page continues to enrich over time as news monitors their industry. If they come back, their file is already current.

Limitations

Wire does not handle tasks, deadlines, or pipeline stages. It is an archive and intelligence layer, not a project management tool. For pipelines, pair with Linear or Notion. Wire is where the knowledge lives. The task tracker is where the action items live.

The Knowledge Base use case covers the internal documentation side of this pattern, if your team needs both client records and operational documentation in the same system.

Quick Start

1

Create your config

Set up `wire.yml` with `noindex: true` and client-oriented nav. Add `clients/`, `archive/`, and `projects/` directories.

2

Write your first client profile

Use the frontmatter schema above as a template. Fill in title, description, tags, and at least one source URL. Wire will refuse to build incomplete records.

3

Gather industry intelligence

Run `python -m wire.chief news clients` to pull recent developments for each client's industry. Wire monitors and flags relevant changes automatically.

4

Preview and deploy

Run `python -m wire.build --serve` to preview your client archive locally. Deploy behind your VPN for team access.

Wire generates llms.txt and search_index.json automatically. Once deployed, you can ask any AI assistant to summarize your history with a specific client by pointing it at your archive, no RAG pipeline required.