Skip to main content

Product Changelog

Shipping notes for the LeanForge application, API, and data pipeline.

Subscribe via RSS

Breaking: unmeasured fields removed from the keyword API and exports

  • Removed searchVolume, cpc, and difficulty from every public keyword response: GET /api/v1/keywords, /api/v1/keywords/trending, /api/v1/keywords/:slug, /api/v1/trends, /api/v1/categories/:slug, the POST and PUT keyword responses, and the server-rendered page payloads. Nothing was renamed; the keys are gone.
  • POST /api/v1/keywords now ignores searchVolume, cpc, and difficulty in the request body. PUT /api/v1/keywords/:slug returns 400 if any of them are sent.
  • Removed searchVolume, cpc, and pageOneResults from the CSV and JSON export.
  • Why: searchVolume parsed a field the upstream SERP response does not contain and read 0 on every keyword; cpc was hardcoded to 0; difficulty was a page-one organic result count that never measured competition, fed no score, and is no longer refreshed.
  • Use instead: trendScore, its per-signal breakdown, velocity, direction, and the verdict from GET /api/v1/keywords/:slug/next-actions are the supported fields.

Reliable trends and public data exports

  • Trending results now fall back to the highest trend scores when no keyword is classified as rising.
  • CSV and JSON exports are available from the homepage with category-aware filtering.
  • Deep health checks now report data freshness and zero-value counts.

Accessible marketing pages and API contract

  • FAQ answers are fully present in prerendered HTML using native disclosure elements.
  • Added a skip link, semantic category navigation, clearer service status, and homepage calls to action.
  • Published an OpenAPI 3.1 contract for all public read endpoints.

Blog and dynamic SEO pages

  • Launched the blog index and individual article routes.
  • Added database-backed keyword and category pages to the sitemap.
  • Improved server rendering and social-card metadata consistency.