Skip to main content

Updates

rb2b industry writes crosswalk onto industry_select (issue #905) #805 mapped rb2b company firmographics onto whatever attribute already existed, which put industry verbatim onto the legacy industry text attribute. That attribute is what the crm-uploader ai-3fs migration is retiring — the canonical industry taxonomy lives on the sibling industry_select single-select seeded with the HubSpot enum, and the text attribute already carries the Title-Case “pollution” class that migration catalogued and dropped. rb2b’s verbatim labels (“Software”, “SaaS”) joined that pollution instead of the taxonomy. rb2b labels now crosswalk onto their industry_select option (“Software” → COMPUTER_SOFTWARE) via a curated table in libs.attio.values.format_company_industry_select. The mapping inherits the gtm-cd0ix select-write guard by joining _ENRICHMENT_SELECT_FIELDS, so an archived attribute (ai-e6e’s documented failure mode for this very slug) or a renamed option drops the write with an attio_industry_field_unavailable / attio_industry_option_unavailable warning instead of 400ing the whole upsert. A label with no crosswalk entry is dropped with an attio_industry_unmapped warning — the raw value still lands in the tracking-event body JSON. The dispatcher’s merge_only_if_empty guard for industry now reads industry_select, or it would silently no-op whenever only the select was populated. Three backstop mappings split onto the Title-Case LinkedIn-v2 options the live list turned out to carry (verified active on dev + prod 2026-10-05, resolving the review threads on #926): “professional services” now lands on Professional Services instead of MANAGEMENT_CONSULTING (consultant vocabulary stays on the enum title), and “manufacturing” / “engineering services” land on Manufacturing / Engineering Services instead of the V1 best-fit MECHANICAL_OR_INDUSTRIAL_ENGINEERING, which conflated machinery makers with engineering-services firms. Deliberately unchanged: estimate_revenue keeps its #805 lower-bound write onto the annualrevenue currency — the alternative estimated_arr_usd band select is an Estimated ARR field (semantic mismatch for a revenue value) and drops off-band ranges like rb2b’s $5M - $20M. employee_count keeps its bucketed employee_range write. The verbatim-text formatter (format_company_industry) is retired — it was absent from contracts/downstream_api.toml and every consumer repo before removal.
Last modified on October 5, 2026