Canonical field registry

Every canonical field of every built-in type, with its tier, type, and normalization rule, generated from spec/fields

What you'll learn

You're mapping a CSV column or a vendor's field onto gtme's names and need the exact field name and its rule.

  • every canonical field per type
  • which fields a key is built from
  • the normalization rule each value gets

The 3 types the binary ships, and every canonical field of each. A field name not listed under a type must carry a vendor's or a pipeline's prefix. Each type's own page adds how a record is keyed, tier by tier, and the relations its fields mint.

TypeKindKeyed byFields
companysubject: what a pipeline delivers tocompany_domain, then company_name6
personsubject: what a pipeline delivers toemail, then linkedin_url, then github_username, then twitter_handle, then (full_name or first_name + last_name) and company_domain32
postsignal: what a pipeline finds and traverses fromurl7

company

FieldTierTypeNormalizationDescription
company_domainidentitystringdomainRegistrable domain (eTLD+1). Identity tier 1 for companies (SPEC.md §4).
company_nameidentitystringtrimCompany name. Feeds the name-hash fallback tier (SPEC.md §4).
company_websitecorestring (uri)trimWebsite URL as provided. company_domain is the comparable form.
company_linkedin_urlcorestring (uri)linkedin_urlLinkedIn company page URL.
company_employeescoreintegernoneHeadcount as an integer — never a range string.
company_industrycorestringtrimIndustry label. Value domain deferred until a second adapter forces comparability (rule of two).

person

FieldTierTypeNormalizationDescription
emailidentitystring (email)emailWork or personal email. Identity tier 1 (SPEC.md §4).
linkedin_urlidentitystring (uri)linkedin_urlPUBLIC LinkedIn profile URL (vanity slug) only. Identity tier 2 via the derived slug. An internal-form or Sales-Navigator URL is an INVALID value for this field — those are linkedin_internal_url / linkedin_sales_nav_url (SPEC.md §4, ADR-020); the shapes are separate fields precisely so they can never collide under one name.
linkedin_internal_urlcorestring (uri)trimInternal-form LinkedIn profile URL (opaque token in the /in/ path, such as linkedin.com/in/ACwAA…). Stored as the URL, case preserved — gtme distinguishes observable URL shapes and does not reinterpret them as identifiers. NOT key material in v0 (SPEC.md §4, ADR-020): an enrichment that resolves it to the public profile writes linkedin_url, and the ordinary key upgrade applies.
linkedin_sales_nav_urlcorestring (uri)trimSales Navigator URL form (linkedin.com/sales/lead/… or /sales/people/…). Stored as the URL, case preserved. NOT key material in v0 (SPEC.md §4, ADR-020); same recovery path as linkedin_internal_url.
first_nameidentitystringtrimGiven name. Feeds the name-hash fallback tier with last_name (SPEC.md §4).
last_nameidentitystringtrimFamily name. Feeds the name-hash fallback tier with first_name (SPEC.md §4).
github_usernameidentity, reservedstringhandleGitHub username. Reserved identity tier 3, key prefix gh: (SPEC.md §4, ADR-020); no v0 adapter provides it.
twitter_handleidentity, reservedstringhandleTwitter/X handle without the @. Reserved identity tier 4, key prefix tw: (SPEC.md §4, ADR-020); no v0 adapter provides it.
full_namecorestringtrimFull display name. Feeds the name-hash fallback tier when first/last are absent.
titlecorestringtrimCurrent job title, as stated.
senioritycorestringlowerSeniority band, lowercased. No locked value domain in v0 — providers do not converge enough to pin one; a domain is declared only if real cross-provider evidence shows convergence (SPEC.md §4a).
headlinecorestringtrimProfile headline/tagline.
aboutcorestringtrimProfile summary / about section.
citycorestringtrimCity of residence/work.
statecorestringtrimState/region.
countrycorestringtrimCountry.
locationcorestringtrimFree-form location string when a provider does not split city/state/country.
company_namecorestringtrimCurrent employer's name.
company_domaincorestringdomainCurrent employer's registrable domain (eTLD+1). The comparable, dedupe-safe form — never a full URL. Declares the works_at reference (ADR-054): a person record carrying it also names a company, keyed and populated from company_domain and company_name, and the runner writes works_at from the person to it.
company_websitecorestring (uri)trimCurrent employer's website URL as provided. company_domain is the comparable form.
company_linkedin_urlcorestring (uri)linkedin_urlCurrent employer's LinkedIn company page URL.
company_employeescoreintegernoneCurrent employer's headcount as an integer — never a range string. An adapter whose provider reports a range maps it to a point estimate or omits the field.
company_industrycorestringtrimCurrent employer's industry label. Value domain deferred until a second adapter forces comparability (rule of two).
current_rolecorestringtrimCurrent role as an enrichment provider states it (may differ from a source's title).
current_companycorestringtrimCurrent employer as an enrichment provider states it.
role_historycorearray of stringnonePast roles, most recent first, one string per role.
recent_postscorearray of stringnoneRecent public post texts, most recent first.
follower_countcoreintegernoneSocial follower count.
open_to_workcorebooleannoneWhether the profile advertises being open to work.
email_statuscorestringlowerEmail verification status as the providing adapter reports it. Waterfall-relevant; canonical value domain deferred until a second adapter forces comparability (rule of two).
first_linecorestringtrimComposed personalized opening line, consumed by deliver steps.
ps_linecorestringtrimComposed personalized P.S. line, consumed by deliver steps.

post

FieldTierTypeNormalizationDescription
urlidentitystring (uri)urlThe post's platform-public URL — the one key tier (SPEC.md §4, the url rule: scheme and host lowercased, fragment and trailing slash dropped, path and query kept).
platformcorestringlowerThe platform the post lives on, lowercased. No locked value domain yet (rule of two).
textcorestringtrimThe post's body text, as published.
published_atcorestring (date-time)trimWhen the post was published, RFC3339.
likescoreintegernoneReaction count at read time.
commentscoreintegernoneComment count at read time.
repostscoreintegernoneRepost/share count at read time.

Tier is identity for a field a key is built from and core for the rest; reserved marks a key tier no adapter provides yet. Normalization is the rule that puts a value in its stored form.

Used in