Test environment

Help & test accounts

Three roles live in Autoproctor: Admin sets things up, the Proctor watches sessions, and the Student takes the exam. The accounts below are pre-mapped — sign up once with the matching email and the right role is assigned automatically.

Admin

admin

devshantanu@gmail.com

Sets up the organization, invites proctors, creates exams, configures LTI 1.3 connection to the LMS, and reviews AI-flagged sessions.

  1. 1.Sign in → workspace auto-bootstraps as the owner organization.
  2. 2.Open Dashboard → Organization settings → add proctors & exams.
  3. 3.Open LTI → register the LMS platform (issuer, client_id, JWKS URL).

Proctor

proctor

sdev@beyondexam.com

Watches the live proctor grid, reviews trust-score drops in real time, pauses or terminates suspicious attempts, and adds notes for review.

  1. 1.Sign in → land on the live proctor dashboard.
  2. 2.Pick an active session tile → audit events, snapshots, recording.
  3. 3.Use Pause / Terminate / Flag actions; everything streams over Realtime.

Student

student

student1@beyondexam.com

Launches an exam from the LMS (exambenefit.com) via LTI, completes ID check and environment scan, then takes the exam in the embedded exam runner.

  1. 1.Sign in → see the Candidate dashboard with the available launch.
  2. 2.Click the exam → camera/mic permissions → ID capture → start.
  3. 3.Submit → see receipt; AI review runs automatically afterward.

How to log in (first time)

  1. 1. Open /auth and click Sign up.
  2. 2. Use one of the three emails above and any password (8+ chars). You can also use Google sign-in for devshantanu@gmail.com.
  3. 3. On first sign-in, the platform auto-creates your profile, a workspace (for Admin), and assigns your role.
  4. 4. Sign out, then sign in as the next role to see the other side of the workflow.

How the LMS ↔ Proctoring integration works

Autoproctor connects to LMS platforms like exambenefit.com using the open LTI 1.3 standard. The LMS owns content and grading; Autoproctor owns identity verification, session monitoring, and trust scoring. Grades flow back via LTI Assignment & Grade Services (AGS).

1

Admin registers the LMS as a platform

In Autoproctor, the admin adds the LMS's issuer URL, client_id, JWKS endpoint, and OIDC auth endpoint. Autoproctor publishes its own JWKS at /api/public/lti/jwks for the LMS to trust.

2

Student launches the exam from the LMS

Inside exambenefit.com, the student clicks the proctored exam link. The LMS hits /api/public/lti/login (OIDC third-party initiated login) and redirects to /api/public/lti/launch with a signed JWT.

3

Autoproctor verifies the launch & creates an attempt

We validate the LMS's JWT against its JWKS, match the resource_link to an exam, create a candidate + exam_attempt, and redirect the student into /exam/launch/:id to begin the secure session.

4

Live proctoring + AI trust score

Snapshots, screen recordings, and signals (tab switch, multi-face, audio anomalies) stream into attempt_events. The trust_score updates live via Supabase Realtime, so the proctor sees risk drop the moment it happens.

5

AI review on submission

On submit, Gemini 3 Flash (via Lovable AI Gateway) compares the captured ID with snapshots, summarizes flagged events, and writes a risk verdict to the attempt.

6

Grade & verdict pushed back to the LMS

Final score + proctoring verdict are sent back to exambenefit.com over LTI AGS. The LMS treats Autoproctor as the trusted source of truth for that attempt.

LTI endpoints (for the LMS admin)

  • Login (OIDC init): /api/public/lti/login
  • Launch (tool URL): /api/public/lti/launch
  • JWKS (public keys): /api/public/lti/jwks

→ Full technical spec for LMS partners: /help/lms-integration

Where the exam actually runs

The exam content (questions, timer, autosave, scoring) is rendered by exambenefit.com. Autoproctor wraps that experience: we own the camera, microphone, screen lockdown, ID capture, and AI scoring. The student never leaves the proctored window — exambenefit.com is embedded inside the secure runner at /exam/launch/:launchId.