Dataset reference

Job Postings

Daily, direct-from-employer hiring observations normalized into functions, commercial roles, geographies, and company-specific investment themes.

Data referenceJob Postings. Daily facts, taxonomy, classifier versions, and collection events.

Job Postings: quality and research use

Track employer hiring demand and investment priorities through daily and weekly posting totals and classified dimensions.

Supported classified observations reconcile to directly observed company totals over compatible coverage. Filled company active totals do not imply reconstructed breakdowns. Compatible classifier, taxonomy and rule-set identities make methodology changes traceable.

01

Daily collection and purpose-built classification

Hiring demand is observed directly from employer career sites and refreshed each day rather than assembled from third-party posting aggregators.

SoftwareIQ captures openings directly from covered employers and maintains daily and weekly hiring histories.

For new postings, zero means a valid comparison found no additions. Null means the comparison is unavailable. Active-posting counts can remain available while a new-posting comparison restarts.

Collection continuity

Collection events and baseline metadata identify changes that affect period comparability. These controls help separate shifts in source coverage from changes in employer demand.

Coverage-specific classifier

Classifications cover software-industry functions, commercial roles, customer success, segments and geographies.

Quota-bearing evidence

Commercial-role classifications distinguish sales investment across the supported role categories.

Investment allocation

Company-specific taxonomies attribute product, engineering, and GTM roles to disclosed products, initiatives, motions, and customer relationships.

The purpose-built SI tracker assembles hiring across major global systems integrators and Big Four firms, with a focus on selected priority onshore and nearshore markets. Vendor-practice attribution is conservative; unsubstantiated associations remain unclassified.

02

Classification reference

Each posting is evaluated in the context of software-industry roles, the covered company, and the evidence available in the source posting.

Purpose-built classifications organize postings into functions, commercial roles, geographies and investment themes. Explicit not_applicable, unallocated and unknown states preserve the distinction between classification coverage and observed activity.

DimensionPublished fieldInterpretation
Functionfunction_id / summary_function_idOccupational function at detailed and summary levels. Use this dimension to separate sales, engineering, product, customer success, marketing, and other work rather than relying on title keywords.
Sales rolesales_role_idCommercial responsibility within the sales function, including account executive, SDR, channel, renewals, and leadership. Quota-bearing or full-cycle designations require supporting title or responsibility evidence.
Customer success rolecustomer_success_role_idRole type within customer success, separating post-sale coverage and leadership patterns where the source provides enough evidence.
AE segmentae_segment_idCustomer or market segment associated with an account-executive role, such as enterprise or commercial, when the posting supports that distinction.
Geographygeography_idOne mutually exclusive geographic leaf derived from the advertised location. Grouping nodes are supplied in the taxonomy for rollups but do not appear as fact values.
Development investmentdevelopment_*Company-specific product, platform, infrastructure, or engineering area supported by the role. These fields identify advertised labor allocation, not realized expenditure.
GTM investmentgtm_*Company-specific go-to-market area, motion, or customer relationship supported by the posting. Attribution is made only when the available evidence meets the maintained rule set.
SI activitycompany and GTM dimensionsHiring across selected global systems integrators and Big Four firms, with emphasis on priority onshore and nearshore markets and conservative vendor-practice attribution.

Company-specific allocation states

StateMeaning
allocatedThe posting contains sufficient evidence for a maintained company-specific taxonomy member.
emergingEvidence supports a recurring investment theme being monitored separately from the established taxonomy.
unallocatedThe dimension is relevant, but evidence is insufficient for a defensible company-specific assignment.
not_applicableThe dimension does not apply to the posting's normalized function or role.
unknownThe classification state cannot be resolved from the available input.

Versioned methodology and historical consistency

Use a compatible classification_version_id with its taxonomy references for reproducible analysis.

When a methodology release changes historical classifications, SoftwareIQ may restate the supported classified history under the new version. The underlying direct-source posting observations and observed_total series remain unchanged. Prior classified versions are kept distinct, allowing research teams to pin a version, reproduce an earlier result, and adopt a restatement on their own schedule. Classified observations from different versions should never be spliced into one time series.

03

Fact semantics

Observed totals and classified intersections answer different questions and must not be added together.

Record typeVersionMeaning
observed_totalNoneCompany total for a period and measure, including eligible short-gap active estimates in bulk delivery. Independent of classifier releases.
classified_countRequiredNonzero count for one complete intersection of every published dimension under a classification version.

Every posting in a classified row belongs to one function, role-state tuple, company-allocation tuple, and mutually exclusive geography leaf. Therefore filtering one or several dimensions is valid, and supported classified observations reconcile to directly observed company totals over compatible coverage. Filled bulk company totals do not imply reconstructed dimensional breakdowns. It is not a collection of independent marginal totals.

  • Geography leaves are united_states, canada, latin_america, europe, apac, mea, other_international, and unknown.
  • international is a taxonomy grouping node and never appears in a fact row; expand it to its leaf members.
  • new is based on posting-identity change only when adjacent observations are comparable. At a baseline, the value is null.
  • Unavailable measures remain null, except eligible filled bulk company active totals. Collection availability can remain unavailable when that total is estimated. A legitimate observed count of zero remains zero.
  • Daily facts are the primary observation grain. Weekly facts represent the same population; active stock is not the sum of daily stocks and must not be summed with daily rows.
  • period_start and period_end describe the observation interval. Collection and publication timestamps describe when SoftwareIQ processed the data, not when an employer created the underlying role.
04

MCP access

Use MCP for filtered research queries and bulk delivery for full historical panels.

get_job_posting_series returns one count per period after applying the selected dimensions. Each row contains period_start, period_end, count, availability_status, continuity_status, and is_comparable_to_previous. API/MCP also returns estimated_count, estimate_method, estimate_anchor_dates, collection_event_ids and continuity_segment_id. Estimate values are separate from count; the bulk projection has one count field. Metadata retains company, measure, grain, classifier selection, freshness, and pagination.

Date bounds select period_start. Observed totals remain separate from classified intersections; missing or outage totals remain null. Retain the compatible classifier and taxonomy versions for classified queries.

MCP setup and agent access · Discuss S3 or Snowflake bulk delivery.

05

Daily and weekly fact tables

JOB_POSTINGS_DAILY and JOB_POSTINGS_WEEKLY share one contract; only period grain differs.

Bulk company active totals can include linear interpolation across eligible closed collection gaps of at most 14 calendar days with compatible reliable anchors, rounded to whole postings with halves up. These rows retain the legacy observed_total selector and use continuity_status=estimated. Collection availability and comparison flags remain authoritative. New-posting flows and unsupported dimensional breakdowns are never filled; long/open outages and unsupported migration gaps remain null. Collection events explain affected dates and anchors.

JOB_POSTINGS_DAILY

Grain: one observed total or nonzero classified dimension intersection per company, date, measure, and applicable version. Stable key: job_posting_row_id.

FieldLogical typeNullableDefinition
job_posting_row_idSTRINGNoStable ID for one published row.
record_typeSTRINGNoobserved_total or classified_count.
classification_version_idSTRINGYesComplete classifier/taxonomy/rule-set version; null for invariant observed totals.
classifier_version_idSTRINGYesCore classifier version for classified rows.
taxonomy_version_idSTRINGYesTaxonomy dictionary version for classified rows.
rule_set_version_idSTRINGYesCompany-allocation rule-set version for classified rows.
company_idSTRINGNoStable company identifier.
tickerSTRINGYesConvenience ticker.
period_typeSTRINGNodaily or weekly.
period_startDATENoStart of the observation interval.
period_endDATENoInclusive end of the observation interval.
measureSTRINGNoactive or new. New is null at a non-comparable baseline.
function_idSTRINGYesDetailed normalized function.
summary_function_idSTRINGYesSummarized normalized function.
sales_role_idSTRINGYesNormalized sales-role classification.
customer_success_role_idSTRINGYesNormalized customer-success classification.
ae_segment_idSTRINGYesAccount-executive market segment when supported.
development_allocation_stateSTRINGYesClassification state for company-specific development investment.
development_root_idSTRINGYesCompany-specific development taxonomy root.
development_area_idSTRINGYesCompany-specific development area.
development_emerging_area_idSTRINGYesEmerging development theme when supported.
gtm_allocation_stateSTRINGYesClassification state for company-specific GTM investment.
gtm_root_idSTRINGYesCompany-specific GTM taxonomy root.
gtm_area_idSTRINGYesCompany-specific GTM area.
gtm_relationship_idSTRINGYesNormalized customer relationship.
gtm_motion_idSTRINGYesNormalized GTM motion.
geography_idSTRINGYesOne mutually exclusive geography leaf for each classified posting.
countINTEGERYesInteger count. Bulk company active totals can include eligible short-gap estimates; other unavailable measures remain null.
availability_statusSTRINGNoavailable, partial, or unavailable.
continuity_statusSTRINGNocontinuous, new_baseline, gap, gap_affected, or estimated for a filled bulk company active total.
is_comparable_to_previousBOOLEANNoWhether a change from the prior observation is valid.
content_hashSTRINGNoDeterministic publication hash.

JOB_POSTINGS_WEEKLY

Grain: one observed total or nonzero classified dimension intersection per company, week, measure, and applicable version. Use the availability and comparability fields when comparing periods.

FieldLogical typeNullableDefinition
job_posting_row_idSTRINGNoStable ID for one published row.
record_typeSTRINGNoobserved_total or classified_count.
classification_version_idSTRINGYesComplete classifier/taxonomy/rule-set version; null for invariant observed totals.
classifier_version_idSTRINGYesCore classifier version for classified rows.
taxonomy_version_idSTRINGYesTaxonomy dictionary version for classified rows.
rule_set_version_idSTRINGYesCompany-allocation rule-set version for classified rows.
company_idSTRINGNoStable company identifier.
tickerSTRINGYesConvenience ticker.
period_typeSTRINGNodaily or weekly.
period_startDATENoStart of the observation interval.
period_endDATENoInclusive end of the observation interval.
measureSTRINGNoactive or new. New is null at a non-comparable baseline.
function_idSTRINGYesDetailed normalized function.
summary_function_idSTRINGYesSummarized normalized function.
sales_role_idSTRINGYesNormalized sales-role classification.
customer_success_role_idSTRINGYesNormalized customer-success classification.
ae_segment_idSTRINGYesAccount-executive market segment when supported.
development_allocation_stateSTRINGYesClassification state for company-specific development investment.
development_root_idSTRINGYesCompany-specific development taxonomy root.
development_area_idSTRINGYesCompany-specific development area.
development_emerging_area_idSTRINGYesEmerging development theme when supported.
gtm_allocation_stateSTRINGYesClassification state for company-specific GTM investment.
gtm_root_idSTRINGYesCompany-specific GTM taxonomy root.
gtm_area_idSTRINGYesCompany-specific GTM area.
gtm_relationship_idSTRINGYesNormalized customer relationship.
gtm_motion_idSTRINGYesNormalized GTM motion.
geography_idSTRINGYesOne mutually exclusive geography leaf for each classified posting.
countINTEGERYesInteger count. Bulk company active totals can include eligible short-gap estimates; other unavailable measures remain null.
availability_statusSTRINGNoavailable, partial, or unavailable.
continuity_statusSTRINGNocontinuous, new_baseline, gap, gap_affected, or estimated for a filled bulk company active total.
is_comparable_to_previousBOOLEANNoWhether a change from the prior observation is valid.
content_hashSTRINGNoDeterministic publication hash.
06

Taxonomy, versions, and collection state

These tables are required inputs for reproducible queries, labels, and continuity controls.

JOB_TAXONOMY_MEMBERS

Stable key: (taxonomy_version_id, dimension_id, member_id).

FieldLogical typeNullableDefinition
taxonomy_version_idSTRINGNoTaxonomy version.
dimension_idSTRINGNoDimension such as geography or sales_role.
member_idSTRINGNoStable member within its dimension and version.
display_nameSTRINGNoHuman-readable label.
parent_member_idSTRINGYesParent for hierarchical rollups.
member_typeSTRINGYesLeaf, group, or taxonomy-specific type.
display_orderINTEGERYesSuggested presentation order.
content_hashSTRINGNoPublication hash.

CLASSIFIER_VERSIONS

Stable key: classification_version_id.

FieldLogical typeNullableDefinition
classification_version_idSTRINGNoStable compatibility tuple and join key.
classifier_version_idSTRINGNoCore role classifier version.
taxonomy_version_idSTRINGNoTaxonomy dictionary version.
rule_set_version_idSTRINGNoCompany-specific allocation rules version.
tickerSTRINGYesScope ticker where version is company-specific.
statusSTRINGNostable, retired, or other lifecycle status.
parent_classification_version_idsSTRINGYesCanonical JSON list of predecessor versions.
content_hashSTRINGNoPublication hash.

JOB_COLLECTION_EVENTS

Stable key: event_id. Join to facts by company and overlapping period.

FieldLogical typeNullableDefinition
event_idSTRINGNoStable collection-event identifier.
company_idSTRINGNoAffected company.
tickerSTRINGYesConvenience ticker.
event_typeSTRINGNoGap, ATS/provider migration, or other collection event.
started_onDATENoStart of the event window.
ended_onDATEYesInclusive event end; null while open.
availability_statusSTRINGNoAvailability during the event.
comparabilitySTRINGNoImpact on comparison with adjacent observations.
public_messageSTRINGYesResearch-facing explanation.
review_statusSTRINGNoOperational review state.
content_hashSTRINGNoPublication hash.

DATASET_CATALOG

Stable key: dataset_id. Discover the active classifier here; do not hard-code it for current-view applications.

FieldLogical typeNullableDefinition
dataset_idSTRINGNoDataset identifier.
active_classification_version_idSTRINGYesDefault current version for classified queries.
data_updated_atTIMESTAMPNoLatest accepted publication time.
company_countINTEGERNoCompanies in the publication.
content_hashSTRINGNoPublication hash.
07

Research conventions

Use the version, record type, and continuity fields as part of the analytical contract.

  • Pin classification_version_id for reproducible research and adopt restated classifications as a complete versioned history.
  • Use observed_total for the collected population and classified_count for dimensional analysis; these are two views of the same postings.
  • Apply continuity and comparability fields before calculating changes across collection events or new baselines. An ATS migration can change observed coverage and requires a continuity check before comparing counts.
  • Interpret postings as employer demand and investment intent rather than realized hires or financial performance.