I built a static AI tools directory with 1,638 auto-generated pages — here's the full technical breakdown A developer built AsmiAI, a fully static AI tools directory with 236 reviewed tools and 1,638 auto-generated comparison pages, using Node.js and Python to generate 2,373 pages from JSON data files in under two minutes. The site, hosted on Cloudflare Pages, features a free AI chat advisor powered by Groq's Llama 3.1 that can only recommend tools from the directory. The developer optimized for AI discoverability by including machine-readable files like llms.txt and a JSON API endpoint. I've been building AsmiAI asmiai.xyz for the past 6 months — a fully static AI tools directory with 236 reviewed tools, 1,638 side-by-side comparison pages, and a free AI chat advisor. Zero database, zero framework, free hosting. Here's exactly how it works technically. Everything is generated from JSON data files at build time using Node.js and Python. One ./build-asmiai.sh command generates 2,373 pages in under 2 minutes and deploys to Cloudflare Pages. Each tool is a JSON file in data/tools/ { "name": "ChatGPT", "slug": "chatgpt", "category": "ai-chatbots" , "pricing": "Free / $20/mo", "free plan": true, "rating": 4.9 } The most interesting part — 1,638 comparison pages like /compare/chatgpt-vs-claude/ are generated automatically from the tool data. Every tool is compared against every other tool in the same category. The generator computes all valid pairs, skips reverse duplicates, and generates enriched HTML with: A floating chat widget on every page powered by Groq Llama 3.1 . The system prompt is grounded in all 236 tools — the AI can only recommend tools that actually exist in the directory. The tricky part: Groq free tier is 6,000 TPM. With 236 tools in the system prompt ~2,500 tokens , I only have room for 2-3 requests per minute. Solution: compact the tool context format from verbose pipe-delimited to just Name category, free/paid slug . Built for AI discoverability from the start: llms.txt — machine-readable site summary llms-full.txt — complete tool inventory /api/tools.json robots.txt allows