The Anomalousness Index Rubric

Open. Auditable. Recomputable. Six weighted components, every enumerated value listed, exact integer score for each. The math is fully visible.

View raw JSON Methodology walkthrough
What this rubric is NOT. It is not a probability of extraterrestrial origin. That number is not honestly computable from these files. Anyone publishing such a number is selling you something. The rubric reflects evidentiary weight that an encounter remains unexplained after conventional analysis.

Formula: score = sum(component_value × component_weight), clamped to 0-100. Weights sum to 1.00.

The six components

Sensor quality

Weight 0.25

JSON key: sensor_quality

ChoiceRaw value (JSON)Score
Multi-sensor militarymulti_sensor_military100
Single-sensor militarysingle_sensor_military80
Civilian aviationcivilian_aviation65
Photographicphotographic55
Eyewitness onlyeyewitness_only30
Sketch onlysketch_only15

Witness credibility

Weight 0.2

JSON key: witness_credibility

ChoiceRaw value (JSON)Score
Astronautastronaut95
Trained aviatortrained_aviator90
Federal agentfederal_agent90
Military personnelmilitary_personnel80
Law enforcementlaw_enforcement70
Credentialed civiliancivilian_credentialed50
Anonymous civiliancivilian_anonymous25

Corroboration

Weight 0.2

JSON key: corroboration

ChoiceRaw value (JSON)Score
Multi-witness, multi-instrumentmulti_witness_multi_instrument100
Multi-witness, single-instrumentmulti_witness_single_instrument80
Single witness with instrumentsingle_witness_instrument60
Multi-witness, no instrumentmulti_witness_no_instrument50
Single witness onlysingle_witness_only25

Kinematic anomaly

Weight 0.15

JSON key: kinematic_anomaly

ChoiceRaw value (JSON)Score
Physically impossible for known craftphysically_impossible_for_known_craft100
Edge of envelopeedge_of_envelope70
Unusual but explainableunusual_but_explainable40
No kinematic datano_kinematic_data30
Consistent with known craftconsistent_with_known_craft10

Mundane explanation availability

Weight 0.1

JSON key: mundane_explanation_available

ChoiceRaw value (JSON)Score
No plausible mundaneno_plausible_mundane100
Weak mundane candidateweak_mundane_candidate70
Plausible mundaneplausible_mundane40
Strong mundane candidatestrong_mundane_candidate15
Resolved mundaneresolved_mundane0

Official disposition

Weight 0.1

JSON key: official_disposition

ChoiceRaw value (JSON)Score
Open after reviewopen_after_review90
Unresolved, no reviewunresolved_no_review60
Partial resolutionpartial_resolution40
Resolved conventionalresolved_conventional5

Worked examples (from presets)

These are example computations from the rubric's presets field. Useful for sanity-checking your own implementation against ours.

Worked example: apollo 12 lunar anomalies

ComponentChoiceScore contribution
Sensor qualityPhotographic55 × 0.25 = 13.75
Witness credibilityAstronaut95 × 0.2 = 19.0
CorroborationMulti-witness, single-instrument80 × 0.2 = 16.0
Kinematic anomalyNo kinematic data30 × 0.15 = 4.5
Mundane explanation availabilityWeak mundane candidate70 × 0.1 = 7.0
Official dispositionUnresolved, no review60 × 0.1 = 6.0
Total66

Worked example: greece 2023 right angle

ComponentChoiceScore contribution
Sensor qualitySingle-sensor military80 × 0.25 = 20.0
Witness credibilityMilitary personnel80 × 0.2 = 16.0
CorroborationMulti-witness, single-instrument80 × 0.2 = 16.0
Kinematic anomalyPhysically impossible for known craft100 × 0.15 = 15.0
Mundane explanation availabilityNo plausible mundane100 × 0.1 = 10.0
Official dispositionOpen after review90 × 0.1 = 9.0
Total86

Recompute every score yourself

Every file's score.components object lists the choice for each component. Apply the rubric above. Multiply, sum, round. Compare to the published score.value. They will match within rounding error. If they don't, the rubric is the source of truth, not the displayed value.

  1. Download the rubric: /data/scoring-rubric.json
  2. Download the manifest: /generated/api/files.json
  3. For each file, look up the score.components values
  4. Multiply each by the weight, sum across all six
  5. Compare to score.value

← BACK TO ALL FILES