Schema

Every signal in the Autobound Signal Database follows a normalized schema. This structure applies across all 29 signal sources (SEC filings, news, hiring data, social media, and more), enabling consistent parsing and entity matching.

Quick Navigation

  • Match signals to your contact/company databaseResolution (join on domain, email, or linkedin_url)
  • Download data from GCSDelivery (timestamped folders, JSONL/Parquet)
  • Browse all signal typesSignal Catalog

Base Schema

All signals share this structure:

{
  "signal_id": "7dfdb4b4-c0b4-4620-aca6-e7263123028e",
  "batch_id": "2025-11-14-09-30-00",
  "signal_type": "job-change",
  "signal_subtype": "jobChange",
  "detected_at": "2025-11-14T00:00:00Z",
  "association": "contact",
  
  "contact": { // use email or LinkedIn url to match. Only shown for contact signals.
    "first_name": "Lashawna",
    "last_name": "Bean",
    "name": "Lashawna Bean",
    "email": "[email protected]",
    "job_title": "Director Of People & Public Affairs",
    "linkedin_url": "https://www.linkedin.com/in/lashawna-bean",
  },
  
  "company": { // use domain or LinkedIn url to match. Shown for both contact & company signals.
    "name": "Harlem Stage",
    "domain": "harlemstage.org",
    "linkedin_url": "https://www.linkedin.com/company/harlem-stage",
    "industries": ["Performing Arts"],
    "employee_count_low": 11,
    "employee_count_high": 50,
    "description": "Harlem Stage ignites the artistic freedom of performing artists..."
  },
  
  "data": { // this is the signal-specific data. Different schema for each signal type.
    "summary": "Joined Harlem Stage as Director of People & Public Affairs 2 months ago.",
    "job_change_occurred": true,
    "promotion_occurred": false,
    "months_since_job_change": 2
  }
}

Note: The association field indicates whether this is a "contact" or "company" level signal. For company-level signals, the contact field will be null or omitted.


Two Types of Signals

TypeMatch ByExamples
Company signalscompany.domain or company.linkedin_url10-K, Reddit, News, Hiring Velocity
Contact signalscontact.email or contact.linkedin_urlLinkedIn Posts, Job Change, Work Milestone

The association field tells you which type: "company" or "contact".

Full matching guide with SQL examples: Resolution


Field Definitions

Core Signal Fields

FieldTypeRequiredDescription
signal_idstring (UUID)Globally unique identifier for this signal instance. Use this as your primary key and for deduplication - no two signals will ever share the same signal_id.
batch_idstringProcessing batch identifier (e.g., 2025-11-14-09-30-00). Signals in the same batch were processed together. Useful for tracking data lineage. Only exists for some signal types where multiple signals are extracted from the same document, like 10k.
signal_typestringThe broad category of signal (e.g., 10k, contact-linkedin-post, hiring-velocity, job-change). Each signal_type is delivered to it's own bucket for most customers.
signal_subtypestringThe most important field for filtering. Specifies exactly what was detected (e.g., ceoChange, acquisitionAnnounced, aiInvestment). A single signal_type can have dozens of subtypes - this is how you target specific business events.
associationstringWhether this signal is about a "contact" (person) or "company". Determines which entity object contains the primary data.
detected_atstring (ISO 8601)When Autobound detected this signal. For event-based signals (news, SEC filings), the actual event may have occurred earlier - check signal-specific date fields in the data object.

Why signal_subtype Matters

The signal_subtype field is how you filter for actionable intelligence. For example:

signal_typesignal_subtypeWhat it means
10kceoChangeCEO transition disclosed in annual filing
10kaiInvestmentAI/ML investment mentioned in annual filing
10kacquisitionAnnouncedM&A activity disclosed
newsfundingCompany raised funding
newshiresExecutive hire announced
hiring-velocityhiringVelocityOverall hiring pace snapshot
hiring-trendshiringEngineeringRolesEngineering department hiring activity

Each signal source has its own set of subtypes. See the Signal Catalog for the complete list.


Contact Object

Contact information for the person associated with this signal. Present for contact-level signals (association: "contact"), null or omitted for company-level signals.

FieldTypeSuggested Matching KeyDescription
first_namestringFirst name
last_namestringLast name
namestringFull display name
emailstringYes ✅Professional email address. Primary matching key - use this to join contact signals to your CRM or database.
job_titlestringCurrent job title at time of signal detection
linkedin_urlstringYes ✅Full LinkedIn profile URL, e.g. https://www.linkedin.com/in/lashawna-bean. Secondary matching key - use when email is unavailable or for additional validation.

Company Object

Firmographic data for the company associated with this signal. Present on all signals (both contact and company level).

FieldTypeSuggested Matching KeyDescription
namestringCompany display name
domainstringYes ✅Primary website domain (e.g., harlemstage.org). Primary matching key - use this to join company signals to your database. Normalized without www. prefix.
linkedin_urlstringYes ✅Full LinkedIn company page URL, e.g. https://www.linkedin.com/company/harlem-stage. Secondary matching key - use when domain matching fails or for additional validation.
industriesarray[string] or stringIndustry classification(s). May be a single string or array depending on signal source.
employee_count_lowintegerLower bound of employee count range
employee_count_highintegerUpper bound of employee count range. When low equals high, this is an exact count.
descriptionstringCompany description

SQL examples and join logic: Resolution


The data Object: What Makes Each Signal Unique

The fields above (signal_id, company, contact) are consistent across all signals. The data object is where each signal type has its unique payload - the actual intelligence detected.

Fields vary by signal_type, but these common fields appear across most signals:

FieldTypeRequiredDescription
summarystringOne-line summary of what was detected. Human-readable, suitable for display in UIs or email subject lines.
detailstringLonger explanation of why this signal matters and what action it suggests. 2-3 sentences typically.
relevancefloatBusiness relevance score from 0.0 to 1.0. Higher = more likely to indicate buying intent or sales opportunity.
confidencestringHow confident we are in the signal accuracy: high, medium, or low. Filter to high for automated workflows.
sentimentstringOverall sentiment: positive, neutral, or negative. Useful for prioritizing outreach tone.
source_urlstringLink to the original source (SEC filing, news article, etc.). Use for verification or to include in outreach.
competitors_mentionedarray[string]Competitor companies mentioned in the source. Useful for competitive displacement plays.
technologies_mentionedarray[string]Technologies, products, or platforms mentioned. Useful for tech stack targeting.

Signal-specific fields vary by type:

SignalUnique Fields in dataFull Schema
10-K Filingsfiling_year, fiscal_period, excerptsView →
Newspublished_at, article_sentence, location_dataView →
Job Changemonths_since_job_change, promotion_occurredView →
Hiring VelocitynumberOfOpenRoles, historicalComparisonView →

All signal schemas: Signal Catalog


Podcast

Podcast intelligence ships as two signal types that share one data vocabulary. Both follow the standard envelope above - only the data payload differs.

signal_typeassociationMatch By
podcast-contact"contact"contact.email or contact.linkedin_url
podcast-company"company"company.domain or company.linkedin_url

The data payload takes one of three shapes, determined by signal_subtype:

Familysignal_subtypeWhat it is
AppearancepodcastAppearance (contact), companyPodcastAppearance (company)One row per entity per episode: who appeared, talking points, a company snapshot
Claim65+ subtypes shared with the SEC/earnings vocabulary: aiInvestment, techAdoption, painPointDisclosed, strategicInitiative, marketExpansion, careerHistory, fundingEvent, executiveOpinion, industryPrediction, ...One row per distinct on-air business claim, backed by verbatim transcript quotes
SponsorshippodcastSponsorshipOne row per sponsor ad read, with the verbatim offer text

A single episode typically yields one appearance row plus several claim rows - join them on episode_id.

Episode Fields (all podcast rows)

Every podcast row carries the episode context, regardless of family:

FieldTypeRequiredDescription
podcast_namestringShow name
episode_titlestringEpisode title
episode_urlstringLink to the episode — null when no canonical URL was resolvable
episode_idstringStable episode identifier. Join key across all rows extracted from the same episode; occasionally null on sponsorship rows
published_atstring (date)Episode publication date
headlinestringOne-line summary of the row, suitable for display

Appearance Fields

podcastAppearance / companyPodcastAppearance add:

FieldTypeRequiredDescription
hoststringShow host
occasionstringWhy the guest was on (product launch, book, event, series)
co_guestsarray[string]Other guests on the episode
topicsarray[string]Topics discussed
talking_pointsarray[object]What the entity said, as {point, quote} pairs - point is the paraphrase, quote is verbatim from the transcript
company_snapshotobjectThe company as described in the episode: what_they_do, org_facts[], technologies_used[], customers_mentioned[], competitors_mentioned[]
transcript_sourcestringAlways "transcript" - extraction ran on the full episode transcript, not show notes
recorded_at_estimatestring (date or year-month)Estimated recording date, e.g. "2026-07" (episodes are often published weeks — or for reruns, years — after recording)
date_confidencestring"exact" or "inferred" — confidence in the recording-date estimate
is_adbooleantrue only for house ads (the show promoting its own product); regular rows are false

Claim Fields

The 65+ claim subtypes add:

FieldTypeRequiredDescription
quotesarray[string]Verbatim transcript quotes supporting the claim
evidencestringConvenience copy of the first quote
speakerstringWho said it
speaker_relationstringown_company (speaker talking about their own company) or third_party (someone else talking about the entity)
timingstringWhen the claim applies, as stated in the episode
event_datestring (date)Present when a concrete date is stated for the event

Sponsorship Fields

podcastSponsorship adds:

FieldTypeRequiredDescription
offer_textsarray[string]Verbatim ad reads - includes promo codes, offer terms, landing pages
is_adbooleantrue only for house ads (the show promoting its own product); third-party sponsor reads are false

Example: Appearance Signal

{
  "signal_id": "dca86039-9c23-54d3-b9c2-00eacdb38baf",
  "signal_type": "podcast-contact",
  "signal_subtype": "podcastAppearance",
  "association": "contact",
  "detected_at": "2026-08-24T10:25:28Z",
  "contact": { "full_name": "Arundhati Bhattacharya", ... },  // standard contact object
  "company": { "name": "Salesforce", "domain": "salesforce.com", ... },  // standard company object

  "data": {
    "podcast_name": "CII Podcasts",
    "episode_title": "India@100: Powering the Future through Digital Acceleration ft Arundhati Bhattacharya",
    "episode_url": "https://shows.acast.com/ciipodcasts/episodes/india100-powering-the-future-through-digital-acceleration-ft",
    "episode_id": "55821260383",
    "published_at": "2026-06-05",
    "headline": "Arundhati Bhattacharya (President & CEO, Salesforce, South Asia @ Salesforce) on CII Podcasts",
    "host": "Rajan Navani",
    "topics": ["India's economic future", "Digital transformation", "AI adoption", "Cloud computing"],
    "talking_points": [
      {
        "point": "India must become a creator of technology, not just a consumer.",
        "quote": "I also want to see India not only as a consumer of technology, but actually as a creator of technology. India has long been a consumer and yet, you know, we are one of the most digitally empowered societies."
      }
    ],
    "company_snapshot": {
      "what_they_do": null,   // populated when the episode discusses the company itself;
      "org_facts": [],        // often sparse for interview-style appearances
      "technologies_used": []
    },
    "transcript_source": "transcript",
    "recorded_at_estimate": "2024-06",
    "date_confidence": "inferred",
    "is_ad": false
  }
}

Note: detected_at on podcast rows is when the weekly batch published. Use published_at and recorded_at_estimate in data for episode timing. Both podcast types are keyword-searchable via content_filters on the search endpoints (keywords clause only).

Full guide with subtype list, sponsorship examples, and transcript keyword search: Podcasts


Sample Files

Download example signals to explore the schema:

Browse Sample Files →

Note: Production data is delivered via GCS in timestamped folders. Each folder contains new signals since the last batch - not a full refresh. See Delivery for bucket access and refresh schedules.

Need custom samples or have questions? Contact [email protected].


Did this page help you?