Students — Mentorship (as Mentee)#
The Mentorship surface pairs you with an alumni mentor for a time-boxed cohort. Matching is driven by a transparent skills + audience-fit score, with both sides consenting before the relationship starts.
Who this is for: students and early-career alumni applying for a mentor through a Bits programme.
Where to find it#
- Browse open programmes:
/app/mentorship. - Apply as mentee:
/app/mentorship/programmes/<id>/apply-mentee. - Your matches:
/app/mentorship/matches. - A specific match:
/app/mentorship/matches/<id>.
How matching works#
A mentorship programme is a cohort. Admins open a programme; mentors and mentees apply during the open window. When the admin runs matching, an algorithm produces deterministic mentor↔mentee proposals scored by skill overlap, audience fit, and remaining mentor capacity. Mentors accept or decline first; only after a mentor accepts do you (the mentee) see the proposal. Both sides must accept to activate the match.
The matcher is deterministic — re-running it on the same inputs produces the same output, in the same order. There is no randomness.
Applying#
/app/mentorshiplists open programmes you are eligible for. Eligibility is set per programme (audience_scopeJSON — e.g. only CS students between batch year X and Y).- Apply as mentee opens the form:
- Goals — free-form, ≤ 2 000 chars. The mentor reads this on the match card; spend time on it.
- Focus tags — pick the skills you want guidance on. The matcher uses these directly to find mentors whose expertise overlaps.
- Submit. Your
MenteeProfile.stateis set toapplied.
You can apply to as many programmes as you are eligible for. The matcher does not coordinate across programmes — you may end up matched in two simultaneously.
Accepting (or declining) a match#
You receive a mentorship.match.proposed notification once the mentor side accepts. Open /app/mentorship/matches.
Each card shows:
- The mentor’s name + short bio (≤ 500 chars).
- The match score and the
reasonspayload (which skills overlapped, which audience axis matched). - Accept / Decline CTAs.
State machine for your side:
proposed → accepted_by_mentor → accepted (you accept)
→ declined (you decline; terminal)A declined match is final. You may be re-matched in the next matching run, but only if the admin runs matching again with you still in applied state.
Sessions#
Once both sides have accepted, the mentor schedules sessions. You receive a notification per scheduled session, plus reminders 24 h and 1 h before the start time (backend/internal/mentorship/reminders.go).
On the session view you can:
- See the date/time, duration, and modality (
in_person | video | chat). - Read progress notes the mentor has shared with
notes_visible_to = both. Notes scoped tomentororadminare not visible to you.
You cannot edit a session — only the mentor or an admin can change its state.
What if it isn’t working?#
If the relationship isn’t a fit, ask your mentor to terminate the match (or escalate to an admin). Termination is a mentor- or admin-initiated action; mentees do not have a self-service terminate button today.
Note: mentee-initiated termination is on the roadmap but not in this release.
Once terminated, you become eligible for the next matching run.
Common issues#
- “I applied but never got a match” — matching is run on demand by the admin, not automatically. If a programme has been in
matchingstate for a long time without producing a proposal for you, the admin may not have run the matcher yet, or the matcher could not find a mentor whose expertise overlaps with your focus tags. Try widening your focus tags. - “My match score looks low” — score is informational. Even a score of 1.0 (only
audience_fit, no skill overlap) is a real match — the matcher just couldn’t find a stronger candidate. - “I want to message my mentor before accepting” — direct messaging across a proposed match is not enabled today; both sides accept first, then use the platform’s existing DMs.
- “I declined by mistake” — declines are terminal. Wait for the next matching run.