Skip to content

feat(badges): expand the recognition catalog (epic) #1955

@cdcore09

Description

@cdcore09

Summary

Comprehensive expansion of the badge collection from the current ~12 computed badges to ~40+ across six tiers (Service, Recognition, Conference, Milestone, Community, Output). Phased so each step ships independently and the schema risk is deferred to the last phase.

Phases

Tier overview

Tier Today After rollout
Service Charter, Founding Roster, Board, Executive + Staff, Advisor, Steering Committee, Past Chair
Recognition USRSE Awards, Lifetime Achievement, Rising Star, Excellence, Mentor of the Year
Conference Talk, Poster, Attended, Organized, Sponsored, Volunteered + Keynote, Plenary, Lightning, Tutorial Lead, Workshop Lead, BoF Lead, Panelist, Program Committee, Reviewer
Milestone First Stage, Three-Peat, Five-Peat + Decade Roster, Anniversary 1/5/10, Polyglot, Polymath, Cross-Disciplinary, Profile Complete, ORCID/GitHub/LinkedIn Linked, Speaker Streak, Globetrotter
Community Working Group Member/Chair, Affinity Group Member/Coordinator, Community Call Host, Newsletter Contributor, Resource Author, Tutorial Author, Translator, First Contribution, Sustained Contributor
Output Mentor, Mentee, Cited Author, 10+/25+ Talks

Phasing rationale

Phase 1 is purely additive and ships immediately because the data is already loaded by `loadMemberDossier`. Phase 2 plumbs tables that exist but aren't consumed by `computeBadges` yet — bigger join surface, but no schema risk. Phase 3 is the only phase that introduces new tables, so it's deliberately last and deliberately separate.

The R2 artwork system (#1954) is parallel work that unblocks Phase 3's premium awards but isn't a prerequisite for Phase 1 or 2.

Out of scope

  • Admin tooling to grant awards / log mentorship pairings / record contributions. Each phase can be backfilled via SQL until the admin UI lands.
  • Migration off the current `event_attendances.notes` regex heuristic for talk/poster detection — Phase 2 introduces the proper join via `event_sessions`, but doesn't remove the regex fallback.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions