Skip to main content
The tap.config.schema.json describes what a deployment supports: which dimension sets, which entity types, and which TAP rendering modes. Each deployment ships one *.tap.json file that validates against this schema.

Structure

{
  "$schema": "taps/schema/tap.config.schema.json",
  "vote_method": "yes_no",
  "no_enabled": true,
  "domain": "referendum",
  "dimension_sets": { ... },
  "entity_types": { ... },
  "tap_modes": { ... }
}

dimension_sets

Named groups of dimensions. Each set is active when specific entity type conditions are met.
"dimension_sets": {
  "expertise": {
    "description": "College major expertise areas",
    "active_when": "entity set is voter cohorts",
    "dimensions": [
      { "id": "computer_science", "label": "Computer Science" },
      { "id": "economics", "label": "Economics" }
    ]
  },
  "committee": {
    "description": "Congressional committee jurisdictions",
    "requires_politician_entity": true,
    "dimensions": [
      { "id": "judiciary", "label": "Judiciary" },
      { "id": "armed_services", "label": "Armed Services" }
    ]
  }
}
requires_politician_entity: true is a conditional taxonomy (): the dimension set is only included when at least one entity in the TAP is a politician. This prevents a voter-vs-voter TAP from loading congressional committee dimensions.

entity_types

Registry of entity types supported by this deployment.
"entity_types": {
  "voter": {
    "description": "Individual verified voter",
    "source_field": "users/{uid}"
  },
  "cohort": {
    "description": "Aggregate of voters matching filter criteria",
    "expertise_field": "employmentExpertise | educationExpertise | hobbyExpertise"
  },
  "politician": {
    "description": "Claimed-politician user",
    "roll_call_source": "api.congress.gov/v3/member/{bioguideId}/votes"
  }
}

tap_modes

Documents which rendering modes this deployment supports.
"tap_modes": {
  "1_to_many": {
    "description": "One subject vs. N comparison entities"
  },
  "1_to_1_subscoped": {
    "description": "One subject vs. one entity across parallel dimension panels"
  }
}

dimension_source (dynamic dimensions)

Instead of fixed dimension sets, a deployment can specify a dynamic source — dimensions derived at render time from closed poll results. Used by seda-haqq/taps/referenda.tap.json:
"dimension_source": {
  "description": "Each closed poll becomes one dimension",
  "a_k_formula": "1 if yes_votes > no_votes, else 0",
  "magnitude_formula": "0.5 + abs(yes - no) / (2 × total)",
  "phi_k_formula": "theta_k − a_k × PI/2"
}

Deployment configs

DeploymentFileDimension sets
blockchain/blockchain/taps/expertise.tap.jsonexpertise (28 majors), committee (congressional)
seda-haqq/seda-haqq/taps/referenda.tap.jsondynamic (past referenda)
dao/dao/taps/dao.tap.jsongovernance_category (treasury, protocol, security, community, meta)