A domain is all you get. It is enough.
Turn the part after the at sign into a company record your team can act on. Name, legal name, industry classification, logo set, palette, typefaces, socials and links, read from the company's own site.
one call · read from the company's own site
[ 01 / How it works ]
An email in. A record out.
Three lines end to end, and the middle one is ours. Nothing to ask the customer for, no vendor list to license.
Resolve
Take the domain off the email
A signup address, a billing contact, a row already in your CRM. Everything below starts from the part after the at sign.
const domain =
user.email.split('@')[1];Enrich
Ask for the company
One call returns the name, legal name, industry classification, logo set, palette, typefaces, socials and the links worth keeping.
const company = await hf.brand({
domain,
});Store
Write it to the record
Upsert on the domain. Re-run it on a schedule and the record follows the company when it rebrands.
await db.accounts.upsert({
where: { domain },
data: company,
});[ 02 / The demo ]
The same four listings. One call apart.
A directory where every vendor arrived as a domain, and the same directory after each one was resolved. Four real captures, nothing filled in by hand.
4 listings · 0 classified
- Industry
- Not specified
- About
- No description available
- Profiles
- —
- Links
- —
- Industry
- Not specified
- About
- No description available
- Profiles
- —
- Links
- —
- Industry
- Not specified
- About
- No description available
- Profiles
- —
- Links
- —
- Industry
- Not specified
- About
- No description available
- Profiles
- —
- Links
- —
The listing is the product. A directory, a marketplace, a vendor list or an integrations page is only as good as the records in it, and a record holding a domain and nothing else reads as abandoned. Every field that arrives above came back from one call against the company's own site, including the industry code a rule can filter on.
[ 03 / Built for ]
Teams whose records start with a domain.
Anywhere a company arrives as a string and has to become something a person or a rule can act on.
Sales and CRM
Reps open an account holding a domain and nothing else.
The record arrives named, classified and linked before anyone types.
Lead routing
Routing rules need an industry the signup form never collected.
A NAICS code and sector land with the domain, so rules fire on day one.
Onboarding checks
Verifying a business by hand slows every new account down.
Legal name, registered links and public presence come back together.
Marketplaces
A listing with no logo and no description reads as abandoned.
Every seller gets a logo set, a palette and their own description.
Market research
A sector view means opening a few hundred sites by hand.
Run the list through one endpoint and get a comparable row each.
Vendor records
Procurement records go stale the moment a supplier rebrands.
Re-resolve on a schedule and the record follows the rebrand.
[ 04 / Keep going ]
Same API. Other problems.
Company and brand data
Theme your app per tenant
Resolve a domain to a full design system and restyle your UI at runtime.
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