{
	"date": "2026-09-27",
	"baseline": "01da451e5c7569297d8f1ec93debaa55297ad639",
	"repository": "https://github.com/theopenco/llmgateway",
	"scope": "Marketing visible in the repository through 27 September 2026, supplemented by authorized non-financial observations from Search Console, PostHog and the admin Audience panel. Not a complete account of off-repository campaigns or causal business outcomes.",
	"boundary": "Implemented means present in source, not independently verified as live. The homepage refresh, shared marketing claims and screenshot family were being edited by another tab; these are explicitly local work. Historical launch copy is not a current pricing or availability promise.",
	"inventory": [
		{
			"path": "apps/code/src/content/comparisons/alibaba-qwen-coding.md",
			"group": "comparisons",
			"title": "DevPass vs Alibaba Qwen Coding Plan",
			"date": "2026-06-02"
		},
		{
			"path": "apps/code/src/content/comparisons/cursor.md",
			"group": "comparisons",
			"title": "DevPass vs Cursor",
			"date": "2026-06-14"
		},
		{
			"path": "apps/code/src/content/comparisons/firepass.md",
			"group": "comparisons",
			"title": "DevPass vs FirePass by Fireworks",
			"date": "2026-06-02"
		},
		{
			"path": "apps/code/src/content/comparisons/opencode-go.md",
			"group": "comparisons",
			"title": "DevPass vs OpenCode Go",
			"date": "2026-08-24"
		},
		{
			"path": "apps/code/src/content/comparisons/opencode-zen.md",
			"group": "comparisons",
			"title": "DevPass vs OpenCode Zen",
			"date": "2026-06-02"
		},
		{
			"path": "apps/code/src/content/comparisons/z-ai-glm-coding-plan.md",
			"group": "comparisons",
			"title": "DevPass vs z.ai GLM Coding Plan",
			"date": "2026-06-02"
		},
		{
			"path": "apps/ui/src/content/blog/2025-01-25-unified-ai-gateway.md",
			"group": "blog",
			"title": "Beyond Proxies: Why Enterprises Need a Unified AI Gateway",
			"date": "2026-01-25"
		},
		{
			"path": "apps/ui/src/content/blog/2025-01-25-what-is-an-llm-gateway.md",
			"group": "blog",
			"title": "What is an LLM Gateway?",
			"date": "2026-01-25"
		},
		{
			"path": "apps/ui/src/content/blog/2025-04-12-introducing-llm-gateway.md",
			"group": "blog",
			"title": "Introducing LLM Gateway",
			"date": "2025-04-12"
		},
		{
			"path": "apps/ui/src/content/blog/2025-05-01-self-host-llm-gateway.md",
			"group": "blog",
			"title": "How to Self-Host LLM Gateway",
			"date": "2025-05-01"
		},
		{
			"path": "apps/ui/src/content/blog/2025-05-10-custom-providers.md",
			"group": "blog",
			"title": "Custom OpenAI-Compatible Providers Are Now Supported",
			"date": "2025-05-10"
		},
		{
			"path": "apps/ui/src/content/blog/2025-09-08-how-configure-claude-code-with-llmgateway.md",
			"group": "blog",
			"title": "How to Configure Claude Code to Use Any Model via LLM Gateway",
			"date": "2025-09-08"
		},
		{
			"path": "apps/ui/src/content/blog/2025-10-14-introducing-llmgateway-playground.md",
			"group": "blog",
			"title": "Introducing LLM Gateway Chat — Test 280+ Models in One Interface",
			"date": "2025-10-14"
		},
		{
			"path": "apps/ui/src/content/blog/2025-11-28-black-friday-credits-promo.md",
			"group": "blog",
			"title": "Black Friday at LLM Gateway – 50% Off Credits",
			"date": "2025-11-28"
		},
		{
			"path": "apps/ui/src/content/blog/2025-12-01-cyber-monday-credits-promo.md",
			"group": "blog",
			"title": "Cyber Monday at LLM Gateway – 50% Off Credits",
			"date": "2025-12-01"
		},
		{
			"path": "apps/ui/src/content/blog/2025-12-18-q4-2025.md",
			"group": "blog",
			"title": "Quarter 4 2025: Major Platform Updates",
			"date": "2025-12-18"
		},
		{
			"path": "apps/ui/src/content/blog/2025-12-27-nextjs-on-gcp.md",
			"group": "blog",
			"title": "Deploying Next.js on GCP",
			"date": "2025-12-27"
		},
		{
			"path": "apps/ui/src/content/blog/2026-02-03-why-your-ai-app-needs-a-gateway.md",
			"group": "blog",
			"title": "Why Your AI App Needs a Gateway Layer",
			"date": "2026-02-03"
		},
		{
			"path": "apps/ui/src/content/blog/2026-02-05-hidden-cost-of-llm-vendor-lock-in.md",
			"group": "blog",
			"title": "The Hidden Cost of LLM Vendor Lock-in",
			"date": "2026-02-05"
		},
		{
			"path": "apps/ui/src/content/blog/2026-02-08-getting-started-in-5-minutes.md",
			"group": "blog",
			"title": "Getting Started with LLM Gateway in 5 Minutes",
			"date": "2026-02-08"
		},
		{
			"path": "apps/ui/src/content/blog/2026-02-10-alibaba-cloud-qwen-models-20-percent-off.md",
			"group": "blog",
			"title": "20% Off All Alibaba Cloud Qwen Models on LLM Gateway",
			"date": "2026-02-10"
		},
		{
			"path": "apps/ui/src/content/blog/2026-02-11-openai-vs-anthropic-vs-google-cost-comparison.md",
			"group": "blog",
			"title": "OpenAI vs Anthropic vs Google: Real Cost Comparison 2026",
			"date": "2026-02-11"
		},
		{
			"path": "apps/ui/src/content/blog/2026-02-14-cut-llm-costs-with-request-routing.md",
			"group": "blog",
			"title": "How We Cut Our LLM Costs 60% With Request Routing",
			"date": "2026-02-14"
		},
		{
			"path": "apps/ui/src/content/blog/2026-03-23-q1-2026.md",
			"group": "blog",
			"title": "Q1 2026: Video Gen, Image Studio & Enterprise Features",
			"date": "2026-03-23"
		},
		{
			"path": "apps/ui/src/content/blog/2026-03-28-deepseek-discounts-on-llm-gateway.md",
			"group": "blog",
			"title": "Up to 30% Off DeepSeek Models on LLM Gateway",
			"date": "2026-03-28"
		},
		{
			"path": "apps/ui/src/content/blog/2026-03-28-top-10-cheapest-providers-deepseek-v3-2.md",
			"group": "blog",
			"title": "Top 10 Cheapest Providers for DeepSeek V3.2 in 2026",
			"date": "2026-03-28"
		},
		{
			"path": "apps/ui/src/content/blog/2026-04-09-best-ai-gateways.md",
			"group": "blog",
			"title": "8 Best AI Gateways in 2026 (Compared)",
			"date": "2026-04-09"
		},
		{
			"path": "apps/ui/src/content/blog/2026-04-11-how-to-choose-the-right-llm.md",
			"group": "blog",
			"title": "How to Choose the Right LLM for Your Use Case in 2026",
			"date": "2026-04-11"
		},
		{
			"path": "apps/ui/src/content/blog/2026-04-11-how-we-handle-llm-provider-failover.md",
			"group": "blog",
			"title": "How We Handle LLM Provider Failover at Scale",
			"date": "2026-04-11"
		},
		{
			"path": "apps/ui/src/content/blog/2026-04-11-llm-gateway-vs-openrouter.md",
			"group": "blog",
			"title": "LLM Gateway vs OpenRouter: An Honest Comparison",
			"date": "2026-04-11"
		},
		{
			"path": "apps/ui/src/content/blog/2026-04-11-llm-guardrails-explained.md",
			"group": "blog",
			"title": "LLM Guardrails Explained: Prompt Injection, PII Detection & Content Moderation",
			"date": "2026-04-11"
		},
		{
			"path": "apps/ui/src/content/blog/2026-04-18-opencode-built-in-provider.md",
			"group": "blog",
			"title": "LLM Gateway Is Now a Built-in Provider in OpenCode",
			"date": "2026-04-18"
		},
		{
			"path": "apps/ui/src/content/blog/2026-04-23-llm-gateway-vs-litellm.md",
			"group": "blog",
			"title": "LLM Gateway vs LiteLLM: An Honest Comparison",
			"date": "2026-04-23"
		},
		{
			"path": "apps/ui/src/content/blog/2026-04-24-how-to-estimate-llm-token-costs.md",
			"group": "blog",
			"title": "How to Estimate LLM Token Costs Before You Ship",
			"date": "2026-04-24"
		},
		{
			"path": "apps/ui/src/content/blog/2026-04-25-prompt-caching-explained.md",
			"group": "blog",
			"title": "Prompt Caching Explained: How to Cut LLM Costs by 30–99%",
			"date": "2026-04-25"
		},
		{
			"path": "apps/ui/src/content/blog/2026-04-26-llm-gateway-vs-direct-api.md",
			"group": "blog",
			"title": "LLM Gateway vs Direct API: When the Provider SDK Stops Scaling",
			"date": "2026-04-26"
		},
		{
			"path": "apps/ui/src/content/blog/2026-05-15-openai-compatible-embeddings.md",
			"group": "blog",
			"title": "Embeddings on LLM Gateway: One API for Vectors and Chat",
			"date": "2026-05-15"
		},
		{
			"path": "apps/ui/src/content/blog/2026-05-17-seedance-video-generation.md",
			"group": "blog",
			"title": "ByteDance Seedance Lands on LLM Gateway: Three Video Models, One API",
			"date": "2026-05-17"
		},
		{
			"path": "apps/ui/src/content/blog/2026-05-26-llm-gateway-vs-portkey.md",
			"group": "blog",
			"title": "LLM Gateway vs Portkey: An Honest Comparison",
			"date": "2026-05-26"
		},
		{
			"path": "apps/ui/src/content/blog/2026-05-26-what-is-llm-orchestration.md",
			"group": "blog",
			"title": "What Is LLM Orchestration? Patterns, Tools & When You Need One",
			"date": "2026-05-26"
		},
		{
			"path": "apps/ui/src/content/blog/2026-06-07-embeddable-payments-sdk.md",
			"group": "blog",
			"title": "Stripe for AI: Embeddable Payments for Your App",
			"date": "2026-06-07"
		},
		{
			"path": "apps/ui/src/content/blog/2026-06-10-speech-generation-and-audio-studio.md",
			"group": "blog",
			"title": "Speech Generation Is Live: ElevenLabs, OpenAI & Gemini TTS Through One API",
			"date": "2026-06-10"
		},
		{
			"path": "apps/ui/src/content/blog/2026-06-11-soc2-type-ii.md",
			"group": "blog",
			"title": "LLM Gateway Is Now SOC 2 Type II Compliant",
			"date": "2026-06-11"
		},
		{
			"path": "apps/ui/src/content/blog/2026-06-18-api-key-rotation.md",
			"group": "blog",
			"title": "API Key Rotation: How We Secure Your API Keys",
			"date": "2026-06-18"
		},
		{
			"path": "apps/ui/src/content/blog/2026-06-18-slack-qa-bot-with-llm-gateway.md",
			"group": "blog",
			"title": "Building a Slack Q&A Bot with LLM Gateway and Chat SDK",
			"date": "2026-06-18"
		},
		{
			"path": "apps/ui/src/content/blog/2026-06-20-deploy-llmgateway-on-cloud-platforms.md",
			"group": "blog",
			"title": "How to Deploy LLM Gateway on Cloud Platforms",
			"date": "2026-06-20"
		},
		{
			"path": "apps/ui/src/content/blog/2026-06-22-best-ai-coding-plans.md",
			"group": "blog",
			"title": "11 Best AI Coding Plans in 2026 (Compared)",
			"date": "2026-06-22"
		},
		{
			"path": "apps/ui/src/content/blog/2026-06-22-best-chatgpt-alternatives.md",
			"group": "blog",
			"title": "10 Best ChatGPT Alternatives in 2026",
			"date": "2026-06-22"
		},
		{
			"path": "apps/ui/src/content/blog/2026-06-23-ai-gateway-fees-compared.md",
			"group": "blog",
			"title": "AI Gateway Pricing: Fees & Markups Compared (2026)",
			"date": "2026-06-23"
		},
		{
			"path": "apps/ui/src/content/blog/2026-06-23-claude-opus-tokenizer-cost.md",
			"group": "blog",
			"title": "Claude Opus 4.8 Pricing and the Hidden Tokenizer Tax",
			"date": "2026-06-23"
		},
		{
			"path": "apps/ui/src/content/blog/2026-06-26-enterprise-llm-analytics.md",
			"group": "blog",
			"title": "Enterprise LLM Analytics: See Where Every Dollar Goes",
			"date": "2026-06-26"
		},
		{
			"path": "apps/ui/src/content/blog/2026-06-30-q2-2026-roundup.md",
			"group": "blog",
			"title": "Q2 2026: Speech, Embeddings & Coding Plans",
			"date": "2026-06-30"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-01-devpass-code.md",
			"group": "blog",
			"title": "DevPass Code: A Terminal Coding Agent for LLM Gateway",
			"date": "2026-07-01"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-05-chat-projects-knowledge-base.md",
			"group": "blog",
			"title": "Projects: A Knowledge Base for Your AI Chats",
			"date": "2026-07-05"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-08-litellm-alternatives.md",
			"group": "blog",
			"title": "8 Best LiteLLM Alternatives in 2026 (Compared)",
			"date": "2026-07-08"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-12-github-copilot-alternatives.md",
			"group": "blog",
			"title": "8 Best GitHub Copilot Alternatives in 2026 (Compared)",
			"date": "2026-07-12"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-12-microsoft-copilot-enterprise-pricing.md",
			"group": "blog",
			"title": "Microsoft Copilot Enterprise Pricing in 2026, Explained",
			"date": "2026-07-12"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-19-best-open-source-llms.md",
			"group": "blog",
			"title": "9 Best Open-Source LLMs in 2026 (Compared)",
			"date": "2026-07-19"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-19-kimi-k3-claude-code.md",
			"group": "blog",
			"title": "How to Use Kimi K3 with Claude Code, Cursor, and Cline",
			"date": "2026-07-19"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-19-kimi-k3-vs-claude-opus.md",
			"group": "blog",
			"title": "Kimi K3 vs Claude Opus 4.8: Benchmarks, Price, Verdict",
			"date": "2026-07-19"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-19-kimi-k3.md",
			"group": "blog",
			"title": "Kimi K3 and China's Open-Weight Model Wave",
			"date": "2026-07-19"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-22-openrouter-vs-vercel-vs-llmgateway-performance.md",
			"group": "blog",
			"title": "OpenRouter vs Vercel vs LLMGateway Performance",
			"date": "2026-07-22"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-23-open-source-openrouter-alternatives.md",
			"group": "blog",
			"title": "6 Best Open-Source OpenRouter Alternatives in 2026",
			"date": "2026-07-23"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-23-openrouter-alternatives-for-enterprise.md",
			"group": "blog",
			"title": "OpenRouter Alternatives for Enterprise Teams (2026)",
			"date": "2026-07-23"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-23-openrouter-alternatives.md",
			"group": "blog",
			"title": "10 Best OpenRouter Alternatives in 2026 (Compared)",
			"date": "2026-07-23"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-26-generate-audio-api.md",
			"group": "blog",
			"title": "How to Generate Audio with a Text-to-Speech API",
			"date": "2026-07-26"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-26-generate-images-api.md",
			"group": "blog",
			"title": "How to Generate Images with One API (2026 Guide)",
			"date": "2026-07-26"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-26-generate-videos-api.md",
			"group": "blog",
			"title": "How to Generate AI Videos with an API",
			"date": "2026-07-26"
		},
		{
			"path": "apps/ui/src/content/blog/2026-07-26-track-llm-usage-spend-api.md",
			"group": "blog",
			"title": "How to Track LLM Usage and Spend with the API",
			"date": "2026-07-26"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-04-gdpr-compliant-llm-routing.md",
			"group": "blog",
			"title": "GDPR-Compliant LLM Routing, Enforced at the Gateway",
			"date": "2026-08-04"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-04-helicone-alternatives.md",
			"group": "blog",
			"title": "8 Best Helicone Alternatives in 2026 (Compared)",
			"date": "2026-08-04"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-04-kimi-k3-api.md",
			"group": "blog",
			"title": "Kimi K3 API Guide: Pricing, Reasoning, and Setup",
			"date": "2026-08-04"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-04-kimi-k3-open-weights.md",
			"group": "blog",
			"title": "Kimi K3 Open Weights Are Out: What You Can Actually Do",
			"date": "2026-08-04"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-04-llm-compliance-checklist.md",
			"group": "blog",
			"title": "The LLM Compliance Checklist for Production Teams",
			"date": "2026-08-04"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-04-llm-data-retention.md",
			"group": "blog",
			"title": "LLM Data Retention: What to Store, and for How Long",
			"date": "2026-08-04"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-04-portkey-alternatives.md",
			"group": "blog",
			"title": "8 Best Portkey Alternatives in 2026 (Compared)",
			"date": "2026-08-04"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-08-ai-gateway-benchmark.md",
			"group": "blog",
			"title": "Ranked #1 on an Independent AI Gateway Benchmark",
			"date": "2026-08-08"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-12-vercel-ai-gateway-alternative.md",
			"group": "blog",
			"title": "A Vercel AI Gateway Alternative Without the Rewrite",
			"date": "2026-08-12"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-15-kimi-api-status.md",
			"group": "blog",
			"title": "Is Kimi Down? How to Check Kimi K3 API Status",
			"date": "2026-08-15"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-15-what-is-an-ai-coding-plan.md",
			"group": "blog",
			"title": "What Is an AI Coding Plan? Limits and Costs Explained",
			"date": "2026-08-15"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-16-stripe-openrouter-acquisition.md",
			"group": "blog",
			"title": "Stripe's OpenRouter Acquisition: What Changes for You",
			"date": "2026-08-16"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-18-azure-ai-foundry-vs-github-copilot.md",
			"group": "blog",
			"title": "Azure AI Foundry vs GitHub Copilot vs One Gateway",
			"date": "2026-08-18"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-21-tanstack-ai-llm-gateway.md",
			"group": "blog",
			"title": "TanStack AI + LLM Gateway: One Adapter, 200+ Models",
			"date": "2026-08-21"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-24-cursor-alternatives.md",
			"group": "blog",
			"title": "9 Best Cursor Alternatives in 2026 (Compared)",
			"date": "2026-08-24"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-24-glm-5-2-claude-code.md",
			"group": "blog",
			"title": "How to Use GLM-5.2 with Claude Code, Cursor, and Cline",
			"date": "2026-08-24"
		},
		{
			"path": "apps/ui/src/content/blog/2026-08-24-opencode-go-pricing.md",
			"group": "blog",
			"title": "OpenCode Go's New Pricing, Explained",
			"date": "2026-08-24"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-05-ai-sdk-7-video-generation.md",
			"group": "blog",
			"title": "Video Generation With the Vercel AI SDK 7 and LLM Gateway",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-05-cache-aware-llm-routing.md",
			"group": "blog",
			"title": "Cache-Aware LLM Routing Learns Your Workload",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-05-enterprise-cli-browser-login-organization-skills.md",
			"group": "blog",
			"title": "Enterprise CLI: SSO Login, Organization Skills, 15 Coding Agents",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-05-introducing-airside.md",
			"group": "blog",
			"title": "Introducing Airside: List Your Models on LLM Gateway",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-05-mcp-llm-usage-analytics-guide.md",
			"group": "blog",
			"title": "Check LLM Usage and Costs From Your Coding Agent",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-09-scx-model-discount.md",
			"group": "blog",
			"title": "SCX Model Discount: 20% Off Through October 9",
			"date": "2026-09-09"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-13-get-listed-on-ai-gateway.md",
			"group": "blog",
			"title": "How to Get Your LLM API Listed on an AI Gateway",
			"date": "2026-09-13"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-13-llm-routing-carriers-guide.md",
			"group": "blog",
			"title": "How LLM Routing Picks a Provider: A Carrier's Guide",
			"date": "2026-09-13"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-13-make-money-llm-inference.md",
			"group": "blog",
			"title": "How to Make Money With LLM Inference Through Airside",
			"date": "2026-09-13"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-14-ai-coding-model-benchmark.md",
			"group": "blog",
			"title": "Cheap vs Flagship AI Models (financial amounts omitted)",
			"date": "2026-09-14",
			"titleRedacted": true
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-20-llm-decision-api.md",
			"group": "blog",
			"title": "An LLM Decision API That Returns Values, Not Text",
			"date": "2026-09-20"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-20-perplexity-sonar-api-retirement.md",
			"group": "blog",
			"title": "The Perplexity Sonar API Retirement: What Changes",
			"date": "2026-09-20"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-22-minimax-h3-max-rapper-swap-video.md",
			"group": "blog",
			"title": "Recreate the Rapper-Swap Video Trend with MiniMax H3 Max",
			"date": "2026-09-22"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-22-scx-model-discount-extended.md",
			"group": "blog",
			"title": "SCX Model Discount Extended Through October 9",
			"date": "2026-09-22"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-23-compliance-alerts.md",
			"group": "blog",
			"title": "Compliance Alerts for Blocked AI Models",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-25-automatic-model-selection.md",
			"group": "blog",
			"title": "Automatic Model Selection by Request Difficulty",
			"date": "2026-09-25"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-25-llm-routing-savings-100k.md",
			"group": "blog",
			"title": "LLM Cost Optimization at k a Month (financial amounts omitted)",
			"date": "2026-09-25",
			"titleRedacted": true
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-26-smart-routing-benchmark.md",
			"group": "blog",
			"title": "Smart Routing Benchmark: Cost and Quality",
			"date": "2026-09-26"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-01-26-gpt-5-models-support.md",
			"group": "changelog",
			"title": "GPT-5 Model Family Now Available",
			"date": "2025-08-07"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-01-27-api-key-usage-limits.md",
			"group": "changelog",
			"title": "API Key Usage Limits & Credit Controls",
			"date": "2025-08-11"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-01-28-models-page-cloudrift-free-llama.md",
			"group": "changelog",
			"title": "New Models Directory & Free Llama 3.1 70B via CloudRift",
			"date": "2025-08-16"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-05-01-gateway-v1-launch.md",
			"group": "changelog",
			"title": "LLM Gateway v1.0 Launch",
			"date": "2025-05-01"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-06-11-deepseek-discount-and-mistral-models.md",
			"group": "changelog",
			"title": "Deepseek Discount + Mistral Joins the Lineup",
			"date": "2025-05-11"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-06-14-self-hosting-docs-upgrade.md",
			"group": "changelog",
			"title": "Self-Hosting Just Got Easier",
			"date": "2025-06-14"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-06-15-pro-subscription-launch.md",
			"group": "changelog",
			"title": "Pro Subscription Launch",
			"date": "2025-06-15"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-06-22-dashboard-ui-improvements.md",
			"group": "changelog",
			"title": "Dashboard UI Improvements & Project Context",
			"date": "2025-06-22"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-06-26-groq-xai-providers-and-sidebar-credits.md",
			"group": "changelog",
			"title": "New Providers: Groq and xAI Support + Always-Visible Credits",
			"date": "2025-06-26"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-07-13-moonshot-novita-cloudrift-providers.md",
			"group": "changelog",
			"title": "New Providers: Cloudrift, Moonshot AI and Novita AI Support",
			"date": "2025-07-13"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-07-28-nextjs-migration.md",
			"group": "changelog",
			"title": "Next.js migration",
			"date": "2025-07-28"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-08-05-gpt-oss-models-groq.md",
			"group": "changelog",
			"title": "New GPT-OSS Models: 120B and 20B via Groq",
			"date": "2025-08-05"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-08-06-claude-4-1-models.md",
			"group": "changelog",
			"title": "Claude 4.1 Models: Opus and Sonnet Now Available",
			"date": "2025-08-06"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-08-07-ai-sdk-provider-v2.md",
			"group": "changelog",
			"title": "AI SDK Provider v2.0 Released",
			"date": "2025-08-07"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-08-24-deepseek-v3-1-support.md",
			"group": "changelog",
			"title": "DeepSeek v3.1 Model Support",
			"date": "2025-08-24"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-08-26-gemini-2-5-flash-image-preview.md",
			"group": "changelog",
			"title": "Introducing Our First Image Generation Model: Gemini 2.5 Flash Image Preview",
			"date": "2025-08-26"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-09-05-qwen3-max-support.md",
			"group": "changelog",
			"title": "Qwen3 Max Model Now Available",
			"date": "2025-09-05"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-09-08-claude-code-configuration-support.md",
			"group": "changelog",
			"title": "Claude Code Configuration Now Supported",
			"date": "2025-09-08"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-09-11-alibaba-qwen-models.md",
			"group": "changelog",
			"title": "New Alibaba Qwen Models: Qwen3 Next, Max, Plus, Flash, Vision",
			"date": "2025-09-11"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-09-20-grok-4-fast-models.md",
			"group": "changelog",
			"title": "Grok 4 Fast Models: Flagship and Fast Variants Now Available",
			"date": "2025-09-20"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-09-29-claude-sonnet-4-5-support.md",
			"group": "changelog",
			"title": "Claude Sonnet 4.5 Model Support",
			"date": "2025-09-29"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-10-18-canopywave-partnership-deepseek-90-off.md",
			"group": "changelog",
			"title": "CanopyWave Partnership: 90% Off DeepSeek v3.1",
			"date": "2025-10-18"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-10-24-team-members-roles-and-seats.md",
			"group": "changelog",
			"title": "Team Members: Roles, Seats, and Access Controls",
			"date": "2025-10-24"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-10-26-aws-bedrock-vertex-azure-providers.md",
			"group": "changelog",
			"title": "AWS Bedrock, Google Vertex AI and Microsoft Azure",
			"date": "2025-10-26"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-11-05-zai-google-discounts.md",
			"group": "changelog",
			"title": "Z.ai 10% Off & Google 20% Off All Models",
			"date": "2025-11-05"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-11-07-kimi-k2-thinking-model.md",
			"group": "changelog",
			"title": "Kimi K2 Thinking Model Support",
			"date": "2025-11-07"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-11-08-canopywave-new-models.md",
			"group": "changelog",
			"title": "CanopyWave: 3 New Models with 75% Off",
			"date": "2025-11-08"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-11-11-canopywave-kimi-k2-thinking-75-off.md",
			"group": "changelog",
			"title": "CanopyWave: 75% Off Kimi K2 Thinking",
			"date": "2025-11-11"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-11-17-sherlock-stealth-models.md",
			"group": "changelog",
			"title": "Sherlock: Two New Stealth Alpha Models",
			"date": "2025-11-17"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-11-18-gemini-3-pro-preview-support.md",
			"group": "changelog",
			"title": "Gemini 3 Pro Preview: 20% Off Launch Discount",
			"date": "2025-11-18"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-12-14-cerebras-models-support.md",
			"group": "changelog",
			"title": "Cerebras: Ultra-Fast Inference with 6 New Models",
			"date": "2025-12-14"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-01-02-qwen-image-max-support.md",
			"group": "changelog",
			"title": "Alibaba Cloud Qwen Image Models: Advanced Image Generation and Editing",
			"date": "2026-01-02"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-01-21-pro-features-now-free.md",
			"group": "changelog",
			"title": "Pro Features Now Free for Everyone",
			"date": "2026-01-21"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-01-26-enterprise-audit-logs.md",
			"group": "changelog",
			"title": "Enterprise Audit Logs",
			"date": "2026-01-26"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-01-26-enterprise-guardrails.md",
			"group": "changelog",
			"title": "Enterprise Guardrails",
			"date": "2026-01-26"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-01-29-dev-plans-web-search-minimax.md",
			"group": "changelog",
			"title": "Dev Plans, Native Web Search, and MiniMax Provider",
			"date": "2026-01-29"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-01-30-agents-templates-cli.md",
			"group": "changelog",
			"title": "AI Agent skills, Agents, Templates & CLI",
			"date": "2026-01-30"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-01-30-reasoning-max-tokens.md",
			"group": "changelog",
			"title": "Unified Reasoning Configuration",
			"date": "2026-01-30"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-02-12-retry-fallback.md",
			"group": "changelog",
			"title": "Automatic Retry & Fallback with Full Routing Transparency",
			"date": "2026-02-12"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-02-27-image-studio-and-more.md",
			"group": "changelog",
			"title": "Image Studio, Image Edits API & More",
			"date": "2026-02-27"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-03-06-gpt-5-4-models.md",
			"group": "changelog",
			"title": "GPT-5.4 and GPT-5.4 Pro Now Available",
			"date": "2026-03-06"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-03-23-video-gen-sessions-and-more.md",
			"group": "changelog",
			"title": "Video Generation, Sessions & More",
			"date": "2026-03-23"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-04-02-multi-region-content-filters.md",
			"group": "changelog",
			"title": "Multi-Region Routing, Content Filters & More",
			"date": "2026-04-02"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-04-12-sessions-rebranded-to-agents.md",
			"group": "changelog",
			"title": "Sessions Rebranded to Agents",
			"date": "2026-04-12"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-05-07-devpass-product-hunt-launch.md",
			"group": "changelog",
			"title": "DevPass is live on Product Hunt",
			"date": "2026-05-07"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-05-15-openai-compatible-embeddings.md",
			"group": "changelog",
			"title": "OpenAI-Compatible Embeddings",
			"date": "2026-05-15"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-05-17-seedance-chat-product-roundup.md",
			"group": "changelog",
			"title": "Seedance Video Models, Pinned Chats, Sharing Across Orgs & More",
			"date": "2026-05-17"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-05-26-document-reading-support.md",
			"group": "changelog",
			"title": "Document Reading (PDFs & more)",
			"date": "2026-05-26"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-01-claude-opus-4-8-and-new-models.md",
			"group": "changelog",
			"title": "Claude Opus 4.8 + a Wave of New Models",
			"date": "2026-06-01"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-01-referrals-cache-controls-product-updates.md",
			"group": "changelog",
			"title": "Referrals, Cache Controls & Product Updates",
			"date": "2026-06-01"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-01-smarter-routing-sticky-sessions.md",
			"group": "changelog",
			"title": "Smarter Routing: Sticky Sessions, Bedrock Regions & More",
			"date": "2026-06-01"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-09-api-key-expiration-ttl.md",
			"group": "changelog",
			"title": "API Key Expiration (TTL)",
			"date": "2026-06-09"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-10-chat-plans-service-tiers-product-roundup.md",
			"group": "changelog",
			"title": "Chat Plans, Service Tiers, SDK Sandbox & More",
			"date": "2026-06-10"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-10-claude-fable-5-reve-and-new-models.md",
			"group": "changelog",
			"title": "Claude Fable 5, Reve Image Gen & More New Models",
			"date": "2026-06-10"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-10-speech-generation-and-audio-studio.md",
			"group": "changelog",
			"title": "Speech Generation + Audio Studio",
			"date": "2026-06-10"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-13-claude-fable-5-access-suspended.md",
			"group": "changelog",
			"title": "Claude Fable 5 Access Suspended",
			"date": "2026-06-13"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-14-smart-routing-strategies.md",
			"group": "changelog",
			"title": "Routing Strategies: Cheapest, Fastest & Defaults",
			"date": "2026-06-14"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-16-provider-compliance-policies.md",
			"group": "changelog",
			"title": "Provider Compliance Policies",
			"date": "2026-06-16"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-18-custom-model-catalog.md",
			"group": "changelog",
			"title": "Custom Model Catalog for Custom Providers",
			"date": "2026-06-18"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-21-org-analytics.md",
			"group": "changelog",
			"title": "Usage Analytics by Model, Key and Member",
			"date": "2026-06-21"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-06-26-organization-analytics.md",
			"group": "changelog",
			"title": "Organization-Wide Analytics",
			"date": "2026-06-26"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-03-team-budgets-product-roundup.md",
			"group": "changelog",
			"title": "Per-Member Budgets, Developer Role & PDF Invoices",
			"date": "2026-07-03"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-09-gpt-5-6-models.md",
			"group": "changelog",
			"title": "GPT-5.6 Sol, Terra & Luna Now Available",
			"date": "2026-07-09"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-12-provider-headquarters-filter.md",
			"group": "changelog",
			"title": "Provider Headquarters Compliance Filter",
			"date": "2026-07-12"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-16-devpass-reset-passes.md",
			"group": "changelog",
			"title": "DevPass Reset Passes",
			"date": "2026-07-16"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-22-upgrade-rollover-new-providers.md",
			"group": "changelog",
			"title": "Upgrade Rollover, New Providers & Gemini TTS",
			"date": "2026-07-22"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-23-cli-launch-coding-agents.md",
			"group": "changelog",
			"title": "Launch Any Coding Agent from the CLI",
			"date": "2026-07-23"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-24-lounge-rebrand.md",
			"group": "changelog",
			"title": "Chat Is Now Lounge",
			"date": "2026-07-24"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-26-realtime-voice-api.md",
			"group": "changelog",
			"title": "Realtime Voice API",
			"date": "2026-07-26"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-27-runware-launch-discount.md",
			"group": "changelog",
			"title": "Runware Launch: 30% Off Open-Source Models",
			"date": "2026-07-27"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-30-gpt-5-6-terra-luna-price-cut.md",
			"group": "changelog",
			"title": "GPT-5.6 Terra & Luna Price Cuts",
			"date": "2026-07-30"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-31-org-models-directory.md",
			"group": "changelog",
			"title": "Org Models Directory",
			"date": "2026-07-31"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-03-moderations-flat-request-pricing.md",
			"group": "changelog",
			"title": "Moderations Pricing From August 7",
			"date": "2026-08-03"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-05-devpass-payg-overflow.md",
			"group": "changelog",
			"title": "DevPass Pay-As-You-Go Overflow",
			"date": "2026-08-05"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-07-dynamic-routes.md",
			"group": "changelog",
			"title": "Dynamic Routes",
			"date": "2026-08-07"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-10-crypto-payments.md",
			"group": "changelog",
			"title": "Pay For Credits With Crypto",
			"date": "2026-08-10"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-12-ai-sdk-gateway-protocol.md",
			"group": "changelog",
			"title": "Drop-In For The Vercel AI Gateway",
			"date": "2026-08-12"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-17-org-trust-tiers-limits.md",
			"group": "changelog",
			"title": "Trust Tiers: Limits That Grow With Your Account",
			"date": "2026-08-17"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-21-client-managed-cache-control.md",
			"group": "changelog",
			"title": "Client-Managed Prompt Caching",
			"date": "2026-08-21"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-22-concurrent-request-limits.md",
			"group": "changelog",
			"title": "Concurrent Request Limits and Overload Protection",
			"date": "2026-08-22"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-22-provider-key-descriptions-new-models.md",
			"group": "changelog",
			"title": "Provider Key Descriptions, Grok 4.6 & More",
			"date": "2026-08-22"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-27-hash-only-key-storage.md",
			"group": "changelog",
			"title": "Hash-Only API Key Storage",
			"date": "2026-08-27"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-28-claude-foundry-model-status.md",
			"group": "changelog",
			"title": "Claude on Foundry, Model Status & More",
			"date": "2026-08-28"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-28-devpass-card-removal.md",
			"group": "changelog",
			"title": "Remove Your DevPass Payment Card",
			"date": "2026-08-28"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-28-devpass-no-ai-training.md",
			"group": "changelog",
			"title": "No AI Training for DevPass",
			"date": "2026-08-28"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-08-28-organization-teams.md",
			"group": "changelog",
			"title": "Organization Teams and Directory Sync",
			"date": "2026-08-28"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-01-airside-provider-console.md",
			"group": "changelog",
			"title": "Airside: Self-Serve Provider Listings",
			"date": "2026-09-01"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-01-claude-fable-5-1.md",
			"group": "changelog",
			"title": "Claude Fable 5.1",
			"date": "2026-09-01"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-04-zero-data-retention.md",
			"group": "changelog",
			"title": "Zero Data Retention Controls",
			"date": "2026-09-04"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-05-ai-sdk-7-provider-video-generation.md",
			"group": "changelog",
			"title": "AI SDK 7 Provider with Video Generation",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-05-airside-model-verification.md",
			"group": "changelog",
			"title": "Airside: Model Verification and Crew Invites",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-05-cache-aware-routing.md",
			"group": "changelog",
			"title": "Adaptive Cache-Aware Provider Selection",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-05-cli-browser-login-organization-skills.md",
			"group": "changelog",
			"title": "CLI Browser Login and Organization Skills",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-05-dashboard-usage-comparison.md",
			"group": "changelog",
			"title": "Compare Usage Across Periods",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-05-gemini-3-8-flash-muse-spark-new-models.md",
			"group": "changelog",
			"title": "Gemini 3.8 Flash, Muse Spark 1.3 & More Models",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-05-mcp-usage-analytics.md",
			"group": "changelog",
			"title": "Usage Analytics in the MCP Server",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-05-per-unit-price-filters-product-roundup.md",
			"group": "changelog",
			"title": "Per-Unit Price Filters, Seedream References & More",
			"date": "2026-09-05"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-06-realtime-transcription-sessions.md",
			"group": "changelog",
			"title": "Realtime Transcription Sessions",
			"date": "2026-09-06"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-08-gpt-image-2-5.md",
			"group": "changelog",
			"title": "GPT Image 2.5 Is Here",
			"date": "2026-09-08"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-18-vscode-extension.md",
			"group": "changelog",
			"title": "Native VS Code Integration",
			"date": "2026-09-18"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-19-perplexity-agent-api.md",
			"group": "changelog",
			"title": "Perplexity Sonar Moves to the Agent API",
			"date": "2026-09-19"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-20-perplexity-sonar-changes.md",
			"group": "changelog",
			"title": "Perplexity Sonar Changes September 25",
			"date": "2026-09-20"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-20-system-one-typed-decisions.md",
			"group": "changelog",
			"title": "System One: Typed Decisions",
			"date": "2026-09-20"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-22-claude-opus-5-5.md",
			"group": "changelog",
			"title": "Claude Opus 5.5",
			"date": "2026-09-22"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-22-gpt-6-sol-luna.md",
			"group": "changelog",
			"title": "GPT-6 Sol & Luna at Half the Price",
			"date": "2026-09-22"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-23-compliance-alerts.md",
			"group": "changelog",
			"title": "Compliance Alerts",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-25-branded-end-user-receipts.md",
			"group": "changelog",
			"title": "Branded Payments SDK Receipts",
			"date": "2026-09-25"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-25-smart-routing.md",
			"group": "changelog",
			"title": "Smart Routing",
			"date": "2026-09-25"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-09-26-azure-priority-processing.md",
			"group": "changelog",
			"title": "Azure Priority Processing",
			"date": "2026-09-26"
		},
		{
			"path": "apps/ui/src/content/guides/anvil.md",
			"group": "guides",
			"title": "Anvil Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/autohand.md",
			"group": "guides",
			"title": "Autohand Code Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/claude-code.md",
			"group": "guides",
			"title": "Claude Code Integration",
			"date": "2026-09-07"
		},
		{
			"path": "apps/ui/src/content/guides/cline.md",
			"group": "guides",
			"title": "Cline Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/codex-cli.md",
			"group": "guides",
			"title": "Codex CLI Integration",
			"date": "2026-09-07"
		},
		{
			"path": "apps/ui/src/content/guides/continue.md",
			"group": "guides",
			"title": "Continue CLI Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/crush.md",
			"group": "guides",
			"title": "Crush Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/cursor.md",
			"group": "guides",
			"title": "Cursor Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/devpass-code.md",
			"group": "guides",
			"title": "DevPass Code Integration",
			"date": "2026-09-07"
		},
		{
			"path": "apps/ui/src/content/guides/empryo.md",
			"group": "guides",
			"title": "Empryo Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/github-copilot.md",
			"group": "guides",
			"title": "GitHub Copilot App Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/hermes-agent.md",
			"group": "guides",
			"title": "Hermes Agent Integration",
			"date": "2026-09-07"
		},
		{
			"path": "apps/ui/src/content/guides/kilo-code.md",
			"group": "guides",
			"title": "Kilo Code Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/kimi-code.md",
			"group": "guides",
			"title": "Kimi Code Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/mcp.md",
			"group": "guides",
			"title": "MCP Server Integration",
			"date": "2026-07-03"
		},
		{
			"path": "apps/ui/src/content/guides/mimocode.md",
			"group": "guides",
			"title": "MiMo Code Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/n8n.md",
			"group": "guides",
			"title": "n8n Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/oh-my-pi.md",
			"group": "guides",
			"title": "Oh My Pi Integration",
			"date": "2026-09-22"
		},
		{
			"path": "apps/ui/src/content/guides/openclaw.md",
			"group": "guides",
			"title": "OpenClaw Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/opencode-desktop.md",
			"group": "guides",
			"title": "OpenCode Desktop Integration",
			"date": "2026-09-23"
		},
		{
			"path": "apps/ui/src/content/guides/opencode.md",
			"group": "guides",
			"title": "OpenCode Integration",
			"date": "2026-09-07"
		},
		{
			"path": "apps/ui/src/content/guides/pi.md",
			"group": "guides",
			"title": "Pi Coding Agent Integration",
			"date": "2026-09-07"
		},
		{
			"path": "apps/ui/src/content/guides/reasonix.md",
			"group": "guides",
			"title": "Reasonix Integration",
			"date": "2026-09-07"
		},
		{
			"path": "apps/ui/src/content/migrations/github-copilot.md",
			"group": "migrations",
			"title": "Migrate from GitHub Copilot",
			"date": "2026-07-12"
		},
		{
			"path": "apps/ui/src/content/migrations/litellm.md",
			"group": "migrations",
			"title": "Migrate from LiteLLM",
			"date": "2026-01-20"
		},
		{
			"path": "apps/ui/src/content/migrations/openrouter.md",
			"group": "migrations",
			"title": "Migrate from OpenRouter",
			"date": "2026-01-20"
		},
		{
			"path": "apps/ui/src/content/migrations/portkey.md",
			"group": "migrations",
			"title": "Migrate from Portkey",
			"date": "2026-05-26"
		},
		{
			"path": "apps/ui/src/content/migrations/vercel-ai-gateway.md",
			"group": "migrations",
			"title": "Migrate from Vercel AI Gateway",
			"date": "2026-01-20"
		},
		{
			"path": "apps/ui/src/content/use-cases/ai-customer-support.md",
			"group": "use-cases",
			"title": "AI customer support",
			"date": "2026-06-02"
		},
		{
			"path": "apps/ui/src/content/use-cases/coding-agents.md",
			"group": "use-cases",
			"title": "Coding agents & AI assistants",
			"date": "2026-06-02"
		},
		{
			"path": "apps/ui/src/content/use-cases/cost-optimization.md",
			"group": "use-cases",
			"title": "AI cost optimization & FinOps",
			"date": "2026-06-02"
		},
		{
			"path": "apps/ui/src/content/use-cases/rag-document-qa.md",
			"group": "use-cases",
			"title": "RAG & document Q&A",
			"date": "2026-06-02"
		}
	],
	"documentation": [
		{
			"product": "gateway",
			"paths": [
				"apps/docs/content/(gateway)/developers/ai-sdk-gateway-protocol.mdx",
				"apps/docs/content/(gateway)/developers/ai-sdk-images.mdx",
				"apps/docs/content/(gateway)/developers/ai-sdk.mdx",
				"apps/docs/content/(gateway)/developers/cli.mdx",
				"apps/docs/content/(gateway)/developers/index.mdx",
				"apps/docs/content/(gateway)/developers/mcp.mdx",
				"apps/docs/content/(gateway)/developers/tanstack-ai.mdx",
				"apps/docs/content/(gateway)/features/anthropic-endpoint.mdx",
				"apps/docs/content/(gateway)/features/api-keys.mdx",
				"apps/docs/content/(gateway)/features/audit-logs.mdx",
				"apps/docs/content/(gateway)/features/caching/gateway-caching.mdx",
				"apps/docs/content/(gateway)/features/caching/index.mdx",
				"apps/docs/content/(gateway)/features/caching/provider-cache-control.mdx",
				"apps/docs/content/(gateway)/features/compliance.mdx",
				"apps/docs/content/(gateway)/features/cost-breakdown.mdx",
				"apps/docs/content/(gateway)/features/custom-providers.mdx",
				"apps/docs/content/(gateway)/features/data-retention.mdx",
				"apps/docs/content/(gateway)/features/documents.mdx",
				"apps/docs/content/(gateway)/features/dynamic-routes.mdx",
				"apps/docs/content/(gateway)/features/embeddable-payments.mdx",
				"apps/docs/content/(gateway)/features/embeddings.mdx",
				"apps/docs/content/(gateway)/features/guardrails.mdx",
				"apps/docs/content/(gateway)/features/image-generation.mdx",
				"apps/docs/content/(gateway)/features/master-keys.mdx",
				"apps/docs/content/(gateway)/features/metadata.mdx",
				"apps/docs/content/(gateway)/features/models-directory.mdx",
				"apps/docs/content/(gateway)/features/moderations.mdx",
				"apps/docs/content/(gateway)/features/notifications.mdx",
				"apps/docs/content/(gateway)/features/ocr.mdx",
				"apps/docs/content/(gateway)/features/organization-skills.mdx",
				"apps/docs/content/(gateway)/features/project-access.mdx",
				"apps/docs/content/(gateway)/features/realtime.mdx",
				"apps/docs/content/(gateway)/features/reasoning.mdx",
				"apps/docs/content/(gateway)/features/rerank.mdx",
				"apps/docs/content/(gateway)/features/response-healing.mdx",
				"apps/docs/content/(gateway)/features/routing.mdx",
				"apps/docs/content/(gateway)/features/service-tiers.mdx",
				"apps/docs/content/(gateway)/features/sessions.mdx",
				"apps/docs/content/(gateway)/features/source.mdx",
				"apps/docs/content/(gateway)/features/speech-generation.mdx",
				"apps/docs/content/(gateway)/features/sso/entra.mdx",
				"apps/docs/content/(gateway)/features/sso/google.mdx",
				"apps/docs/content/(gateway)/features/sso/index.mdx",
				"apps/docs/content/(gateway)/features/sso/okta.mdx",
				"apps/docs/content/(gateway)/features/system-one.mdx",
				"apps/docs/content/(gateway)/features/timeouts.mdx",
				"apps/docs/content/(gateway)/features/transcription.mdx",
				"apps/docs/content/(gateway)/features/video-generation.mdx",
				"apps/docs/content/(gateway)/features/vision.mdx",
				"apps/docs/content/(gateway)/features/web-search.mdx",
				"apps/docs/content/(gateway)/index.mdx",
				"apps/docs/content/(gateway)/integrations/aws-bedrock.mdx",
				"apps/docs/content/(gateway)/integrations/azure.mdx",
				"apps/docs/content/(gateway)/integrations/vertex-anthropic.mdx",
				"apps/docs/content/(gateway)/learn/activity.mdx",
				"apps/docs/content/(gateway)/learn/agents.mdx",
				"apps/docs/content/(gateway)/learn/analytics.mdx",
				"apps/docs/content/(gateway)/learn/api-keys.mdx",
				"apps/docs/content/(gateway)/learn/audit-logs.mdx",
				"apps/docs/content/(gateway)/learn/billing.mdx",
				"apps/docs/content/(gateway)/learn/dashboard.mdx",
				"apps/docs/content/(gateway)/learn/dynamic-routes.mdx",
				"apps/docs/content/(gateway)/learn/guardrails.mdx",
				"apps/docs/content/(gateway)/learn/index.mdx",
				"apps/docs/content/(gateway)/learn/invoices.mdx",
				"apps/docs/content/(gateway)/learn/master-keys.mdx",
				"apps/docs/content/(gateway)/learn/member-analytics.mdx",
				"apps/docs/content/(gateway)/learn/model-usage.mdx",
				"apps/docs/content/(gateway)/learn/models.mdx",
				"apps/docs/content/(gateway)/learn/org-analytics.mdx",
				"apps/docs/content/(gateway)/learn/org-preferences.mdx",
				"apps/docs/content/(gateway)/learn/policies.mdx",
				"apps/docs/content/(gateway)/learn/preferences.mdx",
				"apps/docs/content/(gateway)/learn/provider-keys.mdx",
				"apps/docs/content/(gateway)/learn/referrals.mdx",
				"apps/docs/content/(gateway)/learn/refunds.mdx",
				"apps/docs/content/(gateway)/learn/sdk-settings.mdx",
				"apps/docs/content/(gateway)/learn/security-events.mdx",
				"apps/docs/content/(gateway)/learn/structured-outputs.mdx",
				"apps/docs/content/(gateway)/learn/team.mdx",
				"apps/docs/content/(gateway)/learn/transactions.mdx",
				"apps/docs/content/(gateway)/learn/usage-metrics.mdx",
				"apps/docs/content/(gateway)/migrations/litellm.mdx",
				"apps/docs/content/(gateway)/migrations/openrouter.mdx",
				"apps/docs/content/(gateway)/migrations/vercel-ai-gateway.mdx",
				"apps/docs/content/(gateway)/overview.mdx",
				"apps/docs/content/(gateway)/quick-start.mdx",
				"apps/docs/content/(gateway)/resources/api-versioning.mdx",
				"apps/docs/content/(gateway)/resources/email-preferences.mdx",
				"apps/docs/content/(gateway)/resources/error-handling.mdx",
				"apps/docs/content/(gateway)/resources/rate-limits.mdx",
				"apps/docs/content/(gateway)/self-host/aws.mdx",
				"apps/docs/content/(gateway)/self-host/azure.mdx",
				"apps/docs/content/(gateway)/self-host/docker-compose.mdx",
				"apps/docs/content/(gateway)/self-host/docker.mdx",
				"apps/docs/content/(gateway)/self-host/enterprise-license.mdx",
				"apps/docs/content/(gateway)/self-host/gcp.mdx",
				"apps/docs/content/(gateway)/self-host/index.mdx",
				"apps/docs/content/(gateway)/self-host/kubernetes.mdx"
			]
		},
		{
			"product": "devpass",
			"paths": [
				"apps/docs/content/(devpass)/developers/devpass-usage.mdx",
				"apps/docs/content/(devpass)/devpass.mdx",
				"apps/docs/content/(devpass)/guides/agent-skills.mdx",
				"apps/docs/content/(devpass)/guides/anvil.mdx",
				"apps/docs/content/(devpass)/guides/autohand.mdx",
				"apps/docs/content/(devpass)/guides/claude-code.mdx",
				"apps/docs/content/(devpass)/guides/cline.mdx",
				"apps/docs/content/(devpass)/guides/codex-cli.mdx",
				"apps/docs/content/(devpass)/guides/continue.mdx",
				"apps/docs/content/(devpass)/guides/crush.mdx",
				"apps/docs/content/(devpass)/guides/cursor.mdx",
				"apps/docs/content/(devpass)/guides/devpass-code.mdx",
				"apps/docs/content/(devpass)/guides/empryo.mdx",
				"apps/docs/content/(devpass)/guides/github-copilot.mdx",
				"apps/docs/content/(devpass)/guides/hermes-agent.mdx",
				"apps/docs/content/(devpass)/guides/index.mdx",
				"apps/docs/content/(devpass)/guides/kilo-code.mdx",
				"apps/docs/content/(devpass)/guides/kimi-code.mdx",
				"apps/docs/content/(devpass)/guides/mimocode.mdx",
				"apps/docs/content/(devpass)/guides/n8n.mdx",
				"apps/docs/content/(devpass)/guides/oh-my-pi.mdx",
				"apps/docs/content/(devpass)/guides/openclaw.mdx",
				"apps/docs/content/(devpass)/guides/opencode-desktop.mdx",
				"apps/docs/content/(devpass)/guides/opencode.mdx",
				"apps/docs/content/(devpass)/guides/pi.mdx",
				"apps/docs/content/(devpass)/guides/reasonix.mdx",
				"apps/docs/content/(devpass)/guides/vscode.mdx",
				"apps/docs/content/(devpass)/learn/coding-agents.mdx",
				"apps/docs/content/(devpass)/learn/model-categories.mdx",
				"apps/docs/content/(devpass)/learn/payg-overflow.mdx",
				"apps/docs/content/(devpass)/learn/reset-passes.mdx"
			]
		},
		{
			"product": "lounge",
			"paths": [
				"apps/docs/content/(lounge)/features/lounge-connectors.mdx",
				"apps/docs/content/(lounge)/features/lounge-ios.mdx",
				"apps/docs/content/(lounge)/learn/chat-plans.mdx",
				"apps/docs/content/(lounge)/learn/playground-audio.mdx",
				"apps/docs/content/(lounge)/learn/playground-group.mdx",
				"apps/docs/content/(lounge)/learn/playground-image.mdx",
				"apps/docs/content/(lounge)/learn/playground-realtime.mdx",
				"apps/docs/content/(lounge)/learn/playground-video.mdx",
				"apps/docs/content/(lounge)/learn/playground.mdx",
				"apps/docs/content/(lounge)/lounge.mdx"
			]
		},
		{
			"product": "airside",
			"paths": [
				"apps/docs/content/(airside)/airside.mdx",
				"apps/docs/content/(airside)/features/airside.mdx",
				"apps/docs/content/(airside)/learn/airside-fleet.mdx"
			]
		}
	],
	"counts": {
		"blog": 98,
		"changelog": 109,
		"guides": 23,
		"migrations": 5,
		"useCases": 4,
		"devpassComparisons": 6,
		"editorialTotal": 245,
		"productDocs": 143
	},
	"products": [
		{
			"name": "LLM Gateway",
			"audience": "Platform and engineering teams",
			"promise": "One governed route to AI infrastructure",
			"conversion": "A first API request or an enterprise conversation",
			"proof": "Routing, observability, spend controls, security and deployment choices",
			"path": "apps/ui/src/components/home/control-plane.tsx",
			"status": "Local homepage refresh; underlying product and enterprise pages in source"
		},
		{
			"name": "DevPass",
			"audience": "Developers using coding agents",
			"promise": "A coding-focused plan and a familiar toolchain",
			"conversion": "Plan evaluation, signup and agent setup",
			"proof": "Agent guides, model comparisons, pricing and usage views",
			"path": "apps/code/src/app/page.tsx",
			"status": "Implemented in source"
		},
		{
			"name": "Lounge",
			"audience": "People using AI directly",
			"promise": "A named workspace for chat and creative studios",
			"conversion": "Try a studio, then choose a membership",
			"proof": "Visible guest introductions, comparison pages and real interface assets",
			"path": "apps/playground/src/components/seo/lounge-landing-sections.tsx",
			"status": "Implemented in source"
		},
		{
			"name": "Airside",
			"audience": "Inference providers",
			"promise": "A self-serve route into the catalog",
			"conversion": "Register a provider and complete verification",
			"proof": "Provider onboarding, model verification, pricing review and provider guides",
			"path": "apps/airside/src/app/page.tsx",
			"status": "Implemented in source"
		}
	],
	"workstreams": [
		{
			"id": "positioning",
			"title": "A portfolio, not four disconnected websites",
			"stage": "Positioning",
			"status": "Source + local refresh",
			"done": [
				"Distinct audiences and product narratives for Gateway, DevPass, Lounge and Airside.",
				"Shared product switching connects the portfolio across applications.",
				"Enterprise-first homepage work leads with a production pilot and makes the other products discoverable."
			],
			"lesson": "Share the distribution surface, not an indistinguishable pitch. Give each audience its own proof and next action.",
			"metric": "Qualified activation by product and entry page",
			"sources": [
				"apps/ui/src/app/page.tsx",
				"apps/ui/src/components/home/home-hero.tsx",
				"packages/shared/src/components/product-switcher.tsx",
				"apps/code/src/app/page.tsx",
				"apps/airside/src/app/page.tsx"
			]
		},
		{
			"id": "identity",
			"title": "Names and visual identity became product infrastructure",
			"stage": "Positioning",
			"status": "Source + local refresh",
			"done": [
				"The chat product was renamed Lounge with a coherent membership vocabulary and identity.",
				"Brand assets, social images and paired light/dark screenshots make product identity reusable.",
				"A richer product screenshot family and interactive homepage demo are local work at this snapshot."
			],
			"lesson": "A new name must reach navigation, metadata, docs, pricing and imagery together. A metaphor cannot replace the plain product definition.",
			"metric": "Correct product recognition and destination selection in usability checks",
			"sources": [
				"apps/ui/src/content/changelog/2026-07-24-lounge-rebrand.md",
				"apps/ui/src/app/brand/page.tsx",
				"apps/playground/src/lib/brand.ts",
				"apps/ui/src/components/home/home-hero.tsx"
			]
		},
		{
			"id": "editorial",
			"title": "An owned editorial engine",
			"stage": "Discovery",
			"status": "Implemented in source",
			"done": [
				"98 blog files and 109 changelog files preserve launches, tutorials, comparisons, benchmarks and product updates.",
				"Category pages, changelog tags and pagination make the archive navigable.",
				"23 setup guides, 5 migration guides and 4 use-case articles turn product capabilities into search and evaluation material."
			],
			"lesson": "Shipping is raw material. Convert a release into a problem-led article, a setup path and a clear product action.",
			"metric": "Matched content-entry to qualified first-success cohorts; start with the most-visited decision pages",
			"sources": [
				"apps/ui/src/content/blog",
				"apps/ui/src/content/changelog",
				"apps/ui/src/content/guides",
				"apps/ui/src/content/migrations",
				"apps/ui/src/content/use-cases"
			]
		},
		{
			"id": "intent",
			"title": "Pages for people already choosing a solution",
			"stage": "Discovery",
			"status": "Implemented in source",
			"done": [
				"Gateway comparison pages address alternatives across routers, cloud platforms and coding tools.",
				"Six DevPass comparison articles and Lounge comparisons serve distinct buying decisions.",
				"Token and Copilot cost calculators, model categories, provider pages and country pages create useful discovery entry points."
			],
			"lesson": "Match one search intent to one useful page. Offer a decision aid, not a thin template with a changed keyword.",
			"metric": "Comparison or calculator use to setup or purchase intent",
			"sources": [
				"apps/ui/src/lib/comparisons.ts",
				"apps/code/src/content/comparisons",
				"apps/playground/src/lib/comparisons.ts",
				"apps/ui/src/app/token-cost-calculator/page.tsx",
				"apps/ui/src/app/copilot-cost-calculator/page.tsx",
				"apps/ui/src/app/sitemap.ts"
			]
		},
		{
			"id": "seo",
			"title": "Search foundations were audited across products",
			"stage": "Discovery",
			"status": "Source + observed search",
			"done": [
				"Per-product robots, sitemaps, canonical metadata and structured data are in source.",
				"The September 5 audit records guest-visible Lounge content, account noindex fixes, fewer duplicate headings and truthful sitemap dates.",
				"The historical audit reports 86 rendered-page checks. This update separately observes Search Console’s displayed 7-day search metrics; it does not claim SEO lift."
			],
			"lesson": "Visible useful content and crawlable canonical pages come before search hacks. Treat an old audit as dated evidence.",
			"metric": "Index coverage, non-brand qualified search visits and field performance",
			"sources": [
				"reports/seo-audit-2026-09-05.md",
				"apps/ui/src/app/sitemap.ts",
				"apps/code/src/app/robots.ts",
				"apps/playground/src/app/sitemap.ts",
				"apps/airside/src/app/sitemap.ts"
			]
		},
		{
			"id": "machine",
			"title": "Discovery for agents as well as humans",
			"stage": "Discovery",
			"status": "Implemented in source",
			"done": [
				"Public product context and pricing summaries ship as machine-readable files.",
				"Docs expose markdown mirrors and full-context endpoints alongside human pages.",
				"The prior audit removed stale catalog promises. PostHog now records AI-assistant referrer activity, which is not evidence of citation frequency or search-engine visibility gains."
			],
			"lesson": "Keep the HTML page and machine-readable mirror consistent. Context files support consumption; they do not prove AI-search visibility.",
			"metric": "A repeatable query/citation baseline with dated responses",
			"sources": [
				"apps/ui/public/llms.txt",
				"apps/code/public/llms.txt",
				"apps/playground/public/llms.txt",
				"apps/airside/public/llms.txt",
				"apps/docs/app/llms-full.txt/route.ts",
				"reports/seo-audit-2026-09-05.md"
			]
		},
		{
			"id": "docs",
			"title": "Documentation became a product-specific activation path",
			"stage": "Activation",
			"status": "Implemented in source",
			"done": [
				"Docs are split into Gateway, DevPass, Lounge and Airside sections.",
				"The snapshot contains 99 Gateway, 31 DevPass, 10 Lounge and 3 Airside MDX pages.",
				"Integration guides and migration instructions reduce the gap between an article and a first successful action."
			],
			"lesson": "Awareness without a working next step leaks demand. Documentation is part of the conversion path, not an afterthought.",
			"metric": "Guide-to-first-success rate and time to first success",
			"sources": [
				"apps/docs/content/(gateway)",
				"apps/docs/content/(devpass)",
				"apps/docs/content/(lounge)",
				"apps/docs/content/(airside)",
				"apps/ui/src/content/guides"
			]
		},
		{
			"id": "proof",
			"title": "Product proof became visible and reusable",
			"stage": "Evaluation",
			"status": "Implemented assets",
			"done": [
				"Paired product screenshots show dashboards and studios across light and dark themes.",
				"Four product tour MP4s exist under docs recordings; an enterprise demo also ships with chapters and captions.",
				"Benchmark articles link protocols and results, including the smart-routing comparison that explicitly reports limitations and losing baselines."
			],
			"lesson": "Show the actual workflow. Keep benchmark method, full costs, failures and scope beside the result.",
			"metric": "Demo-assisted qualified activation; benchmark replication checks",
			"sources": [
				"apps/ui/public/screenshots",
				"apps/docs/public/recordings",
				"apps/ui/src/components/enterprise/demo-video.tsx",
				"apps/ui/src/content/blog/2026-09-26-smart-routing-benchmark.md",
				"apps/ui/public/benchmarks"
			]
		},
		{
			"id": "conversion",
			"title": "Content has an explicit route into the product",
			"stage": "Conversion",
			"status": "Source + observed events",
			"done": [
				"Blog calls to action route relevant readers to DevPass with campaign parameters.",
				"A contextual conversion rail records shown, dismissed and clicked events.",
				"Observed PostHog events include 802 CTA clicks and 100 distinct signup IDs in the current UTC week. These counts are unjoined and are not a conversion rate."
			],
			"lesson": "Choose the next action from reader intent. Instrument the action and connect it to downstream value before claiming uplift.",
			"metric": "CTA click to signup to qualified product activation",
			"sources": [
				"apps/ui/src/components/blog/blog-cta.tsx",
				"apps/ui/src/components/content-conversion-rail.tsx",
				"apps/code/src/components/LandingTracker.tsx",
				"apps/ui/src/components/home/tracked-link.tsx"
			]
		},
		{
			"id": "enterprise",
			"title": "Sales assistance and trust surfaces",
			"stage": "Conversion",
			"status": "Implemented in source",
			"done": [
				"Enterprise pages expose security, deployment, procurement, pricing and support material.",
				"A contact/scheduling surface and a chaptered demo support assisted evaluation.",
				"Public licensing and legal explanations help buyers understand the offer instead of relying only on hero copy."
			],
			"lesson": "For enterprise buyers, evaluation friction is a marketing problem. Put procurement and deployment proof near the decision.",
			"metric": "Qualified inquiry to accepted pilot to paid conversion",
			"sources": [
				"apps/ui/src/components/enterprise/contact.tsx",
				"apps/ui/src/components/enterprise/procurement.tsx",
				"apps/ui/src/components/enterprise/security.tsx",
				"apps/ui/src/components/enterprise/demo-video.tsx"
			]
		},
		{
			"id": "launch",
			"title": "Launches and community distribution",
			"stage": "Distribution",
			"status": "Source records; reach unmeasured",
			"done": [
				"A dated DevPass Product Hunt announcement links the launch destination.",
				"Gateway launch, Lounge rebrand and Airside introduction have durable owned announcements.",
				"Repository/community links and changelog publication provide distribution surfaces; social campaign activity outside the repo was not audited."
			],
			"lesson": "An announcement is an asset; distribution is a separate task. Record the destination, permission, date and attributable visits.",
			"metric": "Attributed qualified activation per launch destination",
			"sources": [
				"apps/ui/src/content/changelog/2026-05-07-devpass-product-hunt-launch.md",
				"apps/ui/src/content/changelog/2025-05-01-gateway-v1-launch.md",
				"apps/ui/src/content/changelog/2026-07-24-lounge-rebrand.md",
				"apps/ui/src/content/blog/2026-09-05-introducing-airside.md",
				"apps/ui/next.config.ts"
			]
		},
		{
			"id": "offers",
			"title": "Provider promotions have a lifecycle",
			"stage": "Distribution",
			"status": "Implemented in source",
			"done": [
				"Provider launch promotions and extensions are documented in dated posts.",
				"Shared promotion configuration carries start/end dates and a selector for the currently active offer.",
				"The current tree includes an extended campaign ending October 9; this is configuration evidence, not proof of campaign performance or deployment."
			],
			"lesson": "Treat an offer like software: one source of truth, exact dates, eligibility, automatic expiry and matching billing behavior.",
			"metric": "Incremental activated usage and contribution after discount",
			"sources": [
				"packages/shared/src/marketing.ts",
				"apps/ui/src/content/changelog/2026-07-27-runware-launch-discount.md",
				"apps/ui/src/content/blog/2026-09-22-scx-model-discount-extended.md"
			]
		},
		{
			"id": "retention",
			"title": "Newsletter and lifecycle automation",
			"stage": "Retention",
			"status": "Implemented in source",
			"done": [
				"The newsletter form connects to a rate-limited subscription API and an email platform.",
				"Worker follow-ups distinguish no-purchase, low-usage and no-repurchase behavior.",
				"Marketing tips and credit alerts have separate categories, signed unsubscribe links and list-unsubscribe headers."
			],
			"lesson": "Behavior should choose the message. Verify consent, suppression and unsubscribe at the send boundary; source code is not a delivery report.",
			"metric": "Incremental activation or retention with unsubscribe and complaint guardrails",
			"sources": [
				"apps/api/src/routes/public-newsletter.ts",
				"apps/ui/src/components/landing/newsletter.tsx",
				"apps/worker/src/services/follow-up-emails.ts",
				"packages/shared/src/email-unsubscribe.ts"
			]
		},
		{
			"id": "referrals",
			"title": "A product-native referral loop",
			"stage": "Retention",
			"status": "Implemented in source",
			"done": [
				"Public referral links and a referral handler connect acquisition to an organization.",
				"A referral dashboard and sharing UI make the program discoverable inside the product.",
				"Bonus computation is configurable and checks referral relationships; purchase gating is a separate contract to verify."
			],
			"lesson": "A referral program needs usable sharing, correct reward rules and abuse controls. A route is not evidence that people referred others.",
			"metric": "Referred qualified accounts and retained value net of rewards",
			"sources": [
				"apps/api/src/routes/referral.ts",
				"apps/api/src/lib/referral-bonus.ts",
				"apps/ui/src/components/referral-handler.tsx",
				"apps/ui/src/components/dashboard/referral-dialog.tsx"
			]
		},
		{
			"id": "claims",
			"title": "Claim freshness is now an engineering concern",
			"stage": "Trust",
			"status": "Source + local claims edits",
			"done": [
				"A shared marketing module centralizes headline claims across surfaces.",
				"Support knowledge derives public catalog counts and includes billing guidance.",
				"Repository rules explicitly reject copied catalog lists in marketing and docs; local claim edits remain separate from verified current facts."
			],
			"lesson": "Centralization alone does not make a claim true. Define eligible records, scope, freshness and evidence, then reuse the same source.",
			"metric": "Percentage of public claims with an owner, evidence and review date",
			"sources": [
				"packages/shared/src/marketing.ts",
				"apps/api/src/utils/chat-support-knowledge.ts",
				"AGENTS.md"
			]
		},
		{
			"id": "measurement",
			"title": "Live observations now complement the implementation",
			"stage": "Measurement",
			"status": "Observed non-financial aggregates",
			"done": [
				"Search Console shows search demand; PostHog provides dated pageview and engagement counts; the admin Audience panel supplies all-time account totals.",
				"PostHog compares September 20–26 with September 13–19 in UTC. Recorded pageviews, CTA events and signup IDs declined; this is not a controlled experiment.",
				"Only non-financial aggregate metrics are included. Delivery reports, matched activation cohorts and causal attribution remain outside this evidence."
			],
			"lesson": "Assets shipped, events implemented and business outcomes are different levels of evidence. Never turn one into the other.",
			"metric": "Matched, privacy-safe first-visit to signup to first-success cohorts",
			"sources": [
				"apps/code/src/components/LandingTracker.tsx",
				"apps/ui/src/components/content-conversion-rail.tsx",
				"apps/ui/src/components/blog/blog-cta.tsx",
				"reports/seo-audit-2026-09-05.md"
			]
		}
	],
	"timeline": [
		[
			"2025-04",
			"Gateway introduction",
			"Owned product narrative begins in the blog.",
			"apps/ui/src/content/blog/2025-04-12-introducing-llm-gateway.md"
		],
		[
			"2025-05",
			"Version one",
			"A public changelog creates a durable release record.",
			"apps/ui/src/content/changelog/2025-05-01-gateway-v1-launch.md"
		],
		[
			"2025-10",
			"Consumer entry point",
			"The chat product is introduced alongside the API.",
			"apps/ui/src/content/blog/2025-10-14-introducing-llmgateway-playground.md"
		],
		[
			"2026-05",
			"DevPass launch distribution",
			"A Product Hunt announcement connects to an external launch destination.",
			"apps/ui/src/content/changelog/2026-05-07-devpass-product-hunt-launch.md"
		],
		[
			"2026-06",
			"Referral loop",
			"Referral and cache-control updates are recorded together.",
			"apps/ui/src/content/changelog/2026-06-01-referrals-cache-controls-product-updates.md"
		],
		[
			"2026-07",
			"A named portfolio",
			"Lounge gets an identity; provider launch offers become time-bound campaigns.",
			"apps/ui/src/content/changelog/2026-07-24-lounge-rebrand.md"
		],
		[
			"2026-09",
			"Provider acquisition + search foundations",
			"Airside introduction and a multi-product SEO audit.",
			"reports/seo-audit-2026-09-05.md"
		],
		[
			"2026-09",
			"Proof, product docs, enterprise focus",
			"Benchmark evidence and product-specific docs; the homepage refresh is local work.",
			"apps/ui/src/content/blog/2026-09-26-smart-routing-benchmark.md"
		]
	],
	"takeaways": [
		[
			"Separate the audiences",
			"One portfolio can share navigation without forcing every buyer through the same pitch."
		],
		[
			"Turn releases into useful paths",
			"Announcement, proof, guide and next action should connect."
		],
		[
			"Make claims maintainable",
			"Use current eligible records, dated evidence and scheduled expiry."
		],
		[
			"Show the work, including the losses",
			"Real demos and reproducible comparisons beat broad superiority claims."
		],
		[
			"Finish the conversion loop",
			"Click events and campaign parameters are a start, not an attribution system."
		],
		[
			"Measure before scaling",
			"Run a bounded experiment and report denominator, uncertainty and guardrails."
		]
	],
	"gaps": [
		[
			"Causality and activation",
			"Search, engagement and audience aggregates are now observed. Matched acquisition-to-first-success cohorts, retention and causal lift remain unmeasured. Financial analysis is deliberately excluded."
		],
		[
			"Distribution completeness",
			"Paid ads, outbound, social schedules, influencer work, press and event activity may exist elsewhere; no evidence was provided here."
		],
		[
			"Launch exports",
			"Prior session memory mentions four rendered launch videos. Their project/export files were not found in this checkout; the four docs tour MP4s and enterprise video were found."
		],
		[
			"Deployment",
			"A file or merged commit does not establish the current production deployment. Homepage work was concurrent and uncommitted at the baseline."
		],
		[
			"Comparability",
			"The September SEO audit explicitly says its local LCP runs selected different elements and do not establish a speedup."
		],
		[
			"Freshness",
			"Historical pricing and availability in announcements must not be repeated as current promises. Shared constants also require validation."
		],
		[
			"Different windows and populations",
			"Search Console uses its own 7-day preset with weekly buckets and rounded headlines. PostHog compares two full UTC weeks; admin totals are all time. These figures must not be combined into a funnel."
		]
	],
	"next": [
		{
			"window": "First: diagnose the DevPass drop",
			"action": "Check the DevPass acquisition mix, returning usage and landing-to-first-success cohorts. Verify instrumentation before assigning a cause.",
			"proof": "Most of the observed pageview decline is in DevPass; Gateway visitor IDs are nearly flat."
		},
		{
			"window": "Then: improve the strongest content path",
			"action": "Test a clearer, intent-matched setup path from the strongest articles. First join exposure and click IDs; do not label the unjoined ratio as conversion lift.",
			"proof": "The coding-plan comparison article leads the sampled editorial pages; named rail exposures greatly outnumber rail clicks."
		},
		{
			"window": "Finally: validate search gains",
			"action": "Review the matching pages and snippets. Establish a consistent Search Console comparison window before claiming ranking or click improvements.",
			"proof": "Brand terms lead the visible query rows; Atria and Typesafe terms show additional discovery demand."
		}
	],
	"sources": [
		{
			"path": "apps/ui/src/app/page.tsx",
			"status": "Local work at snapshot",
			"lineCount": 51,
			"url": null,
			"excerpt": "import dynamic from \"next/dynamic\";\n\nimport { ControlPlane } from \"@/components/home/control-plane\";\nimport { HomeHero } from \"@/components/home/home-hero\";\nimport { HeroRSC } from \"@/components/landing/hero-rsc\";\n\nimport { allMigrations } from \"content-collections\";\n\nconst TrustBar = dynamic(() =>\n\timport(\"@/components/enterprise/trust-bar\").then(\n\t\t(mod) => mod.TrustBarEnterprise,\n\t),\n);\nconst ProductFamily = dynamic(() =>\n\timport(\"@/components/home/product-family\").then((mod) => mod.ProductFamily),\n);\nconst DeveloperLane = dynamic(() =>\n\timport(\"@/components/home/developer-lane\").then((mod) => mod.DeveloperLane),"
		},
		{
			"path": "apps/ui/src/components/home/home-hero.tsx",
			"status": "Local work at snapshot",
			"lineCount": 217,
			"url": null,
			"excerpt": "import { ArrowRight, ArrowUpRight } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { MARKETING_STATS } from \"@llmgateway/shared\";\n\nimport { DashboardDemo } from \"./dashboard-demo\";\nimport { editorial } from \"./fonts\";\nimport styles from \"./home.module.css\";\nimport { TrackedLink } from \"./tracked-link\";\n\nconst PROOF = [\n\t\"SOC 2 Type II\",\n\t\"SAML SSO and SCIM on Enterprise\",\n\t\"Self-host or managed\",\n\t\"99.9% SLA on Enterprise Cloud\",\n];\n"
		},
		{
			"path": "packages/shared/src/components/product-switcher.tsx",
			"status": "Repository source",
			"lineCount": 153,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/packages/shared/src/components/product-switcher.tsx",
			"excerpt": "\"use client\";\n\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport Link from \"next/link\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { AirsideLogo, DevPassLogo, LoungeLogo } from \"./product-logos\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuLabel,\n\tDropdownMenuTrigger,\n} from \"./ui/dropdown-menu\";\nimport { Logo, LogoLockup } from \"./ui/logo\";\n\nimport type { ReactElement } from \"react\";"
		},
		{
			"path": "apps/code/src/app/page.tsx",
			"status": "Repository source",
			"lineCount": 511,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/code/src/app/page.tsx",
			"excerpt": "import { ArrowRight } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { Suspense } from \"react\";\n\nimport { CodingModelsShowcase } from \"@/components/CodingModelsShowcase\";\nimport { Faq } from \"@/components/Faq\";\nimport { Footer } from \"@/components/Footer\";\nimport { GetDevPassButton } from \"@/components/GetDevPassButton\";\nimport { Header } from \"@/components/Header\";\nimport {\n\tCodeCTATracker,\n\tLandingPageTracker,\n} from \"@/components/LandingTracker\";\nimport { PassportBook } from \"@/components/PassportBook\";\nimport { PricingPlans } from \"@/components/PricingPlans\";\nimport { TerminalPreview } from \"@/components/TerminalPreview\";\nimport { Button } from \"@/components/ui/button\";\nimport { FlickeringGrid } from \"@/components/ui/flickering-grid\";"
		},
		{
			"path": "apps/airside/src/app/page.tsx",
			"status": "Repository source",
			"lineCount": 419,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/airside/src/app/page.tsx",
			"excerpt": "import {\n\tBadgeCheck,\n\tFileCheck2,\n\tGauge,\n\tPlaneTakeoff,\n\tRadar,\n\tShieldCheck,\n\tSlidersHorizontal,\n\tStamp,\n} from \"lucide-react\";\nimport Link from \"next/link\";\n\nimport { DepartureBoard } from \"@/components/DepartureBoard\";\nimport { Footer } from \"@/components/Footer\";\nimport { Header } from \"@/components/Header\";\nimport { HeroScene } from \"@/components/HeroScene\";\nimport { Button } from \"@/components/ui/button\";\n"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-24-lounge-rebrand.md",
			"status": "Repository source",
			"lineCount": 54,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/content/changelog/2026-07-24-lounge-rebrand.md",
			"excerpt": "---\nid: \"69\"\nslug: \"lounge-rebrand\"\ndate: \"2026-07-24\"\ntitle: \"Chat Is Now Lounge\"\nsummary: \"Our consumer chat app has a name: Lounge by LLM Gateway — the members' lounge for AI. Same app, same prices, same chat.llmgateway.io, with a full visual identity: membership pricing, boarding-pass plan cards, and a proper wordmark.\"\ntags: [\"lounge\"]\nimage:\n  src: \"/changelog/lounge-rebrand.png\"\n  alt: \"A golden art-deco lounge armchair on a circuit-board chip, surrounded by chat, ticket, coin, and receipt icons — the new Lounge identity\"\n  width: 1536\n  height: 1024\n---\n\nOur chat app never really had a name — it was \"the playground\" in some places, \"LLM Gateway Chat\" in others, and just \"Chat\" in the navbar. Today it gets one: **Lounge**, the members' lounge for AI. Every frontier model, waiting in one place.\n\nNothing about how the app works changes. Same app, same URL ([chat.llmgateway.io](https://chat.llmgateway.io)), same prices, same models, and your chats, projects, and history are exactly where you left them. What changes is that the product finally looks and sounds like what it is: one membership instead of a stack of AI subscriptions.\n"
		},
		{
			"path": "apps/ui/src/app/brand/page.tsx",
			"status": "Repository source",
			"lineCount": 398,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/app/brand/page.tsx",
			"excerpt": "import { ArrowDown, ArrowUpRight, Check, Download, X } from \"lucide-react\";\nimport Image from \"next/image\";\nimport Link from \"next/link\";\n\nimport { LogoLockup } from \"@/lib/icons/Logo\";\n\nimport type { Metadata } from \"next\";\n\nexport const metadata: Metadata = {\n\ttitle: \"Brand Assets — Logos & Guidelines\",\n\tdescription:\n\t\t\"Download official LLM Gateway logos in SVG and transparent PNG. Explore logo usage, spacing, colors, typography, and brand guidelines.\",\n\topenGraph: {\n\t\ttitle: \"Brand Assets — Logos & Guidelines | LLM Gateway\",\n\t\tdescription:\n\t\t\t\"Official SVG and PNG logos, colors, and guidelines for using the LLM Gateway brand.\",\n\t\ttype: \"website\",\n\t\turl: \"https://llmgateway.io/brand\","
		},
		{
			"path": "apps/playground/src/lib/brand.ts",
			"status": "Repository source",
			"lineCount": 19,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/playground/src/lib/brand.ts",
			"excerpt": "/**\n * Lounge brand constants — the single source of truth for the product name.\n * Analytics identifiers (PostHog `app: \"chat\"`, `playground_*` events) and\n * billing ids (chat plan tiers, Stripe products) deliberately keep their\n * original names and must not be derived from these strings.\n */\nexport const BRAND = {\n\t/** Product noun, used in running prose: \"Lounge keeps Claude and adds GPT\". */\n\tname: \"Lounge\",\n\t/** Display form for hero moments: \"The Lounge\". */\n\tdisplayName: \"The Lounge\",\n\t/** Formal lockup for metadata, OG and legal surfaces. */\n\tfullName: \"Lounge by LLM Gateway\",\n\t/** Parent brand, unchanged by the rebrand. */\n\tpublisher: \"LLM Gateway\",\n\ttagline: \"Every frontier model. One membership.\",\n\turl: \"https://lounge.llmgateway.io\",\n} as const;"
		},
		{
			"path": "apps/ui/src/content/blog",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/content/blog",
			"excerpt": null
		},
		{
			"path": "apps/ui/src/content/changelog",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/content/changelog",
			"excerpt": null
		},
		{
			"path": "apps/ui/src/content/guides",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/content/guides",
			"excerpt": null
		},
		{
			"path": "apps/ui/src/content/migrations",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/content/migrations",
			"excerpt": null
		},
		{
			"path": "apps/ui/src/content/use-cases",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/content/use-cases",
			"excerpt": null
		},
		{
			"path": "apps/ui/src/lib/comparisons.ts",
			"status": "Repository source",
			"lineCount": 138,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/lib/comparisons.ts",
			"excerpt": "/**\n * Single source of truth for the /compare hub. Each entry mirrors the\n * positioning already published on its own /compare/[slug] page, so the hub and\n * the detail pages never drift apart. Keep competitor claims conservative and\n * verifiable — evaluators land here mid-comparison and will check them.\n */\n\nexport type ComparisonCategory =\n\t\"AI gateways & routers\" | \"Cloud model platforms\" | \"Coding assistants\";\n\nexport interface Comparison {\n\tslug: string;\n\t/** Competitor name as they brand themselves. */\n\tcompetitor: string;\n\tcategory: ComparisonCategory;\n\t/** What the competitor is, in their own terms. Never a strawman. */\n\tpositioning: string;\n\t/** What the competitor ships under an open-source licence, if anything. */"
		},
		{
			"path": "apps/code/src/content/comparisons",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/code/src/content/comparisons",
			"excerpt": null
		},
		{
			"path": "apps/playground/src/lib/comparisons.ts",
			"status": "Repository source",
			"lineCount": 973,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/playground/src/lib/comparisons.ts",
			"excerpt": "/**\n * Single source of truth for every comparison page under /compare.\n *\n * One entry per competitor. The dynamic route, the index hub, the metadata,\n * the comparison table, and the FAQ schema all read from this file — update a\n * price or a fact once here and it propagates everywhere.\n *\n * Tone rule: be honest. Every entry names what the competitor is genuinely\n * better at. Readers are mid-evaluation and will verify claims, so accuracy is\n * the conversion strategy.\n */\n\nimport {\n\tCHAT_PLAN_CREDITS_MULTIPLIERS,\n\tCHAT_PLAN_PRICES,\n\ttype ChatPlanTier,\n} from \"@llmgateway/shared\";\n"
		},
		{
			"path": "apps/ui/src/app/token-cost-calculator/page.tsx",
			"status": "Repository source",
			"lineCount": 125,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/app/token-cost-calculator/page.tsx",
			"excerpt": "import Footer from \"@/components/landing/footer\";\nimport { HeroRSC } from \"@/components/landing/hero-rsc\";\nimport { CALCULATOR_FAQ } from \"@/components/token-cost-calculator/faq-data\";\nimport { TokenCostCalculatorClient } from \"@/components/token-cost-calculator/token-cost-calculator-client\";\nimport { TokenCostCalculatorContent } from \"@/components/token-cost-calculator/token-cost-calculator-content\";\n\nimport type { Metadata } from \"next\";\n\nconst PAGE_URL = \"https://llmgateway.io/token-cost-calculator\";\n\nexport const metadata: Metadata = {\n\ttitle: \"LLM Token Cost Calculator & Tokenizer\",\n\tdescription:\n\t\t\"Free LLM token counter and cost calculator. Count tokens with a real tokenizer, then compare costs on GPT-5, Claude, Gemini, and 200+ models.\",\n\tkeywords: [\n\t\t\"LLM token cost calculator\",\n\t\t\"token counter\",\n\t\t\"LLM tokenizer\","
		},
		{
			"path": "apps/ui/src/app/copilot-cost-calculator/page.tsx",
			"status": "Repository source",
			"lineCount": 122,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/app/copilot-cost-calculator/page.tsx",
			"excerpt": "import { CopilotCostCalculatorClient } from \"@/components/copilot-cost-calculator/copilot-cost-calculator-client\";\nimport { CopilotCostCalculatorContent } from \"@/components/copilot-cost-calculator/copilot-cost-calculator-content\";\nimport { COPILOT_CALCULATOR_FAQ } from \"@/components/copilot-cost-calculator/faq-data\";\nimport Footer from \"@/components/landing/footer\";\nimport { HeroRSC } from \"@/components/landing/hero-rsc\";\n\nimport type { Metadata } from \"next\";\n\nconst PAGE_URL = \"https://llmgateway.io/copilot-cost-calculator\";\n\nexport const metadata: Metadata = {\n\ttitle: \"GitHub Copilot Cost Calculator (2026 AI Credits)\",\n\tdescription:\n\t\t\"Free calculator for GitHub Copilot's usage-based AI Credits billing. Estimate your team's monthly Copilot bill and compare the same workload at pass-through token prices with caching and hard budget caps.\",\n\tkeywords: [\n\t\t\"GitHub Copilot cost calculator\",\n\t\t\"Copilot pricing calculator\",\n\t\t\"Copilot AI Credits\","
		},
		{
			"path": "apps/ui/src/app/sitemap.ts",
			"status": "Repository source",
			"lineCount": 612,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/app/sitemap.ts",
			"excerpt": "import { changelogPath, changelogTags } from \"@/lib/changelog\";\nimport { enterpriseFeatures } from \"@/lib/enterprise-features\";\nimport { features } from \"@/lib/features\";\nimport { slugify } from \"@/lib/slugify\";\n\nimport {\n\tgetProviderCountries,\n\tmodels as modelDefinitions,\n\tproviders as providerDefinitions,\n\ttype ModelDefinition,\n} from \"@llmgateway/models\";\nimport { isMappingDeactivated } from \"@llmgateway/shared/components\";\n\nimport type { MetadataRoute } from \"next\";\n\n// Most recent provider release date across the catalog. Used as the timeline\n// page's `lastModified` so it reflects real content freshness (a new model)\n// rather than the deploy time."
		},
		{
			"path": "reports/seo-audit-2026-09-05.md",
			"status": "Repository source",
			"lineCount": 43,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/reports/seo-audit-2026-09-05.md",
			"excerpt": "# Product SEO and AI search audit — September 5, 2026\n\nThe audit covered LLM Gateway's marketing site, DevPass, Lounge, Airside, documentation, and the admin application's indexing policy. The goal was to help developers find the products, understand their differences, and reach setup or pricing information.\n\n## Evidence and fixes\n\nA Chromium crawl checked 40 live pages across the five public sites: rendered titles, descriptions, canonical URLs, robots directives, headings, JSON-LD, and broken images. All 40 returned HTTP 200; no broken images were observed. Source review covered shared layouts, sitemaps, account routes, and markdown exports.\n\n| Priority | Product             | Finding                                                                                                                           | Change                                                                                                                                        |\n| -------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |\n| High     | DevPass             | Login and signup inherited indexable metadata while robots.txt prevented crawlers from reading the pages.                         | Add noindex to account and dashboard layouts; allow crawling of account pages so the directive can be read.                                   |\n| High     | Lounge              | Studio introductions were visually hidden and a login overlay covered guest pages. Five sampled studios also had duplicate H1s.   | Give guests visible, server-rendered studio introductions with signup, login, pricing, and related-tool links. Keep signed-in studios intact. |\n| Medium   | Docs                | The layout's title duplicated a body H1 on 43 pages.                                                                              | Remove redundant body titles, retaining headings in code examples.                                                                            |\n| Medium   | All public products | Static sitemap entries advertised deployment time as their modification date.                                                     | Omit unsupported modification dates; retain content dates and public-share update times.                                                      |\n| Medium   | Docs                | Markdown exports used different serializers, hardcoded the production host, and did not consistently identify the HTML canonical. | Share the serializer, honor the configured docs host, and align canonical URLs and headers.                                                   |\n| Medium   | AI context files    | Static catalogue lists and release-availability promises could drift from actual availability.                                    | Replace lists and promises with live catalogue links in product context and pricing summaries.                                                |\n| Medium   | Airside             | The product's purpose depended heavily on the airport metaphor.                                                                   | State the provider portal's purpose directly in the introduction, metadata, structured data, and llms.txt.                                    |\n| Low      | Gateway             | The DevPass product description was unnecessarily long.                                                                           | Shorten it around the subscription, included usage, and coding-tool integration.                                                              |"
		},
		{
			"path": "apps/code/src/app/robots.ts",
			"status": "Repository source",
			"lineCount": 15,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/code/src/app/robots.ts",
			"excerpt": "import type { MetadataRoute } from \"next\";\n\nexport default function robots(): MetadataRoute.Robots {\n\treturn {\n\t\trules: [\n\t\t\t{\n\t\t\t\tuserAgent: \"*\",\n\t\t\t\tallow: \"/\",\n\t\t\t\tdisallow: [\"/dashboard\", \"/api/\"],\n\t\t\t},\n\t\t],\n\t\tsitemap: \"https://devpass.llmgateway.io/sitemap.xml\",\n\t};\n}\n"
		},
		{
			"path": "apps/playground/src/app/sitemap.ts",
			"status": "Repository source",
			"lineCount": 110,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/playground/src/app/sitemap.ts",
			"excerpt": "import { connection } from \"next/server\";\nimport createFetchClient from \"openapi-fetch\";\n\nimport { comparisons } from \"@/lib/comparisons\";\nimport { getConfig } from \"@/lib/config-server\";\n\nimport type { paths } from \"@/lib/api/v1\";\nimport type { MetadataRoute } from \"next\";\n\ninterface ShareListItem {\n\tid: string;\n\tupdatedAt: string;\n}\n\nexport const revalidate = 3600;\n\nasync function fetchPublicShares(): Promise<ShareListItem[]> {\n\tconst config = getConfig();"
		},
		{
			"path": "apps/airside/src/app/sitemap.ts",
			"status": "Repository source",
			"lineCount": 33,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/airside/src/app/sitemap.ts",
			"excerpt": "import { RESOURCE_PAGES } from \"@/lib/resources\";\n\nimport type { MetadataRoute } from \"next\";\n\nconst baseUrl = \"https://airside.llmgateway.io\";\n\nexport default function sitemap(): MetadataRoute.Sitemap {\n\treturn [\n\t\t...[\"/resources\", ...RESOURCE_PAGES.map((page) => page.href)].map(\n\t\t\t(path) => ({\n\t\t\t\turl: `${baseUrl}${path}`,\n\t\t\t\tchangeFrequency: \"monthly\" as const,\n\t\t\t\tpriority: 0.7,\n\t\t\t}),\n\t\t),\n\t\t{\n\t\t\turl: baseUrl,\n\t\t\tchangeFrequency: \"weekly\","
		},
		{
			"path": "apps/ui/public/llms.txt",
			"status": "Repository source",
			"lineCount": 47,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/public/llms.txt",
			"excerpt": "# LLM Gateway\n\n> LLM Gateway is an open-source AI gateway. Route requests through one OpenAI-compatible API and key, with usage analytics, cost tracking, caching, and automatic failover. The live models and providers directories list current availability. Open source (AGPLv3) and self-hostable.\n\n## Key pages\n\n- [Models](https://llmgateway.io/models): Full catalog of supported LLMs with pricing, context windows, and capabilities.\n- [LLM Rankings](https://llmgateway.io/rankings): Which models developers actually run in production — live token volume, trends, and provider market share over 24h/7d/30d windows.\n- [Model release timeline](https://llmgateway.io/timeline): When each LLM was released by its provider and when it was added to LLM Gateway — a reference for AI model release dates.\n- [Pricing](https://llmgateway.io/pricing): Per-token at provider rates. Pay-as-you-go credits carry a flat 5% platform fee; Bring-Your-Own-Keys is free; enterprise plans available.\n- [Pricing (machine-readable)](https://llmgateway.io/pricing.md): Plain-markdown pricing summary for AI agents.\n- [Providers](https://llmgateway.io/providers): Every supported provider and the models each offers.\n- [Docs](https://docs.llmgateway.io): API reference and integration guides.\n- [About](https://llmgateway.io/about): Who builds LLM Gateway and why.\n- [Contact](https://llmgateway.io/contact): Email, Discord, GitHub, and enterprise sales channels.\n- [Compare](https://llmgateway.io/compare/open-router): How LLM Gateway compares to OpenRouter, LiteLLM, Portkey, the Vercel AI Gateway, and GitHub Copilot.\n- [GitHub Copilot cost calculator](https://llmgateway.io/copilot-cost-calculator): Estimate a team's monthly Copilot AI Credits bill under the June 2026 usage-based billing and compare the same workload at pass-through token prices with prompt caching.\n- [Migrate from GitHub Copilot](https://llmgateway.io/migration/github-copilot): Map Copilot chat, agent mode, and code review to gateway-backed tools with hard budget caps."
		},
		{
			"path": "apps/code/public/llms.txt",
			"status": "Repository source",
			"lineCount": 33,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/code/public/llms.txt",
			"excerpt": "# DevPass by LLM Gateway\n\n> DevPass is a flat-price subscription for AI coding tools. One API key connects the models in the live [DevPass catalogue](https://devpass.llmgateway.io/models) in any OpenAI-compatible coding agent — DevPass Code, Claude Code, opencode, GitHub Copilot, Cursor, Continue, and more — with a fixed monthly usage allowance instead of surprise token bills. Once the allowance is used, requests pause by default; users can optionally enable pay-as-you-go overflow and top up a credits balance to keep going at provider rates.\n\n## Plans\n\n- Lite: $29/month — includes $87 of model usage at standard provider rates.\n- Pro: $79/month — includes $237 of model usage.\n- Max: $179/month — includes $537 of model usage.\n- Every plan includes model access and cost tracking; check the live catalogue for availability.\n- First-month guarantee: refund yourself from the dashboard within 14 days if you've used less than 20% of your monthly allowance.\n\n## Key pages\n\n- [DevPass](https://devpass.llmgateway.io): Plans, supported coding agents, and setup.\n- [Pricing](https://devpass.llmgateway.io/pricing): Lite, Pro, and Max plans with included usage, premium fair-use limits, and Reset Passes.\n- [Pricing (machine-readable)](https://devpass.llmgateway.io/pricing.md): Plain-markdown DevPass pricing for AI agents.\n- [Compare](https://devpass.llmgateway.io/compare): DevPass vs Cursor, OpenCode, FirePass, the z.ai GLM Coding Plan, and Alibaba's Qwen plan."
		},
		{
			"path": "apps/playground/public/llms.txt",
			"status": "Repository source",
			"lineCount": 35,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/playground/public/llms.txt",
			"excerpt": "# Lounge by LLM Gateway\n\n> Lounge is an AI chat app by LLM Gateway. Use models from multiple providers in one interface; the live [catalogue](https://llmgateway.io/models) lists current availability. It supports text chat, image and video generation, multi-model council debates, and projects with knowledge files with one membership.\n\n## Memberships\n\n- Starter: $9/month.\n- Plus: $19/month.\n- Pro: $49/month.\n- All memberships are billed monthly and include a monthly credit allowance usable across every model; free to start with no credit card.\n- First-month guarantee: refund yourself from the billing page within 14 days if you've used less than 20% of your allowance.\n\n## Key pages\n\n- [Lounge](https://lounge.llmgateway.io): The members' lounge for AI.\n- [Pricing](https://lounge.llmgateway.io/pricing): Starter, Plus, and Pro memberships with included usage.\n- [Pricing (machine-readable)](https://lounge.llmgateway.io/pricing.md): Plain-markdown Lounge pricing for AI agents.\n- [Compare](https://lounge.llmgateway.io/compare): Lounge vs ChatGPT, Claude, Gemini, Poe, T3 Chat, Perplexity, and OpenRouter."
		},
		{
			"path": "apps/airside/public/llms.txt",
			"status": "Repository source",
			"lineCount": 50,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/airside/public/llms.txt",
			"excerpt": "# Airside by LLM Gateway\n\n> Airside is the self-service provider portal for LLM Gateway. LLM API providers can verify their domain, submit models and pricing for approval, and track routed traffic. Providers control their routing discount and the gateway margin they accept.\n\n## How it works\n\n- Claim your carrier: sign up with a company email whose registrable domain matches your API endpoint's domain (or your published website). Free and disposable email domains are rejected. Claims are reviewed and approved by the LLM Gateway team before going live, and only one live claim exists per provider.\n- Register a new provider: a provider that isn't in the catalogue yet can be registered as a custom carrier by submitting its OpenAI-compatible API base URL on the same verified domain.\n- Register your fleet: list models with context size, max output, capabilities (streaming, vision, audio, tools, JSON output, reasoning efforts) and per-model rate limits. Draft metadata can be edited directly; changes to active model metadata are filed for review. New listings require preflight verification and initial fare approval before entering service.\n- File your fares: pricing never changes silently — every price change is a tariff filing that takes effect only after approval. Input, output, cached-input and per-request prices are all supported. One filing can be pending per model at a time.\n- Win traffic: routing scores carriers on price (after your discount and the gateway margin you accept), availability, throughput and latency. Lower scores win the request.\n- Watch your traffic: requests, errors, tokens and billed traffic, aggregated per model and per day across every gateway tenant. Aggregates never expose tenant identities, and prompts and responses are never shown to carriers.\n\n## Economics\n\n- Listing on llmgateway.io costs a one-time, non-refundable $2,500 fee per provider company, charged via Stripe before a claim is approved. Providers we already work with can skip it with an invite code entered during onboarding. Self-hosted deployments without a configured fee list for free.\n- There is no recurring platform fee and no minimum volume. You share margin only on traffic you actually win.\n- A listing covers your team: owners can invite up to 10 crew members to the console."
		},
		{
			"path": "apps/docs/app/llms-full.txt/route.ts",
			"status": "Repository source",
			"lineCount": 25,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/docs/app/llms-full.txt/route.ts",
			"excerpt": "import { docsBaseUrl } from \"@/lib/base-url\";\nimport { getLLMText } from \"@/lib/get-llm-text\";\nimport { source } from \"@/lib/source\";\n\nexport const dynamic = \"force-dynamic\";\n\nconst HEADER = `# LLM Gateway — Full Documentation\n\n> LLM Gateway is an open-source, OpenAI-compatible API gateway for routing, managing, and analyzing requests across LLM providers. Use one API key, track usage and cost, configure caching and guardrails, and self-host or use the managed cloud. Current models and pricing: https://llmgateway.io/models\n\nAPI base URL: https://api.llmgateway.io/v1 · Docs: ${docsBaseUrl} · Site: https://llmgateway.io\n\nThis file concatenates the full text of every documentation page below.`;\n\nexport async function GET() {\n\tconst scan = source.getPages().map(getLLMText);\n\tconst scanned = await Promise.all(scan);\n"
		},
		{
			"path": "apps/docs/content/(gateway)",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/docs/content/(gateway)",
			"excerpt": null
		},
		{
			"path": "apps/docs/content/(devpass)",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/docs/content/(devpass)",
			"excerpt": null
		},
		{
			"path": "apps/docs/content/(lounge)",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/docs/content/(lounge)",
			"excerpt": null
		},
		{
			"path": "apps/docs/content/(airside)",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/docs/content/(airside)",
			"excerpt": null
		},
		{
			"path": "apps/ui/public/screenshots",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/public/screenshots",
			"excerpt": null
		},
		{
			"path": "apps/docs/public/recordings",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/docs/public/recordings",
			"excerpt": null
		},
		{
			"path": "apps/ui/src/components/enterprise/demo-video.tsx",
			"status": "Repository source",
			"lineCount": 179,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/components/enterprise/demo-video.tsx",
			"excerpt": "\"use client\";\n\nimport { Play } from \"lucide-react\";\nimport Image from \"next/image\";\nimport { useRef, useState } from \"react\";\n\nconst DURATION_LABEL = \"6:35\";\n\ninterface Chapter {\n\tat: number;\n\ttime: string;\n\tlabel: string;\n}\n\nconst CHAPTERS: Chapter[] = [\n\t{ at: 0, time: \"0:00\", label: \"Dashboard & live activity\" },\n\t{ at: 60, time: \"1:00\", label: \"Usage by model, key & member\" },\n\t{ at: 82, time: \"1:22\", label: \"API keys & IAM rules\" },"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-26-smart-routing-benchmark.md",
			"status": "Repository source",
			"lineCount": 158,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/content/blog/2026-09-26-smart-routing-benchmark.md",
			"excerpt": "---\nid: \"blog-smart-routing-benchmark\"\nslug: \"smart-routing-benchmark\"\ndate: \"2026-09-26\"\ntitle: \"Smart Routing Benchmark: Cost and Quality\"\nsummary: \"A live Smart Routing benchmark compares the same prompts across routed and fixed-model requests, including classifier charges, answer checks, and latency. See where routing saved money and where it missed.\"\ncategories: [\"Engineering\"]\nfaqs:\n  - question: \"Does Smart Routing always save money?\"\n    answer: \"No. Savings depend on the fixed model you would otherwise use, your allowed candidates, the task mix, and the classifier's decisions. Compare both cost and task success against your actual baseline.\"\n  - question: \"Does the benchmark include classifier costs?\"\n    answer: \"Yes. Each routed request is matched to its separately billed classifier entry. The comparison includes inference, classification, and storage for both entries.\"\n  - question: \"Does a small benchmark prove the same quality?\"\n    answer: \"No. A pilot can reveal large cost differences and concrete failures. A single run on a small synthetic workload cannot establish quality equivalence or predict every production workload.\"\nimage:\n  src: \"/blog/smart-routing-benchmark.png\"\n  alt: \"A glowing balance scale on a circuit board weighs task quality against inference cost\"\n  width: 1536"
		},
		{
			"path": "apps/ui/public/benchmarks",
			"status": "Repository source",
			"lineCount": null,
			"url": "https://github.com/theopenco/llmgateway/tree/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/public/benchmarks",
			"excerpt": null
		},
		{
			"path": "apps/ui/src/components/blog/blog-cta.tsx",
			"status": "Repository source",
			"lineCount": 161,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/components/blog/blog-cta.tsx",
			"excerpt": "\"use client\";\n\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport { usePostHog } from \"posthog-js/react\";\n\nimport { Button } from \"@/lib/components/button\";\n\n// Conversion card embeddable in markdown content via the `BlogCta` override in\n// getMarkdownOptions. The DevPass variant leans into the passport/boarding-pass\n// brand language used across DevPass surfaces.\nexport function BlogCta({\n\tvariant = \"devpass\",\n\tlocation = \"inline\",\n}: {\n\tvariant?: \"devpass\" | \"gateway\" | \"enterprise\";\n\tlocation?: string;\n}) {"
		},
		{
			"path": "apps/ui/src/components/content-conversion-rail.tsx",
			"status": "Repository source",
			"lineCount": 217,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/components/content-conversion-rail.tsx",
			"excerpt": "\"use client\";\n\nimport { ArrowRight, X } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport { usePostHog } from \"posthog-js/react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\ntype RailVariant = \"devpass\" | \"gateway\";\n\ninterface ContentConversionRailProps {\n\t/** Which offer to stand behind. Coding-agent content gets DevPass. */\n\tvariant?: RailVariant;\n\t/** Surface name for analytics — \"blog\", \"guide\", \"timeline\". */\n\tsurface: string;\n\t/**"
		},
		{
			"path": "apps/code/src/components/LandingTracker.tsx",
			"status": "Repository source",
			"lineCount": 87,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/code/src/components/LandingTracker.tsx",
			"excerpt": "\"use client\";\n\nimport { usePostHog } from \"posthog-js/react\";\nimport { useEffect } from \"react\";\n\nimport { useAppConfig } from \"@/lib/config\";\n\nexport function LandingPageTracker() {\n\tconst posthog = usePostHog();\n\tconst { posthogKey } = useAppConfig();\n\n\tuseEffect(() => {\n\t\tif (!posthogKey) {\n\t\t\treturn;\n\t\t}\n\t\tposthog.capture(\"page_viewed_code_landing\");\n\t}, [posthog, posthogKey]);\n"
		},
		{
			"path": "apps/ui/src/components/home/tracked-link.tsx",
			"status": "Local work at snapshot",
			"lineCount": 59,
			"url": null,
			"excerpt": "\"use client\";\n\nimport Link from \"next/link\";\nimport { usePostHog } from \"posthog-js/react\";\n\nimport { AuthLink } from \"@/components/shared/auth-link\";\n\nimport type { Route } from \"next\";\nimport type { ReactNode } from \"react\";\n\ninterface TrackedLinkProps {\n\thref: string;\n\tlocation: string;\n\tcta: string;\n\tclassName?: string;\n\tchildren: ReactNode;\n\tauth?: boolean;\n\texternal?: boolean;"
		},
		{
			"path": "apps/ui/src/components/enterprise/contact.tsx",
			"status": "Repository source",
			"lineCount": 429,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/components/enterprise/contact.tsx",
			"excerpt": "\"use client\";\n\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { ArrowRight, CheckCircle2, Loader2 } from \"lucide-react\";\nimport { usePostHog } from \"posthog-js/react\";\nimport { useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport { z } from \"zod\";\n\nimport { Button } from \"@/lib/components/button\";\nimport {\n\tForm,\n\tFormControl,\n\tFormField,\n\tFormItem,\n\tFormLabel,\n\tFormMessage,"
		},
		{
			"path": "apps/ui/src/components/enterprise/procurement.tsx",
			"status": "Repository source",
			"lineCount": 112,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/components/enterprise/procurement.tsx",
			"excerpt": "import {\n\tArrowUpRight,\n\tFileCheck,\n\tReceipt,\n\tScrollText,\n\tShieldQuestion,\n} from \"lucide-react\";\nimport Link from \"next/link\";\n\nimport type { LucideIcon } from \"lucide-react\";\nimport type { Route } from \"next\";\n\ninterface ProcurementItem {\n\ticon: LucideIcon;\n\ttitle: string;\n\tdescription: string;\n\thref?: string;\n\tlinkLabel?: string;"
		},
		{
			"path": "apps/ui/src/components/enterprise/security.tsx",
			"status": "Repository source",
			"lineCount": 162,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/components/enterprise/security.tsx",
			"excerpt": "import {\n\tArrowUpRight,\n\tFileCheck,\n\tGlobe,\n\tKeyRound,\n\tLock,\n\tShieldCheck,\n} from \"lucide-react\";\nimport Link from \"next/link\";\n\nimport { MARKETING_STATS } from \"@llmgateway/shared\";\n\nconst assurances = [\n\t{\n\t\ticon: Lock,\n\t\ttitle: \"Encrypted everywhere\",\n\t\tdescription: \"TLS in transit, AES-256 at rest — including provider keys.\",\n\t},"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-05-07-devpass-product-hunt-launch.md",
			"status": "Repository source",
			"lineCount": 28,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/content/changelog/2026-05-07-devpass-product-hunt-launch.md",
			"excerpt": "---\nid: \"46\"\nslug: \"devpass-product-hunt-launch\"\ndate: \"2026-05-07\"\ntitle: \"DevPass is live on Product Hunt\"\nsummary: \"DevPass by LLM Gateway is live on Product Hunt today. One subscription, every coding model, three flat prices.\"\ntags: [\"devpass\"]\nimage:\n  src: \"/changelog/devpass-product-hunt-launch.png\"\n  alt: \"DevPass by LLM Gateway — $1 in, $3 out — live on Product Hunt\"\n  width: 1200\n  height: 675\n---\n\nAfter months of building, **DevPass by LLM Gateway** is live on Product Hunt today 🚀\n\nOne subscription. Every coding model. Three flat prices.\n"
		},
		{
			"path": "apps/ui/src/content/changelog/2025-05-01-gateway-v1-launch.md",
			"status": "Repository source",
			"lineCount": 198,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/content/changelog/2025-05-01-gateway-v1-launch.md",
			"excerpt": "---\nid: \"1\"\nslug: \"gateway-v1-launch\"\ndate: \"2025-05-01\"\ntitle: \"LLM Gateway v1.0 Launch\"\nsummary: \"The unified AI gateway is here! Access 30+ models from 8 providers through one OpenAI-compatible API with transparent pricing and powerful analytics.\"\ntags: [\"llmgateway\"]\nimage:\n  src: \"/opengraph.png\"\n  alt: \"LLM Gateway v1.0 launch featuring multi-provider support and unified API\"\n  width: 1768\n  height: 677\n---\n\n🎉 **Welcome to LLM Gateway v1.0!** We're excited to launch the most comprehensive AI gateway platform, bringing together 30+ leading AI models from 8 providers under one unified, developer-friendly API.\n\n## 🌟 Unified Multi-Provider Access\n"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-05-introducing-airside.md",
			"status": "Repository source",
			"lineCount": 127,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/content/blog/2026-09-05-introducing-airside.md",
			"excerpt": "---\nid: \"blog-introducing-airside\"\nslug: \"introducing-airside\"\ndate: \"2026-09-05\"\nupdatedAt: \"2026-09-25\"\ntitle: \"Introducing Airside: List Your Models on LLM Gateway\"\nsummary: \"Airside is the self-serve carrier console where LLM providers claim their listing on LLM Gateway, register models, file prices for review, and tune the discount and margin that win routed traffic. Listing costs a one-time $2,500 fee per provider company, and every model is verified live before it goes on the departure board, with a per-request breakdown of what your endpoint served.\"\ncategories: [\"Announcements\"]\nfaqs:\n  - question: \"How do I list my LLM provider on LLM Gateway?\"\n    answer: \"Sign up at airside.llmgateway.io with your company email. If its domain matches your API endpoint's domain or your published website, your existing catalogue entry is claimable; otherwise register a new carrier by pointing Airside at your API. Every claim is reviewed by the LLM Gateway team, and listing carries a one-time $2,500 fee per provider company unless you have an invite code.\"\n  - question: \"What does it cost to list a model on LLM Gateway?\"\n    answer: \"A one-time $2,500 listing fee per provider company, paid through Stripe during onboarding. There is no subscription and no minimum volume. Once listed, you share the gateway margin you accept, called the landing fee, on the traffic you win, with a baseline of 20%.\"\n  - question: \"How does LLM Gateway decide which provider serves a request?\"\n    answer: \"Every candidate provider is scored on expected token cost after its discount and landing fee (cache-read savings included), availability, throughput, and latency, and the lowest score wins. There is no paid placement. Offering a traffic discount or accepting a higher landing fee lowers your effective price in that election.\"\n  - question: \"What happens when a model fails verification?\"\n    answer: \"Airside reports which check failed and shows every upstream request behind it, but it does not switch the capability off on its own, since one refused request can just as easily be a transient fault. Fix the endpoint and verify again, or turn the capability off yourself. Where a check can tell a missing capability from a dialect, such as a tool_choice mode or reasoning_effort tier your endpoint refuses, only that mode or tier comes off the listing.\"\n  - question: \"Can I list a model that is not OpenAI-compatible?\""
		},
		{
			"path": "apps/ui/next.config.ts",
			"status": "Repository source",
			"lineCount": 499,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/next.config.ts",
			"excerpt": "import { join } from \"path\";\n\nimport { withContentCollections } from \"@content-collections/next\";\n\nimport { prerenderedModelOgMappings } from \"./src/lib/model-og-params\";\n\nimport type { NextConfig } from \"next\";\n\nconst nextConfig: NextConfig = {\n\toutputFileTracingRoot: join(__dirname, \"../../\"),\n\tdistDir: process.env.NODE_ENV === \"development\" ? \".next-dev\" : \".next\",\n\toutput: \"standalone\",\n\tproductionBrowserSourceMaps: true,\n\ttypedRoutes: true,\n\treactStrictMode: true,\n\treactCompiler: true,\n\ttranspilePackages: [\"shiki\"],\n\texperimental: {"
		},
		{
			"path": "packages/shared/src/marketing.ts",
			"status": "Local work at snapshot",
			"lineCount": 62,
			"url": null,
			"excerpt": "// Single source of truth for marketing claims used across apps/ui and\n// apps/code. Labels must stay floors of the live counts, including mappings\n// already scheduled to deactivate. As of 2026-09-27: 40 distinct provider\n// platforms (46 provider ids when endpoint variants such as vertex-anthropic\n// count separately), 289 models with an active mapping (270 after scheduled\n// retirements; retired models never count), 1.95T tokens and 86M requests\n// from /public/apps, 1,663 GitHub stars on theopenco/llmgateway.\nexport const MARKETING_STATS = {\n\tproviders: \"40+\",\n\tmodels: \"250+\",\n\ttokensRouted: \"1T+\",\n\trequestsRouted: \"80M+\",\n\tuptimeSla: \"99.9%\",\n\teffectiveUptime: \"99.9999%\",\n\tplatformFee: \"5%\",\n\tdataStoragePrice: \"$0.01 per 1M tokens\",\n\tgithubStars: \"1.6K+\",\n} as const;"
		},
		{
			"path": "apps/ui/src/content/changelog/2026-07-27-runware-launch-discount.md",
			"status": "Repository source",
			"lineCount": 54,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/content/changelog/2026-07-27-runware-launch-discount.md",
			"excerpt": "---\nid: \"71\"\nslug: \"runware-launch-discount\"\ndate: \"2026-07-27\"\ntitle: \"Runware Launch: 30% Off Open-Source Models\"\nsummary: \"We partnered with Runware.ai to serve six open-source flagships — gpt-oss-120b, Gemma 4, DeepSeek V4 Pro and Flash, Kimi K2.6, and GLM 5.2 — at 30% off. The discount applies automatically to everything routed through Runware until September 9.\"\ntags: [\"llmgateway\"]\nimage:\n  src: \"/changelog/runware-launch-discount.png\"\n  alt: \"LLM Gateway and Runware logos beside a large 30% and a calendar, announcing the launch discount\"\n  width: 1536\n  height: 1024\n---\n\n> **Update (August 25):** the promo has been extended by two weeks — the discount now runs until **September 9, 2026**.\n\nOpen-source flagships now carry serious production workloads, which makes the per-token price of serving them the number that matters. We partnered with **[Runware.ai](https://llmgateway.io/providers/runware)** to bring their fast, OpenAI-compatible inference for open models to the gateway — and to launch it, **every Runware model is 30% off**.\n"
		},
		{
			"path": "apps/ui/src/content/blog/2026-09-22-scx-model-discount-extended.md",
			"status": "Repository source",
			"lineCount": 61,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/content/blog/2026-09-22-scx-model-discount-extended.md",
			"excerpt": "---\nid: \"blog-scx-model-discount-extended\"\nslug: \"scx-model-discount-extended\"\ndate: \"2026-09-22\"\ntitle: \"SCX Model Discount Extended Through October 9\"\nsummary: \"The SCX model discount was due to end on September 24. It now runs 15 more days: 20% off the same seven models on LLM Gateway until October 9, 2026. Nothing changes in how you route requests.\"\ncategories: [\"Announcements\"]\nfaqs:\n  - question: \"When does the extended SCX model discount end?\"\n    answer: \"The discount now ends October 9, 2026 at 23:59:59 UTC, 15 days after the original September 24 end date. List prices apply after that.\"\n  - question: \"Does the extension change the discount or the eligible models?\"\n    answer: \"No. The same 20% discount applies to the same seven models when they are served through SCX. Requests served by other providers are billed at that provider's rates.\"\n  - question: \"Do I need to change anything to keep the discount?\"\n    answer: \"No. Keep routing requests with the scx-ai-gp provider prefix, such as scx-ai-gp/glm-5.3, and the discounted price applies automatically until the new end date.\"\nimage:\n  src: \"/blog/scx-model-discount-extended.png\"\n  alt: \"A glowing discount tag and a calendar fanning out extra pages on a circuit board connected to seven AI model chips\"\n  width: 1536"
		},
		{
			"path": "apps/api/src/routes/public-newsletter.ts",
			"status": "Repository source",
			"lineCount": 294,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/api/src/routes/public-newsletter.ts",
			"excerpt": "import { createRoute, OpenAPIHono } from \"@hono/zod-openapi\";\nimport { z } from \"zod\";\n\nimport { redisClient } from \"@/auth/config.js\";\n\nimport { logger } from \"@llmgateway/logger\";\n\nimport type { ServerTypes } from \"@/vars.js\";\n\nexport const publicNewsletter = new OpenAPIHono<ServerTypes>();\n\nconst RATE_LIMIT_MAX = 5;\nconst RATE_LIMIT_WINDOW_SECONDS = 60 * 60; // 1 hour\nconst RESEND_TIMEOUT_MS = 10_000;\n\nconst resendApiKey = process.env.RESEND_API_KEY;\nconst resendNewsletterTopicId = process.env.RESEND_NEWSLETTER_TOPIC_ID;\n"
		},
		{
			"path": "apps/ui/src/components/landing/newsletter.tsx",
			"status": "Local work at snapshot",
			"lineCount": 198,
			"url": null,
			"excerpt": "\"use client\";\n\nimport { CheckCircle2, Mail, Sparkles, Zap } from \"lucide-react\";\nimport { useState } from \"react\";\n\nimport { motion, type Variants } from \"@/components/motion-wrapper\";\nimport { Input } from \"@/lib/components/input\";\nimport { ShimmerButton } from \"@/lib/components/shimmer-button\";\nimport { useApi } from \"@/lib/fetch-client\";\nimport { cn } from \"@/lib/utils\";\n\nconst containerVariants: Variants = {\n\thidden: { opacity: 0 },\n\tvisible: {\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tstaggerChildren: 0.12,\n\t\t\tdelayChildren: 0.1,"
		},
		{
			"path": "apps/worker/src/services/follow-up-emails.ts",
			"status": "Repository source",
			"lineCount": 603,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/worker/src/services/follow-up-emails.ts",
			"excerpt": "import { interruptibleSleep, isStopRequested } from \"@/shutdown.js\";\n\nimport {\n\tand,\n\tisEmailSuppressed,\n\tdb,\n\teq,\n\tfollowUpEmail,\n\tinArray,\n\torganization,\n\tproject,\n\tprojectHourlyStats,\n\tresolveVerifiedOrgRecipient,\n\tsql,\n\ttransaction,\n\tuserOrganization,\n} from \"@llmgateway/db\";\nimport { logger } from \"@llmgateway/logger\";"
		},
		{
			"path": "packages/shared/src/email-unsubscribe.ts",
			"status": "Repository source",
			"lineCount": 227,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/packages/shared/src/email-unsubscribe.ts",
			"excerpt": "import { createHmac, timingSafeEqual } from \"node:crypto\";\n\nimport { getApiKeyHashSecret, getApiKeyHashSecrets } from \"./api-key-hash.js\";\n\n/**\n * Categories that also appear in the in-app notification feed. Delivery for\n * these is a per-user preference on top of the address-level suppression list.\n */\nexport const notificationCategories = [\n\t\"budget\",\n\t\"model_retirement\",\n\t\"provider_issue\",\n\t\"model_available\",\n\t\"compliance_downgrade\",\n] as const;\nexport type NotificationCategory = (typeof notificationCategories)[number];\n\n/**"
		},
		{
			"path": "apps/api/src/routes/referral.ts",
			"status": "Repository source",
			"lineCount": 131,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/api/src/routes/referral.ts",
			"excerpt": "import { createRoute, OpenAPIHono } from \"@hono/zod-openapi\";\nimport { z } from \"zod\";\n\nimport { parseReferralBonusPercent } from \"@/lib/referral-bonus.js\";\n\nimport { db } from \"@llmgateway/db\";\n\nimport type { ServerTypes } from \"@/vars.js\";\n\nconst cookieDomain = process.env.COOKIE_DOMAIN ?? \"localhost\";\nconst isProduction = process.env.NODE_ENV === \"production\";\n\nexport const referral = new OpenAPIHono<ServerTypes>();\n\nconst REFERRAL_COOKIE_NAME = \"llmgateway_referral\";\nconst REFERRAL_COOKIE_DAYS = 30;\n\nconst referralRoute = createRoute({"
		},
		{
			"path": "apps/api/src/lib/referral-bonus.ts",
			"status": "Repository source",
			"lineCount": 57,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/api/src/lib/referral-bonus.ts",
			"excerpt": "import { db } from \"@llmgateway/db\";\n\nconst DEFAULT_REFERRAL_BONUS_PERCENT = 50;\n\n/**\n * Safely parses a stored referral bonus percent (decimal column → string),\n * falling back to the default when the value is missing or malformed.\n */\nexport function parseReferralBonusPercent(\n\tvalue: string | number | null | undefined,\n): number {\n\tif (value === null || value === undefined || value === \"\") {\n\t\treturn DEFAULT_REFERRAL_BONUS_PERCENT;\n\t}\n\tconst parsed = Number(value);\n\treturn Number.isFinite(parsed) ? parsed : DEFAULT_REFERRAL_BONUS_PERCENT;\n}\n"
		},
		{
			"path": "apps/ui/src/components/referral-handler.tsx",
			"status": "Repository source",
			"lineCount": 30,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/components/referral-handler.tsx",
			"excerpt": "\"use client\";\n\nimport { useSearchParams } from \"next/navigation\";\nimport { useEffect } from \"react\";\n\nimport { useAppConfig } from \"@/lib/config\";\n\nexport function ReferralHandler() {\n\tconst searchParams = useSearchParams();\n\tconst { apiUrl } = useAppConfig();\n\n\tuseEffect(() => {\n\t\tconst ref = searchParams.get(\"ref\");\n\t\tif (ref) {\n\t\t\tfetch(`${apiUrl}/referral`, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\","
		},
		{
			"path": "apps/ui/src/components/dashboard/referral-dialog.tsx",
			"status": "Repository source",
			"lineCount": 305,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/ui/src/components/dashboard/referral-dialog.tsx",
			"excerpt": "\"use client\";\n\nimport {\n\tAlertCircle,\n\tArrowLeft,\n\tCheck,\n\tCopy,\n\tDollarSign,\n\tGift,\n\tSparkles,\n\tUsers,\n} from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport { useEffect, useState } from \"react\";\n\nimport { useDashboardNavigation } from \"@/hooks/useDashboardNavigation\";\nimport { Button } from \"@/lib/components/button\";\nimport {"
		},
		{
			"path": "apps/api/src/utils/chat-support-knowledge.ts",
			"status": "Repository source",
			"lineCount": 562,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/api/src/utils/chat-support-knowledge.ts",
			"excerpt": "import { redisClient } from \"@/auth/config.js\";\n\nimport { db } from \"@llmgateway/db\";\nimport { logger } from \"@llmgateway/logger\";\nimport { isStealthProvider } from \"@llmgateway/models\";\n\n// Domains whose sitemaps are crawled to build the support assistant's\n// knowledge of every public page across the product suite. The agent links to\n// these URLs and can fetch their content on demand to ground answers.\nexport const KNOWLEDGE_SITEMAPS = [\n\t\"https://llmgateway.io/sitemap.xml\",\n\t\"https://devpass.llmgateway.io/sitemap.xml\",\n\t\"https://docs.llmgateway.io/sitemap.xml\",\n\t\"https://lounge.llmgateway.io/sitemap.xml\",\n\t\"https://airside.llmgateway.io/sitemap.xml\",\n];\n\n// Short, curated product summaries inlined into the system prompt so product"
		},
		{
			"path": "AGENTS.md",
			"status": "Repository source",
			"lineCount": 439,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/AGENTS.md",
			"excerpt": "# AGENTS.md\n\nThis file provides guidance to AI agents when working with code in this repository.\n\n## Development Commands\n\n### Setup and Dependencies\n\n- `pnpm install` - Install all dependencies\n- `pnpm setup` - Full development environment setup (starts Docker, syncs DB, seeds data)\n- `docker compose up -d` - Start PostgreSQL and Redis services\n- `pnpm wait-for-services` - Block until Postgres (including the `test` database) and both Redis instances actually accept connections. `docker compose up -d` returns long before Postgres finishes initdb, so run this before `pnpm push`/`pnpm seed` in any script that just started the stack. Waits up to 3 minutes (`WAIT_TIMEOUT`), retrying every 2 seconds (`WAIT_INTERVAL`), and respects the per-worktree port/`STACK_SUFFIX` env vars.\n\n### Development\n\nNOTE: these commands can only be run in the root directory of the repository, not in individual app directories.\n\n- `pnpm dev` - Start all development servers (UI on :3002, Playground on :3003, Code on :3004, API on :4002, Gateway on :4001, Docs on :3005, Admin on :3006, Airside on :3007). Every one of these ports, plus Postgres/Redis, is overridable per worktree — see \"Running an isolated stack per worktree\"."
		},
		{
			"path": "apps/ui/src/components/home/control-plane.tsx",
			"status": "Local work at snapshot",
			"lineCount": 377,
			"url": null,
			"excerpt": "import { ArrowRight, ArrowUpRight } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { editorial } from \"./fonts\";\nimport styles from \"./home.module.css\";\nimport { TrackedLink } from \"./tracked-link\";\n\nimport type { ReactNode } from \"react\";\n\ntype Plan = \"Enterprise\" | \"All plans\";\n\nfunction Panel({\n\tindex,\n\tplan,\n\ttitle,\n\tbody,\n\tclassName,"
		},
		{
			"path": "apps/playground/src/components/seo/lounge-landing-sections.tsx",
			"status": "Repository source",
			"lineCount": 426,
			"url": "https://github.com/theopenco/llmgateway/blob/01da451e5c7569297d8f1ec93debaa55297ad639/apps/playground/src/components/seo/lounge-landing-sections.tsx",
			"excerpt": "import Link from \"next/link\";\n\nimport { BRAND } from \"@/lib/brand\";\n\nimport {\n\tCHAT_PLAN_PRICES,\n\tgetChatPlanCreditsLimit,\n\tMARKETING_STATS,\n\tSELF_REFUND_USAGE_PERCENT,\n\tSELF_REFUND_WINDOW_DAYS,\n} from \"@llmgateway/shared\";\n\nconst MODEL_FAMILIES = [\n\t\"GPT-5\",\n\t\"Claude Opus\",\n\t\"Claude Sonnet\",\n\t\"Gemini Pro\",\n\t\"Gemini Flash\","
		}
	],
	"analytics": {
		"file": "analytics.json",
		"observedAt": "2026-09-27T13:36:09.199Z",
		"financialDataExcluded": true
	}
}
