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#

  1. /app/mentorship lists open programmes you are eligible for. Eligibility is set per programme (audience_scope JSON — e.g. only CS students between batch year X and Y).
  2. 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.
  3. Submit. Your MenteeProfile.state is set to applied.

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 reasons payload (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 to mentor or admin are 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 matching state 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.