demobrands.dev

Deterministic · fictional · reviewed

Every demo needs a company.
None of them should be real.

Complete brand identities — name, industry, tagline, palette, logo — for companies that don't exist. Hand one a handle and you get the same company back every time, forever. No model in the loop, nothing generated at request time, nobody's trademark in your screenshot.

20 reviewed companies · 15 palettes · 0 real trademarks
Refresh: new handles, same companies.

Any string works — it's hashed, not searched. The same string always lands on the same company.

The placeholder problem

Your mockup is full of other people's companies.

Every demo, seed database and screenshot needs companies in it. The usual sources are all somebody's property, or so obviously filler that the work reads as unfinished.

01 — Trademarks

Real logos in your deck

Dropping familiar logos into a customer list implies a relationship you don't have, and puts marks you don't own in front of a client.

02 — Acme Inc.

Filler that looks like filler

"Acme", "Test Company 3", lorem names with no logo and no colour. The screen reads as a wireframe when you needed it to read as a product.

03 — Drift

Fixtures that won't hold still

Randomly-generated names change on every seed run, so screenshots, tests and design comps disagree about what the company was called.

How it works

A handle is a permanent address, not a prompt.

Your handle is hashed to a 32-bit seed. The seed selects a human-reviewed entry from a committed corpus and drives the logo geometry. Nothing is invented at request time.

Reviewed

A corpus, not a model

Every name, industry and tagline was written and reviewed before it shipped. No language model sits in the request path, so nothing surprising can appear in your demo.

Coherent

The parts match

Palettes are picked within the colour family the company's entry calls for, not at random — so a logistics firm doesn't turn up in yoghurt pastels.

Frozen

Stable as the corpus grows

Adding companies remaps only a small fraction of handles, and a company's name and logo geometry never change under it. Visual changes ship as a new version, never silently.

Where it goes

Anywhere a screen needs a company in it.

Pass whatever id you already have — a tenant id, a fixture key, a row number — and get a company back.

Seed data

Dev and staging databases

Seed accounts, tenants and vendors with companies that have logos. Reseed as often as you like; row 41 is the same company it was last month.

Mockups

Comps, decks and case studies

Customer walls, integration grids, invoice headers, org charts — populated with brands that look considered, because they were.

Docs

Screenshots and tutorials

The company in step 3 is still the company in step 9, in every screenshot, on every re-shoot, for as long as the docs live.

The API

Two endpoints. No key.

The whole surface. Give either one any handle string; both are deterministic, and both say exactly how long you may cache them.

GET /v1/brands/{handle}

The company: name, slug, industry, tagline, description, palette, and the URL of its logo.

Cache-Control: public, max-age=3600
Taglines and descriptions are editorial and can be corrected, so this revalidates.

GET /v1/brands/{handle}/logo.svg

The symbol as SVG, drawn on an integer coordinate grid so the bytes are identical everywhere.

Cache-Control: public, max-age=31536000, immutable
A company's name and geometry are frozen, so the logo never changes under a handle.

$ curl https://demobrands.dev/v1/brands/acme-42
{
  "id": "brand_000007",
  "handle": "acme-42",
  "name": "…",
  "industry": "…",
  "tagline": "…",
  "palette": { "primary": "#5B4FE9", "secondary": "#20B8A6", "neutral": "#172033" },
  "logo": { "symbol": "https://demobrands.dev/v1/brands/acme-42/logo.svg" }
}

Nothing to sign up for

Pick a handle. Keep the company.

It's a URL. Put a handle in it and the same company comes back tomorrow, next release, and in every screenshot you've already taken.

Try /v1/brands/acme-42

Synthetic demo assets · 0 real companies · not cleared for commercial brand adoption