Skip to content

Redesign the model catalog with model pages, compare and normalized pricing - #578

Open
sabrinaaquino wants to merge 8 commits into
mainfrom
feat/models-redesign
Open

sabrinaaquino wants to merge 8 commits into
mainfrom
feat/models-redesign

Conversation

@sabrinaaquino

Copy link
Copy Markdown
Contributor

Summary

Replaces the flat model lists with a model hub:

  • Explorer (/models/overview and the modality pages): 366 model IDs grouped into 251 families, filters per modality, prices normalized to a comparable unit (video priced from a full POST /video/quote matrix), the privacy tier on every row, a gallery of reference outputs for image and video, and a compare tray.
  • 251 generated model pages (/models/<family>): variants, key specs, capabilities and reasoning details, pricing (cost estimator for text, clip-price matrix for video), parameters, voices, endpoint guidance with code samples, performance and benchmark modules, FAQ and related models.
  • Compare (/models/compare): up to four models side by side, with same-prompt outputs for image and video.
  • Methodology page, and a direction doc for the frontend, design and benchmarks teams: design/models-redesign/DIRECTION.md (plus research notes).

How it's built

  • scripts/build-model-catalog.js builds data/model-catalog.json and the model pages from GET /models, merging data/video-pricing.json (scripts/quote-video-pricing.js), data/model-media.json (scripts/sync-model-media.js) and curated data/model-overrides.json.
  • The UI lives in src/model-hub.jsx. scripts/build-model-hub.js compiles it to data/model-hub.bundle.json, which snippets/model-hub-mount.jsx loads once and caches. Compiling the UI as a snippet in every page made mint validate take ~19 minutes; the bundle keeps builds normal. Styles are in model-hub.css and follow the docs' type scale and components.
  • The sync workflow now also refreshes video quotes hourly and media daily, then rebuilds the catalog and pages.
  • SEO: each model page targets " API" (title, 60-character document title, per-modality description, H1, FAQ). Mintlify doesn't server-render snippet children, so each page also carries a server-rendered text version in a collapsed "Plain-text specification" accordion.

Most of the diff is generated (model pages and data files). The hand-written code is in src/, scripts/, snippets/model-hub-mount.jsx, model-hub.css, the hub pages in models/ and .github/workflows/sync-static-models.yml.

Before merging

  • Turn off sample data. Performance and benchmark numbers are fake, labeled "Sample data", for layout review. Set SAMPLE_DATA_DEFAULT = false in src/model-hub.jsx and run node scripts/build-model-hub.js; otherwise search engines that run JavaScript will index them.
  • Confirm the endpoint rule. data/model-overrides.json recommends /responses for GPT-5-class OpenAI reasoning models; it's marked pending API team confirmation.
  • Accept or replace new Function loading. The mount evaluates the cached bundle with new Function (the docs CSP allows unsafe-eval). The direction doc describes the alternative.

Known gaps, fine to follow up:

  • Catalog data is from Sep 28. The hourly workflow regenerates it after merge; models added since (Seedance 2.5 US, ElevenLabs TTS v4) are in the static tables but get their pages on that first run.
  • Localized model pages still use the old catalog.
  • 25 image and video families have no reference renders on venice.ai; they're listed under the gallery. Rendering the 20 that work from a prompt would cost about $25 of API credit.
  • Some provider attributions are inferred from model IDs, and the code samples haven't been run against the API.

Testing

  • All 261 pages in models/ compile with @mdx-js/mdx; all 253 hub views server-render with React.
  • Local Mintlify preview in light, dark and 390px mobile: explorer (every tab), model pages (text, image, video, TTS, STT, embeddings), compare and methodology. Clicked through filters, the compare tray, the quote matrix, the lightbox and the variant switch.
  • SEO audit of all 251 model pages (document title ≤ 60 characters, description 110–160, H1), plus a check that the crawler text is in the server-rendered HTML.

To preview locally: mintlify dev doesn't serve .json, so on localhost the mount first tries http://localhost:3333. Run npx http-server -p 3333 --cors from the repo root next to npx mintlify dev. Preview and production deployments serve /data/*.json directly.

…nd model pages

Redesign direction for the Models section, built on live data:

- Explorer on /models/overview and the modality pages: modality tabs,
  per-modality columns, quick picks, filter rail, pricing lens,
  gallery view with reference renders, compare tray.
- 251 generated model family pages (/models/<family>) in a hidden,
  searchable navigation group: variants, key numbers, capabilities,
  pricing calculators, endpoint guidance, code samples, and slots for
  performance and benchmarks (sample layout behind ?preview=1).
- Compare view with same-prompt side-by-side output for image and video.
- Build-time video price matrix from POST /video/quote replaces the
  per-row browser quotes and the "Variable" label.
- Methodology page and a direction doc with research in design/.
- Hourly sync workflow builds the catalog, quotes and media.
Importing the 178 KB UI snippet on 251 model pages made every page
compile it: mint validate took ~19 minutes and mint dev would not start
in reasonable time. Root .js files are inlined into every docs page, so
a global script was not an option either.

- src/model-hub.jsx holds the UI as a factory that receives React.
- scripts/build-model-hub.js compiles it with sucrase into
  data/model-hub.bundle.json and checks that it evaluates.
- snippets/model-hub-mount.jsx (<HubMount view="...">) is the only thing
  pages import; it loads the bundle once per session.
- Generated and hand-authored hub pages now use HubMount; their static
  Markdown stays in the HTML for search and agents.

mint dev now starts in ~3.5 minutes with all 251 model pages, and every
model page, the explorer and compare view server-render cleanly through
the bundle.
Adopt the docs type scale (30/500 titles, 18px descriptions, 14px tables), a 4px spacing scale, 4/8/16px radii and the existing catalog badges. Replace cards with rules and whitespace; drop gradients, blur, pills, decorative icons and quick picks. Distinguish primary, secondary and tertiary actions; add focus, disabled, selected, overflow and error states; collapse table columns by priority on small screens; hide empty telemetry and benchmark scaffolding until data exists.
…nce and benchmarks

Model pages get '<model> API' titles, 60-character document titles, per-modality meta descriptions, keywords, an H1, a generated FAQ and a server-rendered text version (H1, pricing, specs, cURL example, FAQ, related links) in a collapsed Accordion after <HubMount>, since Mintlify does not server-render snippet children. Modality tables link model names to their pages.

Sample telemetry and benchmark data now show by default, labeled, behind SAMPLE_DATA_DEFAULT: p50/p95 latency, uptime bars, probe details, composite index, serving parity, reasoning-effort switch, and per-benchmark scores with intervals, provenance and dates.
…pty tiles

Image and video galleries show only families with reference renders; the rest follow in the explorer table. Model pages omit Reference outputs until a family is rendered, videos without a poster paint a first frame, and image and video tables keep two sample columns so they fit.
Resolved conflicts in the generated model tables by regenerating them from main's model snapshot.
@mintlify

mintlify Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
veniceai 🟢 Ready View Preview Sep 29, 2026, 6:17 PM

Regenerated the model tables from main's latest snapshot to resolve conflicts.

This branch was successfully deployed

1 active deployment
staging — 93caa691 Deployed Sep 29, 2026 by mintlify[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant