Work Milestone
Events or milestones related to an individual's work history.
Work Milestone signals detect career transitions — job changes, promotions, and work anniversaries — across 80M+ contacts.
Each signal captures the full transition context: previous and new job titles, previous and new companies, job descriptions, locations, event timing, and confidence scoring. The gold standard of timing signals: a VP of Sales who just left a competitor to join your prospect company is the highest-intent outreach moment you'll ever find.
See real delivered data → Sample Files
Subtypes represent the type of career event detected:
Available Subtypes (3)
| Subtype Enum | Description |
|---|---|
jobChange | Contact moved to a new company — new budget holder, fresh mandate, open to new vendors |
promotion | Contact promoted internally — expanded scope, potentially new budget authority |
workAnniversary | Contact hit a tenure milestone — natural conversation starter for relationship-building |
Example Signal
What a single entry looks like in a delivered signal file:
{
"signal_id": "f8a2c4e6-1b3d-5f7a-9c2e-4d6f8a1b3c5e",
"batch_id": "2026-04-18-00-00-00",
"signal_type": "work-milestone",
"signal_subtype": "jobChange",
"detected_at": "2026-04-18T14:22:33Z",
"association": "contact",
"company": {
"name": "Ramp",
"domain": "ramp.com", // match on domain
"linkedin_url": "linkedin.com/company/ramp",
"industries": ["Financial Services", "Software Development"],
"employee_count_low": 501,
"employee_count_high": 1000,
"description": "Corporate card and spend management..."
},
"contact": {
"name": "Marcus Chen",
"first_name": "Marcus",
"last_name": "Chen",
"email": "[email protected]", // match on email
"job_title": "VP of Revenue Operations",
"linkedin_url": "linkedin.com/in/marcuschen" // or match on LinkedIn URL
},
"data": {
"event_date": "2026-04-01",
"months_since_event": 0,
"confidence": 0.94, // 0.0-1.0; how certain this transition is accurate
"founded_new_company": false,
"new_job_title": "VP of Revenue Operations",
"new_job_description": "Leading revenue operations, sales enablement, and GTM analytics for Ramp's enterprise expansion...",
"new_job_location": "New York, NY",
"previous_job_title": "Senior Director, Revenue Operations",
"previous_job_description": "Built and scaled RevOps function from 3 to 18 people, owned Salesforce architecture and GTM tooling stack...",
"previous_job_location": "San Francisco, CA",
"previous_company_name": "Brex",
"previous_company_domain": "brex.com",
"company_name": "Ramp",
"company_domain": "ramp.com",
"work_anniversary_year": null
}
}Field Reference
Standard envelope and entity fields are shared across all signals — see Schema and Resolution. The fields below are specific to this signal:
Signal-Specific Fields
The data object contains everything unique to this signal type — the intelligence extracted from career transition detection.
| Field | Type | Description |
|---|---|---|
event_date | string (date) | When the transition occurred (YYYY-MM-DD). Derived from LinkedIn profile update timing. Useful for recency filtering — outreach within 30 days of a job change has significantly higher response rates |
months_since_event | integer | Months elapsed since the transition. 0 = this month. Useful for tiered outreach strategies (immediate welcome vs. 90-day check-in) |
confidence | float (0.0–1.0) | How certain we are this transition actually happened. Higher = more reliable. Based on signal corroboration (profile updates, headline changes, connection activity). Useful for filtering in production — recommend ≥0.8 for automated outreach |
founded_new_company | boolean | Whether the contact started a new company rather than joining one. True = founder, useful for identifying startup-stage opportunities |
new_job_title | string | Current job title at the new company. Useful for ICP matching and outreach personalization |
new_job_description | string | Description of the new role's responsibilities. Provides context on what the contact now owns — budget, team, and mandate. Useful for crafting relevant messaging |
new_job_location | string | Location of the new role (city, state/country). Useful for territory routing |
previous_job_title | string | Job title at the previous company. Useful for understanding career trajectory and whether this is a promotion-move or lateral |
previous_job_description | string | Description of the previous role. Useful for understanding what tools/vendors they used before (carries preferences to new role) |
previous_job_location | string | Location of the previous role |
previous_company_name | string | Name of the company they left. Critical for competitive displacement plays — if they left your customer, they know your product |
previous_company_domain | string | Domain of the previous company. Useful for cross-referencing against your customer list or competitor accounts |
company_name | string | Name of the current (new) company. Matches company.name in the entity object |
company_domain | string | Domain of the current company. Matches company.domain |
work_anniversary_year | integer | null | For anniversary subtypes: which year milestone (e.g., 1, 3, 5). Null for job changes and promotions |
Timing & Delivery
detected_atis when we confirmed the transition. Useevent_datefor the actual career change timing — there's typically a 1–4 week detection lag.- One signal per contact per transition. A person changing jobs fires once. If they change again 3 months later, that's a new signal. Anniversary signals fire once per milestone year.
- Each delivery arrives in a timestamped folder. Treat all signals in a new folder as recent — no need to diff against prior deliveries.
Coverage
- Refresh: Weekly
- Coverage: 80,000,000+ contacts monitored for career changes
- Best for: New buyer identification, competitive displacement outreach, relationship re-engagement, "warm intro" timing
Updated 9 days ago
