LearnNewsExamplesServices
Frontmatter
id9058
titleFeat: DevRank Location Normalizer & Data Enrichment
stateClosed
labels
enhancementaifeature
assigneestobiu
createdAtFeb 8, 2026, 10:02 PM
updatedAtFeb 8, 2026, 10:11 PM
githubUrlhttps://github.com/neomjs/neo/issues/9058
authortobiu
commentsCount1
parentIssue8930
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtFeb 8, 2026, 10:11 PM

Feat: DevRank Location Normalizer & Data Enrichment

Closed v12.0.0 enhancementaifeature
tobiu
tobiu commented on Feb 8, 2026, 10:02 PM

To improve the filtering capabilities of the DevRank grid, we need to normalize the location data from GitHub. GitHub's location field is free-text and inconsistent (e.g., "Munich", "München", "Bavaria, DE").

This task involves:

  1. Creating DevRank.services.LocationNormalizer: A new singleton service that maps raw location strings to ISO 3166-1 Alpha-2 country codes (e.g., "DE", "US") using Intl.DisplayNames, a regex dictionary for common variations, and a city mapping. It should also provide a flag emoji lookup.
  2. ** integrating into DevRank.services.Updater**: Update the fetchUserData method to use the LocationNormalizer. The user data object should now include:
    • country_code: The normalized ISO code (for filtering).
    • country_flag: The emoji flag (for UI display).
    • location: The original raw text (preserved for display).

This enables robust "Sovereign Tech" filtering (e.g., "Top Developers in Germany").

tobiu added the enhancement label on Feb 8, 2026, 10:02 PM
tobiu added the ai label on Feb 8, 2026, 10:02 PM
tobiu added the feature label on Feb 8, 2026, 10:02 PM
tobiu assigned to @tobiu on Feb 8, 2026, 10:02 PM
tobiu added parent issue #8930 on Feb 8, 2026, 10:03 PM
tobiu referenced in commit 0ffa638 - "feat: DevRank Location Normalizer & Data Enrichment (#9058)" on Feb 8, 2026, 10:10 PM
tobiu
tobiu Feb 8, 2026, 10:11 PM

Input from Gemini 3 Pro:

Implementation Note: Flag Data Strategy

We have explicitly decided NOT to store a country_flag field (neither emoji nor URL) in the backend users.json dataset.

Reasoning:

  1. Payload Optimization: The users.json file is fetched by the client. Minimizing its size is critical. Storing a 2-character ISO country_code is significantly more efficient than storing full URLs or base64 strings for every user.
  2. Client-Side Rendering: The frontend component Neo.component.CountryFlag is already capable of resolving the correct flag asset based purely on the country_code / location value.
  3. Data Hygiene: Separating data (ISO code) from presentation (Flag asset) adheres to better architectural principles.
tobiu closed this issue on Feb 8, 2026, 10:11 PM