Case study · working prototype · 2026-08-04 lift

Mars Arena habitability leaderboard

A scored leaderboard of Martian cave / lava-tube candidates with filterable columns and an inspector modal. The scoring function is in the page JavaScript — not a decorative progress bar.

The problem

Habitability candidates from the NASA/USGS MGC³ cave catalog are scientific records, not a product UI. Mars Arena wraps them in a leaderboard so a visitor can compare structure/safety, location, logistics, and science potential — and inspect one candidate at a time.

Pipeline

01 CatalogMGC³ / PDS cave candidate records
02 Seed demo12 hand-authored entries for the prototype
03 ScoreWeighted sum in leaderboard.js
04 ExploreFilter, sort, paginate, open modal

Live interface (lifted)

Real public/mars-arena/index.html + leaderboard.js. Tailwind/Google-font CDNs were replaced with a local utility sheet so the case runs with no network dependency. AI chat remains the prototype placeholder the HTML already declared.

app/index.html · Mars Arena Open full screen

Score weights (from leaderboard.js)

ComponentWeightSource
safety0.4WEIGHTS in lf3-assets/js/mars-arena/leaderboard.js
location0.3same
logistics0.2same
science0.1same

Catalog rows supply component inputs via a deterministic heuristic from priority/type so the weight function is exercisable at full scale. That heuristic is labelled in the dataset metadata — it is not a peer-reviewed habitability model.

Volumes (labelled separately)

12seed entries (default prototype fixture)mars-arena-seed.json → entries
1,062repaired catalog records wired into the same UImars-cave-catalog.repaired.json → records
1,062catalog index count field (entries were null shells)mars-cave-catalog-index.json — not used as row data
100sample import records (not default path)mars-cave-catalog-sample.json

What was hard / what it got wrong

What is real

Leaderboard markup, modal, filters, pagination, sort, WEIGHTS function, seed JSON (12), repaired catalog coordinates/type/priority/comments (1,062).

What is reconstructed

Offline CSS utilities replacing Tailwind CDN; SVG mark replacing missing logo asset; catalog→entry schema mapping including deterministic parameter heuristics for scoring; submitter fields normalised to “MGC³ catalog” / “Catalog Import”.