Fiber AI
Enrichment

Kitchen Sink

Resolve a person or company from whatever partial data you already have — no need to know which field is "the right one."

Kitchen Sink Resolvers

The Kitchen Sink resolvers are named after the saying "everything but the kitchen sink." The idea: pass in whatever you know about a person or company — any mix of identifiers — and Fiber does its best to find the match across its databases and additional sources. You don't have to know which field is "the right one," and you don't have to worry about the fields you're missing.

Kitchen Sink returns the resolved, enriched entity (identity + firmographics + history). It does not reveal email/phone — for that, use Contact Reveal on the resolved LinkedIn URL.

There are two resolvers:

ResolverOperationResolves
ProfileKitchenSinkProfileA person from any identifier
CompanykitchenSinkCompanyA company from any identifier

Operation casing is inconsistent and case-sensitive: KitchenSinkProfile (capital K) vs kitchenSinkCompany (lowercase k). Use them exactly as written.

The problem it solves

Sales teams and CRMs almost never have clean, uniform data. One record has a LinkedIn URL; the next has only an email; another has just a name and the company they work at; a company record might have only a domain, or only a brand name. Forcing the caller to pick the correct typed endpoint for each shape of data is brittle and slow.

Kitchen Sink collapses that into a single endpoint per entity type where you throw in whatever you have and get back a resolved, enriched record. This is why it's a favorite for:

  • CRM enrichment / cleanup — normalize and complete records that each carry different fields.
  • Lead intake — resolve inbound leads regardless of what the form captured.
  • Data unification — merge partial records from multiple systems by resolving them all to the same canonical entity.

How it works

  • Accepts any combination of identifiers. Provide one or several of the supported fields; Kitchen Sink uses whatever is present and ignores what's absent. More signals generally improve match accuracy.
  • Auto-detect, don't pre-classify. You don't tell it "this is a slug" vs "this is a URL" — it figures out and normalizes the inputs.
  • Finds matches wherever the signal lives. Kitchen Sink draws on Fiber's full identity graph — including resolving an email to the person behind it — so even sparse records land on the right entity.
  • Fast and cost-effective by design. Lookups run against Fiber's continuously refreshed index and return quickly at low credit cost. When you need the freshest possible snapshot of an already-clean identifier, use Live Enrich instead.

Kitchen Sink Profile (KitchenSinkProfile)

Resolve a person from any one of:

  • a LinkedIn URL,
  • an email (uses reverse email lookup under the hood),
  • a name + company, or
  • a domain (e.g., to find people at that company).

It returns the same comprehensive profile shape as live profile enrichment — 44+ top-level fields by default, including:

  • Experiences (full work history) and tenures (time in role / at company)
  • Education (schools, degrees, fields, years)
  • Skills
  • Tags (system-assigned, e.g., founder, investor)
  • Inferred location with coordinates and timezone
  • Career-began date
  • Follower count and connection count
  • is-hiring and open-to-work status flags
  • Identity basics (name, headline, LinkedIn URL/slug, profile image)
// Pass whatever you have — any subset of identifiers.
const person = await KitchenSinkProfile({
  body: {
    apiKey: process.env.FIBER_API_KEY!,
    // any one (or several) of these:
    linkedinUrl: "https://www.linkedin.com/in/example",
    email: "jane@acme.com",
    name: "Jane Doe",
    company: "Acme Corp",
    domain: "acme.com",
  },
});

console.log(person.data?.output);

Kitchen Sink Company (kitchenSinkCompany)

Resolve a company from any one of:

  • a domain (e.g., acme.com),
  • a LinkedIn slug (e.g., stripe),
  • a LinkedIn organization ID (e.g., 1441), or
  • a company name (brand name).

It returns rich company data in one call, including:

  • Tech stack — technologies the company uses
  • Funding — rounds, stages, amounts, investors
  • Headcount history — employee count over time, not just the current number
  • Social presence — follower count and LinkedIn activity
  • Plus identity/firmographics: name, domain, slug, org ID, industry, HQ/location, founding date, operating status, logo.
const company = await kitchenSinkCompany({
  body: {
    apiKey: process.env.FIBER_API_KEY!,
    // any one (or several) of these:
    domain: "stripe.com",
    slug: "stripe",
    orgId: "1441",
    name: "Stripe",
  },
});

console.log(company.data?.output);

kitchenSinkCompany vs companySearch. Use kitchenSinkCompany when you already know the company and want a rich profile in one call. Use companySearch when you need discovery/filtering across many companies — not for fetching one known company. The same split applies on the people side: KitchenSinkProfile resolves one known-but-messy person; peopleSearch discovers many.

Bulk identifier-based lookup

The Kitchen Sink module supports bulk identifier-based company & profile lookup — resolve many messy identifiers in one pass rather than calling the single resolver in a loop.

Use bulk Kitchen Sink when you have a list of mixed-quality records (e.g., a CRM export where rows have different identifier types) and want them all resolved to canonical, enriched entities efficiently.

Kitchen Sink vs. Search vs. Live Enrich

You have…You want…Use
A messy/ambiguous identifier (any type)The resolved, enriched recordKitchen Sink (KitchenSinkProfile / kitchenSinkCompany)
Filters (industry, title, size, …)To discover many matching entitiesSearch (companySearch / peopleSearch)
A clean identifier (URL/slug/orgId)The freshest real-time snapshotLive Enrich
A resolved LinkedIn URLTheir email / phoneContact Enrichment
An emailThe person behind itReverse email lookup — or Kitchen Sink Profile with email

Mental model:

  • Search = discover many.
  • Kitchen Sink = resolve one (or bulk) from whatever you have.
  • Live Enrich = refresh one to "right now."
  • Contact Enrichment = reveal how to reach them.

Credit costs

  • Kitchen Sink charges per resolved entity (a resolution/lookup cost), and resolving from an email may incur the reverse-email-lookup path.
  • It does not include contact reveal — emails/phones are billed separately via Contact Enrichment (work email 2, personal email 2, phone 3).
  • output.chargeInfo is authoritative. Surface it verbatim, and check GET /v1/get-org-credits?apiKey=xxx (free) before large bulk resolutions.

On this page