---
name: moltsets-hubspot-title-seniority-normalization
description: Use this skill to replace blank and messy HubSpot job titles with canonical title, seniority, and department values from MoltSets, then write a routing-ready seniority field back to the CRM.
---

# HubSpot Title and Seniority Normalisation

Turn inconsistent HubSpot job titles into clean, standardised data your team can route and score on. Find contacts with blank or messy titles, pull a canonical title, seniority, and department from MoltSets, map those to your HubSpot picklist values, and write them back. The result is a consistent seniority field that lead routing and lifecycle scoring can rely on.

## Triggers

"Clean up blank and messy job titles in HubSpot and set a routing-ready seniority field", "normalize titles and seniority for this HubSpot import batch". Use when the user needs standardised titles and seniority for routing or scoring.

## Requirements

- HubSpot remote MCP (mcp.hubspot.com) and the MoltSets MCP connected in the same client
- Custom objects are not reachable through HubSpot's remote MCP - write to standard contact properties

## Chain

```
HubSpot contacts
  -> hubspot/search-crm-objects        (contacts with blank or messy job title)
  -> resolve identifier per contact    (LinkedIn URL, or name + company domain)
  -> MoltSets:
       reverse_linkedin_lookup         (LinkedIn URL -> title, seniority, department, industry)
       search_business_profile_by_name (name + domain fallback -> title + firmographics)
  -> map seniority + department to your HubSpot picklist values
  -> hubspot/update-object             (write title, seniority, department, routing field)
```

## Inputs

- **HubSpot segment** - which contacts to target (blank titles, freeform titles, or a specific import batch)
- **Field mapping** - how MoltSets seniority and department values map to your HubSpot picklists
- **Overwrite policy** - fill blanks only, or also standardise existing freeform titles
- **Write-back fields** - job title, seniority, department, and an optional routing field

## Steps

1. Pull contacts with blank or freeform job titles from HubSpot.
2. Pick the strongest identifier: LinkedIn URL first, then name plus company domain.
3. Run `reverse_linkedin_lookup` when a LinkedIn URL exists to return title, seniority, department, and industry in one call.
4. Fall back to `search_business_profile_by_name` when only a name and domain are available, returning title and firmographics.
5. Map the MoltSets seniority value (Intern, Entry, Senior, Manager, Director, VP, Head, C Suite, Owner, Partner) and department value (Operations, Sales, Information Technology, Engineering, Finance, Marketing, Human Resources, and so on) to your HubSpot picklist values.
6. Write the canonical title, seniority, and department back, plus an optional derived routing field for sales assignment.

## Output

| Name | Company | Old Title | New Title | Seniority | Department | Action |
| --- | --- | --- | --- | --- | --- | --- |

```
Contacts scanned:        X
Titles cleaned:          X/N (XX%)
Seniority set:           X
Department set:          X
MoltSets tokens used:    X
```

## Tips

- Decide your seniority-to-picklist mapping once and store it in the skill so runs stay consistent across batches.
- The MoltSets seniority value is "C Suite" with a space, not a hyphen, so match your picklist mapping to that exact string.
- Seniority and department are each around 60% filled, so expect some contacts to return a title without a mapped seniority.
- Throttle write-back to stay inside HubSpot's limit of 100 requests per 10 seconds.
