Skip to content

[BACKEND] Scoring + feed endpoints — interest/popularity/timeliness ranking with no AI #303

Description

@linear

Depends on Phase 2 (classifier + event_tags). Delivers a complete, shippable personalized feed with no AI — keyword ranking only.

Build steps

  1. Write server/lib/scoring.ts — combines interest match, popularity (save/rsvp/view/click counts), timeliness, and featured boost; apply a seen penalty per user (optional, see notes)
  2. Implement feed endpoints:
    • GET /feed/home — Upcoming section + one carousel per bucket the user has selected
    • GET /feed/explore — All events ranked by popularity + timeliness
    • GET /feed/bucket/:id — Events for a single bucket, personalized rank
  3. Wire Home and Explore screens in the app to the new endpoints
  4. Delete stale client-side taxonomy logic in home.tsx

Notes

  • This is the early-launch cut line — a complete feed ships here with no AI dependency
  • Seen penalty is weak signal until scroll-level impressions are tracked; treat as optional for now
  • Test: logged-in user sees personalized carousels, ranked correctly

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions