What it does

The directory, the request, and the thread between them

Six parts of the product, described without adjectives.

Six decisions the product makes

  1. Roles are set at signup

    Student and professor accounts are separate from the first screen, and only an admin can change a role afterwards.

  2. A request, not a blank email

    Every request carries three fields — topic, academic background, and goals — so a professor sees the context before deciding.

  3. A person reviews every professor

    An admin checks each professor application before the profile joins the directory. Nothing appears there unreviewed.

  4. Group requests

    Work on one request with classmates. Everyone is on the same thread, and the professor can see that it is a group.

  5. One thread per request

    Messages, replies and unread markers live in the request's own thread, so a conversation cannot drift into an inbox.

  6. States, not silence

    A request moves through named states — open, active, declined, past — so you can tell waiting from decided.

Who can read a thread

Row-level security is on for the tables that hold your data, so a request is readable by the student who sent it, the faculty member it was sent to, and the participants they invited. Not by anyone else, and not by us in a browser console.

How that is enforced

  1. Gated before it renders

    Signed-in pages are turned away at the edge when there is no session, and server actions re-check the caller rather than trusting the page that called them.

  2. Roles come from the database

    Your role is read from your own profile row on the server. Nothing the browser sends can promote an account.

Start with one professor.

Get Started

Free for students and faculty.