ACM-VIT / ACM-VIT/Weave

[Onboarding] Build cold-start preferences from GitHub activity and remove default-selection bias

Open
#57 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
TypeScript
Stars
4
Forks
4
PR merge metrics
No merged PRs in 30d

Description

## Problem

GitHub sync currently imports basic account metadata but not the strongest cold-start recommendation signals such as starred repositories, owned repositories, contributions, organizations, topics, and language history:

- https://github.com/ACM-VIT/gh-social/blob/49073fc71423aa8e10334158d70ac6d41be1dbc0/backend/services/onboardingService.ts#L80-L135

The onboarding UI also preselects five technologies for every user:

- https://github.com/ACM-VIT/gh-social/blob/49073fc71423aa8e10334158d70ac6d41be1dbc0/src/app/onboarding/step2.tsx#L21-L31

Broad category IDs are stored as placeholder skills rather than canonical labels:

- https://github.com/ACM-VIT/gh-social/blob/49073fc71423aa8e10334158d70ac6d41be1dbc0/src/app/onboarding/step3.tsx#L35-L49

These defaults inject the same preferences into unrelated users.

## Proposed change

- Start technology selection empty unless the user explicitly accepts imported suggestions.
- Store canonical skill/interest names and stable taxonomy IDs separately.
- With explicit consent, import starred, owned, and contributed repositories plus aggregate language/topic signals.
- Index previously unseen public repositories discovered through a user's GitHub graph.
- Keep private-repository content excluded by default.
- Provide a diverse starter feed when GitHub data is unavailable.

## Acceptance criteria

- No technology is selected without user action or a clearly accepted import.
- ML onboarding receives canonical interests/skills rather than placeholder UI IDs.
- GitHub-derived preferences identify their source and timestamp.
- API-rate limiting, caching, pagination, consent, and account unlinking are documented and tested.
- Cold-start evaluation compares onboarding-only, GitHub-only, and combined profiles.

Contributor guide

Open the contributing guide

Research direction

Start with backend/services/onboardingService.ts lines 80-135, then inspect src/app/onboarding/step2.tsx lines 21-31 and step3.tsx lines 35-49 to map the existing sync and selection flows. Done means accepted imports are consented, canonical and source-dated, private data stays excluded, unseen repositories and unavailable-data fallbacks work, and rate limiting, caching, pagination, unlinking, and cold-start comparisons are documented and tested.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, typescript
Domain
api, full-stack, machine-learning, security, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.