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.

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 maintains source-specific collection for the career-site systems used by covered employers. Each daily run resolves the employer’s current openings and posting identities against the preceding observation. Openings added, removed, or changed at the source are reflected in that day’s capture, subject to the employer site being available.

Same-day source changes

Career-site or provider changes identified during daily capture become explicit collection events. The affected observation establishes a new baseline so identifier turnover does not appear as artificial net-new demand.

Coverage-specific classifier

Rules are designed for covered software companies and resolve functions, AE/SDR/channel/renewals/leadership roles, customer success, segments, and geographies.

Quota-bearing evidence

Conservative role signals identify quota-bearing and full-cycle sales investment when title or responsibility evidence supports the classification.

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.

The classifier uses normalized title and posting content to assign a complete set of analytical dimensions. Broad occupational function is resolved first; specialized commercial, customer-success, geographic, and company-specific investment classifications are then applied only where relevant. Explicit not_applicable, unallocated, and unknown states prevent missing evidence from being converted into a positive signal.

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

Classifier, taxonomy, and company-allocation rules are released as one compatible classification_version_id. SoftwareIQ periodically improves these components as role language changes, new products emerge, and additional evidence supports more precise classifications. Material releases are documented with their predecessor relationships and validated before becoming the active version.

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_totalNoneAuthoritative collected total for a company, period, and measure. 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 the complete classified population reconciles to its observed total for available periods. 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 collection is null, not zero. A legitimate observed count of zero remains zero.
  • Daily facts are the primary observation grain. Weekly facts are defined aggregates of the same population 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

REST resources

Endpoints expose facts, the dictionaries needed to interpret them, and explicit collection events.

GET/v1/job-postings/daily

Daily observed totals or versioned classified intersections.

ParameterRequiredBehavior
company_id / tickerNoCompany scope; use company_id in persisted workflows.
record_typeNoobserved_total or classified_count.
measureNoactive or new.
classification_version_idNoDefaults to the catalog active version for classified_count.
period_start / period_endNoInclusive observation window.
dimension filtersNofunction_id, sales_role_id, ae_segment_id, geography_id, or company-allocation IDs.
GET/v1/job-postings/weekly

Weekly facts with the same dimensions and explicit derived/partial status.

GET/v1/job-taxonomy-members

Resolve versioned member IDs, labels, and hierarchy.

ParameterRequiredBehavior
taxonomy_version_idNoPin the dictionary used by a classified extract.
dimension_idNoRestrict to one dimension.
GET/v1/classifier-versions

Discover compatible classifier, taxonomy, and rule-set versions.

GET/v1/job-collection-events

Inspect ATS migrations, collection gaps, and comparability impacts.

ParameterRequiredBehavior
company_idNoAffected company.
event_typeNoCollection-event type.
05

Daily and weekly fact tables

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

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.
countINTEGERYesObserved count; null when the period or measure is unavailable.
availability_statusSTRINGNoavailable, partial, or unavailable.
continuity_statusSTRINGNocontinuous, new_baseline, gap, or gap_affected.
is_comparable_to_previousBOOLEANNoWhether a change from the prior observation is valid.
derivedBOOLEANNoWhether the period was derived rather than directly stored at this grain.
content_hashSTRINGNoDeterministic publication hash.

JOB_POSTINGS_WEEKLY

Grain: one observed total or nonzero classified dimension intersection per company, week, measure, and applicable version. Weekly periods can be derived or gap-affected; inspect the status fields.

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.
countINTEGERYesObserved count; null when the period or measure is unavailable.
availability_statusSTRINGNoavailable, partial, or unavailable.
continuity_statusSTRINGNocontinuous, new_baseline, gap, or gap_affected.
is_comparable_to_previousBOOLEANNoWhether a change from the prior observation is valid.
derivedBOOLEANNoWhether the period was derived rather than directly stored at this grain.
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.
  • Interpret postings as employer demand and investment intent rather than realized hires or financial performance.