Outricher / outricher / us-home-services / the data object

One lead — the full data object.

Every row in the delivery and in the free 1,000-lead sample is the same deep object: the owner, their company, its measured website tier, an explainable score, and verified contacts — not a name-and-email pair, a case file. This page shows the object exactly as it ships: layer by layer, then a real (masked) example, then every field group.

the object below is a real pull · identity masked for publication · the delivery and the sample ship it unmasked · MEASURED · Outricher data

179
distinct fields across the pool
134
avg filled fields per shipped row (90-152)
3
data layers stitched into one object
0
guessed contacts — verified-or-empty policy

01Three layers, one record

The object is assembled in three passes. Each layer is independently verifiable — nothing in a later layer overwrites the raw fields of an earlier one.

Layer 1 · profile graph · who they are

The owner

Read from the professional-profile graph — the structural layer every lead is selected on.
formatted_name · headline
identity and the person's own one-line story
position_title · title_class
their role, classified: primary_owner / secondary
location_name · location_country_code
the person's own geography — the mandatory US gate
api_about · api_experience
bio and dated career history where the profile carries them
public_profile_url
the professional profile — always present (reachability floor)
Layer 2 · company & web signals · what they run

The business

The company record, the trade classification, and the sales signal itself — the measured web-presence tier.
company_name · employee_count · founded
firmographics: size, age, locality, state, followers
company_trade_category
one of 12 trades, classified from name + description
company_website_tier
none / social_as_site / free_builder / own_domain — measured, not assumed
company_residential_focus
does the business serve homeowners — offer fit
company_trade_match
how the trade was proven: in the name, or in the description
Layer 3 · enrichment & scoring · how to act

Contacts & the score

A multi-source enrichment waterfall adds contacts; the scoring pass explains itself line by line.
email · db_personal_emails[]
verified email addresses — 85% of the delivered pool
phone · db_personal_numbers[]
direct phone numbers — 33% of the pool
db_facebook_url · socials_count
public social footprint beyond the résumé
combined_score · tier
fit + website-opportunity + reachability, mapped to A+/A/B/C
company_score_details[] · lead_score_details[]
every point named — the score is an argument, not a number

02A real pull, masked

One row from the shipped delivery — a janitorial-services owner, tier A+, score 105 (the pool maximum). Identity and contacts masked for publication; the delivery and the free sample ship this object unmasked. Abridged for the page — the shipped row carries 133 filled fields.

lead.jsonreal pull · masked · scroll ↓
{
  "formatted_name": "R███ P█████",                // masked for publication
  "headline": "Janitorial",
  "position_title": "Small Business Owner",
  "title_class": "primary_owner",
  "location_name": "⟨city⟩, Ohio, United States",
  "location_country_code": "US",
  "public_profile_url": "⟨professional profile URL⟩",

  // ── layer 2: the business ─────────────────────────
  "company_name": "⟨janitorial services co⟩",
  "company_industry": "Facilities Services",
  "company_employee_count": 6,
  "company_founded": 2010,
  "company_locality": "Houston, Tx",
  "company_region_code": "TX",
  "company_trade_category": "cleaning",
  "company_trade_match": "name",          // trade proven by the company name itself
  "company_website_tier": "none",          // ← the sales signal: no website at all
  "company_website": null,
  "company_residential_focus": true,
  "company_follower_count": 29,

  // ── layer 3: score — every point named ────────────
  "combined_score": 105,
  "tier": "A+",
  "company_score_details": [
    "fit_sweet_spot_size +12",
    "fit_trade_in_name +14",
    "fit_residential +5",
    "fit_local_presence +3",
    "fit_established +3",
    "web_no_site_hot +20",                    // the inverted axis: no site = hottest
    "reach_active_company_page +3",
    "fit_high_density_metro +3"
  ],
  "lead_score_details": [
    "fit_decision_maker +18",
    "reach_email +10",
    "reach_phone +5",
    "reach_socials +5",
    "fit_trade_in_headline +4"
  ],
  "batch_codes": ["B2", "B7"],      // build-from-scratch + cleaning-trade slices

  // ── contacts: verified-or-empty ───────────────────
  "email": "p███████@yahoo.com",
  "phone": "+1937███████",
  "db_personal_emails": ["█████ 4 verified addresses █████"],
  "db_personal_numbers": ["█████ 1 number █████"],
  "db_facebook_url": "⟨social profile⟩",

  // ── freshness & provenance ────────────────────────
  "db_profile_updated_at": "2026-06-26T07:52:39Z",
  "api_about": "⟨the owner's own 60-word service description — ships in full⟩",
  "api_experience": { /* dated career history where the profile carries it */ }
}
Why the score details matter. web_no_site_hot +20 is not a black-box weight — it says exactly why this lead is in batch B2: a residential cleaning business in Houston, six people, founded 2010, with an active company page and no website. Your first sentence to them writes itself from the record.

03Four ways to read one object

The same fields, four different plays. Every filter below is a column in the CSV — no re-processing needed.

The build pitch
"You have no website. Customers can't find you."
Filter company_website_tier ∈ {none, social_as_site, free_builder} → the need is measured, the offer is obvious. 275 such rows in the free sample; batch B2 in full.
The redesign pitch
"Your site is losing you jobs."
Filter company_website_tier = own_domain + low company_follower_count → a domain exists but the presence is dormant. Batch B3 — the best contacts in the pool (email 100%, phone 50%).
The trade specialist
"We build sites for HVAC companies."
Filter company_trade_category — 12 trades, classified from names and descriptions, not generic industry labels. Batches B4-B7 pre-cut the four biggest.
The phone-first play
Call, don't email.
Filter phone non-empty (52% of the sample) + sort by combined_score → owner-operators pick up their own phones.

04The honest boundary — what the object is and is not

Contacts are verified-or-empty
policy
A blank email or phone is a promise, not a failure — nothing is guessed or pattern-generated. Coverage: email 85% of the delivered pool (100% in the sample), phone 33% (52% in the sample).
Some fields are sparse by nature
know this
company_region_code resolves on ~61% of rows (small businesses often list no structured address); api_about exists where the owner wrote one (~32%). Sparse fields ship as null — they are never backfilled.
The website tier is recomputed at build time
fresh
The tier reflects the company record at batch-build time, and the franchise guard re-runs on the final pool — leak count must be zero for a batch to ship. Any profile can be re-pulled live at deal time.
It scores fit, it does not close deals
boundary
The score ranks who most plausibly needs the offer and can be reached. It is a triage instrument for your outreach — not a guarantee that the business wants a website this quarter.

05Every field group on the shipped row

179 distinct fields across the pool; a typical row carries 134. Grouped as they appear in sample-1000.jsonl.

Identity — the owner ~15 fields
formatted_name / first_name / last_name
full identity
headline
the person's own one-liner ("Janitorial", "Owner at ...")
position_title · title_class
role at the company; primary_owner (99.9% of pool) or secondary
location_name · location_country_code
person-level geography — the US gate is applied here, not on the company
public_profile_url · api_slug
the professional profile — present on every row
api_followersCount · connections
public reach of the profile
Career & bio ~20 fields
api_about
the owner's own service description, where written — ready-made personalization
api_experience.work[]
dated positions: title, company, seniority markers
db_profile_jobs_count
career depth on record
db_profile_created_at / updated_at
provenance and freshness of the profile record
headline_trade_match
does the person's own headline name the trade — used in scoring
Company — firmographics ~30 fields
company_name · company_universal_name
the business and its canonical slug
company_employee_count · company_size_code
the 1-10 gate; sweet spot 2-10 scores extra
company_founded
business age — established firms score "fit_established"
company_industry
the declared industry label (coarse — the trade taxonomy refines it)
company_locality · company_region_code · company_postal_code
where the business operates
company_follower_count
company-page reach — the "dormant presence" signal for B3
company_metro_bonus_state
high-density service metros: TX FL CA AZ GA NC
Trade & web presence — the sales signals ~10 fields
company_trade_category · company_all_categories[]
one of 12 trades + all matched categories
company_trade_match
name (strongest) or description — how the trade was proven
company_website_tier
none / social_as_site / free_builder / own_domain — the offer selector
company_website · company_domain
the declared web presence, when any
company_residential_focus
serves homeowners — offer fit for local-services pitches
Scoring — explainable ~10 fields
combined_score · tier
50-105 in the sample (avg 76); A+ ≥75, A ≥60, B ≥45
company_score · lead_score
the two halves: business fit vs person reachability
company_score_details[] · lead_score_details[]
every point named — auditable line by line
batch_codes[]
which strategy slices (B2-B7) the lead belongs to
sample_rank · sample_fields_filled
sample-only: completeness rank 1-1000 and filled-field count
Contacts — verified-or-empty ~12 fields
email · phone
the primary outreach pair — best verified address and number
db_personal_emails[] · db_personal_numbers[]
the full verified set (often 2-4 addresses per owner)
db_facebook_url · socials_count
social footprint — extra channels and proof-of-person
_db_augmented
provenance flag: the record passed the enrichment waterfall

See a thousand of these — free.

The 1,000-lead sample ships this exact object, unmasked, with CSV and lossless JSONL. The full 1,583-lead delivery is free on request — and the same pipeline cuts a fresh audience for your offer. More about us: outricher.com/intro.

Download the free sample ↓ ← Back to the research
Outricher · outricher.com · /intro · hi@outricher.com
US Home Services research · the data object · identity masked on this page only — deliveries ship unmasked · verified-or-empty contact policy.