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
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
web/lib/listings.tslines 40-54 (GEO)web/lib/listings.tslines 160-168 (loadHackathons)web/components/hq/globe-map.tsxline 28 (locatedfilter)Evidence
Measured against
upstream/mainon 2026-07-11:Omitted location strings today:
Alias mismatch example:
Toronto, ONis omitted whileToronto, ON, Canadais a table key.Relevant logic:
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:
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