Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions .claude/commands/add-quote.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
allowed-tools: Read, Edit, Write, Glob, Grep, Bash(cp *), Bash(curl *), Bash(ls *), Bash(file *), Bash(mv *), AskUserQuestion
description: Add a new supporter quote to InferenceX
---

Add a new supporter quote to the InferenceX quotes page.

## Step 1: Gather quote details

Ask the user for the following (if not already provided via $ARGUMENTS):

1. **Quote text** — the full quote
2. **Name** — person's name
3. **Title** — person's role/title
4. **Organization** — company/org name
5. **Logo** — path to a logo file, a URL, or skip (optional)
6. **Link** — optional URL to link the quote to

## Step 2: Add the logo (if provided)

- Check existing logos at `packages/app/public/logos/` for naming conventions
- If a file path is provided, copy it to `packages/app/public/logos/{org-slug}.{ext}` (lowercase, hyphenated)
- If a URL is provided, download it to `packages/app/public/logos/{org-slug}.{ext}`
- Prefer SVG format. If the source is PNG/JPG, use that extension
- Verify the file was saved correctly

## Step 3: Add the quote to quotes-data.ts

- Read `packages/app/src/components/quotes/quotes-data.ts`
- Append the new quote entry to the `QUOTES` array (before the closing `];`)
- Include `logo: '{filename}'` if a logo was added
- Include `link: '{url}'` if a link was provided
- Use `\u2122` for the trademark symbol (™) and `\u2014` for em dashes if needed in the quote text

## Step 4: Ask about the quote carousel

Ask the user:

> **Should this quote appear in the homepage quote carousel?**
> (Currently the carousel uses a whitelist — only explicitly listed orgs are shown)

- If **yes**: add the org name to the whitelist array in `packages/app/src/components/page-content.tsx` (search for the `QUOTES.filter` call with `.includes(q.org)`)
- If **no**: do nothing — the quote will only appear on the `/quotes` supporters page

## Step 5: Verify

- Confirm the quote was added to `quotes-data.ts`
- If carousel was updated, confirm the org is in the whitelist
- If a logo was added, confirm the file exists in `packages/app/public/logos/`
11 changes: 11 additions & 0 deletions packages/app/public/logos/baseten.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 20 additions & 17 deletions packages/app/src/components/page-content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -266,11 +266,11 @@ export function PageContent({ initialTab = 'inference' }: { initialTab?: string
built for the benchmark itself which do not reflect real world performance
</p>
<p className="text-muted-foreground mb-2">
<strong>InferenceX</strong> (formerly InferenceMAX) is our independent,
reproducible benchmark which addresses these issues by continously benchmarking
inference software across an wide range of AI accelerators that is acutally
available to the the ML community. We continously update the benchmarks to capture
the speed of progress.
<strong>InferenceX</strong> (formerly InferenceMAX) is our independent, vendor
neutral, reproducible benchmark which addresses these issues by continously
benchmarking inference software across an wide range of AI accelerators that is
acutally available to the the ML community. We continously update the benchmarks
to capture the speed of progress.
</p>
<p className="text-muted-foreground">
Our open data & insights is widely adopted by the ML community, capacity planning
Expand All @@ -297,18 +297,21 @@ export function PageContent({ initialTab = 'inference' }: { initialTab?: string
</p>
<div className="mt-4 pt-4 border-t border-border/50">
<QuoteCarousel
quotes={QUOTES.filter(
(q) =>
![
'NVIDIA',
'AMD',
'Supermicro',
'Vultr',
'Prime Intellect',
'DatologyAI',
'Stas Bekman',
'Firmus',
].includes(q.org),
quotes={QUOTES.filter((q) =>
[
'OpenAI',
'Microsoft',
'Together AI',
'vLLM',
'GPU Mode',
'PyTorch Foundation',
'Oracle',
'CoreWeave',
'Nebius',
'Crusoe',
'TensorWave',
'SGLang',
].includes(q.org),
)}
overrides={{
order: ['OpenAI'],
Expand Down
7 changes: 7 additions & 0 deletions packages/app/src/components/quotes/quotes-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -197,4 +197,11 @@ export const QUOTES: Quote[] = [
org: 'Adaptive ML',
logo: 'adaptive-ml.svg',
},
{
text: "Our customers ship AI to production using frontier open-source models \u2014 and at scale, every token per second and every dollar per million tokens matters. InferenceX\u2122 gives the ecosystem something we've always needed: an objective, open benchmark that tracks real inference performance continuously across hardware such as GB300 NVL72, GB200 NVL72, H100 & soon Rubin & TPU & Trainium. Very helpful in allowing the wider community to understand the landscape and creating a clear taxonomy around performance.",
name: 'Alex Ker',
title: 'Engineer, Baseten',
org: 'Baseten',
logo: 'baseten.svg',
},
];