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.
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.
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.
Company and brand data
Enrich a company from its domain
One call returns the name, industry, assets, palette and socials.
ReadCompany and brand data
Autofill onboarding
Turn a work email domain into a filled-in company form.
ReadWeb data for AI
Ground RAG in fresh content
Crawl a site on a schedule and pipe clean Markdown into your embeddings.
Read[ Start ]
Clean web data is one call away.
500 free credits, no card required. Failures are never billed.
Success rate
Median scrape
ms