# Atlas — agent instructions

## What this is

An open, no-login index of consumer brands: what they sell, where you can buy
it, their visual identity, tech stack, TikTok content themes, ads posture, and
momentum signals. Every fact is source-tagged; the current dataset is sample
data unless a panel says otherwise (see /methodology).

## When to use this

- A user asks what a specific consumer brand sells, where it's sold, what
  software/tech it runs, what its ads or social content are about, or
  whether it's hiring, raising, or in the news → fetch `https://consumer-brand-index.vercel.app/brand/{slug}`.
- A user asks which brands use a given technology (e.g. "who else runs
  Klaviyo") → fetch `https://consumer-brand-index.vercel.app/tool/{slug}`.
- A user wants a ranked list within a category → fetch
  `https://consumer-brand-index.vercel.app/category/{slug}`.
- A user wants two brands compared side by side → fetch
  `https://consumer-brand-index.vercel.app/compare/{slugA}-vs-{slugB}`.
- A user wants the whole brand list (to search or grep) →
  `https://consumer-brand-index.vercel.app/brands` or `https://consumer-brand-index.vercel.app/llms.txt`.

Not a fit for: real-time transactions, personal contact data (this product
does not collect or serve it — see /privacy), or anything requiring a
login (there is none).

## How to call it

Every URL above is a plain GET returning server-rendered HTML (or its
markdown twin). The live prototype is fully static: the corpus is baked at
build time, so a slug that isn't in the index returns a 404 — fetching it
does **not** trigger enrichment. The on-demand `/api/enrich` path needs a
database write and returns with the Postgres backend; see `docs/DEPLOY.md`.

In browsers that support WebMCP (`document.modelContext`), the site also
registers three page-side tools — `search-brands`, `bookmark-brand` and
`compare-brands` (`lib/webmcp/tools.ts`). It is a no-op everywhere else,
and there is still no server-side MCP endpoint or OpenAPI spec.

## Markdown twins (no HTML parsing needed)

Brand, tool, category, deals, hiring, international, compare and list pages
have markdown twins. Three equivalent ways to get one — no probing required:

- Fetch `{page}/index.md` directly, e.g. `https://consumer-brand-index.vercel.app/brand/{slug}/index.md`,
  `https://consumer-brand-index.vercel.app/tool/{slug}/index.md`, `https://consumer-brand-index.vercel.app/category/{slug}/index.md`,
  `https://consumer-brand-index.vercel.app/deals/{category}/index.md`, `https://consumer-brand-index.vercel.app/compare/{pair}/index.md`,
  `https://consumer-brand-index.vercel.app/list/{slug}/index.md`
- Request the HTML URL with `Accept: text/markdown` (responses set
  `Vary: Accept`; known AI-bot user agents get markdown automatically)
- Append `.md` to the page URL, e.g. `https://consumer-brand-index.vercel.app/brand/{slug}.md`,
  `https://consumer-brand-index.vercel.app/deals/{category}.md`, `https://consumer-brand-index.vercel.app/compare/{pair}.md`,
  `https://consumer-brand-index.vercel.app/list/{slug}.md`

`/`, `/about`, `/methodology`, `/deals`, `/hiring`, `/international`,
`/compare` and `/list` negotiate the same way (twins at `/index.md`,
`/about.md`, `/methodology.md`, `/deals.md`, `/hiring.md`,
`/international.md`, `/compare.md`, `/list.md`). Every page's `Link`
header advertises its own twin as `rel="alternate"; type="text/markdown"`.

## Machine-readable resources

- `https://consumer-brand-index.vercel.app/llms.txt` — site overview + brand index
- `https://consumer-brand-index.vercel.app/hiring/llms.txt`, `https://consumer-brand-index.vercel.app/deals/llms.txt`,
  `https://consumer-brand-index.vercel.app/tool/llms.txt`, `https://consumer-brand-index.vercel.app/category/llms.txt` — scoped area indexes
- `https://consumer-brand-index.vercel.app/sitemap.xml`
- `https://consumer-brand-index.vercel.app/.well-known/ai-catalog.json`
- `https://consumer-brand-index.vercel.app/.well-known/agent-skills/index.json`
- `https://consumer-brand-index.vercel.app/robots.txt`
