Company Operating Signals
Retrieve operating signals derived from media mentions and GenAI maturity signals for a company.
Overview
company_operating_signals returns two stable field groups:
mentions: six mentions-derived GTM attributeswork_modelcloud_postureesg_commitmentiot_posturenetwork_modernizationautomation_stage
genai_maturity: four derived GenAI GTM attributesai_trajectorycloud_depthgenai_readinessintent_adoption_gap
Each group includes data_available and no_data_reason. Mention attributes include stage, intensity, last_verified_at, and signals. GenAI attributes include stage, intensity, and signals.
Understanding the values
A response contains numbers on two different scales and stage labels that are not self-explanatory. This section explains how to read them.
The two intensity scales
intensity appears in two places and means two different things:
| Where | Scale | What it is |
|---|---|---|
genai_maturity.*.intensity (ai_trajectory, cloud_depth, genai_readiness, intent_adoption_gap) | 0–100 index (normal range) | A Phoenix-computed score that rolls several raw inputs into one comparable number. |
genai_maturity.*.signals.*_intensity (e.g. aws_intensity) | Unbounded | Raw HG detection volume, passed straight through. |
mentions.*.intensity and mentions.*.signals.* | Unbounded | Summed detection volume across every product contributing to that attribute. |
These scales are not comparable. In this response, the top-level 100 is a bounded index while aws_intensity: 4921 is a detection count:
"cloud_depth": {
"stage": "cloud-native",
"intensity": 100,
"signals": { "gcp_intensity": 20, "aws_intensity": 4921, "azure_intensity": 3937 }
}
Unbounded values routinely run into the thousands or tens of thousands — a real work_model response returns intensity: 4411, over forty times the 0–100 index ceiling. They are counts of detections, not percentages, rankings, or dollar amounts.
The 0–100 index saturates
cloud_depth.intensity is derived from the combined total of the three provider intensities and is capped at 100. Once that combined total reaches roughly 500, the index reads 100 no matter how much higher it goes. The cloud-native stage likewise covers every combined total of 100 or more.
Working through the example above: 20 + 4921 + 3937 = 8878, far past both cutoffs, so the response reads cloud-native / 100.
The practical consequence: two accounts with very different real footprints can return identical stage and intensity. A company with a combined total of 600 and one with 8,878 both read cloud-native / 100. When you need to tell saturated accounts apart, read the per-provider signals — that is the only place the difference survives.
Note also that cloud_depth classifies on the combined total, not per provider. In the example, GCP is only 20, well under any threshold, yet the account still reads cloud-native on the strength of AWS and Azure.
Comparing cloud providers
Per-provider intensities are designed for within-company comparison — which provider a given account leans on. Reading the example: this account favors AWS (4921), with Azure close behind (3937), and GCP negligible (20).
Do not compare one company's aws_intensity against another's. The value scales with company size and how long its footprint has been observed, so a large long-tenured account will out-score a smaller one that is more committed to AWS in relative terms. Cross-company comparisons need a normalized measure, not these raw counts.
A high intensity can be stale
Unbounded intensity is a lifetime sum that does not decay. A company that ran heavily on a technology for years and stopped months ago still carries a high value.
Before treating a high number as evidence of current-state behavior:
- Check
last_verified_aton mention attributes — it gives the most recent verification date across contributing signals. - Or check momentum via
company_install_time_series, whoseintensity_momentumis negative for declining usage.
Missing data is not confirmed absence
When HG has no coverage for a signal, it is treated as 0 rather than reported as unknown. The response therefore shows the lowest stage label instead of null — a company with no GenAI coverage at all still returns ai-dormant, no-cloud, genai-inactive, and disengaged.
Those labels read like "we confirmed this company has no AI presence," but they can equally mean "we have no data on this company."
Always check data_available and no_data_reason on each group before acting on a low stage. This matters most when the conclusion is going to a customer: telling a prospect they have zero AI presence, when the truth is that HG has no coverage for them, is the failure this field exists to prevent.
GenAI maturity stage values
cloud_depth — depth of cloud infrastructure investment, classified on the combined total of the GCP, AWS, and Azure intensities:
| Stage | Combined total |
|---|---|
cloud-native | 100 or more |
cloud-heavy | 30–99 |
cloud-moderate | 10–29 |
cloud-light | Above 0, under 10 |
no-cloud | 0 |
ai_trajectory — a two-axis label, not a ranking: it crosses a maturity tier with 6-month momentum. ai-adopter-growing means mid maturity and rising — it is not simply "better than ai-beginner-growing."
Momentum is read from the 6-month change in the maturity score: accelerating is a change above 0.5, growing is above 0, and flat or declining is 0 or negative.
| Maturity tier | Accelerating (> 0.5) | Growing (> 0) | Flat or declining (≤ 0) |
|---|---|---|---|
| Leader (score ≥ 6) | ai-leader-accelerating | ai-leader-growing | ai-leader-plateau |
| Adopter (score ≥ 3) | ai-adopter-accelerating | ai-adopter-growing | ai-adopter-plateau |
| Beginner (score > 0) | — | ai-beginner-growing | ai-beginner-stalled |
| Dormant (score 0) | ai-dormant | ai-dormant | ai-dormant |
A leader that has stopped moving reads ai-leader-plateau; a beginner gaining ground reads ai-beginner-growing. Which of those is the better prospect depends on what you are selling.
genai_readiness — preparedness to adopt or expand GenAI, combining whether an AI product is installed, GenAI buying intent, and data maturity:
| Stage | Meaning |
|---|---|
genai-ready | AI product installed, solid data maturity, and strong buying intent — the most prepared state. |
genai-interested | AI product installed with strong intent, but data maturity is not yet there. |
genai-exploring | AI product installed with moderate intent. |
genai-aware | AI product installed, but little or no intent signal. |
genai-curious | Moderate intent, no AI product installed yet. |
genai-inactive | Neither an installed AI product nor meaningful intent. |
intent_adoption_gap — the gap between GenAI interest and actual adoption. Two poles are the most directly actionable:
| Stage | Meaning |
|---|---|
ai-champion | Strong intent, product installed, high maturity — already committed. |
active-explorer | Strong intent and a product installed, at lower maturity. |
intent-no-action | Strong intent but no AI product installed — an open buying window. |
moderate-adopter | Moderate intent with a product installed. |
warming-up | Moderate intent, nothing installed yet. |
quiet-user | A product is installed but there is no intent signal — the inverse case: already using, not actively shopping. |
disengaged | Neither intent nor installed product. |
Mentions stage values
The six mentions attributes are classified by precedence — the first matching rule wins, so a company meeting several conditions gets the highest-priority label only.
Two cautions:
- The same label means different things across attributes.
hybridunderwork_modelis a remote-work posture;hybridundercloud_postureis a cloud topology. Read labels in the context of their attribute. signalsis keyed by contributing product name, not by a fixed field set — e.g.{"Private Cloud": 1568, "Edge Computing": 1650}. Which keys appear depends on what was detected, so treat the object as open-ended.
| Attribute | Stage values | Assignment (first match wins) |
|---|---|---|
work_model | remote-heavy / hybrid / remote-lite / no-signal | "Remote Work" intensity ≥ 100 / 10–99 / 1–9 / no signal |
cloud_posture | multi-cloud / public-first / private-first / hybrid / edge-only / no-signal | Public + Private + Hybrid all present / Public without Private / Private without Public / Hybrid present / only Edge, VPC or Distributed / none |
esg_commitment | committed / active / aware / carbon-focused / no-signal | ESG + Carbon Accounting / ESG intensity ≥ 10 / ESG present under 10 / Carbon Accounting only / none |
iot_posture | advanced-industrial / simulation-driven / connected-edge / warehouse-automation / autonomous-mobility / consumer-iot / iot-basic / no-signal | IoT + Edge + warehouse / Digital Twin + (IoT or Edge) / IoT + Edge / any warehouse or AGV signal / Autonomous Vehicle / Smart Home / IoT alone / none |
network_modernization | next-gen / software-defined / 5g-transitioning / cloud-native-networking / microservices-oriented / traditional / no-signal | (SDN or NFV) + 5G / SDN or NFV / 5G / Microservices + Edge / Microservices alone / Ethernet, Routing, MPLS or NAT only / none |
automation_stage | autonomous / intelligent / rule-based / physical / ai-exploring / no-signal | Agentic AI / RPA + (AI or ML) / RPA alone / IoT or warehouse without RPA and without AI / AI or ML without RPA / none |
One subtlety on automation_stage: only three anchor signals — Agentic AI, Artificial Intelligence, and Machine Learning — move the stage. Other detected AI products contribute to intensity and appear in signals but never change the label on their own. So an account can list many AI products in signals and still sit at a modest stage; this keeps the labels stable as the AI product taxonomy grows.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
companyDomain | string | ⚠️ Either this or hg_id | - | Company domain to look up (no protocol). |
hg_id | string | ⚠️ Either this or companyDomain | - | HG Insights company ID (31-32 alphanumeric characters). When provided, it takes precedence over companyDomain. Subsidiary lookups via hg_id may still resolve to parent-level operating signals because HG's v2 organizations endpoint is domain-keyed — see issue #1138. |
Required Integrations
hginsights_v2
Response Notes
- Response shape is stable:
mentionsandgenai_maturitygroups are always present. data_availableindicates whether each group has coverage.no_data_reasonexplains empty coverage states per group.- Credits are returned in metadata (
creditsConsumed) withmentions,genai_maturity, andtotal.
Example Usage
{
"tool": "company_operating_signals",
"parameters": {
"companyDomain": "cisco.com"
}
}
Related Tools
company_ai_maturity- The same underlying AI and cloud signals without derived stage labels. It returns the cloud intensities nested ascloud_intensity: { aws, azure, gcp }, where this tool returns them flat asaws_intensity,azure_intensity, andgcp_intensity.company_install_time_series- Monthly usage trends; use itsintensity_momentumto check whether a high intensity here is current or stale.company_firmographic- Core company profile data (industry, size, revenue, location)