Skip to content

Marketing concept registry

Files

The primary registry is:

/data/marketing_candidate_registry.parquet

It is accompanied by:

/data/marketing_calculation_edges.parquet

The registry is the auditable definition of the concepts admitted to the disclosure dataset. It is at the filing-concept grain: a row identifies a concept by filing (adsh), tag (tag), and taxonomy version (version). This is necessary because a custom tag's meaning and relationships are specific to the filing that created it.

marketing_calculation_edges.parquet holds the tree evidence: canonical US-GAAP edges plus filing-specific standard and custom calculation arcs. It is a supporting audit file rather than a second, competing candidate list.

How concepts enter the registry

The registry is built for filings in the current form scope: 10-K, 10-K/A, 10-Q, and 10-Q/A. It has two complementary inclusion channels.

  1. Tree channel — automatic inclusion. The process begins with selected standard US-GAAP marketing, advertising, selling, and SG&A anchors. It constructs a canonical, version-specific US-GAAP relationship tree from FASB taxonomy presentation and calculation linkbases. Filing calculation arcs then extend that tree into filing-specific standard or custom concepts. Every reached node is included automatically, including a custom child reached through one or more custom-to-custom arcs.
  2. Standalone channel — semantic inclusion. A concept with no reached tree path can still be included when its own tag or label explicitly identifies a marketing or commercial measure. This channel is deliberately conservative: a word match alone is not enough when the surrounding concept is broad or economically unrelated.

There is no manual “to review” inclusion state in the final registry. Inclusion and categorization are reproducible from the recorded rules and evidence.

Tree and standalone paths

flowchart TB
  sga["US-GAAP<br/>SellingGeneralAndAdministrativeExpense"] --> selling["US-GAAP<br/>SellingAndMarketingExpense"]
  selling --> advertising["US-GAAP<br/>AdvertisingExpense"]

  advertising --> brand["Custom<br/>BrandCampaignExpense"]
  advertising --> creative["Custom<br/>CreativeProductionCosts"]
  selling --> commercial["Custom<br/>CommercialExpenditures"]
  commercial --> retail["Custom<br/>RetailActivationCosts"]
  sga --> conference["Custom<br/>StaffConferenceCosts"]

  noTree["No calculation path to a selected<br/>US-GAAP marketing / SG&A anchor"]
  noTree --> standaloneGood["Custom<br/>MarketingProgramsExpense"]
  noTree --> standaloneBad1["Custom<br/>MarketableSecuritiesExpense"]
  noTree --> standaloneBad2["Custom<br/>GeneralAndAdministrativeExpense"]
  noTree --> standaloneBad3["Custom<br/>AdvertisingRebate"]

  classDef standard fill:#e4f1ee,stroke:#00796b,color:#173b36
  classDef automatic fill:#bce6dd,stroke:#00695c,color:#173b36
  classDef standalone fill:#cef0ea,stroke:#00796b,color:#173b36
  classDef excluded fill:#fff6dc,stroke:#a67c00,color:#4b3a00
  classDef context fill:#f3f5f4,stroke:#78908b,color:#263a36
  class sga,selling,advertising standard
  class brand,creative,commercial,retail,conference automatic
  class standaloneGood standalone
  class standaloneBad1,standaloneBad2,standaloneBad3 excluded
  class noTree context

This is an illustrative tree, not a set of actual issuer tags. Green nodes are included in the final registry. The light-green US-GAAP nodes are canonical anchors; the darker-green custom nodes are included automatically because a filing calculation path connects them to that tree. StaffConferenceCosts illustrates the important case in which a custom tag has no obvious marketing word but is still retained because it is structurally attached to SG&A; its registry classification and is_usable_marketing_measure flag still tell the researcher that it is a broad or ambiguous measure.

MarketingProgramsExpense is a floating custom tag: it lacks a selected calculation path but is included because its own tag/label has a specific marketing meaning. The yellow examples remain in the broader candidate audit but not the final registry: “marketable” is a false marketing match, general-and-administrative is too broad, and an advertising rebate is an adjustment rather than an advertising expense.

Automatic tree inclusion

The standard anchors cover direct advertising and marketing measures as well as broader commercial and SG&A concepts. Examples include AdvertisingExpense, MarketingExpense, MarketingAndAdvertisingExpense, SellingAndMarketingExpense, SellingExpense, and SellingGeneralAndAdministrativeExpense.

For every reached node, the registry records the standard SG&A root, closest standard ancestor, path, and distance to that ancestor. This allows a researcher to distinguish, for example, a custom concept that is directly attached to AdvertisingExpense from one several levels below a broad SG&A parent.

Tree inclusion is structural rather than a name-based judgment. A custom concept connected to the selected tree is included even if its own abbreviated tag name is not immediately intelligible. Conversely, a custom concept whose name looks like marketing but has no selected tree path follows the stricter standalone route.

Standalone semantic inclusion

The standalone screen uses a concept's own tag, taxonomy label, and documentation, together with candidate evidence from observed numeric/text facts and filing presentation. It accepts concepts that explicitly identify one of the following activities:

  • advertising;
  • marketing, promotion, branding, or customer acquisition;
  • selling, sales commissions, or sales expense;
  • distribution.

The screen rejects broad or misleading matches. For example, terms relating to marketable securities, energy markets, commodities, insurance, investment, debt, revenue, assets, liabilities, or generic text blocks do not identify marketing expense. It also avoids treating mixed measures—such as general administration, research, legal, operating, or business-development concepts—as pure marketing measures. Advertising refunds, rebates, credits, and similar adjustments are not accepted as standalone expense measures.

Concepts considered during this broader search but rejected by the semantic rules remain available in /data/marketing_concept_candidates.parquet. That file is useful for diagnosing the screen; it is not the final selection list.

Classification after inclusion

Inclusion does not imply that every retained amount is a narrow advertising measure. The registry assigns a deterministic economic category and reporting scope. For example, advertising can be a component; marketing-and-advertising or selling-and-marketing can be a subtotal; and SG&A can be a broad total. The is_usable_marketing_measure flag helps separate directly usable marketing/commercial measures from broad accounting anchors.

Important audit fields

Field group Examples Interpretation
Concept identity adsh, tag, version, custom, tlabel, doc, datatype Identifies the filing concept and its supplied definition/label.
Decision selection_status, selection_channel, classification_rule, automatic_category Records the channel (standard_tree, extended_tree, or standalone) and the resulting category.
Custom-tag validation custom_validation_method, standalone_proposed_class, standalone_candidate_sources Distinguishes calculation-tree validation from a custom concept's own semantic evidence.
Tree provenance standard_sga_root_tag, nearest_standard_ancestor_tag, distance_to_standard_ancestor, canonical_tree_path, primary_calculation_path Allows a reader to trace an included tree concept back to a standard anchor.
Scope reporting_scope, is_marketing_or_commercial, is_usable_marketing_measure Distinguishes directly usable expense measures from broader commercial or contextual concepts.

How to use it

Treat the registry as a lookup table for interpreting tag and version in the annual or quarterly files. In particular, do not classify a custom tag from its name alone: use its registry row and, when available, its calculation path and standard ancestor.

The registry records all final candidates, including both tree-linked and standalone concepts. The edges file is useful when an analysis needs the detailed parent-child structure rather than just the registry's summarized provenance fields. The candidate-audit file is useful when an analysis needs to understand why a plausible-looking but unlinked concept was not included.