Buying signals and timing
Layer timing signals - job changes, promotions, funding rounds, hiring surges, and new-in-seat executives - on top of fit filters so your outreach lands the week something changes, not months later.
Overview
Most prospecting targets who a person is: their title, company size, and industry. Timing signals target what just changed - the moment a company raised money, a new executive stepped into a seat, or a team doubled in size. Ken AI surfaces these signals as filters inside the audience search panel, so you can build lists where every contact matches a real trigger event.
Timing signals fall into two categories:
- Person-side signals - job changes, internal promotions, title changes, and new-in-seat detection. These filter individual people by change events detected on their profiles.
- Company-side signals - funding rounds, hiring surges, headcount growth or decline, and account leadership changes. These filter companies by what happened at the organization level.
Find these filters inside the campaign build flow under Search Contacts, in the Role Filters section (for person signals) and the Company Filters section (for company signals). The signals also appear as trigger rules in the Signals panel on an active campaign's Actions area, where they can fire outreach automatically when a contact matches.
Before you start
- You need an active campaign in Ken AI to use signals as search filters or as automatic triggers.
- The "Changed Jobs" filter on the search panel is live today. The full set of timing signals (New in Seat, Internal Promotion, Raised Funding, Hiring Surge, Headcount Growth, Headcount Decline, ICP Timing) are available as preview cards in the Signals panel; the backend trigger wiring for those is in progress.
- Signals data refreshes on a monthly cadence. Results reflect the most recent completed ingestion run.
How to use timing signals in audience search
Add a job-change filter to your search
- Open your campaign and go to Actions - then select Search Contacts.
- In the Role Filters section, find the Changed Jobs dropdown.
- Choose a recency window: Within 1 month, Within 3 months, Within 6 months, or Within 12 months.
- Optionally, set a Previous Company to narrow the results to people who left a specific employer.
- The Preview matches panel on the right updates live as you adjust filters. People who recently changed jobs appear with a New role badge.
Browse available trigger signals (Signals panel)
- Open your campaign. Click Actions in the campaign header.
- Select Signals from the actions panel.
- Click Add signal to open the signal catalog.
- Live signals (Link Clicked, Click Dormancy, Reply Received, Custom Signal) can be configured and saved immediately.
- Monthly timing signals - New in Seat, Internal Promotion, Raised Funding, Hiring Surge, Headcount Growth, Headcount Decline, ICP Timing, Job Change, Tenure Ripe - appear as preview cards. Clicking a preview card opens a notification dialog so you can register interest; these signals become configurable once the backend trigger endpoints are released.
How it works
Job-change detection
Ken ingests people data monthly. Rather than overwriting records, it diffs each person's new data against the version already in the index. If the current employer differs from the prior employer, the person is flagged as having changed jobs. The Changed Jobs filter targets people whose change was detected within your chosen window.
One guard: data vendors occasionally re-ID the same company under a different identifier. Ken normalizes company names before comparing, so a vendor-side ID change on an unchanged employer does not look like the entire workforce simultaneously switching jobs.
Detection runs only during incremental ingestion, not full rebuilds. Failures never block the core data refresh.
New-in-seat and tenure signals
"New in seat" measures how recently a person started their current role or company. It is computed fresh on every query from the stored current_company_start_date and current_role_start_date fields - not stored as a boolean. This means a contact ages out of "new in seat" automatically the day they cross 90 days, without waiting for a reindex. The default window is 90 days.
"Tenure ripe" flags contacts who have held their current role for 3.5 years or more - the threshold at which a person is statistically most open to a move.
Internal promotions
A promotion is detected only when both the old and new titles parse to known seniority ranks and the new rank is strictly higher. A lateral title reword - "Marketing Manager" to "Growth Manager" - sets a title-change flag but not a promotion flag.
Leadership changes roll up to the company level. When a person at C-level, VP, or Director seniority changes employer, Ken writes a GainedLeader event on the new company and a LostLeader event on the old. Account search can filter for "companies that just gained a VP."
Raised funding
The funding filter targets companies whose most recent round was announced within a date window (default 180 days, maximum 10 years). Ken picks the "latest round" using a deterministic sort: dated rounds beat undated ones, newest date wins, then largest amount, then original row order for a stable tiebreaker.
Dollar amounts arrive as free-text strings in mixed currencies and formats. Ken parses patterns like "US$ 28.5M", "$1M - $2M", and "€1,5M". If the amount is genuinely ambiguous, the parser returns null rather than indexing a wrong number.
Hiring surge
A hiring surge compares this month's per-function headcount against last month's stored snapshot (one row per company, per function, per month). Net adds and growth percent are computed from real data, not inferred from the live index. A surge only fires when net adds is strictly positive.
Net adds and growth percent are independent filters - both must match when both are supplied. The first deployed rollup only establishes a baseline; true month-over-month results appear after the second snapshot.
Headcount growth and decline
Headcount growth flags any month-over-month increase in total employee count. Decline detection is fail-closed: if the prior-headcount lookup fails, the system skips rather than overwriting a real signal with a failed result.
Troubleshooting and debugging
Symptom: "Changed Jobs" filter returns zero results for a recent window.
- Likely cause: the monthly ingestion run has not completed yet, or the job-change detection was skipped during a full rebuild.
- What to check: verify the ingestion run status. Detection only runs during incremental ingestion. Job changes detected before the filter window opened will not appear regardless of ingestion status.
Symptom: A person shows as "Changed Jobs" but the employer looks the same.
- Likely cause: the data vendor re-IDed the company. Ken's name-normalization guard suppresses most of these, but minor name formatting differences can let one through.
- What to check: click the person card and compare prior vs. current employer. If the names are the same company, it is a data-vendor artifact and will self-correct on the next ingestion run.
Symptom: Timing signals in the Signals panel (New in Seat, Raised Funding, Hiring Surge, etc.) show as preview cards rather than configurable triggers.
- Likely cause: backend trigger endpoints for monthly signals are not yet released.
- What to do: click the preview card and submit interest. These signals are on the active roadmap. In the meantime, use the equivalent search filters in Search Contacts to build targeted static lists.
Symptom: Hiring surge results are empty even though the company is growing.
- Likely cause: this is the first ingestion run after the feature deployed, so there is only one snapshot and no prior month to diff against.
- What to check: wait for the next monthly ingestion run to complete. Surge signals require at least two consecutive monthly snapshots for the same company and function.
Symptom: Funding filter returns a company whose last round is older than the window.
- Likely cause: the company's funding data in the upstream source has only undated rows, so the latest-round picker falls back to the largest-amount row, which may have an old or missing announced date.
- What to check: inspect the company's funding details. If the round dates are missing, the filter uses a null date which may not satisfy the date-range query. This is a data-coverage limitation, not a bug.
Symptom: "New role" badge appears on a person card but the Changed Jobs filter is not set.
- Expected behavior. The badge reflects whether a change was ever detected in the index; the filter narrows by when. Use the Changed Jobs dropdown to restrict to a specific recency window.
FAQ
How often does the signals data refresh? Timing signals are updated monthly. The exact date depends on when the upstream data delivery completes. Person-side signals like "New in Seat" are recomputed at query time from stored start dates, so they are always current to the day.
Why is "New in Seat" computed at query time instead of stored?
Because a stored boolean would go stale. If "joined in the last 90 days" were saved as a true flag at ingestion, it would remain true for a year until the next reindex. By deriving it from the actual start date on every query, a contact ages out automatically the day they cross 90 days.
What is the difference between "Changed Jobs" and "New in Seat"? "Changed Jobs" detects a move to a new employer - the person left one company and joined another. "New in Seat" tracks how recently someone started their current role or company, regardless of whether they moved externally. A person who got an internal promotion and took a new title at the same company would show as New in Seat but not as Changed Jobs.
Why does promotion require a seniority rank increase, not just a new title? To prevent false positives. A lateral title reword - for example, "Marketing Manager" to "Growth Marketing Manager" - is common and does not indicate a real change in seniority. Ken checks whether the seniority rank (Director, VP, C-level, etc.) actually increased. If both old and new titles parse to the same rank, no promotion is flagged.
The Raised Funding filter shows a company as recently funded but their round is old. Why? The announced date in the source data may be missing. If no date exists, the company may unexpectedly match a recency filter. This is a data-quality issue in the upstream source.
Can I combine timing signals with fit filters? Yes. The search filters are independent and stack as AND conditions. For example: "Series A company in SaaS, 50-200 employees, VP of Sales who changed jobs in the last 3 months" applies all conditions at once. Combining timing signals with fit filters produces smaller, higher-intent lists.