One codebase. Every tenant's brand.

Resolve a customer's domain to their real design system, then restyle your interface at runtime. No brand kit to collect, no theme to hand build, no designer in the loop.

Get API key
{ "domain": "linear.app" }200
accent#5e6ad2
background#08090a
surface#0f1011
radius.card12px
typography.h164/64 Inter Variable
contrast18.73:1 · AA

one call · read in a real browser

[ 01 / How it works ]

A domain in. A themed interface out.

Three calls end to end, and the middle one is ours. Nothing to collect from the customer, nothing to hand build per tenant.

Resolve

Work out whose brand to load

A subdomain, a work email domain, or a tenant record you already store. All you need is a domain.

const domain =
  tenant.domain ??
  req.hostname.split('.')[0];

Fetch

Ask for the design system

One call returns colours by role, the type scale, corner radius, button styling and contrast ratios, read from a real browser.

const style = await hf.styleguide({
  domain,
});

Apply

Set the variables and move on

Write the values onto the root element. Every component that reads your tokens restyles itself.

root.style.setProperty(
  '--accent',
  style.colors.accent,
);

[ 02 / The demo ]

Change the domain. Everything else follows.

Switch tenant below and watch the logo, name, industry, palette, typeface, corner radius and light or dark mode all move together. Four real captures, one set of markup.

Netflix
Good morning, SamUnlimited movies, TV shows, and more

Pages delivered

1,482,309+12.5%

Avg. response

1.4s-8.2%

Success rate

99.4%+0.3%

Requests this week

7 days

Workspace

Weekly digest

Usage alerts

Beta features

Plan usage82%

resets in 9 days

Same markup, four tenants. The logo, name, tagline, palette, typeface, corner radius, button shape, switch colour and light or dark mode all arrive from the domain. Nothing in the panel is written per brand, and the bar chart is coloured from that company's own ranked palette rather than from a scale we picked.

[ 03 / Built for ]

Teams shipping one product to many brands.

If your customers expect the product to look like theirs, this is the call that gets you there without a design task per account.

Multi-tenant SaaS

Every tenant wants the workspace to look like theirs.

One deployment reads the domain and styles itself. No theme table to maintain.

Agency platforms

Client dashboards go out looking like your product, not theirs.

They log in to their own palette and typeface, with no designer involved.

Reseller and white label

Partners resell under their name, so your styling is theirs to strip.

The surface takes their identity from their domain, so nothing is stripped by hand.

Embedded widgets

An embed dropped into a customer site stands out the moment colours clash.

Read the host domain once and the widget matches the page it lands on.

Partner and co-branded portals

Two brands on one screen usually means a bespoke build for each pair.

Both identities resolve from domains, so co-branding is config, not a project.

Onboarding and trials

The first screen a prospect sees is generic, exactly when it should not be.

They sign up with a work email and arrive to their own colours already applied.

[ 04 / Keep going ]

Same API. Other problems.

[ Start ]

Clean web data is one call away.

500 free credits, no card required. Failures are never billed.

Success rate

 

Median scrape

 ms