Lightweight SQLite CRM

CRM-Lite — Lightweight SQLite CRM for Small Business

by hewi333 · MIT license · ★ 122 on GitHub · v1.0.0

CRM-Lite — Lightweight SQLite CRM for Small Business cover

Use when tracking customer interactions, managing leads, or building a lightweight CRM for small businesses without dedicated CRM software. Stores contacts, leads, activities, estimates, and communications in local SQLite.

---
name: crm-lite
description: "Use when tracking customer interactions, managing leads, or building a lightweight CRM for small businesses without dedicated CRM software. Stores contacts, leads, activities, estimates, and communications in local SQLite."
version: "1.0.0"
author: Hermes Agent
license: MIT
metadata:
  hermes:
    tags: [crm, sqlite, small-business, customer-management]
    related_skills: [estimator-engine, quickbooks-online, mailchimp-integration, stripe-payments, outlook-graph, small-business-website-spec]
---

# CRM-Lite — Lightweight SQLite CRM for Small Business

## Overview
A minimal, file-based CRM built on SQLite for non-technical small business owners. No server, no external dependencies, no auth complexity. Designed for agent-mediated use: the owner interacts via text message with the agent, which reads/writes this database.

## When to Use

Overview

Use when tracking customer interactions, managing leads, or building a lightweight CRM for small businesses without dedicated CRM software. Stores contacts, leads, activities, estimates, and communications in local SQLite.

Manual install (npx, ZIP)
Claude Codenpx skills add hewi333/Mom-n-Pop-Skills --skill crm-lite -g -a claude-code
Claude Code (degit)npx degit hewi333/Mom-n-Pop-Skills/skills/crm-lite#main ~/.claude/skills/crm-lite
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md6.1 KB
Read SKILL.md here
hewi333/main1 file shown
SKILL.md
Show the full text150 lines

CRM-Lite — Lightweight SQLite CRM for Small Business

Overview

A minimal, file-based CRM built on SQLite for non-technical small business owners. No server, no external dependencies, no auth complexity. Designed for agent-mediated use: the owner interacts via text message with the agent, which reads/writes this database.

When to Use

  • Small business (1-10 employees) with no existing CRM
  • Agent-mediated access — owners interact via chat/Telegram, not direct DB access
  • Lead tracking from website forms, referrals, email inquiries
  • Pipeline visibility — estimate sent → accepted/rejected → job scheduled → paid
  • Communication log — every email, call, text logged automatically

Don't Use For

  • Multi-user concurrent access with role-based permissions
  • Complex sales methodologies (MEDDIC, Challenger, etc.)
  • Real-time collaboration features
  • Integration with enterprise SSO/SCIM

Core Features

Data Model (SQLite: crm.db)
  1. customers — Core customer records

    • id (PK), name, email, phone, company, address, city, state, zip
    • lead_source, lead_status (new/qualified/estimate_sent/won/lost)
    • total_value, notes, created_at, updated_at
  2. leads — Inbound leads before qualification

    • id, source (website/referral/email/phone), contact_name
    • contact_email, contact_phone, company, property_address
    • sqft, ceiling_height, service_type, urgency
    • status (new/qualified/estimate_ready/scheduled/lost)
    • assigned_to, created_at, updated_at
  3. activities — Every touchpoint

    • id, customer_id (FK), lead_id (FK), activity_type (call/email/text/meeting/estimate_sent/estimate_accepted/estimate_rejected/job_scheduled/job_completed/invoice_sent/payment_received)
    • description, outcome, next_action, next_action_date
    • created_at, updated_at
  4. estimates — Estimate lifecycle

    • id, customer_id, lead_id, estimate_number, amount
    • status (draft/sent/accepted/rejected/expired)
    • sent_date, accepted_date, rejected_date, expires_date
    • line_items (JSON), notes, created_at, updated_at
  5. communications — Message log

    • id, customer_id, lead_id, direction (inbound/outbound)
    • channel (email/sms/telegram/phone), subject, body
    • sent_at, created_at
  6. tasks — Action items for owners

    • id, customer_id, lead_id, title, description
    • due_date, priority (low/medium/high/urgent), status (pending/in_progress/done)
    • assigned_to, created_at, updated_at

Quick Start

import sqlite3
from pathlib import Path

DB_PATH = Path("~/.hermes/crm/crm.db").expanduser()
DB_PATH.parent.mkdir(parents=True, exist_ok=True)

def init_db():
    conn = sqlite3.connect(DB_PATH)
    conn.execute("""
        CREATE TABLE IF NOT EXISTS customers (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            name TEXT NOT NULL, email TEXT, phone TEXT,
            company TEXT, address TEXT, city TEXT, state TEXT, zip TEXT,
            lead_source TEXT, lead_status TEXT DEFAULT 'new',
            total_value REAL DEFAULT 0, notes TEXT,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )
    """)
    # ... other tables
    conn.commit()
    return conn

Agent Integration Patterns

Create Lead from Website Form
User: "New lead from website: John Smith, john@email.com, 555-555-0123, 123 Main St [CITY] [STATE] [ZIP], 2500 sqft, service request"
Agent: Creates lead record, sets status=qualified, creates task for the owner to review
Log Estimate Sent
User: "Sent estimate #EST-0001-0042 to John Smith for $2,850"
Agent: Updates estimate status=sent, creates activity, creates task for follow-up in 3 days
Weekly Pipeline Report (Cron)
Agent: Queries all leads/customers, summarizes by stage, sends to the owner via Telegram

Common Pitfalls

  1. Forgetting to create indexes — Add indexes on customers.email, leads.status, activities.customer_id for query speed
  2. Not backing up — SQLite file is the entire DB; copy to S3/Drive daily via cron
  3. Schema drift — Use migrations (numbered SQL files) rather than ad-hoc ALTER TABLE
  4. Concurrent writes — SQLite handles concurrent reads, but writes serialize; keep transactions short

Verification Checklist

  • crm.db created with all 6 tables
  • Indexes on foreign keys and query columns
  • Agent can: create lead, log activity, update estimate status, create task
  • Weekly report cron outputs: new leads, estimates sent, conversion rate, pipeline value
  • Backup script copies DB to offsite location daily

One-Shot Recipes

"New lead from referral"
conn = init_db()
lead_id = conn.execute("""
    INSERT INTO leads (source, contact_name, contact_email, contact_phone, company, property_address, sqft, service_type, status)
    VALUES ('referral', 'Jane Doe', 'jane@example.com', '555-555-0199', 'Example Realty', '456 Palm Ave [CITY] [STATE] [ZIP]', 3200, 'service_request', 'qualified')
""").lastrowid
conn.commit()
"Get pipeline summary for weekly report"
summary = conn.execute("""
    SELECT
        COUNT(CASE WHEN lead_status='new' THEN 1 END) as new_leads,
        COUNT(CASE WHEN lead_status='estimate_sent' THEN 1 END) as estimates_out,
        COUNT(CASE WHEN lead_status='won' THEN 1 END) as won,
        SUM(CASE WHEN lead_status='won' THEN total_value ELSE 0 END) as revenue
    FROM customers
""").fetchone()
1---
2name: crm-lite
3description: "Use when tracking customer interactions, managing leads, or building a lightweight CRM for small businesses without dedicated CRM software. Stores contacts, leads, activities, estimates, and communications in local SQLite."
4version: "1.0.0"
5author: Hermes Agent
6license: MIT
7metadata:
8 hermes:
9 tags: [crm, sqlite, small-business, customer-management]
10 related_skills: [estimator-engine, quickbooks-online, mailchimp-integration, stripe-payments, outlook-graph, small-business-website-spec]
11---
12 
13# CRM-Lite — Lightweight SQLite CRM for Small Business
14 
15## Overview
16A minimal, file-based CRM built on SQLite for non-technical small business owners. No server, no external dependencies, no auth complexity. Designed for agent-mediated use: the owner interacts via text message with the agent, which reads/writes this database.
17 
18## When to Use
19- **Small business** (1-10 employees) with no existing CRM
20- **Agent-mediated access** — owners interact via chat/Telegram, not direct DB access
21- **Lead tracking** from website forms, referrals, email inquiries
22- **Pipeline visibility** — estimate sent → accepted/rejected → job scheduled → paid
23- **Communication log** — every email, call, text logged automatically
24 
25## Don't Use For
26- Multi-user concurrent access with role-based permissions
27- Complex sales methodologies (MEDDIC, Challenger, etc.)
28- Real-time collaboration features
29- Integration with enterprise SSO/SCIM
30 
31## Core Features
32 
33### Data Model (SQLite: `crm.db`)
341. **customers** — Core customer records
35 - `id` (PK), `name`, `email`, `phone`, `company`, `address`, `city`, `state`, `zip`
36 - `lead_source`, `lead_status` (new/qualified/estimate_sent/won/lost)
37 - `total_value`, `notes`, `created_at`, `updated_at`
38 
392. **leads** — Inbound leads before qualification
40 - `id`, `source` (website/referral/email/phone), `contact_name`
41 - `contact_email`, `contact_phone`, `company`, `property_address`
42 - `sqft`, `ceiling_height`, `service_type`, `urgency`
43 - `status` (new/qualified/estimate_ready/scheduled/lost)
44 - `assigned_to`, `created_at`, `updated_at`
45 
463. **activities** — Every touchpoint
47 - `id`, `customer_id` (FK), `lead_id` (FK), `activity_type` (call/email/text/meeting/estimate_sent/estimate_accepted/estimate_rejected/job_scheduled/job_completed/invoice_sent/payment_received)
48 - `description`, `outcome`, `next_action`, `next_action_date`
49 - `created_at`, `updated_at`
50 
514. **estimates** — Estimate lifecycle
52 - `id`, `customer_id`, `lead_id`, `estimate_number`, `amount`
53 - `status` (draft/sent/accepted/rejected/expired)
54 - `sent_date`, `accepted_date`, `rejected_date`, `expires_date`
55 - `line_items` (JSON), `notes`, `created_at`, `updated_at`
56 
575. **communications** — Message log
58 - `id`, `customer_id`, `lead_id`, `direction` (inbound/outbound)
59 - `channel` (email/sms/telegram/phone), `subject`, `body`
60 - `sent_at`, `created_at`
61 
626. **tasks** — Action items for owners
63 - `id`, `customer_id`, `lead_id`, `title`, `description`
64 - `due_date`, `priority` (low/medium/high/urgent), `status` (pending/in_progress/done)
65 - `assigned_to`, `created_at`, `updated_at`
66 
67## Quick Start
68 
69```python
70import sqlite3
71from pathlib import Path
72 
73DB_PATH = Path("~/.hermes/crm/crm.db").expanduser()
74DB_PATH.parent.mkdir(parents=True, exist_ok=True)
75 
76def init_db():
77 conn = sqlite3.connect(DB_PATH)
78 conn.execute("""
79 CREATE TABLE IF NOT EXISTS customers (
80 id INTEGER PRIMARY KEY AUTOINCREMENT,
81 name TEXT NOT NULL, email TEXT, phone TEXT,
82 company TEXT, address TEXT, city TEXT, state TEXT, zip TEXT,
83 lead_source TEXT, lead_status TEXT DEFAULT 'new',
84 total_value REAL DEFAULT 0, notes TEXT,
85 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
86 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
87 )
88 """)
89 # ... other tables
90 conn.commit()
91 return conn
92```
93 
94## Agent Integration Patterns
95 
96### Create Lead from Website Form
97```
98User: "New lead from website: John Smith, john@email.com, 555-555-0123, 123 Main St [CITY] [STATE] [ZIP], 2500 sqft, service request"
99Agent: Creates lead record, sets status=qualified, creates task for the owner to review
100```
101 
102### Log Estimate Sent
103```
104User: "Sent estimate #EST-0001-0042 to John Smith for $2,850"
105Agent: Updates estimate status=sent, creates activity, creates task for follow-up in 3 days
106```
107 
108### Weekly Pipeline Report (Cron)
109```
110Agent: Queries all leads/customers, summarizes by stage, sends to the owner via Telegram
111```
112 
113## Common Pitfalls
114 
1151. **Forgetting to create indexes** — Add indexes on `customers.email`, `leads.status`, `activities.customer_id` for query speed
1162. **Not backing up** — SQLite file is the entire DB; copy to S3/Drive daily via cron
1173. **Schema drift** — Use migrations (numbered SQL files) rather than ad-hoc ALTER TABLE
1184. **Concurrent writes** — SQLite handles concurrent reads, but writes serialize; keep transactions short
119 
120## Verification Checklist
121 
122- [ ] `crm.db` created with all 6 tables
123- [ ] Indexes on foreign keys and query columns
124- [ ] Agent can: create lead, log activity, update estimate status, create task
125- [ ] Weekly report cron outputs: new leads, estimates sent, conversion rate, pipeline value
126- [ ] Backup script copies DB to offsite location daily
127 
128## One-Shot Recipes
129 
130### "New lead from referral"
131```python
132conn = init_db()
133lead_id = conn.execute("""
134 INSERT INTO leads (source, contact_name, contact_email, contact_phone, company, property_address, sqft, service_type, status)
135 VALUES ('referral', 'Jane Doe', 'jane@example.com', '555-555-0199', 'Example Realty', '456 Palm Ave [CITY] [STATE] [ZIP]', 3200, 'service_request', 'qualified')
136""").lastrowid
137conn.commit()
138```
139 
140### "Get pipeline summary for weekly report"
141```python
142summary = conn.execute("""
143 SELECT
144 COUNT(CASE WHEN lead_status='new' THEN 1 END) as new_leads,
145 COUNT(CASE WHEN lead_status='estimate_sent' THEN 1 END) as estimates_out,
146 COUNT(CASE WHEN lead_status='won' THEN 1 END) as won,
147 SUM(CASE WHEN lead_status='won' THEN total_value ELSE 0 END) as revenue
148 FROM customers
149""").fetchone()
150```
View all files on GitHub →

Details

Version
1.0.0
License
MIT
Stars on the repo
★ 122
Checked
Source
hewi333/Mom-n-Pop-Skills ↗
Creator
hewi333 · 12 listings
View creator

Similar skills

See all →
AgentNEXUS Quick-Start Guidemsitarzewski/agency-agents · by msitarzewski> Get from zero to orchestrated multi-agent pipeline in 5 minutes.★ 154k GitHub starsSkillRaw Footage Cleanuphassancs91/claude-youtube-editor · by hassancs91Step 1 of the AI Video Editor pipeline — turn raw talking-head footage into a clean master cut. Use when the user wants to "clean cut", "cut the raw footage", "remove filler / dead air / bad takes", "tighten the pacing", produce cuts.json, run the cut editor, or render a cleaned preview/master for a video-N project in this repo. Covers audio extraction, AssemblyAI transcription, authoring cuts.json (keeps/cuts/fluff categorized), the cut policy (content-aggressive, pause-natural ~0.5s), QA + review docs, the local cut-editor UI, tight/natural previews, the final 4K60 render, and producing edited-transcript.json as the handoff to /make-tsx. Not for building TSX overlays (that is /make-tsx) or the raw TSX authoring rules (that is vidtsx-2d-generator).★ 330 GitHub starsSkillVocaloid Music Video BuilderEGSECDA/vocaloid-style-mv-pipeline · by EGSECDAMake an original animated music video (MV / PV) for a song from its audio file plus lyrics, in the Vocaloid / J-pop lyric-video tradition: 手書き/tegaki (V家手书, 手描きMV, ボカロPV), 文字PV and kinetic typography (リリックモーション, リリックビデオ, 歌詞動画, 歌词视频, 动态歌词), anime-illustration MVs with an original character — for any mood, from dark ballads to bright upbeat summer pop. Renders to MP4 with a deterministic Canvas2D/WebGL2 engine in a headless browser: JIZURA lyric motion, AI-generated art, optional Blender toon 3D, beat-locked editing, 9:16 vertical/Shorts version. Use it whenever the user wants a music video, MV, PV, lyric video or beat-synced animation for a song, e.g. make an MV for my song", "turn this track into a lyric video", "给这首歌做个MV/PV", "做个V家手书", "この曲のMVを作って", ボカロPV作って", "縦型ショートも" — even if they only give a .wav/.mp3 and say "make a cool video for it". Not for editing existing footage or clip compilations.★ 169 GitHub starsSkillConstruction Project Managerhewi333/Mom-n-Pop-Skills · by hewi333Construction company AI agent — orchestrates email (Google Workspace), project management (JobTread Pave API), and file routing for a construction business. Handles email triage, attachment routing to JobTread, project status, task management, and daily briefings via Telegram. Reference implementation for a construction/trades business with an existing email→Drive→PM pipeline.★ 122 GitHub starsSkillShort Video Pipelinehowznguyen/shorts-kit · by howznguyenOrchestrates one narrated vertical short (TikTok, YouTube Shorts, Reels) from idea to upload-ready hand-off files, in the fixed order idea, facts, flow and visual choice, brief, narration, TTS, lint, scenes, still review, render, cover, normalize, encode, hand-off. Use when the user says "make a video about X", "start a new short", "take this idea to a finished video", "what's the next step", "where was I on this video", or asks how the whole pipeline fits together. Also when the user gives a video or audio file (or a folder of clips) to edit: "edit this video", "dựng video này", a .mov/.mp4 path. Points at the skill and the SOUL section that governs each step.★ 69 GitHub starsAgentNEXUS Agent Promptsmsitarzewski/agency-agents · by msitarzewski> Ready-to-use prompt templates for activating any agent within the NEXUS pipeline. Copy, customize the [PLACEHOLDERS], and deploy.★ 154k GitHub stars

More from hewi333

SkillConstruction Project Managerhewi333/Mom-n-Pop-Skills · by hewi333Construction company AI agent — orchestrates email (Google Workspace), project management (JobTread Pave API), and file routing for a construction business. Handles email triage, attachment routing to JobTread, project status, task management, and daily briefings via Telegram. Reference implementation for a construction/trades business with an existing email→Drive→PM pipeline.★ 122 GitHub starsSkillService Pricing Calculatorhewi333/Mom-n-Pop-Skills · by hewi333Use when calculating service estimates for jobs. Computes pricing based on square footage, ceiling height, service type, travel distance, and severity tiers. Config-driven — plug in your own rate card.★ 122 GitHub starsSkillBusiness Financial Analyzerhewi333/Mom-n-Pop-Skills · by hewi333Analyze business financials from a QuickBooks CSV export. Identifies cost categories, drills down on areas to cut costs, flags low-margin jobs, and spots revenue opportunities. CSV import now, QuickBooks API wiring optional later. Designed for small business owners who don't read spreadsheets — agent translates the numbers into plain English.★ 122 GitHub starsSkillLead-to-Payment Pipelinehewi333/Mom-n-Pop-Skills · by hewi333Use when a new lead arrives (email, Telegram message, or website form) and needs to move through the full pipeline: qualify the lead, generate an estimate, get owner approval, create a payment link, draft a customer email for owner review, and track payment. This is the master flow that orchestrates estimator-engine, crm-lite, stripe-payments, himalaya (IMAP/SMTP), and quickbooks-online. Owner stays in the loop and approves before anything is sent or charged.★ 122 GitHub starsSkillMailchimp Integration Agenthewi333/Mom-n-Pop-Skills · by hewi333Use when integrating with Mailchimp for audience management, campaigns, and automation. Handles API key auth, audience segmentation, and campaign workflows.★ 122 GitHub starsSkillMailchimp Campaign Managerhewi333/Mom-n-Pop-Skills · by hewi333Draft and run Mailchimp email campaigns with AI-generated content, subject line A/B testing, and optimal send timing. Agent drafts the email + subject variants, owner approves in Telegram, agent creates the campaign in Mailchimp. Turns a dormant contact list into an active marketing channel.★ 122 GitHub stars