diff --git a/src/app/answers/[slug]/page.tsx b/src/app/answers/[slug]/page.tsx index 28626486..cdd7fe68 100644 --- a/src/app/answers/[slug]/page.tsx +++ b/src/app/answers/[slug]/page.tsx @@ -3,6 +3,7 @@ import { notFound } from "next/navigation"; import Link from "next/link"; import { ArrowLeft, ArrowUpRight } from "lucide-react"; import { loadAnswer, loadAllAnswers } from "@/lib/answers"; +import { getProviderSlugs } from "@/lib/providers"; import { renderTemplate } from "@/lib/bench-template"; import { cleanLeftoverTokens, @@ -155,8 +156,14 @@ export default async function AnswerPage({ // Top results from the referenced bench, mirroring the alternatives // top-N section: surfaces the answer visually for skim readers + gives // crawlers concrete provider names + numbers in the SSR HTML. + // Only include results whose slug has a matching /products/ page — some + // benches (e.g. pm-resolution-delay) use non-provider slugs like + // "politics" or "all-markets" as result labels, which would otherwise + // generate 404 links. + const validProviderSlugs = new Set(await getProviderSlugs()); const sortedResults = [...bench.results] .filter((r) => !isRegion(r.slug)) + .filter((r) => validProviderSlugs.has(r.slug)) .filter((r) => r.ms.p50 !== 0 || r.ms.p99 !== 0) .sort((a, b) => bench.higherIsBetter ? b.ms.p50 - a.ms.p50 : a.ms.p50 - b.ms.p50, diff --git a/src/components/site-footer.tsx b/src/components/site-footer.tsx index c094d91b..b338facb 100644 --- a/src/components/site-footer.tsx +++ b/src/components/site-footer.tsx @@ -34,6 +34,7 @@ export function SiteFooter() { { label: "RPC", href: "/rpc" }, { label: "Data APIs", href: "/data-api" }, { label: "Perpetuals", href: "/perps" }, + { label: "Bridge", href: "/bridge" }, { label: "Compare", href: "/compare" }, { label: "Alternatives", href: "/alternatives" }, { label: "Answers", href: "/answers" },