axis-crm 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +122 -0
- package/cli/index.js +106 -0
- package/package.json +36 -0
- package/template/CLAUDE.md +38 -0
- package/template/CRM Dashboard.md +53 -0
- package/template/automations/README.md +62 -0
- package/template/automations/client-research.json +383 -0
- package/template/automations/fireflies-to-crm.json +306 -0
- package/template/clients/acme-consulting/README.md +43 -0
- package/template/clients/acme-consulting/communication/2026-03-01-cena-dohodnuta.md +24 -0
- package/template/clients/acme-consulting/contacts/jana-novakova.md +17 -0
- package/template/clients/acme-consulting/contacts/tomas-dvorak.md +16 -0
- package/template/clients/acme-consulting/files/faktury/.gitkeep +0 -0
- package/template/clients/acme-consulting/files/nabidky/.gitkeep +0 -0
- package/template/clients/acme-consulting/files/smlouvy/.gitkeep +0 -0
- package/template/clients/acme-consulting/meetings/2026-02-10-kickoff.md +25 -0
- package/template/clients/acme-consulting/meetings/2026-03-15-progress-review.md +25 -0
- package/template/clients/acme-consulting/projects/web-redesign/README.md +53 -0
- package/template/clients/acme-consulting/projects/web-redesign/deliverables/.gitkeep +0 -0
- package/template/clients/acme-consulting/projects/web-redesign/notes/.gitkeep +0 -0
- package/template/clients/acme-consulting/projects/web-redesign/zadani.md +33 -0
- package/template/dashboards/client-overview.md +25 -0
- package/template/dashboards/hot-leads.md +23 -0
- package/template/dashboards/pipeline.md +52 -0
- package/template/leads/bytovy-architekt-kovar.md +22 -0
- package/template/leads/green-energy-as.md +22 -0
- package/template/leads/nova-digital-sro.md +22 -0
- package/template/leads/restaurace-u-zlateho-lva.md +23 -0
- package/template/leads/techpro-solutions.md +23 -0
- package/template/rules/fields.md +45 -0
- package/template/rules/lifecycle.md +51 -0
- package/template/rules/scoring.md +43 -0
- package/template/rules/structure.md +82 -0
- package/template/scripts/convert-to-client.sh +133 -0
- package/template/scripts/new-lead.sh +68 -0
- package/template/scripts/new-project.sh +69 -0
- package/template/scripts/validate.sh +149 -0
- package/template/templates/client/README.md +31 -0
- package/template/templates/client/communication/.gitkeep +0 -0
- package/template/templates/client/contacts/.gitkeep +0 -0
- package/template/templates/client/files/.gitkeep +0 -0
- package/template/templates/client/files/faktury/.gitkeep +0 -0
- package/template/templates/client/files/nabidky/.gitkeep +0 -0
- package/template/templates/client/files/smlouvy/.gitkeep +0 -0
- package/template/templates/client/meetings/.gitkeep +0 -0
- package/template/templates/client/projects/.gitkeep +0 -0
- package/template/templates/communication.md +17 -0
- package/template/templates/contact.md +14 -0
- package/template/templates/lead.md +20 -0
- package/template/templates/meeting.md +17 -0
- package/template/templates/project/README.md +34 -0
- package/template/templates/project/deliverables/.gitkeep +0 -0
- package/template/templates/project/notes/.gitkeep +0 -0
- package/template/templates/project/zadani.md +19 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Patrik Schick
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Axis CRM
|
|
2
|
+
|
|
3
|
+
A git-based CRM for freelancers and small teams.
|
|
4
|
+
|
|
5
|
+
Axis CRM stores all your client data as Markdown files with YAML frontmatter. It works in any text editor, is optimized for [Obsidian](https://obsidian.md) with the Dataview plugin, and supports automation through n8n workflows. All data is versioned in git — no database, no vendor lock-in.
|
|
6
|
+
|
|
7
|
+
## Why
|
|
8
|
+
|
|
9
|
+
Most CRMs are built for sales teams of 50+. If you're a freelancer or a small agency, you don't need Salesforce — you need a system that's fast, local, and doesn't cost $50/month per seat.
|
|
10
|
+
|
|
11
|
+
Axis CRM gives you:
|
|
12
|
+
- **Full ownership** — your data lives in a git repo, not someone else's server
|
|
13
|
+
- **Version history** — every change is a commit, every deleted lead is recoverable
|
|
14
|
+
- **Markdown-native** — works with Obsidian, VS Code, Vim, or any editor
|
|
15
|
+
- **Automation-ready** — n8n workflows for meeting transcripts and client research
|
|
16
|
+
- **AI-friendly** — CLAUDE.md included, works with Claude Code and other AI tools out of the box
|
|
17
|
+
|
|
18
|
+
## Structure
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
axis-crm/
|
|
22
|
+
clients/ # each client = a folder
|
|
23
|
+
acme-consulting/ # demo client
|
|
24
|
+
README.md # client overview (status, contacts, rates)
|
|
25
|
+
contacts/ # people at the company
|
|
26
|
+
meetings/ # meeting notes (auto-filled from Fireflies)
|
|
27
|
+
projects/ # project folders (scope, briefs, deliverables)
|
|
28
|
+
communication/ # key decisions and agreements
|
|
29
|
+
files/ # contracts, proposals, invoices
|
|
30
|
+
leads/ # each lead = a single .md file
|
|
31
|
+
templates/ # templates for all record types
|
|
32
|
+
rules/ # lifecycle, scoring, field definitions
|
|
33
|
+
scripts/ # shell scripts for common operations
|
|
34
|
+
automations/ # n8n workflow exports (JSON)
|
|
35
|
+
dashboards/ # Obsidian Dataview dashboards
|
|
36
|
+
CRM Dashboard.md # main dashboard
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Quick Start
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npx axis-crm init
|
|
43
|
+
cd crm
|
|
44
|
+
git init && git add -A && git commit -m "init: axis-crm"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
That's it. You have a working CRM.
|
|
48
|
+
|
|
49
|
+
Open in [Obsidian](https://obsidian.md) (install [Dataview](https://github.com/blacksmithgu/obsidian-dataview) plugin) and open `CRM Dashboard.md` to see your pipeline.
|
|
50
|
+
|
|
51
|
+
Create your first lead:
|
|
52
|
+
```bash
|
|
53
|
+
./scripts/new-lead.sh "Acme Corp"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Or clone manually:
|
|
57
|
+
```bash
|
|
58
|
+
git clone https://github.com/PatrikSchick-AI/axis-crm.git
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Scripts
|
|
62
|
+
|
|
63
|
+
| Script | Description | Usage |
|
|
64
|
+
| --- | --- | --- |
|
|
65
|
+
| `new-lead.sh` | Create a new lead from template | `./scripts/new-lead.sh "Company Name"` |
|
|
66
|
+
| `convert-to-client.sh` | Convert a lead to a full client folder | `./scripts/convert-to-client.sh company-slug` |
|
|
67
|
+
| `new-project.sh` | Create a new project for a client | `./scripts/new-project.sh client-slug "Project Name"` |
|
|
68
|
+
| `validate.sh` | Validate all leads and clients | `./scripts/validate.sh` |
|
|
69
|
+
|
|
70
|
+
All scripts support `--help` or will prompt interactively when run without flags.
|
|
71
|
+
|
|
72
|
+
## Lead Lifecycle
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
new → enriched → qualified → contacted → responded → opportunity → client
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Each stage has required fields and a score threshold. Leads are scored 0-100 based on data completeness, industry fit, and engagement. Details in `rules/lifecycle.md` and `rules/scoring.md`.
|
|
79
|
+
|
|
80
|
+
## Automations
|
|
81
|
+
|
|
82
|
+
Two n8n workflows are included as importable JSON:
|
|
83
|
+
|
|
84
|
+
- **Meeting to CRM** — Fireflies webhook triggers automatic meeting notes saved to the client folder. Uses AI (Claude) to identify the client, extract action items, and generate a summary. Supports upsert (won't fail on duplicate meetings).
|
|
85
|
+
|
|
86
|
+
- **Client Research** — Send a company name + URL, get back a full client profile with web scrape, AI analysis, and ARES verification (Czech business registry). Calculates a lead score automatically.
|
|
87
|
+
|
|
88
|
+
Setup instructions in [`automations/README.md`](automations/README.md).
|
|
89
|
+
|
|
90
|
+
## Dashboards
|
|
91
|
+
|
|
92
|
+
Requires Obsidian + [Dataview plugin](https://github.com/blacksmithgu/obsidian-dataview).
|
|
93
|
+
|
|
94
|
+
| Dashboard | Shows |
|
|
95
|
+
| --- | --- |
|
|
96
|
+
| `CRM Dashboard.md` | Active clients, hot leads, pipeline summary, recent meetings |
|
|
97
|
+
| `dashboards/pipeline.md` | Leads grouped by lifecycle stage |
|
|
98
|
+
| `dashboards/hot-leads.md` | Leads with score > 60 |
|
|
99
|
+
| `dashboards/client-overview.md` | All clients with status and priority |
|
|
100
|
+
|
|
101
|
+
## Client Rates
|
|
102
|
+
|
|
103
|
+
Each client can track billing rates in their frontmatter:
|
|
104
|
+
|
|
105
|
+
```yaml
|
|
106
|
+
hourly_rate: 100
|
|
107
|
+
manday_rate: 800
|
|
108
|
+
currency: 'USD'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
This makes it easy to query across clients with Dataview (e.g., "show me all clients sorted by hourly rate").
|
|
112
|
+
|
|
113
|
+
## Rules
|
|
114
|
+
|
|
115
|
+
- A lead is a file. A client is a folder. Conversion is one-way.
|
|
116
|
+
- Lead scoring: 0-100, thresholds define when a lead is ready for outreach.
|
|
117
|
+
- All records use YAML frontmatter. Required fields depend on the lifecycle stage.
|
|
118
|
+
- Details: [`rules/`](rules/)
|
|
119
|
+
|
|
120
|
+
## License
|
|
121
|
+
|
|
122
|
+
MIT
|
package/cli/index.js
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
|
|
6
|
+
const TEMPLATE_DIR = path.join(__dirname, "..", "template");
|
|
7
|
+
const args = process.argv.slice(2);
|
|
8
|
+
const command = args[0] || "init";
|
|
9
|
+
|
|
10
|
+
const HELP = `
|
|
11
|
+
axis-crm — Git-based CRM for freelancers and small teams
|
|
12
|
+
|
|
13
|
+
Usage:
|
|
14
|
+
npx axis-crm init [directory] Create a new CRM in the given directory (default: ./crm)
|
|
15
|
+
npx axis-crm --help Show this help message
|
|
16
|
+
|
|
17
|
+
Examples:
|
|
18
|
+
npx axis-crm init Creates ./crm with full CRM structure
|
|
19
|
+
npx axis-crm init my-business Creates ./my-business with full CRM structure
|
|
20
|
+
|
|
21
|
+
After init:
|
|
22
|
+
cd crm
|
|
23
|
+
git init
|
|
24
|
+
./scripts/new-lead.sh "First Lead Inc"
|
|
25
|
+
# Open in Obsidian for dashboards (install Dataview plugin)
|
|
26
|
+
|
|
27
|
+
More info: https://github.com/PatrikSchick-AI/axis-crm
|
|
28
|
+
`;
|
|
29
|
+
|
|
30
|
+
if (command === "--help" || command === "-h" || command === "help") {
|
|
31
|
+
console.log(HELP);
|
|
32
|
+
process.exit(0);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (command === "--version" || command === "-v") {
|
|
36
|
+
const pkg = require("../package.json");
|
|
37
|
+
console.log(pkg.version);
|
|
38
|
+
process.exit(0);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (command !== "init") {
|
|
42
|
+
console.error(`Unknown command: ${command}`);
|
|
43
|
+
console.error('Run "npx axis-crm --help" for usage.');
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const targetName = args[1] || "crm";
|
|
48
|
+
const targetDir = path.resolve(process.cwd(), targetName);
|
|
49
|
+
|
|
50
|
+
if (fs.existsSync(targetDir) && fs.readdirSync(targetDir).length > 0) {
|
|
51
|
+
console.error(
|
|
52
|
+
`Error: Directory "${targetName}" already exists and is not empty.`,
|
|
53
|
+
);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function copyDir(src, dest) {
|
|
58
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
59
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
60
|
+
|
|
61
|
+
for (const entry of entries) {
|
|
62
|
+
const srcPath = path.join(src, entry.name);
|
|
63
|
+
const destPath = path.join(dest, entry.name);
|
|
64
|
+
|
|
65
|
+
if (entry.isDirectory()) {
|
|
66
|
+
copyDir(srcPath, destPath);
|
|
67
|
+
} else {
|
|
68
|
+
fs.copyFileSync(srcPath, destPath);
|
|
69
|
+
// Preserve executable permissions for scripts
|
|
70
|
+
if (entry.name.endsWith(".sh")) {
|
|
71
|
+
fs.chmodSync(destPath, 0o755);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
console.log(`\n Creating Axis CRM in ./${targetName}...\n`);
|
|
78
|
+
|
|
79
|
+
copyDir(TEMPLATE_DIR, targetDir);
|
|
80
|
+
|
|
81
|
+
// Count created files
|
|
82
|
+
let fileCount = 0;
|
|
83
|
+
function countFiles(dir) {
|
|
84
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
85
|
+
for (const entry of entries) {
|
|
86
|
+
if (entry.isDirectory()) {
|
|
87
|
+
countFiles(path.join(dir, entry.name));
|
|
88
|
+
} else {
|
|
89
|
+
fileCount++;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
countFiles(targetDir);
|
|
94
|
+
|
|
95
|
+
console.log(` Done! ${fileCount} files created.\n`);
|
|
96
|
+
console.log(" Next steps:\n");
|
|
97
|
+
console.log(` cd ${targetName}`);
|
|
98
|
+
console.log(" git init");
|
|
99
|
+
console.log(' git add -A && git commit -m "init: axis-crm"');
|
|
100
|
+
console.log(' ./scripts/new-lead.sh "First Lead Inc"');
|
|
101
|
+
console.log("");
|
|
102
|
+
console.log(" Open in Obsidian for dashboards (install Dataview plugin).");
|
|
103
|
+
console.log(" Open CLAUDE.md to use with AI coding agents.");
|
|
104
|
+
console.log("");
|
|
105
|
+
console.log(" Docs: https://github.com/PatrikSchick-AI/axis-crm");
|
|
106
|
+
console.log("");
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "axis-crm",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A git-based CRM for freelancers and small teams. Markdown + YAML + Obsidian + n8n.",
|
|
5
|
+
"bin": {
|
|
6
|
+
"axis-crm": "./cli/index.js"
|
|
7
|
+
},
|
|
8
|
+
"files": [
|
|
9
|
+
"cli/",
|
|
10
|
+
"template/",
|
|
11
|
+
"LICENSE",
|
|
12
|
+
"README.md"
|
|
13
|
+
],
|
|
14
|
+
"keywords": [
|
|
15
|
+
"crm",
|
|
16
|
+
"markdown",
|
|
17
|
+
"obsidian",
|
|
18
|
+
"freelancer",
|
|
19
|
+
"git",
|
|
20
|
+
"n8n",
|
|
21
|
+
"automation",
|
|
22
|
+
"lead-management",
|
|
23
|
+
"yaml",
|
|
24
|
+
"cli"
|
|
25
|
+
],
|
|
26
|
+
"author": "Patrik Schick <info@patrikschick.com> (https://patrikschick.com)",
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/PatrikSchick-AI/axis-crm.git"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://github.com/PatrikSchick-AI/axis-crm",
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "https://github.com/PatrikSchick-AI/axis-crm/issues"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
Axis CRM — git-based CRM system. Markdown files with YAML frontmatter, versioned in git.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
- `clients/` — each client = a folder (README.md, contacts/, meetings/, projects/, communication/, files/)
|
|
8
|
+
- `leads/` — each lead = a single .md file
|
|
9
|
+
- `templates/` — templates for all record types
|
|
10
|
+
- `rules/` — lifecycle, scoring, field definitions, folder structure
|
|
11
|
+
- `scripts/` — new-lead.sh, convert-to-client.sh, new-project.sh, validate.sh
|
|
12
|
+
- `automations/` — n8n workflow JSON exports
|
|
13
|
+
- `dashboards/` — Obsidian Dataview dashboards
|
|
14
|
+
|
|
15
|
+
## Conventions
|
|
16
|
+
|
|
17
|
+
- Code, commits, branches: English
|
|
18
|
+
- Commit messages: `feat:`, `fix:`, `docs:`, `chore:`
|
|
19
|
+
- YAML frontmatter on every .md file
|
|
20
|
+
- Never use emoji as icons — use SVG icons (Lucide, Heroicons)
|
|
21
|
+
|
|
22
|
+
## Rules
|
|
23
|
+
|
|
24
|
+
- A lead is a file. A client is a folder.
|
|
25
|
+
- Convert lead to client: `scripts/convert-to-client.sh slug`
|
|
26
|
+
- Create new lead: `scripts/new-lead.sh "Company Name"`
|
|
27
|
+
- Validate data: `scripts/validate.sh`
|
|
28
|
+
- Lead lifecycle: new → enriched → qualified → contacted → responded → opportunity → client
|
|
29
|
+
- Scoring: 0-100, thresholds in `rules/scoring.md`
|
|
30
|
+
- Client rates: `hourly_rate`, `manday_rate`, `currency` fields in client README.md
|
|
31
|
+
|
|
32
|
+
## Build & Check
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
./scripts/validate.sh # Validate all leads + clients
|
|
36
|
+
./scripts/validate.sh leads # Leads only
|
|
37
|
+
./scripts/validate.sh clients # Clients only
|
|
38
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: CRM Dashboard
|
|
3
|
+
type: dashboard
|
|
4
|
+
tags: [dashboard, crm]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# CRM Dashboard
|
|
8
|
+
|
|
9
|
+
## Quick links
|
|
10
|
+
|
|
11
|
+
- [[dashboards/pipeline|Lead Pipeline]]
|
|
12
|
+
- [[dashboards/hot-leads|Hot Leads]]
|
|
13
|
+
- [[dashboards/client-overview|Client Overview]]
|
|
14
|
+
- [[rules/lifecycle|Lifecycle Rules]]
|
|
15
|
+
- [[rules/scoring|Scoring Rules]]
|
|
16
|
+
|
|
17
|
+
## Active Clients
|
|
18
|
+
|
|
19
|
+
```dataview
|
|
20
|
+
TABLE status, priority, industry
|
|
21
|
+
FROM "clients"
|
|
22
|
+
WHERE type = "client" AND (status = "active" OR status = "active-partnership" OR status = "in-progress")
|
|
23
|
+
SORT priority DESC
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Hot Leads (score > 60)
|
|
27
|
+
|
|
28
|
+
```dataview
|
|
29
|
+
TABLE status, email, score, source, campaign
|
|
30
|
+
FROM "leads"
|
|
31
|
+
WHERE type = "lead" AND score > 60
|
|
32
|
+
SORT score DESC
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Lead Pipeline Summary
|
|
36
|
+
|
|
37
|
+
```dataview
|
|
38
|
+
TABLE WITHOUT ID status AS "Status", length(rows) AS "Count"
|
|
39
|
+
FROM "leads"
|
|
40
|
+
WHERE type = "lead"
|
|
41
|
+
GROUP BY status
|
|
42
|
+
SORT status ASC
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Recent Meetings
|
|
46
|
+
|
|
47
|
+
```dataview
|
|
48
|
+
TABLE date, attendees
|
|
49
|
+
FROM "clients"
|
|
50
|
+
WHERE type = "meeting"
|
|
51
|
+
SORT date DESC
|
|
52
|
+
LIMIT 10
|
|
53
|
+
```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Automations
|
|
2
|
+
|
|
3
|
+
Axis CRM supports two n8n workflows for CRM process automation.
|
|
4
|
+
|
|
5
|
+
## Workflows
|
|
6
|
+
|
|
7
|
+
### 1. Meeting to CRM (`fireflies-to-crm.json`)
|
|
8
|
+
|
|
9
|
+
Automatically saves meeting notes to the client folder in the repo.
|
|
10
|
+
|
|
11
|
+
**Flow:** Fireflies webhook → fetch transcript → data extraction → AI client identification → build Markdown → upsert to GitHub (SHA strategy) → notification
|
|
12
|
+
|
|
13
|
+
- 14 nodes
|
|
14
|
+
- Uses upsert strategy (SHA check before writing) — safe for repeated execution
|
|
15
|
+
- Automatically creates the client folder if it doesn't exist
|
|
16
|
+
|
|
17
|
+
### 2. Client Research (`client-research.json`)
|
|
18
|
+
|
|
19
|
+
Automatically performs company research — web scrape, AI analysis, ARES verification.
|
|
20
|
+
|
|
21
|
+
**Flow:** webhook → web scrape → text and contact extraction → AI analysis → ARES lookup (Czech companies) → build CRM output → GitHub commit → notification
|
|
22
|
+
|
|
23
|
+
- 13 nodes
|
|
24
|
+
- For Czech companies, automatically verifies ICO in ARES
|
|
25
|
+
- Result is saved as README.md in the client folder
|
|
26
|
+
|
|
27
|
+
## Setup
|
|
28
|
+
|
|
29
|
+
1. Import the JSON file into n8n (Settings → Import Workflow)
|
|
30
|
+
2. Create credentials (see below)
|
|
31
|
+
3. In each workflow node, update:
|
|
32
|
+
- Repo name: `your-username/axis-crm`
|
|
33
|
+
- Branch: `main` (or your CRM branch)
|
|
34
|
+
- Webhook URL in Fireflies settings
|
|
35
|
+
4. For Meeting to CRM: set the webhook URL in Fireflies (Settings → Webhooks → Transcription Complete)
|
|
36
|
+
5. Activate the workflow
|
|
37
|
+
|
|
38
|
+
## Required credentials
|
|
39
|
+
|
|
40
|
+
| Credential | Type in n8n | Where to get |
|
|
41
|
+
| -------------- | ---------------- | ----------------------------------- |
|
|
42
|
+
| Fireflies API | Fireflies API | https://app.fireflies.ai/integrations |
|
|
43
|
+
| Anthropic API | Anthropic API | https://console.anthropic.com |
|
|
44
|
+
| GitHub API | GitHub API | https://github.com/settings/tokens |
|
|
45
|
+
|
|
46
|
+
## Testing
|
|
47
|
+
|
|
48
|
+
### Meeting to CRM
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
curl -X POST https://YOUR_N8N_URL/webhook/axis-crm-meeting \
|
|
52
|
+
-H "Content-Type: application/json" \
|
|
53
|
+
-d '{"meetingId": "your-fireflies-meeting-id"}'
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Client Research
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
curl -X POST https://YOUR_N8N_URL/webhook/axis-crm-research \
|
|
60
|
+
-H "Content-Type: application/json" \
|
|
61
|
+
-d '{"company": "Firma s.r.o.", "website": "https://firma.cz"}'
|
|
62
|
+
```
|