Tool Categorization System
Date: 2025-01-06
Status: ✅ Implemented and tested
Summary
Tools are now organised by category with automatic cost tracking, renewal dates, and access information synced from TwentyCRM.
What Changed
1. Tool Metadata in Frontmatter
All tool files (tools/*.md) now include structured metadata:
---
title: Webflow
category: WEBSITE
categoryDisplay: Website
monthlyCost: 25
monthlyCurrency: GBP
annualCost: 0
annualCurrency: GBP
renewalDate: null
accountType:
- CLIENT_OWNED
- INTERNAL
- CLIENT_ACCESS
accessLink: https://webflow.com/dashboard
moreInfo: Currently using automates account, need to figure this one out
---
2. Categorised Structure
Tools are now organised into categories:
docs/tools/
├── website/
│ ├── index.md (category landing page)
│ ├── webflow.md
│ ├── gtm.md
│ └── ...
├── self-hosting/
│ ├── index.md
│ ├── n8n.md
│ ├── twentycrm.md
│ └── ...
├── operational-tools/
├── social-media/
├── marketing-tool/
├── design-content/
├── ad-spend/
├── office-coworking/
└── uncategorized/
3. Category Landing Pages
Each category has an auto-generated landing page (index.md) with:
- Summary table: Total tools, monthly cost, annual cost
- Tool list table: All tools with costs, account types, and login links
- Upcoming renewals: Next 5 renewals in that category
Example: /docs/tools/website/ shows all website-related tools with £36/month total cost.
4. Sections Configuration
New config file for managing documentation sections: docusaurus/config/sections.ts
This makes it easy to add new top-level sections like "Prompts" or "Processes" in future:
{
id: 'prompts',
label: 'Prompts',
dirName: 'prompts',
status: 'planned', // Change to 'active' when ready
position: 6,
description: 'Starter prompts for common projects',
}
Scripts Created
1. scripts/match-csv-to-tools.js
Matches tools in TwentyCRM CSV export to workspace files.
Usage:
node scripts/match-csv-to-tools.js
Output:
scripts/resources/tool-csv-mapping.json- Matched tools with metadatascripts/resources/unmatched-tools.json- Tools that need creating
Results: 39/44 tools matched, 4 need creation
2. scripts/add-frontmatter-to-tools.js
Adds/updates frontmatter metadata in tool files from CSV mapping.
Usage:
# Dry run (preview only)
node scripts/add-frontmatter-to-tools.js --dry-run
# Actually update files
node scripts/add-frontmatter-to-tools.js
Safety: Creates backups in scripts/resources/tool-backups/ before modifying files.
3. Updated docusaurus/scripts/sync-tools.cjs
Enhanced to:
- Parse frontmatter from source files
- Organise tools by category into subdirectories
- Generate category index pages automatically
- Pass through all metadata to Docusaurus
Tool Categories
| Category | Tools | Monthly Cost | Annual Cost |
|---|---|---|---|
| Website | 8 | £36.00 | £0.00 |
| Self-Hosting | 9 | £10.00 | £0.00 |
| Operational Tools | 8 | £127.76 | £180.00 |
| Social Media | 9 | £0.00 | £0.00 |
| Marketing Tools | 4 | £63.80 | £0.00 |
| Design & Content | 2 | £56.00 | £0.00 |
| Ad Spend | 1 | £0.00 | £0.00 |
| Office & Coworking | 1 | £250.00 | £0.00 |
| Uncategorised | 12 | - | - |
Unmatched Tools (Need Creation)
These 4 tools exist in TwentyCRM but don't have documentation files yet:
- London Cycling Insta (Social Media) - Internal content project
- Cycling London Insta (Social Media) - Internal content project
- Resend (CRM) - Email API for transactional emails
- Image Compressor (Design & Content) - Pacing's image compression tool
To create these, add new .md files in tools/ with appropriate frontmatter.
Future Updates
Updating Tool Metadata from CSV
- Export fresh CSV from TwentyCRM
- Run matching script:
node scripts/match-csv-to-tools.js - Review mapping: Check
scripts/resources/tool-csv-mapping.json - Update frontmatter:
node scripts/add-frontmatter-to-tools.js - Sync to Docusaurus:
cd docusaurus && npm run build
Adding New Tool Categories
If a new category is added to TwentyCRM:
- Add category to
categoryToTitle()mapping insync-tools.cjs - The build will automatically create the category directory and index page
Creating New Tools
- Create file:
tools/new-tool.md - Add frontmatter (copy from existing tool and modify)
- Write content
- Sync:
cd docusaurus && npm run build - The tool will appear in its category automatically
Adding New Sections (Prompts, Processes, etc.)
- Edit
docusaurus/config/sections.ts - Change section status from
'planned'to'active' - Create directory:
docusaurus/docs/prompts/(or whatever section) - Add content files
- Rebuild site
The sidebar will automatically update.
File Locations
- Source tool files:
tools/*.md(edit these) - Generated tool docs:
docusaurus/docs/tools/*/(auto-generated, don't edit) - CSV mapping:
scripts/resources/tool-csv-mapping.json - Sections config:
docusaurus/config/sections.ts - Sidebar config:
docusaurus/sidebars.ts - Sync script:
docusaurus/scripts/sync-tools.cjs
Testing
Local Development
cd docusaurus
npm start
# Visit http://127.0.0.1:3000/
Production Build
cd docusaurus
npm run build
npm run serve
Deployment
Push to GitHub main branch. Cloudflare Pages will automatically:
- Run
npm run build(triggersprebuildhook) - The
prebuildhook runssync-tools.cjs - Builds and deploys to https://docs.pacing.agency
Notes
- Frontmatter is the source of truth for tool metadata
- Category index pages regenerate on every build
- To bulk-update costs/renewals, export CSV from TwentyCRM and re-run scripts
- Sidebar structure is now managed via
config/sections.tsfor easier maintenance