Skip to main content

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 metadata
  • scripts/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

CategoryToolsMonthly CostAnnual Cost
Website8£36.00£0.00
Self-Hosting9£10.00£0.00
Operational Tools8£127.76£180.00
Social Media9£0.00£0.00
Marketing Tools4£63.80£0.00
Design & Content2£56.00£0.00
Ad Spend1£0.00£0.00
Office & Coworking1£250.00£0.00
Uncategorised12--

Unmatched Tools (Need Creation)

These 4 tools exist in TwentyCRM but don't have documentation files yet:

  1. London Cycling Insta (Social Media) - Internal content project
  2. Cycling London Insta (Social Media) - Internal content project
  3. Resend (CRM) - Email API for transactional emails
  4. 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

  1. Export fresh CSV from TwentyCRM
  2. Run matching script: node scripts/match-csv-to-tools.js
  3. Review mapping: Check scripts/resources/tool-csv-mapping.json
  4. Update frontmatter: node scripts/add-frontmatter-to-tools.js
  5. Sync to Docusaurus: cd docusaurus && npm run build

Adding New Tool Categories

If a new category is added to TwentyCRM:

  1. Add category to categoryToTitle() mapping in sync-tools.cjs
  2. The build will automatically create the category directory and index page

Creating New Tools

  1. Create file: tools/new-tool.md
  2. Add frontmatter (copy from existing tool and modify)
  3. Write content
  4. Sync: cd docusaurus && npm run build
  5. The tool will appear in its category automatically

Adding New Sections (Prompts, Processes, etc.)

  1. Edit docusaurus/config/sections.ts
  2. Change section status from 'planned' to 'active'
  3. Create directory: docusaurus/docs/prompts/ (or whatever section)
  4. Add content files
  5. 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:

  1. Run npm run build (triggers prebuild hook)
  2. The prebuild hook runs sync-tools.cjs
  3. 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.ts for easier maintenance