Skip to content

[High] Globe silently omits listings missing from the static geocode table #111

Description

@ChimdumebiNebolisa

Summary

Non-virtual listings receive coordinates only when their exact location string appears in a static table. Listings without an exact match receive null coordinates and are filtered out of the globe without a visible warning.

Location

  • Static coordinate table: web/lib/listings.ts lines 40-54 (GEO)
  • Coordinate assignment: web/lib/listings.ts lines 160-168 (loadHackathons)
  • Globe filtering: web/components/hq/globe-map.tsx line 28 (located filter)

Evidence

Measured against upstream/main on 2026-07-11:

  • Visible non-virtual listings: 36
  • With coordinates: 17
  • Silently omitted: 19

Omitted location strings today:

  • Blacksburg, VA
  • Chapel Hill, NC
  • Dearborn, MI
  • Galaxy Innovation Park
  • Hamilton, ON
  • Ithaca, NY
  • Miami, FL
  • Newark, NJ
  • Ottawa, ON
  • Pittsburgh, PA
  • Providence, RI
  • Seattle, WA
  • Stony Brook, NY
  • TBA
  • Toronto, ON
  • Troy, NY
  • Vancouver, BC

Alias mismatch example: Toronto, ON is omitted while Toronto, ON, Canada is a table key.

Relevant logic:

const geo = GEO[location];
if (geo && r.format !== "Virtual") {
  // assign lat/lng
}
const located = hackathons.filter((h) => h.lat !== null && h.lng !== null);

Impact

Valid listings can appear in the deck and README while disappearing from the product's main globe experience. New community submissions can silently reduce map completeness.

Recommended fix

Recommend a durable coordinate-coverage strategy. Evaluate:

  • normalized location aliases
  • coordinates stored in structured listing data
  • a maintained geocode map with CI coverage
  • build-time geocoding with committed results
  • an explicit missing-coordinate fallback

Do not recommend runtime calls to an external geocoding service without considering rate limits, determinism, privacy, and deployment reliability.

Relation to #16

Issue #16 tracks building the globe feature. This is a current data-coverage defect: the globe exists but silently drops a majority of non-virtual listings because the static table is incomplete and requires exact string matches.

Acceptance criteria

  • Every visible non-virtual listing has valid coordinates or an explicit surfaced error
  • Missing coordinates fail a deterministic CI validation
  • Equivalent location strings normalize consistently
  • New listings cannot silently disappear from the globe
  • Virtual listings remain intentionally excluded from map markers

Metadata

Metadata

Labels

No labels
No labels

Type

Fields

No fields configured for Bug.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions