Financial Signals
Financial health signals derived from public company filings, earnings data, analyst consensus, and market data to identify business challenges, growth patterns, and sales opportunities across 75,000+ global companies.
Financial health signals derived from public company filings, earnings reports, analyst consensus, and market data across 75,000+ global companies. Collecting, normalizing, and continuously refreshing this data at scale is non-trivial — we handle the aggregation, deduplication, and quality filtering so you don't have to.
Signals are refreshed weekly and are gated to companies that reported earnings in the past 7 days — ensuring every signal you receive reflects a freshly announced result, not stale quarterly data. Every signal includes data.earnings_date (the announcement that triggered it) and data.growth_period_end (the fiscal quarter the underlying metrics reflect).
Why This Signal Matters
- Validate pain points - Time outreach around earnings announcements when pain points are top of mind
- Support ROI conversations - Use prospect's actual financial metrics (e.g., "With your revenue declining 24% last quarter...")
- Identify budget availability - Track capital expenditure trends, free cash flow, and investment priorities
- Match solutions - Align your pitch to documented financial challenges (e.g., pitching automation when margins compress)
- Target cost-sensitive buyers - Engage when margins are under pressure or cash is running low
- Time around earnings - Surface opportunities when executive attention is heightened (beat or miss)
- Prioritize outreach - Use relevance scoring and urgency levels to focus on the highest-value signals first
Available Subtypes
Distress (7 signals)
| Subtype Enum | Description |
|---|---|
revenueDecline | Revenue declining 10%+ year-over-year |
unprofitableAndShrinking | Losing money and revenue declining simultaneously |
cashCrunch | Running low on cash (current ratio < 0.8) |
drowningInDebt | Dangerously over-leveraged (debt/equity > 3x) |
fcfCollapse | Free cash flow collapsed despite revenue growth |
distressBorrowing | Borrowing heavily while revenue shrinks |
debtServiceStrain | Cash flow barely covers debt obligations |
Efficiency (8 signals)
| Subtype Enum | Description |
|---|---|
sgaBloat | Sales & admin costs consuming 50%+ of revenue |
sgaCostExplosion | Sales costs growing much faster than revenue |
operatingLoss | Operating at a significant loss |
slowCollections | Taking too long to collect payments (DSO > 90 days) |
inventoryPileup | Inventory sitting unsold (days > 120) |
receivablesBallooning | Receivables growing much faster than revenue |
grossMarginCompression | Gross margins shrinking despite revenue growth |
cashConversionCycleProblem | Cash conversion cycle is dangerously long |
Growth (6 signals)
| Subtype Enum | Description |
|---|---|
strongRevenueGrowth | Revenue surging 20%+ year-over-year |
rdSpendingSurge | Pouring money into R&D (50%+ growth in R&D spend) |
massiveCapexCycle | Massive capital investment cycle |
freeCashFlowMachine | Generating massive free cash flow |
debtFueledGrowth | Borrowing heavily to fund growth |
earningsAccelerating | Earnings growth is accelerating quarter-over-quarter |
Stagnation (2 signals)
| Subtype Enum | Description |
|---|---|
flatRevenue | Revenue flat with no meaningful growth |
multiYearDecline | Revenue declining for multiple consecutive years |
Earnings (2 signals)
| Subtype Enum | Description |
|---|---|
beatExpectations | Beat earnings expectations significantly (15%+) |
missedExpectations | Missed earnings expectations badly |
Momentum (2 signals)
| Subtype Enum | Description |
|---|---|
bearishTrend | Stock in significant downtrend (50-day MA 10%+ below 200-day) |
highVolatility | Extremely volatile stock (beta > 2.5) |
Market (1 signal)
| Subtype Enum | Description |
|---|---|
growingButUndervalued | Growing revenue but market doesn't reflect it yet |
Valuation (3 signals)
| Subtype Enum | Description |
|---|---|
overvaluedStagnant | Expensive stock with no growth to justify it |
dcfUndervalued | Trading well below intrinsic (DCF) value |
priceToBookCollapse | Trading below book value |
Capital (3 signals)
| Subtype Enum | Description |
|---|---|
highDividendPayout | Returning most profits to shareholders via dividends |
shareDilution | Aggressively diluting shareholders |
dividendGrowthStreak | Consistent dividend grower |
Quality (5 signals)
| Subtype Enum | Description |
|---|---|
lowEarningsQuality | Earnings quality is questionable (accruals > cash flow) |
highReturnOnCapital | Exceptional return on invested capital (ROIC > 25%) |
operatingLeverageKicking | Operating leverage is kicking in — margins expanding |
profitabilityTurnaround | Profitability inflecting from negative to positive |
assetLightScaler | Asset-light business scaling efficiently |
Analyst (2 signals)
| Subtype Enum | Description |
|---|---|
analystStrongBuy | Wall Street consensus: Strong Buy |
analystSell | Wall Street consensus: Sell |
Technology (2 signals)
| Subtype Enum | Description |
|---|---|
rdHeavy | Heavy R&D spender (20%+ of revenue) |
sbcHeavy | Heavy stock-based compensation relative to revenue |
Signal Categories
Signals are organized into 12 categories:
| Category | Description |
|---|---|
distress | Companies facing financial difficulties — cost reduction opportunities |
efficiency | Operational inefficiencies — process optimization opportunities |
growth | Rapid expansion — scalability and infrastructure opportunities |
stagnation | Flat or declining growth — innovation and market expansion opportunities |
earnings | Earnings surprises — timing opportunities around investor attention |
momentum | Stock trend signals — investor confidence indicators |
market | Market position signals — competitive dynamics |
valuation | Market perception issues — strategic repositioning opportunities |
capital | Capital allocation patterns — investment opportunity indicators |
quality | Earnings quality and operational excellence signals |
analyst | Wall Street analyst consensus ratings |
technology | R&D and technology investment signals |
Schema
{
"signal_id": "fdc9dc36-8180-4a92-8a4a-ce5736149216", // unique per signal event
"batch_id": "financial-2026-02-25-f0c91d", // identifies the processing run
"signal_type": "financial",
"signal_subtype": "revenueDecline", // one of 43 subtypes
"detected_at": "2026-02-25T16:55:28.586401+00:00",
"association": "company",
"company": {
"name": "The Mosaic Company",
"domain": "mosaicco.com", // use for CRM matching
"linkedin_url": "https://www.linkedin.com/company/the-mosaic-company",
"industries": ["Agricultural Inputs"],
"employee_count_low": 10001, // banded, not exact
"employee_count_high": null, // null = 10,001+
"description": "The Mosaic Company produces and markets concentrated phosphate and potash crop nutrients."
},
"data": {
"summary": "The Mosaic Company (MOS): Revenue declining year-over-year",
"detail": "Revenue declined -24.6% year-over-year. This is a significant decline suggesting real business headwinds.",
"relevance": 0.72, // 0.0–1.0 normalized
"relevance_score": 72, // 0–100, use for filtering
"confidence": "high", // high / medium / low
"sentiment": "negative",
"signal_category": "distress",
"sales_relevance": "Companies with declining revenue are actively looking for ways to reverse the trend. Position solutions that drive customer acquisition, retention, or operational efficiency.",
"condition_met": "QuarterlyRevenueGrowthYOY < -0.1", // exact condition that fired
"data_source": "financial_filings",
"last_refreshed": "2026-02-25",
"data_quality_flags": null, // non-null = lower confidence
"is_primary": true, // highest-relevance signal for this company this batch
"expires_at": "2026-05-26T16:55:28.586401+00:00", // detected_at + shelf_life_days
"ticker": "MOS",
"sector": "Basic Materials",
"country": "US",
"ceo": "Bruce M. Bodine Jr.",
"size_tier": "enterprise",
"urgency": "high",
"buyer_persona": ["CFO", "CEO", "CRO"], // adapts to company size
"signal_strength_label": "Strong",
"talk_track": "Your revenue declined last quarter — are you exploring new ways to win back market share or expand into adjacent segments?",
"recommended_actions": [
"Reference the specific revenue decline in outreach",
"Position solutions that drive customer acquisition or retention",
"Emphasize fast time-to-value and measurable ROI"
],
"shelf_life_days": 90,
"earnings_date": "2026-02-19", // announcement that triggered this signal
"growth_period_end": "2025-12-31" // fiscal quarter the metrics reflect
}
}
Field Reference
Core Fields
| Field | Type | Required | Description |
|---|---|---|---|
signal_id | string (UUID) | Yes | Unique identifier for this signal |
batch_id | string | Yes | Processing batch identifier (e.g., fmp-v2-2026-02-25-f0c91d) |
signal_type | string | Yes | Always financial for this signal type |
signal_subtype | string | Yes | Specific signal subtype (see 43 subtypes above) |
detected_at | string (ISO 8601) | Yes | Timestamp when the signal was generated |
association | string | Yes | Entity type this signal is associated with (always company) |
Company Object
Use domain or linkedin_url to match against your CRM.
| Field | Type | Required | Description |
|---|---|---|---|
company.name | string | Yes | Company name |
company.domain | string | Company website domain | |
company.linkedin_url | string (URL) | LinkedIn company page URL | |
company.industries | array[string] | Industry classifications | |
company.employee_count_low | integer | Lower bound of employee count band (e.g. 1001 for a company with ~2,000 employees) | |
company.employee_count_high | integer | Upper bound of employee count band (e.g. 5000). null for companies with 10,001+ employees | |
company.description | string | Brief company description |
Data Object
| Field | Type | Required | Description |
|---|---|---|---|
data.summary | string | Yes | One-line headline: company name, ticker, and signal name |
data.detail | string | Yes | Human-readable explanation with the specific metric values that fired the signal |
data.relevance | float (0.0-1.0) | Yes | Relevance score normalized to 0.0–1.0 |
data.relevance_score | integer (0-100) | Yes | Composite 0–100 score — use this to filter signal volume (see Relevance Scoring) |
data.confidence | string | Yes | high / medium / low — downgrades to low automatically when data quality flags are present |
data.sentiment | string | Yes | positive, negative, or neutral |
data.signal_category | string | Yes | Top-level category grouping (see 12 categories above) |
data.sales_relevance | string | Yes | Why this signal matters for sales — what the company is likely feeling and how to position |
data.condition_met | string | Yes | The exact condition that triggered this signal (useful for debugging or building custom filters) |
data.data_source | string | Yes | Always financial_filings |
data.last_refreshed | string | Yes | Date this signal was generated |
data.data_quality_flags | array[string] | Populated when underlying metrics were capped or are potentially stale. See Data Quality for all values. Non-null always means confidence: low. | |
data.is_primary | boolean | Yes | true for the single highest-relevance signal per company in a given batch — useful if you want one signal per company |
data.expires_at | string (ISO 8601) | Yes | Signal expiry timestamp — detected_at + shelf_life_days |
data.ticker | string | Yes | Stock ticker |
data.sector | string | Broad sector (e.g., Technology, Healthcare, Financial Services) | |
data.country | string | ISO country code (e.g., US, GB, JP) | |
data.ceo | string | Current CEO name | |
data.size_tier | string | startup (<100 employees), mid (100–1,000), enterprise (1,000+), or unknown | |
data.urgency | string | Yes | How time-sensitive this signal is: critical, high, medium, or low |
data.buyer_persona | array[string] | Yes | Who to contact — adapts to company size (e.g., CEO/Founder for startups instead of CFO) |
data.signal_strength_label | string | Yes | Weak, Moderate, Strong, or Very Strong — downgrades one level when data quality flags are present |
data.talk_track | string | Yes | Ready-to-use conversation opener with real metrics filled in |
data.recommended_actions | array[string] | Yes | 3 concrete actions for using this signal in outreach |
data.shelf_life_days | integer | Yes | How long this signal stays actionable: 30, 45, 60, 90, or 120 days depending on signal type |
data.earnings_date | string (YYYY-MM-DD) | Yes | The earnings announcement that triggered this signal — use this to time your outreach |
data.growth_period_end | string (YYYY-MM-DD) | Yes | Fiscal quarter-end date for the underlying growth metrics (e.g. 2025-12-31 = Q4 2025) |
Relevance Scoring
Each signal receives a composite relevance score from 0-100 based on 7 factors:
| Factor | Range | Description |
|---|---|---|
| Base score | 0-30 | Signal type weight — how inherently actionable is this signal type |
| Severity | 0-25 | How far past the threshold (2x the threshold = higher score) |
| Enrichment | 0-15 | Does the company have domain, LinkedIn, and sector data |
| Data quality | 0-10 | How many metrics were non-null for this company |
| Urgency bonus | 0-10 | Critical: +10, High: +6, Medium: +2, Low: +0 |
| Size bonus | 0-5 | Enterprise: +5, Mid: +3, Startup: +1, Unknown: +0 |
| DQ penalty | 0-10 | Deducted when values were capped (3 points per capped metric) |
Use data.is_primary to get the single highest-relevance signal per company, or filter by data.relevance_score threshold to control volume.
Data Quality
When a signal's underlying metrics have been capped or contain known data issues, data.data_quality_flags is populated with one or more of the following values. Any signal with non-null flags has confidence set to low and signal_strength_label downgraded one level.
| Flag | Cause |
|---|---|
growth_metrics_potentially_prior_quarter | Growth metrics may reflect the prior quarter — the earnings announcement was processed before the underlying financials were fully updated. Affects a small number of companies each earnings season. |
revenue_growth_capped | Revenue growth capped at ±1,000% to suppress low-base-effect outliers |
sga_growth_capped | SGA expense growth capped at ±1,000% |
rd_growth_capped | R&D expense growth capped at ±1,000% |
debt_growth_capped | Debt growth capped at ±1,000% |
fcf_growth_capped | Free cash flow growth capped at ±1,000% |
receivables_growth_capped | Receivables growth capped at ±1,000% |
net_income_growth_capped | Net income growth capped at ±1,000% |
gross_profit_growth_capped | Gross profit growth capped at ±1,000% |
operating_income_growth_capped | Operating income growth capped at ±1,000% |
earnings_acceleration_capped | Earnings acceleration delta capped at ±500pp |
dso_capped_365 | Days sales outstanding capped at 365 days |
surprise_pct_capped | Earnings surprise capped at ±500% |
Freshness
Financial signals are only generated for companies that reported earnings within the past 7 days. This is the core gate that ensures signals always reflect newly released results rather than re-firing on stale quarterly data.
Each company reports earnings once per quarter. Running the pipeline weekly with a 7-day window means each company's signals fire exactly once per quarter — the week their results are announced.
data.earnings_date tells you which announcement triggered the signal. data.growth_period_end tells you which fiscal quarter's financial metrics were used.
Filtering
Several filters are applied before signals are delivered to ensure quality and relevance:
- Earnings freshness gate — Only companies that reported earnings in the past 7 days are processed. This ensures signals always reflect a fresh announcement, not stale quarterly data.
- Market cap floor — Companies below $10M market cap are excluded (penny stocks, shell companies).
- REIT and fund exclusion — REITs, ETFs, closed-end funds, and BDCs are excluded. Their financials are structurally non-standard and produce misleading signals.
- Post-IPO filter — Companies with less than 12 months of trading history are excluded. Without a full baseline period, year-over-year comparisons are not meaningful.
- Duplicate company dedup — When the same company trades on multiple exchanges or under multiple share classes, only the primary listing is kept.
- Contradiction suppression — When two signals contradict each other for the same company (e.g.,
cashCrunch+freeCashFlowMachine), the weaker signal is suppressed.
Subtype Details & Messaging Examples
Revenue Declining Year-over-Year
The company's revenue shrank 10%+ compared to last year, suggesting real business headwinds — lost customers, competitive pressure, or market contraction.
Talk track:
"Your revenue declined last quarter — are you exploring new ways to win back market share or expand into adjacent segments?"
Recommended actions:
- Reference the specific revenue decline in outreach
- Position solutions that drive customer acquisition or retention
- Emphasize fast time-to-value and measurable ROI
Beat Earnings Expectations
The company outperformed Wall Street estimates by 15%+. Post-beat companies are confident, stock is up, and budgets feel looser.
Talk track:
"Congrats on the earnings beat — when momentum is strong, it's the best time to lock in new investments. What's top of your priority list?"
Recommended actions:
- Reach out within 1-2 weeks of the earnings report
- Reference the beat as a conversation opener
- Budget is loosened post-beat — decision-makers are optimistic
Free Cash Flow Collapsed
Despite revenue holding steady or growing, free cash flow has turned deeply negative — the company is burning cash on operations, capex, or both.
Talk track:
"Noticed your cash flow has come under pressure even as revenue holds — are you looking at ways to improve cash efficiency or reduce operational burn?"
Recommended actions:
- Highlight solutions that reduce cash burn or shorten cash conversion cycles
- Position around operational efficiency and cost containment
- Target CFO or VP Finance — they are feeling the pressure
Profitability Turnaround
After a period of losses, the company's operating income has flipped positive. This is a critical inflection point where leadership is optimistic but cautious about sustaining momentum.
Talk track:
"Congratulations on reaching profitability — that inflection point changes everything. How are you thinking about scaling while maintaining margins?"
Recommended actions:
- Reference the turnaround — it validates the company's direction
- Position solutions that help sustain and scale profitability
- Target CRO and VP Sales — growth with discipline is now the mandate
Missed Earnings Expectations
The company underperformed Wall Street estimates significantly. Executives are under pressure, boards are asking hard questions, and cost-cutting is likely.
Talk track:
"Saw the earnings miss last quarter — when expectations reset, it often accelerates investment in efficiency. Is that something you're evaluating?"
Recommended actions:
- Time outreach 1-3 weeks after the miss — urgency is high
- Position around efficiency, cost reduction, or revenue acceleration
- Be empathetic, not opportunistic — acknowledge the challenge
Analyst Consensus: Sell
Wall Street analysts have a consensus Sell rating on this company. The company is likely under significant scrutiny and pressure to improve performance.
Talk track:
"When analyst sentiment shifts, leadership tends to re-evaluate priorities quickly. Are you exploring new approaches to drive results?"
Recommended actions:
- Approach with solutions that address the specific concerns analysts have flagged
- Target senior leadership — they are motivated to act
- Emphasize measurable impact and fast ROI
API Usage
Generate Content API
{
"enabledInsights": ["financial"],
"disabledInsights": []
}
Generate Insights API
{
"insightSubtype": "revenueDecline"
}
Filtering by Subtype
You can request specific subtypes:
{
"insightSubtype": "beatExpectations"
}
{
"insightSubtype": "cashCrunch"
}
Example Outputs
"The Mosaic Company's revenue declined 24.6% year-over-year — are you exploring new ways to win back market share or expand into adjacent segments?"
"Congrats on the earnings beat — when momentum is strong, it's the best time to lock in new investments. What's top of your priority list?"
"Noticed your SGA costs are growing 3x faster than revenue — are you exploring ways to improve sales efficiency without sacrificing growth?"
"Your gross margins compressed last quarter even as revenue grew — we're helping companies like yours protect margins while scaling. Worth a quick chat?"
Coverage
- Source: Aggregated from public company filings, earnings reports, analyst consensus data, and market data across global exchanges — normalized, deduplicated, and quality-filtered
- Refresh: Monthly
- Universe: 75,000+ public companies tracked across US and international exchanges
- Minimum market cap: $10M (penny stocks and shell companies excluded)
- Weekly signal volume (US only, 7-day window): ~1,500–2,500 signals across ~400–550 companies — varies by earnings season intensity (peak: January–March and July–August)
- Weekly signal volume (global, 7-day window): ~5,000–8,000 signals across ~1,200–1,600 companies
- Best for: Enterprise sales, finance-focused solutions, C-suite engagement, account-based marketing
Updated 6 days ago
