FAQs Answers, simplified.

Got Questions?
We’ve Got Answers.

Whether you’re just getting started or already a pro, our FAQ section covers everything you need—from billing to features—to make your experience smoother.

View All
Account & Getting Started
Invites & Access
Finding & Starting Assessments
Taking the Assessment
AI Proctoring & Exam Integrity
Submitting & After Submission
Results, Scoring & Reports
Learning Progress & Feedback
Personal Library & Uploads
Notifications & Communication
Billing, Plans & Subscriptions
Privacy, Security & Data
Technical Requirements & Troubleshooting
Support & Contact
How do I create an account?

Go to the Sign Up page (/signup) and choose whether you're signing up as a Student or a Teacher — this only changes where the "Sign up" link on the login page points to and which fields you're asked for; the underlying account creation is the same POST /api/signup call either way. There are four distinct signup paths the backend recognizes:

  • Teacher self-service — pick "Teacher," fill in name/email/password with no invite link, and you're created as an Admin, auto-approved, and put on the Free billing plan, then routed straight into plan selection.
  • Student open signup — pick "Student," fill in name/email/password, and you must also supply your instructor's reference code (format like IA-AB12CD34) or their account email in the "Instructor reference code or email" field, which the form validates live via GET /api/auth/validate-sponsor as you type; without a valid sponsor, signup is rejected.
  • Invite-link signup — if you arrived via an invite link (/signup?inviteToken=...), your name/email are pre-filled and locked, and you only set a password.
  • Form-share signup — signing up from a shared assessment link creates a Pending account tied to whichever admin owns that form.

Password must be at least 6 characters (enforced client-side) and both password fields must match. After submission you're redirected to the login page (or, for teacher self-service, auto-logged-in and sent to plan selection).

Do I need to verify my email before I can log in?

No — the platform does not send an email confirmation/verification link, and there is no "verify your email" step anywhere in the signup flow. What actually gates login is the account's status field, not email verification. Accounts created via invite (admin invite, user invite) or via reference-code student signup are created with status="Approved" and can log in immediately. Accounts created via open/self-service signup with no sponsor validation path or via a "form share" link are created with status="Pending" and cannot log in until an Admin approves them (Superadmin accounts are always allowed to log in regardless of status). If you try to log in while Pending, you'll see "Account pending approval" rather than any email-verification message.

Can I sign up without an email, using just a nickname and PIN?

The backend fully supports nickname+PIN accounts (no email or password at all — auth_method="nickname_pin"), but this path is not exposed as a self-service option on the public Sign Up page today. In the current UI, nickname+PIN accounts are provisioned by an Admin (via "Add user with nickname" or bulk nickname import in the admin dashboard), not created by the learner themselves. If you were given a nickname and PIN by your instructor/administrator, you don't need to sign up — you log in directly with those credentials. Newly admin-created nickname+PIN accounts are flagged requires_pin_reset, so your first login redirects you straight to your profile page to set a new PIN before you can do anything else.

What's the difference between logging in with email/password vs. nickname+PIN?

They are two mutually exclusive authentication modes tied to how your account was created (the auth_method field), and the Login page has a toggle ("Email Login" / "Nickname + PIN") to switch the form between them. Email/password accounts type a full email address and password; nickname+PIN accounts type a short nickname (no spaces) and a numeric PIN of 4–8 digits. You cannot mix them — if your account uses nickname+PIN and you try the generic /api/auth/login endpoint with your nickname as the "email" field, the server explicitly rejects it and tells you to use /login-nickname-pin instead, and vice versa an email account can't authenticate via the nickname+PIN endpoint. Functionally both produce the same kind of session token and land you in the same dashboard; nickname+PIN is primarily meant for younger students or environments where handing out full email accounts isn't practical, since an Admin can bulk-provision many nickname+PIN users at once without collecting email addresses.

I forgot my password — how do I reset it?
  1. From the Login page, click "Forgot password?" (only shown when the "Email Login" tab is selected — nickname+PIN accounts don't have a password to reset).
  2. On the Forgot Password page, enter the email address on your account and submit. This calls POST /api/auth/forgot.
  3. The server always responds success ("If the email exists, a reset link has been sent") regardless of whether that email exists, to prevent account enumeration — so don't be alarmed if you don't get a clear error for a mistyped address; just double-check the address and try again.
  4. If your organization's Superadmin has SMTP configured, you'll receive an email with a reset link; the link encodes a short-lived token valid for 30 minutes. If SMTP isn't configured, the reset link may be logged server-side for manual delivery rather than emailed — in practice you should contact your administrator if no email arrives within a few minutes.
  5. Click the link (/reset-password?token=...), enter a new password (minimum 8 characters) twice, and submit — this calls POST /api/auth/reset. On success you're redirected to the login page automatically.

If the token has expired (>30 minutes old) or is malformed, the reset attempt fails with "Invalid or expired token" and you'll need to request a fresh link.

I forgot my nickname or PIN — what do I do?

There is no self-service "forgot nickname/PIN" flow — nickname+PIN accounts have no email address on file, so there's no channel for the system to send a reset link to. If you can still log in, go to your profile and use the PIN-change fields (requires your current PIN, so this only helps if you remember it). If you've genuinely forgotten your nickname or PIN, you'll need to ask the Admin/teacher who created your account to look it up or reset it for you from their admin dashboard — nicknames are visible to your admin in their user list, and they can set your account to requires_pin_reset so you're forced to choose a new PIN on next login.

How do I change my password?
  1. Log in and go to your Profile page.
  2. In the credentials section, enter your current password, then your new password.
  3. Submit — this calls PUT /api/auth/profile with current_password and new_password. The server re-verifies your current password against the stored hash before accepting the change; if it doesn't match you'll get "Current password is incorrect."

This only applies to email/password accounts — if your account uses nickname+PIN authentication, the same profile form instead lets you change your PIN using current_pin/new_pin (the server rejects password-change fields on a PIN account with "This account uses PIN authentication..."). New PINs must be at least 4 characters. Changing your PIN also clears the requires_pin_reset flag if it was set. Note some admin-facing profile flows explicitly log you out after a password change and ask you to sign in again with the new credentials — expect to potentially need to re-authenticate.

How do I update my profile information (name, email, avatar)?

Go to your Profile page while logged in. You can update your display name and avatar URL freely — both are sent via PUT /api/auth/profile (name, avatar_url fields) and take effect immediately, no current-password confirmation required for these two fields. If your account uses nickname+PIN auth, you can also change your nickname here (must be unique — if another user already has it, you'll get "This nickname is already taken"). Email address is read-only and cannot be changed from the profile page. Password/PIN changes are handled in the same form but require re-entering your current credential. You can also view which Admin(s)/instructor(s) your account is linked to via GET /api/auth/profile-info, which lists your associated admins by name/email.

Can I change my email address after signing up?

No — the profile update endpoint (PUT /api/auth/profile) does not accept an email field at all, and the Profile UI renders your email as a read-only field. This is a deliberate constraint since your email is how the system uniquely identifies and links your account to admins, invitations, and password-reset flows. If you need your email address corrected (e.g., a typo at signup) or changed, you'll need to contact your Admin or platform support, since there is no self-service path for this in the current code.

Is there a mobile app, or is this web-only?

IntelliAssess AI is a responsive web application (React/Vite frontend) — there is no native iOS/Android app in this codebase. The UI is built with mobile-friendly touch targets and responsive layouts, so it's designed to work reasonably well in a mobile browser, but you access it the same way as on desktop: through a web browser at your organization's URL.

Which browsers are supported?

There's no explicit browser support matrix or user-agent gating in the code, so the practical answer is: any modern evergreen browser (Chrome, Edge, Firefox, Safari) that supports current JavaScript/ES features, WebSocket connections (used for live privilege updates), and — if your assessment has webcam/screen/mic proctoring enabled — the corresponding getUserMedia/getDisplayMedia browser APIs, which are only reliably available in recent Chromium- and Firefox-based browsers and less consistently in older/mobile Safari. If a proctored assessment requires screen sharing and your browser can't grant that permission, the Start button will show an error like "Screen sharing permission is required to start this assessment." rather than silently failing.

Do I need to create an account to take an assessment?

It depends on how the form/assessment was configured by its creator. Forms with purpose = "Open" are explicitly designed for public, unauthenticated access — no account needed, you just provide an email/nickname when prompted (used to attribute the submission). Forms with purpose of "Assessment," "Learning," "Protected Assessment," or "Protected Learning" require you to be logged in — the access-check endpoint (GET /api/forms/{form_id}/access) will return "Please log in to access this form" for these types even if the form is also PIN-protected. So: Open forms = no account required; everything else = account required.

Can I take an assessment as a guest without registering?

Yes, but only for forms whose purpose is set to "Open" by the creator — these are reachable at /assessment/:formId without logging in. When you open an Open-purpose assessment as a guest, you'll typically be prompted for an email address (used to identify your submission and results) before the Start button becomes active; a PIN prompt is shown first if the form is also PIN-protected. Guest attempts are tracked server-side using that email (or nickname, for PIN-protected open forms) rather than a user_id. For all other purposes (Assessment, Learning, Protected Assessment, Protected Learning), the backend explicitly requires login even if you have a valid share token or verified PIN — you'll be bounced to "Please log in to access this form."

How do I delete my account?

There is no self-service "delete my account" button in the product today. Account removal is admin-initiated: an Admin unlinking you from their organization deletes your submissions, learning progress, notifications, and group memberships tied to that admin's forms, and if that was your only admin association, your user account row is fully deleted as a side effect. If you're linked to multiple admins/instructors, unlinking from one won't delete your account — you'll simply lose access to that admin's forms while your account (and other admin links) persist. If you want your account fully removed, contact the Admin or platform Superadmin who manages your account and ask them to remove you.

Can I have more than one account?

Nothing in the signup logic technically prevents you from creating multiple accounts with different email addresses (or nicknames), and a single learner can even be linked to multiple different instructors/admins simultaneously via the "associated admins" mechanism — one account, many sponsors, is the intended way to handle multiple classes/teachers. Using entirely separate accounts per class isn't blocked by the code, but it's not the intended pattern and could fragment your submission history and progress tracking across accounts, since results, learning progress, and notifications are all scoped per user_id. If you're taking assessments from multiple instructors, the recommended path is to add each instructor's reference code/email to your single profile rather than creating a new account per class.

Why was my account locked or suspended?

There's no separate "locked/suspended" flag distinct from the account's approval status. The two relevant states are "Pending" (new self-service accounts awaiting Admin sign-off — you'll see "Account pending approval" on login) and "Rejected" (an Admin/Superadmin can explicitly set your status to Rejected from their admin console, which the login check treats the same as not-Approved and blocks sign-in). If you're being told your account is inactive, it's one of these two states — either you're still waiting on approval, or an administrator has rejected/deactivated your account. In either case the fix is the same: contact the Admin who manages your account and ask them to approve or reactivate you; Superadmin accounts are exempt from this check entirely and can always log in.

How do I log out of all devices?

There isn't a "log out everywhere" button, and there's a structural reason why: authentication uses stateless JWT access tokens (default lifetime 24 hours), which are validated purely by signature/expiry — the server does not maintain a session table it could invalidate on demand for normal logins (the one exception is Admin "impersonate user" sessions, which do have a server-side one-time session record). Logging out on one device just clears that device's locally stored token; any other device that already has a valid token will keep working until that token's own 24-hour expiry lapses. If you believe your credentials are compromised, the effective mitigation is to change your password (or PIN) immediately — that doesn't retroactively invalidate already-issued tokens, but it stops anyone from getting a new token, and old tokens will age out within 24 hours regardless.

What happens to my data if I stop using the platform?

The code doesn't implement any automatic data-retention/expiry job for inactive accounts — your account, submissions, and learning progress simply persist until an Admin explicitly removes you or a Superadmin deletes accounts in bulk. There's no auto-purge-after-N-days-of-inactivity logic present in the backend services reviewed. If your organization has a specific data retention or deletion policy for inactive users, that would be an operational/legal decision layered on top of the product rather than something enforced in code today.

I received an invite link — how do I use it?
  1. Click the link you were sent. It will look like https://.../signup?inviteToken= (account/admin invites) or a form-share link that also carries an invite token.
  2. The Sign Up page automatically calls GET /api/invite/details?invite_token=... to look up the invite and, if valid, pre-fills and locks your name and email and shows a banner like "Join {inviter}'s Team" — you only need to choose a password.
  3. Submit the form to create your account (POST /api/signup). Depending on the invite type: admin invites create an approved Admin account immediately with the privileges/billing plan the inviter configured; user invites create an approved User account and automatically link you to the inviting Admin; form-share invites create a Pending account tied to that admin, and you may need to wait for approval before you can access the specific form.
  4. After signup you're redirected to log in (or, if you were mid-flow accessing a specific assessment, redirected straight into it after logging in — the app remembers the target form URL).

If the invite has already been used or cancelled, you'll see "This invitation has been cancelled or already used" instead of the signup form.

Does my invite link expire?

Yes. Both admin invites and user invites are created with an expiry of 7 days from creation, encoded as the JWT's exp claim as well as tracked in the pending-invitation database record. After 7 days the token itself fails signature/expiry validation, so clicking the link will show "Invalid invitation type" or a decode failure, and the signup form will refuse to proceed. PIN-verification tokens (separate from invite tokens, issued after successfully entering a form's PIN) have a much shorter, unrelated 24-hour lifetime — don't confuse the two.

What if my invite link says it's invalid or already used?

This message comes from the invite-details lookup, which checks the invite by the email encoded in the token against the still-pending invitation record. Two things cause it: (a) you already completed signup with this invite — the pending-invitation row is deleted the moment signup succeeds, so re-clicking the same link afterward correctly reports it as used (you should just log in normally instead); or (b) the invite was cancelled by the Admin/Superadmin who sent it before you used it. Either way, the fix is the same: ask whoever invited you to send a fresh invite if you still need access — there's no way to "revalidate" a used or cancelled token.

Can I access an assessment invite without creating an account first?

Only if the assessment itself is an "Open" purpose form — in that case the share/invite link may grant access without any account at all. For Assessment/Learning/Protected-Assessment/Protected-Learning forms, the access-check logic explicitly requires you to be logged in even when a valid share token or verified PIN is present — you'll be redirected to sign up/log in first, and the app stores the target form URL so you land back on the assessment immediately after authenticating. Practically: click the invite link, and if it's not an Open form you'll be walked through signup before you ever see the assessment content.

Who invited me, and can I see who sent the invite?

Yes, before you even sign up: the invite-details lookup returns an invited_by field (the inviter's email) which the Sign Up page displays prominently, e.g. "You've been invited by teacher@school.edu to join IntelliAssess AI." After you've signed up and logged in, you can also see your full list of associated admins/instructors — including name, email, and role — on your Profile page, which returns an associated_admins array built from your user-admin links, not just the one who sent your original invite.

Can I forward my invite link to someone else?

Technically the invite token itself doesn't cryptographically bind to a specific browser or device, but it is effectively single-use in practice: the invite is tied to a specific email address baked into the token and validated against a pending-invitation record for that exact email — and critically, the pending invitation row is deleted as soon as anyone completes signup with it. So the first person to complete signup with the link "claims" it; if you forward it to someone else after you've already registered, they'll hit "This invitation has been cancelled or already used." Forwarding it to someone else before you've used it would let them register as if they were you (name/email pre-filled from the token) — so invite links should be treated as personal/sensitive, not shared, even though there's no additional access-control check verifying the clicker's identity against the invited email.

What information does an invite link reveal before I log in?

Before authenticating, hitting the invite-details endpoint publicly reveals: the invited person's name, their email address, who invited them (inviter's email), whether the invite is valid, and its invite type (admin invite or user invite). It does not reveal privileges, billing plan, or any other account data — those stay server-side and are only applied at account-creation time. Because this endpoint is unauthenticated by design (it has to be, since you don't have a token yet), anyone with a copy of the raw invite token could see the invited person's name and email — another reason not to forward or publicly post invite links.

I was invited to a form I can't find — where did it go?

A few possibilities, roughly in likelihood order:

  • Your account is still Pending approval — form-share invites create a Pending account, and pending users generally can't access protected content until an Admin approves them; check your account status on your Profile page.
  • You haven't been added to the group or direct-share list yet — forms only show up on your dashboard if you belong to a group the form was shared to, or you have a direct notification entry for it; being "invited" as a user doesn't automatically grant access to every form that admin owns.
  • The form is scheduled and hasn't opened yet, or has already closed — scheduled forms are hidden from access checks outside their scheduled window, with a message like "Form is scheduled to start on {date} ({timezone})."
  • You've already submitted it and it's not a reattempt-enabled Learning form — submitted, non-reattempt forms are excluded from "available" listings once complete.

If none of these explain it, ask the admin who invited you to re-share the specific form with your account or your group.

Can an invite be revoked after it's sent?

Yes — Admins/Superadmins can cancel a pending invitation from their admin dashboard, which deletes the pending-invitation database row outright. Once cancelled, the invite link becomes permanently unusable: clicking it will show "This invitation has been cancelled or already used," identical to what you'd see for an already-accepted invite. There's no way to un-cancel or restore a revoked invite — the inviter would need to send a brand-new one.

Do I need a PIN in addition to my invite link?

Not usually — invite links (for account creation) and form PINs (for accessing a specific PIN-protected form) are two independent mechanisms and most invites don't involve a PIN at all. You'd need a PIN only if the specific assessment you're trying to open was separately configured by its creator as PIN-protected, which is unrelated to whether you arrived via an invite link, a share link, or just browsing your dashboard. If a form is both share-linked to you and PIN-protected, you'll still be asked to enter the PIN before you can start it — the share token alone doesn't bypass a PIN requirement.

What happens if I try to use an expired invite?

The invite token fails JWT expiry validation server-side (its expiry claim is 7 days past creation), so the invite-details lookup won't be able to decode it as a valid invite and the Sign Up page will show an "Invitation Invalid" error card with a message like "This invitation may have been cancelled or already used. Please contact the administrator for a new invitation." along with a "Back to Login" link. Functionally this looks identical to a cancelled/already-used invite from your perspective — in all three cases (expired, cancelled, used) the fix is the same: request a new invite from whoever originally sent it.

Can I request a new invite if mine stopped working?

Yes — since invites are single-use and expire after 7 days with no self-service renewal, the only path forward is asking the person who invited you (visible via the "invited_by" field the invite page showed you, or via your Profile page's associated admins once you have any working account) to send a fresh invitation from their admin dashboard. There's no "resend" that reuses the old token; a new invite generates a brand-new token and a new 7-day expiry window.

Where can I see the assessments/forms available to me?

Log in as a User and go to your dashboard — the frontend calls the available-forms endpoint, which returns every form you have access to either through a group you belong to, a direct share to your account, or (for Learning-type forms specifically) forms you've already submitted so your progress/history stays visible even after completion. Each entry includes the form's title, purpose, time limit, whether it's new/unread, which group(s) granted you access, your submission status, and your score if it's been evaluated. Forms that are scheduled to open later are still listed but flagged as scheduled so the UI can show you when they'll unlock, rather than hiding them entirely.

How do I know if I have a new assessment assigned to me?

The dashboard polls a notification-stats endpoint, which returns three counts: total available forms, an unread count for forms with a notification you haven't marked seen, and a new count for unread forms where the "new form" email hasn't even gone out yet. These typically drive a badge/counter in the UI so you can tell at a glance whether something new landed without having to scan the whole list. Opening/viewing a form is what clears its "new" status.

What does "mark as seen" do for a new form notification?

When you open a form's details from your dashboard, the client calls a mark-seen endpoint, which flips that form's notification "seen" flag to true and stamps the time seen. This is purely a read-receipt/UX mechanic — it removes the form from your "unread"/"new" counts and doesn't affect your actual access rights, submission status, or the assessment's timer/deadline in any way. If no notification row exists yet for that form (e.g., you accessed it via a direct link rather than a dashboard click), the endpoint creates one and immediately marks it seen, so this call is safe to fire even the first time you see a form.

Why can't I see a form that I was told is available?

Run through this checklist, matching how the access logic actually gates visibility:

  • You must be logged in as a User role — the available-forms endpoint explicitly rejects any other role.
  • You need either group membership in a group the form was shared to, or a direct share to your account specifically — being merely "linked" to the admin who owns the form isn't enough by itself.
  • If the form is scheduled, it won't be usable (though it may still be listed) outside its scheduled window.
  • If it's a non-reattempt form you've already submitted, it drops out of the available list once submitted (Learning forms are the exception — they stay visible for progress tracking).
  • If the form requires proctoring but its creator's billing plan doesn't support proctoring, non-creator/non-Superadmin users are blocked entirely with a specific "billing plan does not support proctoring" message.

If you've confirmed none of these apply, ask the admin to re-check the sharing settings (group vs. direct share) for that specific form and your account status.

What is a PIN-protected assessment, and where do I get the PIN?

A PIN-protected form is one its creator configured with a hashed PIN, intended for scenarios like in-classroom or proctored access where a short numeric code (rather than individual accounts) gates entry. When you open such a form, you're prompted to enter a nickname and the PIN via a verify-PIN endpoint; a correct PIN returns a signed verification token valid for 24 hours that's then attached to subsequent requests so you don't have to re-enter it on every call. Note that PIN protection and login requirements are independent: if the form's purpose is Assessment/Learning/Protected Assessment/Protected Learning, you still need to log in in addition to verifying the PIN — PIN-only, no-login access is reserved for other purposes. The PIN itself isn't generated or distributed by the system to you automatically — you get it directly from your instructor/administrator (verbally, on a slide, via a class announcement, etc.), since the whole point is that it's a shared secret they control out-of-band.

What happens if I enter the wrong PIN too many times?

The verify-PIN endpoint simply returns a "not verified" result with "Incorrect PIN. Please try again." on a wrong guess — there is no attempt counter, rate limit, or lockout implemented in the PIN-verification code path, so you can retry as many times as you like without your account (or the form) being locked. This is worth flagging as a security consideration since it means the PIN isn't protected against brute-forcing by the platform itself; any such protection would need to come from short PIN rotation policies or network-level rate limiting outside this codebase.

How do I check if I still have access to a specific assessment?

The definitive check is the form-access endpoint (the frontend calls this automatically whenever you open an assessment page), which evaluates, in order: proctoring/billing eligibility, PIN-protection status, form purpose/login requirements, scheduled start/end windows, your role (Superadmin/creator always pass), share-token validity, group membership, and direct sharing — returning whether you can access it plus a specific message explaining why if denied (e.g., "You have already submitted this form," "Maximum of {n} attempt(s) reached," "Form is scheduled to start on {date}"). In practice you don't need to call this yourself — just try opening the assessment from your dashboard or its link, and the page will surface the exact reason if access is denied rather than a generic error.

Can I preview an assessment before starting it officially?

Opening the assessment page itself is a preview of sorts — the app loads the form's metadata and shows an instructions/rules modal that you must consent to before the "Start" flow proceeds, and for PIN-protected or scheduled forms it also shows access-relevant info (like start-time countdowns) before you commit to starting. However, this is not a no-consequence preview of the actual questions: nothing about opening the page, viewing instructions, or even verifying a PIN starts your timer or attempt — that only happens the moment you click Start. So you can safely read the rules/instructions and back out without it counting against you, but you generally can't browse the actual question content ahead of officially starting, since questions are delivered as part of the same started session.

What happens once I click "Start"? Can I undo it?

Clicking Start does several things depending on the form's configuration: it may request full-screen mode (if security/proctoring is enabled) and screen-share permission (if screen proctoring is required), it acquires a single-tab lock in your browser (a second tab of the same assessment will be blocked with "This assessment is already open in another tab"), and — critically, for any form with a timer and/or scheduled end — it calls the start-attempt endpoint, which creates a server-side attempt record, computes an effective deadline in UTC (the earlier of "now + time limit" and the form's scheduled end), and returns the remaining seconds, which immediately begins counting down client-side. This cannot be undone — there is no "cancel attempt"/"un-start" endpoint; once the attempt record exists, the deadline is fixed server-side, and the clock keeps running whether or not you're actively answering questions. If you close the tab or lose connection, the timer keeps counting down server-side — reopening the assessment and letting it re-fetch attempt status is how you resume, not a way to reset the clock.

Is there a time limit before I must start after opening a form?

There's no separate "you must click Start within X minutes of opening the page" timer — you can sit on the instructions/rules screen as long as you like. The real constraint is the form's own scheduled window, if one is set: if the form has a scheduled end, the moment the effective deadline passes, start-attempt will reject you outright with "The time window or time limit has already ended," even if you never clicked Start before that point. So effectively: for forms with only a time-limit timer (no scheduled end), you can open and start whenever you want, and the countdown only begins at the moment you press Start; for forms with a scheduled end date, you must both open and start before that scheduled end passes, or you'll be locked out entirely.

Can I start an assessment on one device and continue on another?

Yes, for the timer/attempt state — the attempt-status endpoint looks up your latest open (unsubmitted) attempt by your logged-in user ID (or by email/nickname for guest/PIN attempts) and returns the server-computed remaining time, so logging into the same account on a different device and reopening the assessment will correctly resume the countdown from where it actually stands — the deadline lives on the server, not in browser storage. That said, there's an important caveat: in-progress answers are not synced across devices — there's no autosave/draft-sync mechanism in the code; your typed answers exist only in that browser tab's state until you actually submit. So switching devices mid-attempt will preserve your remaining time but will not carry over anything you'd already typed on the first device. Also note the same-browser single-tab lock only blocks a second tab in the same browser/localStorage — it doesn't prevent opening on a genuinely different device, so be careful not to have the assessment open in two places at once, since only one will actually be able to submit your intended answers.

What do I do if the "Start Attempt" button is greyed out or missing?

This generally traces back to one of the access-check conditions failing before you even get to a Start button: the form might be scheduled and not yet open (you'll typically see a countdown/scheduled-start message instead of Start), PIN verification might still be required and unresolved, you might need to be logged in for this form's purpose type, screen-share/full-screen permission might have been denied (the app shows an explicit error like "Screen sharing permission is required to start this assessment" rather than silently disabling the button), or you may have already used up your attempts. Check the page for an inline error/status message first — the code surfaces specific reasons rather than just disabling the button silently. If nothing on-page explains it, refresh the page to re-run the access check, and if it persists, contact your instructor/admin with the exact message shown.

Why does it say my attempt has already started?

This means the server already has an open attempt record for you on this form (no submission yet) — most commonly because you previously clicked Start, then navigated away, refreshed, or lost connection without submitting. Rather than letting you start a brand-new attempt (which would create a second, conflicting timer), the app is expected to detect this via the attempt-status endpoint and resume your existing attempt with its already-ticking remaining time rather than restart the clock. If you see this message but the app isn't automatically resuming you into the assessment, try reopening the exact same assessment link/tab rather than starting fresh — the fix is to continue the existing attempt, not to try to force a new one (there's no way to discard an open attempt and get a clean restart short of your instructor granting you an additional attempt via the reattempt settings).

Can I take the same assessment more than once?

Only if the form's creator explicitly enabled it — this is controlled entirely by two settings the Admin/teacher sets when building the form: whether reattempts are allowed, and a maximum-attempts number (default 1). If reattempts are off (the default), any existing submission from you on that form permanently blocks further attempts with "You have already submitted this form" — there's no learner-side way to reset this. If reattempts are on, you can attempt again up to the configured maximum times total; once your submission count for that form reaches the cap, you'll get "Maximum of {n} attempt(s) reached for this form." This is not something you can control or request from within your own account — if you believe you need another attempt (e.g., a technical failure mid-attempt), that requires your instructor/admin to adjust the form's reattempt settings or otherwise intervene.

What's the difference between a "form" and an "assessment" in the app?

Under the hood there's only one data model — everything is a "Form" — but "assessment" is the user-facing name for a form whose purpose field is set to an exam/quiz-style type (e.g., "Assessment," "Protected Assessment") as opposed to a self-paced "Learning" purpose (which supports re-attempts and progress tracking more like a study module) or an "Open" purpose (public, no-login form). Regardless of purpose, every one of these is opened at the same frontend route and goes through the same access-check/start-attempt machinery — so from a URL and code-path perspective "form" and "assessment" are interchangeable; the distinction that actually matters for your experience is the form's purpose, which determines whether login is required, whether PIN protection alone suffices, whether reattempts are allowed, and how your results are tracked (score vs. learning progress).

How do I know how many questions or how much time an assessment has?

The time limit is visible before you commit to starting: it's part of the form summary shown on your dashboard and again on the assessment/instructions page itself, and if the form also has a scheduled end date, the effective deadline you'll actually be held to is whichever comes first (time-limit-from-start vs. scheduled end) — the instructions/PIN/access screens generally surface the scheduled end time in your admin's configured timezone. Question count is not broken out as a separate summary field on the dashboard listing, but once you open the form the full question set is loaded as part of the form detail response — practically, the clearest way to see exactly how many questions and what types they are is to open the form's instructions/rules screen, which is shown before you click Start and does not itself start your timer.

Is there a timer, and what happens when it runs out?

If the assessment has a time limit and/or a scheduled end time, when you click Start the backend creates an "attempt" record and returns an effective deadline (in UTC) plus a remaining-seconds count — this is computed server-side as the earlier of "started_at + time_limit_minutes" and the form's scheduled end, so the clock is authoritative on the server, not just in your browser. The frontend counts down the remaining seconds locally in real time, but the server independently checks the deadline again at submission time. When the countdown hits zero, the assessment auto-submits your current answers marked as a timer-expired submission — you don't need to click Submit yourself. If you somehow try to submit after the deadline has passed (e.g., a delayed request), the server rejects it with "Time limit or scheduled window has ended. Submission not accepted," so once time is up, no further edits are accepted even if the auto-submit request is late.

Can I pause an assessment and resume later?

No — there is no pause feature. Once you start an attempt, the deadline is fixed on the server and keeps counting down regardless of whether you're actively answering questions. If you close the tab or lose connection, the time still elapses in the background. What you can do is refresh or reopen the assessment and it will re-sync your remaining time using the attempt-status check, but this is not a "pause" — it just lets you continue against the same running deadline.

What happens if my internet disconnects mid-assessment?

The deadline lives on the server, not in your browser, so a disconnect doesn't stop the clock. When you reconnect and reload the assessment, the app calls the attempt-status endpoint with your attempt ID (or your login/email/nickname if you don't have the ID handy) and the server recalculates your remaining time from the stored deadline, so your countdown picks up exactly where it should be. However, note that your in-progress answers are held in the browser's memory and are not synced to the server until you submit — only your current page position and "marked for review" flags are cached locally. This means a disconnect that also causes a full page reload can lose unsaved answers even though the timer itself is unaffected. If the assessment is a proctored/secure exam, note that a disconnect long enough to blur the window or drop full-screen may also trigger a security violation warning.

Will my answers be saved automatically as I go?

Not to the server — there is no autosave/draft endpoint that persists individual answers as you type. Your answers are kept in the browser's in-memory state until you submit the whole form in one request. The app does persist two lightweight things to the browser's session storage as you navigate: which page you're on and which questions you've marked for review — this is purely so a refresh restores your position, not your typed answers. Practically, this means you should avoid refreshing or closing the tab unnecessarily, and should submit promptly once you're done rather than leaving the tab open indefinitely.

Can I go back and change an answer before submitting?

Yes. Within a single attempt, before you hit final Submit, you can navigate back to any earlier page/question (via the Back/Next step controls or the question navigator) and change your answer as many times as you like — nothing is locked in until the submit request is sent. The only exceptions are: (1) once the timer expires or the scheduled window closes, the exam auto-submits and further edits are impossible, and (2) on secure/proctored exams, certain actions like exiting full-screen or switching tabs can trigger an automatic submission, which likewise locks in whatever answers you had at that moment.

Can I skip a question and come back to it later?

Yes. The assessment UI supports a "mark for review" flag per question and a step-by-step page navigator (Step X of Y with a progress bar), so you can skip a question, move on, and jump back to it later using the navigator. Marked-for-review state and your current page are restored automatically if you refresh the page. Unlike some exam platforms, there's no requirement to answer questions in order — you're free to move around within your attempt as long as time remains.

What question types does the platform support (MCQ, essay, etc.)?

The platform supports: Multiple Choice (single answer), Multiple Choice (Multi-Select), True/False, Short Answer, Fill in the Blanks, and Descriptive (long-form/essay). Multiple Choice, Multi-Select, True/False, Short Answer, and Fill in the Blanks are scored automatically the instant you submit — the server checks selected options / correct answers against the stored key. Descriptive (essay-style) questions are graded separately by AI evaluation after submission rather than instantly. There are additional internal question-type labels in the schema (Coding, Case Study, Matching, Ordering, Mixed, Manual) that may appear depending on how an admin built the assessment, but the core learner-facing types you'll typically encounter are the ones listed above.

Can I upload files or images as part of my answer?

No — there is no file-upload question type or answer field in the platform. All answer types are text-based, selection-based, or fill-in-blank text. Some questions may display reference images or attachments that the admin attached to the question itself, but there is no mechanism for a learner to upload a file, image, or document as part of their own answer.

What happens if I accidentally close the browser tab during an exam?

This depends on whether the assessment has "security mode" (proctoring/lockdown) enabled. On a secure/proctored assessment, the app listens for the browser's unload event; closing or reloading the tab triggers a "reload/close" warning flow, and if you don't cancel in time the app fires an automatic submission request (using a keepalive fetch so it can complete even as the page unloads) with your answers as they stood at that moment, tagged as an auto-submit-on-reload event. On a non-secure assessment, there's no such interception — closing the tab simply abandons your session; your answers are not sent anywhere (they only ever lived in browser memory), and your attempt remains open/unsubmitted until the timer eventually expires and force-auto-submits it, or you never resubmit and the attempt just times out with whatever was saved at expiry (which, again, is nothing, since answers aren't persisted mid-attempt). Either way, closing the tab is risky — reopen the assessment as soon as possible and use the attempt-status resync to see where you stand.

Is there a warning before my time runs out?

The timer counts down continuously in the assessment UI so you can always see time remaining, but a dedicated "5 minutes left" popup/alert was not found in the assessment-taking code as a distinct feature — the primary signal is the visible countdown itself. Where warnings do explicitly appear is around security violations, not the timer: if you exit full-screen or switch tabs on a secured exam, a modal warns you and gives a short countdown (10 seconds, or immediate for a second offense) before auto-submitting.

Can I use a calculator, notes, or external tools during the assessment?

For assessments with security/proctoring enabled, no — the pre-exam instructions modal explicitly states "No external devices, notes, books, or unauthorized materials are permitted. Use of AI tools or search engines is prohibited," and you must check a consent box agreeing to this before you're allowed to start. Enforcement is both technical and behavioral: right-click, copy, paste, view-source, and dev-tools keyboard shortcuts are disabled while a secure exam is active, and if webcam/screen proctoring is enabled, unauthorized items or a second screen/application in view can be flagged as a violation. For assessments without security mode enabled, there's no client-side restriction, but you should still follow whatever policy your instructor/admin communicated, since the platform itself doesn't distinguish "open book" vs "closed book" beyond the security toggle.

What happens if I refresh the page mid-assessment?

On a non-secure assessment, a refresh reloads the app, re-fetches the form, and restores your current page position and any "marked for review" flags from session storage plus resyncs the timer via the attempt-status check — but any answers you'd typed since the last state change are lost, because answers are only held in memory and are not cached to storage. On a secure/proctored assessment, a refresh is treated the same as closing the tab: the app intercepts the reload, shows a "Reload Warning" modal explaining that reloading will submit your exam, and if you proceed it submits your current answers automatically before the page reloads. Either way, refreshing is something to avoid unless necessary — if it happens, immediately re-answer any questions that may have reverted before continuing.

Can I zoom in/out or resize text during the assessment?

There's no dedicated in-app zoom/text-size control in the assessment UI — it relies on your browser's native zoom and your OS accessibility settings. Standard browser zoom shortcuts are not among the keys disabled by the exam-security mode (which blocks copy/paste/view-source/dev-tools shortcuts, not browser zoom), so zooming should continue to work even during a secured, full-screen exam. If a screen-share proctoring requirement is active, be aware that zooming may change what's visible in your shared screen capture, though this shouldn't itself be flagged as a violation.

Is my progress visible to me (e.g., a progress bar)?

Yes. The assessment UI shows a step-wizard style progress bar with "Step X of Y" and a visual fill bar reflecting how far through the paginated question set you are, plus a question navigator that shows which questions are answered, unanswered, or marked for review. This progress indicator is purely visual/local — it does not report anything back to the server and has no bearing on grading.

What if I need to leave the assessment for a bathroom/emergency break?

There is no built-in "pause" or authorized-break feature — the timer keeps running regardless of whether you're at your desk. On a non-secure assessment, stepping away is low-risk apart from losing time, since there's no monitoring. On a proctored/secure assessment, stepping away can actively cause problems: if a webcam is required, an extended absence will be flagged as a face-absent violation (escalating from a warning to an auto-submit after repeated occurrences), and if you minimize the window, switch tabs, or lose window focus for too long, that can independently trigger a tab-switch/window-blur violation and auto-submit. If you must step away during a proctored exam, treat it as a real risk to your submission — there's no "excused break" mechanism recognized by the system; you'd need to rely on your institution's policy and, if something goes wrong, an after-the-fact dispute/review with the admin.

Can I switch between light and dark mode during an assessment?

No — the platform does not currently have a dark mode / theme toggle anywhere in the frontend, including the assessment page. The interface renders in a single fixed light theme.

Does the assessment auto-submit when time expires?

Yes. When the countdown reaches zero (or, for scheduled assessments, when the scheduled end time passes — checked once per second while the exam is open), the frontend automatically builds a submission payload from whatever answers you have and sends it to the server tagged as a timer-expired or scheduled-window-passed submission — no click needed from you. The server also independently enforces the deadline: even if a submission somehow arrives late, it will be rejected with "Time limit or scheduled window has ended." This is deadline-driven, not "best effort" — the server, not the browser clock, is the source of truth.

What browser/device settings should I check before starting?

A few things matter, especially for proctored/secure exams:

  1. Camera and microphone permissions — if the form has webcam or mic proctoring enabled, your browser will prompt for camera/microphone access; you must allow it or you cannot proceed past enrollment.
  2. A working, connected webcam — if proctoring requires it and no camera is detected, the browser reports "No camera found" and enrollment is blocked.
  3. Full-screen and pop-up support — secure exams request full-screen mode; make sure your browser allows it and that you're not running in a restricted/kiosk mode that blocks the Fullscreen API.
  4. Screen-sharing entire screen (not just a tab/window) — if screen proctoring is enabled, you'll be asked to share your entire screen; sharing only a window or tab is explicitly rejected.
  5. Stable internet connection — since the deadline is server-driven and answers aren't autosaved, a stable connection reduces the risk of lost progress.
  6. A modern browser with getUserMedia/Fullscreen API support — very old or restricted browsers that lack these APIs will show "Camera/microphone access is not supported in this browser."
What is AI proctoring, and is it used on my assessment?

AI proctoring is a real, active feature in this platform (not just a roadmap item) — it combines webcam-based face/identity monitoring (AWS Rekognition), optional microphone/speech monitoring (Deepgram), optional AI-based screen-content analysis, and browser-behavior monitoring (tab switches, full-screen exits) to help detect exam integrity issues in real time. Whether it's used on your assessment depends entirely on how the admin configured that specific form: proctoring is opt-in per form via separate webcam, mic, location, and screen proctoring flags, and is also gated by the admin's billing plan (an org without the relevant plan privilege can't enable it). If any of these are on, you'll be shown an explicit "Assessment Instructions & Safety Protocol" screen before you can start, listing exactly what will be monitored, and you must check a consent box to proceed — you'll always know before you begin whether proctoring is active on a given assessment.

Does the platform use my webcam during the exam?

Only if the form has webcam proctoring enabled. If so, at the start of the exam you go through an identity-enrollment step (matching a live selfie — and, depending on settings, an ID photo — against reference images), and then your webcam feed is sampled at a regular interval throughout the exam and each frame is analyzed server-side (AWS Rekognition) for things like whether a face is present, how many faces are present, whether it matches your enrolled identity, lighting conditions, and whether your face is obscured. Frames are captured client-side from your live video stream and sent to the server for analysis — the platform is not simply "recording video" passively; it's actively analyzing sampled frames for specific checks.

Does the platform record audio during the exam?

Only if the form has microphone proctoring enabled. When active, audio is captured client-side and analyzed for things like ambient noise levels and — using Deepgram speech-to-text with speaker diarization — whether more than one distinct speaker is detected in a chunk of audio (a strong signal that someone else is talking to/for you during the exam). In the platform's own test coverage, a single detected speaker is not flagged, while multiple distinct speakers in the same audio chunk is flagged as a violation. Audio chunks are stored (locally on the server / to cloud storage depending on configuration) as part of the proctoring evidence trail for that session.

How does face detection work, and what is it checking for?

Face detection runs through AWS Rekognition against periodically sampled webcam frames (not a continuous video review) and checks several distinct conditions, each with its own policy (a "warn" threshold and a separate, usually higher, "auto-submit" threshold measured in consecutive occurrences): no face visible, more than one face visible, the visible face not matching your enrolled reference photo closely enough, an unauthorized item/device in frame, suspicious gaze/eye direction away from the screen, your face being covered or obscured (e.g. by a mask, hand, or sunglasses), and poor lighting making detection unreliable. Each check produces an event with a severity (info/warning/violation); depending on how many times a given issue recurs, the system either just logs it, shows you an in-app warning, or (past the auto-submit threshold) ends your attempt automatically.

What happens if the system can't detect my face?

This is the "face absent" check. By default, the policy is quite strict: the first occurrence generates a warning, and a second occurrence within the tracked window can trigger an automatic submission of your exam — though the exact thresholds are configurable per form by the admin. In practice this means a face genuinely not being visible for more than a few sampled frames (e.g., you leaned far out of frame, or the camera lost you) is treated seriously. If you get a warning for this, immediately reposition yourself back in frame and continue — don't wait, since a second unresolved absence can end your attempt.

Will I be flagged if I look away from the screen briefly?

There's a specific "suspicious gaze" check for this, and it's deliberately more lenient than face-absent: by default it takes several occurrences (default policy: 3 occurrences to warn, 6 to auto-submit) before anything happens, so a brief, occasional glance away from the screen is not going to end your exam on its own. That said, frequent or sustained looking away will eventually generate a warning and, if it keeps happening, can lead to an auto-submit — the intent is to catch a genuine pattern of looking off-screen (e.g., at notes or another device), not to penalize normal, momentary eye movement.

Does switching tabs or browser windows get flagged?

Yes, but this is handled by a separate, stricter mechanism from the AI webcam checks — it's a client-side browser event listener (page-visibility and window-blur events) active whenever "exam security mode" is enabled for the form, independent of whether webcam proctoring is also on. The very first time you switch tabs or the window loses focus, you get an immediate on-screen "Security Warning" modal telling you that you cannot switch tabs, with a 10-second countdown to auto-submit unless you click "Continue Exam." If it happens a second time, there's no more grace — the exam is auto-submitted immediately. The same modal/behavior applies to exiting full-screen. Because the check is based on the browser's tab-visibility and focus events, quickly alt-tabbing, opening dev tools, or clicking outside the browser window on a secure exam will all trigger it.

Is proctoring video/audio stored, and for how long?

Individual violation snapshots (JPEG frames captured at the moment of a flagged event) and enrollment reference images are stored — either to encrypted cloud storage (S3) or, as a fallback, base64-encoded directly in the database — and are associated with your submission so an admin can review the evidence for any flag. Audio chunks used for speech-to-text analysis during microphone proctoring are similarly saved to server storage. However, the platform does not appear to store a continuous full-length video/audio recording of the entire session — it stores discrete evidence: the enrollment photos, and frames/audio tied to specific detected events. The exact retention period for this stored evidence is a policy question for the operating organization rather than something enforced in the code.

Who can view my proctoring recordings or flags?

Proctoring session details, violation timelines, and stored evidence images are surfaced through admin-only endpoints and UI (a proctoring "timeline," a violation gallery, and a security report), gated to the Admin who owns the form (or a Superadmin). As a learner, you are not given a dashboard to browse your own proctoring frames/flags after the fact through the standard student flow — your visibility is limited to what happens live during the exam (the warning modals) and whatever your instructor/admin chooses to share with you if there's a dispute.

What happens if my camera or microphone isn't working?

If webcam and/or mic proctoring is required for the form, the enrollment step will fail before you can start the timed exam: the browser's permission/device request will surface a specific error such as "No camera found. Please connect a camera and try again," "Camera or microphone not found. Please connect your devices and try again," or a generic access-failure message, and you're kept on the enrollment screen rather than being let through with degraded monitoring. If your device stops working mid-exam (e.g., camera disconnects), that will typically manifest as sustained face-absent events and follow the same warn-to-auto-submit escalation, since the server can no longer see a face at all. If your hardware is unreliable, resolve it before starting.

Do I need to grant camera/microphone permissions before starting?

Yes, for any form with webcam and/or microphone proctoring enabled — the browser will prompt you for camera/microphone access as part of the identity-enrollment step, and you cannot proceed to the timed exam until permission is granted and the stream is successfully attached. You'll also see and must accept an explicit consent statement ("I consent to secure webcam and microphone monitoring, browser tracking...") before the Start button is enabled. If you deny the browser permission prompt, you'll see "Camera/Microphone permission denied. Please allow camera and microphone access to continue" and remain blocked until you grant it (typically via your browser's site-permission settings) and retry.

What if I don't have a working webcam — can I still take the assessment?

If the specific assessment has webcam proctoring enabled, no — a working camera is a hard requirement; without one, the enrollment step fails with "No camera found. Please connect a camera and try again," and you cannot start the timed exam. If the assessment does not have webcam proctoring enabled (which is an admin-side, per-form setting), then camera access is never requested and you can take it on any device without a webcam. If you're blocked by a missing webcam on an assessment that requires one, your options are to use a different device that has a camera, or to contact your admin/instructor — there is no in-app fallback or exemption flow for missing hardware.

Will I be notified in real time if something is flagged?

Yes, for the checks that matter most to you as the test-taker. Browser-level violations (tab switch, window blur, full-screen exit) immediately show a blocking "Security Warning" modal with a countdown to auto-submit and a "Continue Exam" option. AI webcam-frame violations (face absent, multiple faces, low light, etc.) surface as inline warning callbacks in the UI once their warn-threshold is reached, and if the system's recommended action escalates to auto-submit, the exam ends automatically at that point too. So you're not proctored silently in the background with results only revealed after the fact for these categories — the platform is designed to warn you first wherever the policy allows, before any auto-submit occurs.

Can I dispute a proctoring flag on my results?

There's no self-service "dispute" button or workflow in the current student-facing app — the review and evidence-viewing tools (proctoring timeline, violation gallery, security report) are all Admin/Superadmin-facing. If you believe a flag was a false positive (e.g., a lighting issue or a network blip that looked like a tab switch), your recourse is to raise it with your admin/instructor directly, since they're the ones with visibility into the evidence (stored violation frames, event timeline) needed to evaluate it.

Does proctoring work on mobile devices?

The underlying browser APIs used (webcam access, the Fullscreen API, and — for screen proctoring — full-screen sharing) are standard web APIs and can work on mobile browsers that support them, but mobile support for these APIs (especially full-screen enforcement and entire-screen sharing) is generally less consistent than on desktop browsers, and the platform's exam-security keyboard/mouse restrictions (right-click, copy/paste blocking) are designed with a desktop experience in mind. No explicit mobile-device detection or "desktop only" restriction exists in the frontend, so mobile devices are not technically prevented from attempting a proctored exam, but for the smoothest experience on any proctored/secure exam, a desktop or laptop browser is the safer choice.

What lighting/room setup is recommended for face detection to work well?

The pre-exam instructions screen tells you directly: "Ensure adequate lighting for clear face visibility in the camera" (and, if audio is also monitored, to "minimize background noise"). Concretely, this means sitting facing a light source (not with strong light behind you, which silhouettes your face), avoiding very dim rooms, and keeping your face unobstructed and centered in the camera's view — the system has an explicit low-light violation check (default policy: 3 occurrences to warn, 6 to auto-submit) and a face-occluded check for coverings/sunglasses, both of which are more likely to trigger in poor lighting or with your face partially out of frame. Also make sure you're alone in frame and not backlit by a window, since bright backlighting is a common cause of face-detection failures in webcam-based systems generally.

Is fullscreen mode required during proctored assessments?

Not tied specifically to webcam/mic proctoring, but yes if the form has "security mode" enabled (which is common alongside proctored exams and is its own toggle). The instructions screen states plainly: "Leaving full-screen, toggling tabs, or minimizing the window will trigger automated flags or instant submission." When security mode is on, the app requests full-screen on start and actively listens for full-screen exit, including intercepting the Escape key while in full-screen to warn you before it actually exits, rather than letting you leave silently.

What happens if I exit fullscreen mode during a proctored exam?

The first time you exit full-screen (via the browser's own exit control, Alt+F4-style window actions the app can't otherwise intercept, or by pressing Escape — which the app tries to intercept and warn on first), you get the same "Security Warning" modal: a message that you've violated exam-mode security rules, a 10-second countdown, and buttons to either re-enter full-screen and continue, or submit immediately. If you fail to get back into full-screen within that window (or the browser blocks the re-entry request, which can happen since re-requesting full-screen must originate from a user gesture), the exam auto-submits. A second full-screen exit after the first warning is treated as final — there is no second grace period, and the exam is auto-submitted immediately.

How do I submit my assessment?
  1. Work through all the questions using the page navigator, using "mark for review" to flag anything you want to revisit.
  2. Double-check any marked-for-review questions before finishing — once submitted, editing is generally not possible.
  3. Click the Submit button once you're satisfied with your answers. This sends your answers, your attempt ID (if the form is timed/scheduled), and — for open or PIN-protected forms — your email or nickname.
  4. The server immediately auto-grades any Multiple Choice, Multi-Select, True/False, Short Answer, and Fill-in-the-Blanks questions; Descriptive (essay) questions are queued for separate AI/admin evaluation.
  5. You'll see a confirmation with your submission ID and, if applicable, results or a guest results link.

Note that submission can also happen automatically without you clicking anything — when time expires, when a scheduled window closes, or as a consequence of a security violation on a proctored/secure exam — so "how do I submit" isn't always something you actively trigger yourself.

Can I edit my answers after I've submitted?

No. Submission is final — there is no "edit submission" endpoint or UI for a learner. The server enforces one submission per identity per form (a duplicate submit attempt returns "You have already submitted this form," and there's also a database-level uniqueness guard as a final backstop against race conditions), so once your submit request succeeds, that's your answer set. The only path to another attempt is if the specific form was explicitly configured by its admin to allow re-attempts (common for "Learning"-purpose forms), in which case you get a fresh, separate submission counted against a maximum-attempts limit — not an edit of the original.

Can I delete a submission I made by mistake?

Not by yourself. The delete-submission action is a real, permanent hard delete — not a soft "withdraw" — and is restricted on the server to the form's owning Admin or a Superadmin; a regular learner account is explicitly not authorized to call it successfully (it returns a 403 "Not authorized to delete this submission" for anyone else). If you submitted by mistake, your only path is to contact your instructor/admin and ask them to remove it on your behalf — there's no self-service deletion in the student-facing flow.

What happens if I run out of time before submitting?

The exam auto-submits for you — whatever answers you had entered at that moment are packaged and sent tagged as a timer-expired (or scheduled-window-passed) submission. You don't lose your progress by "running out the clock" the way you might in a system that just locks you out; the app proactively submits on your behalf the instant the countdown reaches zero.

Will I get a confirmation after submitting?

Yes. On a successful submit you're shown a confirmation view with your results (for auto-graded question types) or a "submission received" state if grading (e.g., descriptive/AI evaluation) is still pending, plus your submission ID. For guest (non-logged-in) submissions on forms that include descriptive questions, you're also given a unique results link (view-token URL) to check back later.

Can I download a copy of my submitted answers?

There isn't a dedicated export/download feature (e.g., a "Download as PDF" button) for a learner's own submitted answers in the current platform — the only file-download endpoint tied to a submission is for admin-curated "learning feedback source files" (reference PDFs an admin attached), not your own answers. If you need a saved copy, your practical option today is to use your browser's own print/"Save as PDF" function on the results view while it's open.

How long does it take to see my results after submitting?

For question types that are auto-graded (Multiple Choice, Multi-Select, True/False, Short Answer, Fill-in-the-Blanks), scoring happens synchronously as part of the submit request — you see those results essentially immediately on the confirmation screen. Descriptive/essay questions are different: they are not scored at submit time; a submission with descriptive content is marked as not yet evaluated until an AI evaluation pass runs, so your overall score for a form that includes essay questions may not be complete right away. The exact expected turnaround time for descriptive/AI grading depends on admin workflow and configuration rather than a fixed platform-wide SLA.

What does "submission under review" mean?

It refers to the state where your submission has one or more Descriptive (essay-type) questions that haven't yet been AI-graded — internally tracked as an "is evaluated" flag being false on your submission record. Your auto-gradable answers (MCQ, True/False, Short Answer, Fill-in-the-Blanks) are already scored and locked in at this point; it's specifically the free-text/essay portion that's pending evaluation. Once the AI evaluation runs and produces per-question scores and feedback, that flag flips to true and your final combined score becomes available.

Can I resubmit if I made an error and my submission wasn't graded yet?

No — the "already submitted" restriction is based on whether a submission record exists for you on that form, not on whether grading has finished. A pending descriptive evaluation does not reopen the form for editing or resubmission. The only exception is forms explicitly set up with re-attempt allowed (typically Learning-purpose forms with a configured attempt cap), which let you submit again as a distinct new attempt, counted toward that limit — this isn't a fix for a specific submission, it's a fresh attempt.

What happens if I submit the same assessment twice?

For a standard (non-reattempt) form, the server blocks it: your first successful submission is recorded, and a second submit request for the same identity (user account, or the same email/nickname for a guest) on the same form is rejected with "You have already submitted this form" (HTTP 403). There's also a database-level unique constraint as a final safety net in case of a race condition (e.g., two near-simultaneous submit clicks), which would similarly convert into that same "already submitted" error rather than creating a duplicate record. If the form explicitly allows re-attempts, "submitting twice" is instead treated as attempt #2 of however many are allowed, each one a fully separate, independently graded submission — once you hit the configured maximum, further attempts are blocked with "Maximum of N attempt(s) reached for this form."

As a guest, how do I access my results after submitting?

When you submit as a guest (not logged in) on a form that includes at least one Descriptive question, the server generates a unique view token and returns it in the submission response; the app immediately surfaces this as a results link, which loads your full graded results with no login required. Treat this link as your only key to your results — save it as soon as you see it, since there's no "look up my results by email" alternative in the guest flow.

Is there a link I can bookmark to check my guest results later?

Yes — the results URL shown to you right after submission is exactly that: a bookmarkable, shareable, standalone link that works without logging in, any time, as long as the underlying submission still exists. Bookmark or save it immediately after submitting, since it's generated once and isn't re-displayed anywhere else if you lose it (there's no recovery flow to regenerate or re-fetch a lost view-token by email/name).

Does my guest results link expire?

No expiry logic was found for the view-token — it's a permanent identifier tied to your submission record and remains valid as long as that submission exists in the database (i.e., unless an admin later deletes the submission, which would also remove the ability to view it via the token). Whether the business intends to add a data-retention/expiry policy for guest submissions and their view-tokens is an open question, since none exists in the current code — today the link is effectively permanent.

Can I share my results link with someone else?

Technically yes, but you should treat it like a password: the view token is a bearer credential — the results endpoint performs no additional identity check beyond having a valid token in the URL, so anyone with the link can view your results, including your name/nickname or email (if provided), your answers, and your scores. Only share it with people you're comfortable seeing that information, and avoid posting it anywhere public.

How is my assessment scored?

Scoring happens in two stages. The moment you submit a form, IntelliAssess immediately auto-grades every objective question type on the backend: Multiple Choice (single-select and multi-select), True/False, Short Answer (matched against an expected answer and/or accepted keywords, optionally with AI semantic matching), and Fill-in-the-Blanks (matched against accepted answers per blank). These scores are computed synchronously at submission time and stored on the submission record. Descriptive/essay questions are different: they are scored later using an AI rubric evaluator against criteria your instructor defined, either triggered by an Admin or via on-demand AI evaluation, and the result is stored as a descriptive score out of the total possible descriptive points. Your overall score is the sum of all category scores against the sum of all possible points, and your percentage is that ratio times 100.

Where can I view my results?

Where you can view results depends on the assessment's purpose, which your instructor/Admin sets when creating the form. For Learning-purpose forms (including "Protected Learning"), go to your dashboard's Analytics tab, which lists every learning submission you've made with score, percentage, and a "View detailed results" expander per attempt. For Assessment-purpose forms, the student-facing UI intentionally does not show results in-app — the submit button becomes "Locked" after you submit, and clicking it shows "Assessment results are only available to your administrator. Please contact them for your results." This is a deliberate policy distinction between low-stakes learning content (where instant self-review helps you learn) and formal assessments (where your instructor controls result release). If you submitted as a guest (not logged in) and the form allowed it, you may also have a one-time private results link delivered right after submission.

Can I see which questions I got right or wrong?

Only for Learning-purpose forms. On the Analytics tab, expanding "View detailed results" on an evaluated learning submission shows every question, your answer, the correct answer, and a per-question correct/incorrect badge (or points-earned/points-possible for multi-select and partial-credit types). This is re-validated against the live submission scoring fields each time you view it so it always reflects the authoritative score. For Assessment-purpose forms, this breakdown is deliberately withheld from students in the UI — only your Admin can see the question-by-question detail.

Will I see the correct answers after submitting?

For Learning forms, yes — once your submission is evaluated, the detailed results view shows the correct answer/option alongside your own answer for every question type (MCQ, True/False, Short Answer, Fill-in-the-Blanks), plus AI-written explanations if you request AI feedback. For Assessment forms, no — correct answers are withheld from the student UI by design; only your Admin can review them. One edge case: if you submitted an open/link-shared form as a guest without logging in, and the form had descriptive questions, the system generates a private "view token" link so you can review your own submission once — that view also shows correct-answer highlighting for objective questions, independent of the logged-in Learning/Assessment split, since it's the guest's own dedicated result page.

Can I download a PDF report of my results?

Yes, for Learning-purpose submissions. Two options exist: downloading a PDF for one specific submission (available from the "Download PDF Report" button on each entry in your Analytics tab, once that submission is evaluated), and downloading one combined PDF covering all of your learning submissions in one document. Both are generated server-side and returned as a file your browser downloads rather than displaying inline. If the form's purpose is "Assessment," the backend explicitly rejects the download for a regular User with a 403 and the message "Assessment reports are only available to your administrator" — this mirrors the in-app results restriction.

What information is included in my results PDF?

The single-submission report includes: your name/email, the form title and submission date, an overall score/percentage "hero" panel, a breakdown by question type (MCQ, True/False, Short Answer, Fill-in-the-Blanks, Descriptive), each question with your answer, the correct answer/rubric criteria, points earned vs. possible, AI criterion feedback (for descriptive questions, if evaluated), and — if you've generated it — your per-question AI learning feedback (comparison, concept explanation, improvement tips, and cited sources) plus your personalized learning plan. The combined "my report" additionally includes a cover/profile page and stitches together every Learning submission you have, sorted newest-first, so you get a longitudinal view rather than a single snapshot.

Can I download reports for all my past submissions, not just the latest?

Yes — that's exactly what the "Download my report" option is for: it pulls every learning-progress record tied to your account (one per Learning-form submission, including every attempt if reattempts are enabled), excludes non-learning submissions for regular users, then renders them all into a single multi-section PDF, newest first. If you only want one specific attempt's report, use the per-submission "Download PDF Report" button next to that attempt instead. There's no bulk "download all as separate files/zip" option — it's always one consolidated PDF for the "all" case.

How long are my results and reports kept on file?

Submissions, learning-progress records, and their PDF-report data are stored indefinitely until explicitly deleted — there's no automatic expiry/retention-window logic in the submission or export code paths reviewed. Deletion of a submission is only performed by an Admin/Superadmin who owns the form, which also cascades to remove the associated learning-progress row; there is no self-service "delete my own results" action for regular Users. Whether there is a documented data-retention/deletion policy beyond that is a business/compliance decision outside the codebase.

Why is my score not showing yet?

The most common reason is that your submission includes one or more descriptive/essay questions that haven't been AI-evaluated yet. Objective question types (MCQ, True/False, Short Answer, Fill-in-the-Blanks) are scored instantly at submit time, but descriptive answers are graded against a rubric by a separate evaluation step, and your submission stays flagged as not-yet-evaluated until that runs. In the Analytics tab, an unevaluated submission shows "Pending Evaluation — Awaiting admin review" instead of a score, and the PDF-download button and detailed-results expander are hidden until evaluation completes. If a submission has zero descriptive points, it's treated as effectively evaluated immediately (no waiting). If you believe evaluation is taking unusually long, that's a workflow/timing issue on the Admin's side rather than something you can force from the student side.

Can I compare my results across multiple attempts?

Yes, but only for Learning forms your instructor configured with re-attempts allowed. On the "Available Forms" list, if a form has more than one of your attempts, an "Attempt History" picker appears next to it, listing every attempt with its date, attempt number, and percentage (or "Pending" if that attempt is still awaiting evaluation) — clicking one opens that attempt's full detailed-results modal, so you can review any specific attempt, not just the latest. There isn't a side-by-side trend chart or score-over-time graph exposed to students in the reviewed frontend code — comparison is done by browsing attempts individually. Each attempt is stored as its own submission record with its own attempt number, and each also produces its own learning-progress record, so your Analytics tab will list each attempt as a separate entry too.

Is there a passing score, and how do I know if I passed?

The platform does not enforce a universal numeric pass/fail threshold in the reviewed code — there's no field checked against your result to block progression or flag "pass"/"fail" status. What you do get is percentage-based color coding in the UI: 80%+ is shown in green, 60–79% in yellow, and below 60% in red, which is a visual cue rather than an official pass/fail determination. Whether a given assessment or course has a required passing mark, and what happens if you don't reach it, is a policy set (and communicated) by your institution/instructor outside the platform's built-in scoring logic.

Can I print my results directly from the platform?

There is no dedicated in-app "print" button for results in the reviewed frontend code — the report-generation endpoints always return the PDF as a file attachment for your browser to save, not an inline/streamed view with a print control. In practice you can still print: download the PDF report and print it from your PDF viewer, or use your browser's native print function (Ctrl/Cmd+P) on the on-screen "detailed results" view in your Analytics tab. If a printable, formatted one-click report is what you need, the downloaded PDF is the closest equivalent and is designed to be a clean, shareable/printable document (branded header/footer, structured question breakdown).

Who else can see my results besides me?

For any submission, the Admin who owns the form it belongs to (i.e., the Admin whose account created that form) can always see it, and a Superadmin can see everything. The backend authorization checks restrict visibility to: the submitting user themselves, the form-owning Admin, or a Superadmin — no other student can see your results. If your submission belongs to an "open" (link-shared) form and you weren't logged in, your submission is tied to the email/nickname you provided rather than a user account, and only that private view-token link exposes it, plus the Admin. Group/analytics views aggregate scores for Admins managing groups of students, but that's an Admin-side capability, not something visible to other learners.

Can I appeal or request a re-grade of my results?

There's no self-service "request re-grade" or "appeal" workflow in the platform for students — no route lets a User contest or resubmit a graded answer for review. What does exist on the Admin side: an Admin can manually adjust a submission's evaluation (updating the descriptive score and/or criterion feedback), and can re-run AI evaluation with a different model if needed. So a re-grade is possible, but it has to be initiated by your Admin/instructor — you'll need to contact them directly, as there is no in-app dispute/appeal button for learners.

Why does my report show a different score than what I saw on-screen?

This can legitimately happen and is a known reconciliation nuance: your Learning Progress record stores a snapshot score/percentage at submission time, but the Analytics view recomputes a "display" score/percentage live from the current submission fields whenever there are points to compute against, and prefers that fresher number over the stored snapshot. If your descriptive answer was evaluated (or re-evaluated/corrected by an Admin) after your initial on-screen view, the recomputed score can differ from what you first saw, and the PDF report — generated fresh at download time — will reflect the latest authoritative numbers, not a cached view. If you see a persistent mismatch that isn't explained by a re-evaluation, contact your Admin, since manual score edits are possible on their side.

Can I export my results to Excel or CSV?

No — the only student-facing export format found in the codebase is PDF. There is no CSV/XLSX export route exposed to Users; spreadsheet-style exports are Admin/Superadmin-only and are also PDF-based in the reviewed export routes. If CSV/Excel export for individual students is a planned feature, it is not currently implemented.

What is "learning progress," and how is it tracked?

"Learning progress" is the record of every submission you've made to a Learning-purpose form (including "Protected Learning"), tracked separately from Assessment-purpose submissions. Each time you submit a Learning form, the backend creates both a submission record (raw answers + scores) and a learning-progress record (a denormalized snapshot: total score, total points, percentage, and a per-question outcomes array). Your Analytics tab reads these and joins back to the live submission to make sure displayed scores/percentages are current, and filters out anything tied to a deleted form. Because a new progress row is created per submission, retaking a Learning form produces additional rows rather than overwriting the old one — your full history is preserved.

How do I view my learning progress dashboard?

Log in, and from your dashboard sidebar select Analytics (which is also the default landing view of the User dashboard). This renders the "My Learning Progress" panel, listing every Learning-form submission you have, five per page, each showing the form title, submission date, evaluation status, score/percentage (once evaluated), an expandable "View detailed results" section, and a "Download PDF Report" button. If the list is empty, you either haven't submitted any Learning-purpose assessments yet, or you've only taken Assessment-purpose forms (which intentionally don't appear here).

What is a "learning re-attempt," and how does it work?

A re-attempt is a second (or subsequent) submission of the same Learning form by the same logged-in user. It's only possible if the form's creator explicitly enabled it — every form has a reattempt toggle and a maximum-attempts setting (0 = unlimited, or a specific cap) set at form-creation time, which you as a test-taker cannot change. When re-attempts are allowed, the submit process counts your existing submissions for that form and assigns the new one the next attempt number (1, 2, 3, …), rather than blocking a second submission the way it would for a normal single-attempt form. You can check your own status any time via a learning-attempt-status check, which returns whether reattempts are allowed, the maximum attempts, your current attempt count, and whether you can reattempt right now — this is what powers the "Re-attempt" button visibility in the app.

How many times can I retake an assessment for learning purposes?

It depends entirely on how the instructor configured that specific form — there is no platform-wide fixed number. If reattempts are off, you get exactly one attempt (a second submission is rejected with "You have already submitted this form"). If reattempts are on, the maximum-attempts setting governs the cap: a specific positive number limits you to that many tries (once reached, you'll see "Maximum of N attempt(s) reached for this form"), while a value of 0 means unlimited attempts. You can always see where you stand via the attempt-status check, and the UI surfaces a live attempt count next to the Re-attempt button.

What is "learning feedback," and how do I access it?

"Learning feedback" is AI-generated, per-question analysis of your Learning-form submission: for each question it produces a comparison of your answer vs. the correct/ideal answer, a concept explanation, detailed feedback, a confidence rating, improvement tips, and (when available) cited source links or references to instructor-uploaded documents. It also produces a holistic "learning plan" — weak areas, study recommendations, and further resources — built from all your question-level feedback combined. This is generated on demand, not automatically: from a submission's detailed-results view, you (or an Admin) trigger it, which runs the generation as a background task, and you then poll until it's ready. This feature is gated by an organization/plan privilege; if your Admin's plan doesn't include it, you'll get a message explaining that "Personalised learning feedback is not enabled on this organization's subscription plan."

Can I leave feedback or comments on a learning module?

No — there is no student-facing feature for leaving comments, ratings, or free-text feedback on a tutorial or learning module in the reviewed code. The only "feedback" concept tied to submissions is the AI-generated analysis described above, which is feedback given to you, not feedback you submit. There is a separate feedback-thread/chat model in the backend, but it powers an Admin-only tool used while authoring questions — it's not exposed to learners. If you want to report an issue with a tutorial or assessment, the built-in Tutorials page suggests contacting your administrator or using the Support section rather than an in-product commenting feature.

Can I delete feedback I've previously submitted?

Since there's no student-submitted "feedback" to begin with, this mostly resolves to: can you clear the AI-generated learning feedback tied to your own submission? Based on the actual route implementation, clearing that feedback is authorized only for the Admin/Superadmin who owns the form — not for the submitting student directly. As a student, you can regenerate feedback at any time via "Create AI Feedback," which effectively replaces the previous AI feedback with a fresh run, but clearing it outright without regenerating is an Admin action. If you need old feedback removed and can't regenerate over it, contact your Admin.

Does retaking an assessment overwrite my original score?

No. Each attempt creates an entirely new submission record (with its own incrementing attempt number) and its own learning-progress record — your original submission and score are preserved untouched. Your Analytics tab and the "Attempt History" picker both show every attempt individually, and the combined PDF report includes every attempt as a separate section, not just the latest. The "current"/default attempt shown on the main form card is typically your most recent one, but nothing in the data model deletes or replaces earlier attempts when you retake.

How does the platform recommend what to study next?

Study recommendations come from the AI "learning plan," generated per submission (not as an always-on cross-course recommendation engine). The backend builds a "heuristic" plan directly from your per-question results (which topics you got wrong or scored low confidence on) as a reliable baseline, then asks an LLM to produce weak areas, study recommendations, and a motivational note, merging the two so the plan never falls back to generic placeholder text even if the AI call fails. Where relevant, it can also surface source documents from your instructor's uploaded library content or vetted external web resources, when those are available and permitted for that form. This recommendation is scoped to that specific submission's weak areas — it isn't a continuously-updated global "what to study next" feed across all your courses.

Is my learning progress visible to my instructor/admin?

Yes. Admins (for users linked to their account/organization) and Superadmins (for everyone) can view a user's learning progress, and can download a comprehensive report for any of their linked users — both explicitly Admin/Superadmin-only routes. Unlike the student's own report, the Admin's version of your report can also include your Assessment-purpose submissions (since Admins are allowed to see those), not just Learning ones. So while you as a learner can't see your Assessment results in-app, your Admin can see both.

Can I reset my learning progress and start over?

There's no self-service "reset my progress" action for students in the reviewed code — you cannot delete your own learning-progress records or submissions. Deleting a submission (which cascades to remove its learning-progress record) is only available to the Admin/Superadmin who owns the form. If a form allows re-attempts, submitting again gives you a fresh attempt without erasing history, but that's additive, not a reset. If you need old progress cleared entirely, you'll need to ask your Admin to delete the relevant submission(s).

Why isn't my learning progress updating after a retake?

A few likely causes, in order of frequency: (1) the new attempt includes descriptive/essay questions and hasn't been evaluated yet, so it shows "Pending Evaluation" rather than a score — this is normal and expected, not a bug; (2) the form doesn't actually have reattempts enabled, so your "retake" attempt was rejected server-side with "You have already submitted this form" and never created a new record — check the response/error you got when submitting; (3) you hit the form's maximum-attempts cap, and the retake was blocked with "Maximum of N attempts reached"; or (4) you're looking at a cached page — the Analytics tab fetches fresh data on load, so a manual refresh (or re-navigating to the Analytics page) should pull the latest records. If none of these apply and a retake genuinely isn't appearing, that would indicate a real bug worth reporting to support with the form name and submission time.

Are tutorials or learning materials personalized to my performance?

No — the platform-wide Tutorials section is a fixed, static set of general how-to-use-the-platform guides (currently six: Getting Started, Understanding MCQs, Mastering Descriptive Questions, Learning Progress & Analytics, Timed Assessments Strategy, Support & Getting Help) — identical for every user and not driven by your scores. Personalization does exist, but at the submission level, not the tutorial-catalog level: the AI learning feedback and learning plan are generated specifically from your answers on a given submission and can recommend topics/resources tailored to your weak areas — that's the personalized layer, separate from the static Tutorials catalog.

Where do I find the Tutorials section, and what's in it?

It's in your dashboard sidebar under Tutorials. It contains six short, self-contained guides on using the platform effectively: "Getting Started with Assessments," "Understanding Multiple Choice Questions," "Mastering Descriptive Questions," "Learning Progress & Analytics," "Timed Assessments Strategy," and "Support & Getting Help" — each tagged with an estimated duration and difficulty level (Beginner/Intermediate/Advanced) and expandable into a full-text lesson. These are static, platform-authored content (not tied to your account data or performance) intended to onboard you to how assessments, question types, timing, and progress tracking work.

What is the personal upload library used for?

Every authenticated user (learners included, not just Admins) has a personal "My uploads" library. It's per-user document storage: you upload files, they're saved to disk under a private per-user folder, and metadata (filename, size, content type, index status) is tracked. Its main practical uses are (a) simple private file storage/retrieval you can download later, and (b) — when enabled for your account — indexing/embedding those documents so their content can be referenced by the platform's AI features (e.g., a Learning-form's AI feedback can cite a specific instructor-approved source file if the Admin marked it shareable). Files are strictly private to you; there is no sharing feature between learners.

What file types can I upload to my library?

The library accepts PDFs, Word/PowerPoint documents (.doc, .docx, .ppt, .pptx — legacy .doc/.ppt require the server's document-conversion path to be enabled, which is on by default), and common image formats (.png, .jpg, .jpeg, .gif, .webp). Anything else is rejected at upload time with "File type not allowed for upload library." Note this is a superset of what's allowed for admin-side "generate assessment from documents" uploads (which is PDF/Office only, no images) — the library specifically adds image support on top of that for learners' personal use.

Is there a file size or storage limit for my library?

Yes, and the defaults in the codebase are: 50 MB per file (checked both while streaming the upload and again before committing), 500 items per user, and 512 MB total storage per user. Exceeding the per-file size returns a 400 error with the max size in the message; exceeding the item count or total-bytes quota returns "Upload library item limit reached (500 items)" or "Upload library storage quota exceeded" respectively. These are environment-configurable defaults, so your specific deployment could have different effective limits.

How long does it take for an uploaded file to be indexed/searchable?

This depends on whether indexing is enabled for your account at all. By default, uploading a file only stores it — no extraction/embedding runs. To make content searchable, you (or an Admin) must explicitly trigger indexing, and this is gated behind a plan/role privilege: a standard learner ("User") account is denied library-embedding by default in the current code, regardless of plan, unless your deployment's role/privilege logic has been customized. When indexing is permitted and triggered, it runs asynchronously: either inline via background tasks, or through an optional Redis + worker queue for more scalable/queued processing of larger or batch jobs. There's no fixed SLA/duration in the code; it depends on document size and the embedding provider's latency.

Can I search within the contents of my uploaded files?

The library's own list UI only supports filename search plus filtering by type (pdf/image/office/other) — there is no student-facing full-text/semantic "search inside my documents" screen in the reviewed frontend. Content-level search does exist at the data layer: once a file is indexed, its text is chunked and embedded with pgvector-compatible embedding storage, enabling semantic retrieval — but that retrieval is used internally by AI features (e.g., citing sources in learning feedback, or an Admin generating questions from your library content) rather than exposed as a direct "search my files" search box for learners. As noted above, indexing itself is typically an Admin/plan-gated capability, which further limits how often this applies to a standard learner account.

Can I delete files from my library?

Yes. Deleting a library item removes both the database record and the underlying file on disk, and is restricted to items you own — attempting to delete someone else's item returns a 403. Deletion is immediate and permanent — there's no soft-delete/trash/undo in the reviewed code, so make sure you actually want the file gone (and have a local copy if needed) before deleting. Deleting an item also cascades to remove its chunk/embedding rows if it had been indexed.

Can I organize my library into folders or categories?

No — the personal library is a flat list per user; there is no folder, tag, or custom-category feature in the reviewed models or frontend. The library page only offers a type filter (All/PDF/Images/Word-PowerPoint/Other) and a filename search box, no folder tree or drag-and-drop organization. If you have many files, your main organizing tools are the search box and the kind filter, plus browsing by upload date (items are listed newest-first).

Are my uploaded files private, or can others see them?

Private to you. Every library route enforces ownership: listing, fetching, downloading, updating visibility, and deleting all filter by your user ID, and attempting to access another user's item returns 403 ("Not allowed to access this item"). The one exception is narrow and Admin-controlled: if you upload a file to an Admin's Learning-form content pool and that Admin explicitly flags it as shareable for student feedback, students taking that specific form may be able to fetch that one file as a cited source in their AI feedback, but only for files an Admin marked shareable in that specific context — this doesn't apply to a regular learner's own personal library uploads, which are only ever admin-created source documents, not something learners themselves expose to each other.

What happens if my file fails to upload or index?

For the upload itself: if the file type isn't allowed, exceeds the size limit, or would exceed your quota, the upload is rejected upfront with a clear error and no partial file is left behind (the backend deletes any partially-written file on failure). For indexing: if the extract/chunk/embed pipeline fails after the file is stored, the item's index status is set to "failed" with a readable error message; the item itself is not deleted — you still have the stored file, it's just not searchable/embedded. In the library UI, failed items show a "Retry Scan" action (visible when the status is "stored only" or "failed") that re-queues indexing.

Can I re-upload a corrected version of a file?

There's no in-place "replace/version" action — each upload creates a brand-new item with its own unique storage key, even if the filename matches an existing item. To use a corrected file, delete the outdated item and upload the new one, or simply upload the new version alongside the old one and delete the old one afterward if you want to avoid a gap. Because storage keys are unique-ID based, there's no filename collision to worry about — duplicate names are allowed side-by-side.

Is there a queue delay for large files, and how do I check status?

Whether there's a delay depends on your deployment's indexing configuration. In the default "inline" mode, indexing runs as a background task right after the request completes — no real queue, but it competes with normal request-handling resources. If your deployment enables the optional Redis + worker setup, indexing jobs are pushed onto a queue and processed by separate worker processes, which is better for large files or high upload volume but means there can be a wait if the queue is backed up. Either way, you check status the same way: each library item exposes an index status (none → pending → extracting/chunking/embedding → ready, or failed/stored-only), an error message on failure, and step-by-step processing labels, all visible as a status pill in the library UI, and the frontend polls the item until it reaches a terminal state after you trigger indexing.

Can I download files I previously uploaded?

Yes. The library streams the original file back to you (with its original filename and content type) as long as you own it. For Word/PowerPoint files specifically, there's also an inline preview option that server-side-converts the Office document to PDF for quick viewing without downloading the original — subject to a preview-specific size cap (50 MB by default) beyond which you'd need to download the original file directly instead.

Do my library uploads count toward my subscription's storage limit?

The library enforces its own dedicated per-user quota (500 items / 512 MB total by default) independent of anything called a "subscription storage limit" in the reviewed code — there's no single unified "plan storage allowance" pool that library uploads draw from elsewhere in the codebase; the quota logic only checks your own prior library usage. Whether your organization's specific subscription plan additionally caps or is billed based on library storage is a plan/billing configuration decision made in the Admin/Superadmin billing settings, not something enforced in the upload-library code path itself.

What happens to my library files if I downgrade my plan?

No code path was found that automatically deletes, archives, or restricts access to your existing library files upon a plan downgrade — the enforced quotas (item count, total bytes, per-file size) are static defaults/env-configured values rather than something that scales dynamically with your specific subscription tier in the reviewed code. What can change on downgrade is capability, not existing data: if your new plan (or your organization's Admin privileges) no longer includes library embedding or file-RAG features, you would lose the ability to index new files or trigger re-indexing, and previously-indexed content might become unusable for AI-feedback source citation going forward — but the files themselves and their basic store/download/delete functionality are not shown to be revoked.

How will I be notified about a new assessment?

When an Admin/instructor shares an assessment with a group you belong to (or directly with you), the platform creates an internal notification record for you and, separately, queues an email job with the subject "New Assessment Available: [Form Title]." The email is sent asynchronously in the background (not while you wait on a page), using the platform's configured SMTP account, and includes the assessment title, purpose, time limit, who shared it, and a direct link into the assessment. On the in-app side, your dashboard's "My Forms" navigation item shows a badge with your unread count, and each newly shared assessment is visually marked as "new" until you open it or explicitly mark it seen. If you don't see the email, check the in-app badge first — the notification record is created immediately even if the email send is delayed or fails.

Can I turn off email notifications?

There is no self-service "disable all notification emails" toggle in the product for a learner account today — assessment-share emails are triggered automatically whenever an Admin shares a form with your group or account. The in-app Privacy Policy references an "opt out of marketing emails" option, but that applies to marketing-style communications, not the transactional "new assessment available" or credential/security emails needed to operate your account. If you want to stop receiving assessment emails, the practical options today are to ask your Admin to remove you from the relevant group, or to rely on the in-app notification badge instead of email.

Why am I not receiving notification emails?

There are several likely causes, given how email delivery is implemented: (1) Email is sent via SMTP credentials configured by your organization's Admin/Superadmin; if those SMTP settings are missing or incomplete, the system logs the failure and the email job is marked "failed" rather than retried automatically. (2) Emails are queued as background jobs and processed asynchronously — under heavy load or a transient SMTP outage, delivery can lag by more than a few minutes. (3) The email address on your account may be missing, blank, or mistyped — the platform explicitly skips a user in the "shared users" list if they have no stored email address. (4) The message may have landed in spam. If you suspect a real delivery problem, check the in-app "My Forms" badge — the notification and share access exist independently of whether the email actually sent — and ask your Admin to check the Email Notification Status log, which shows each email job's status (pending, sent, failed) and error message, and lets them retry a failed send.

Can I choose which notifications I receive (SMS, email, in-app)?

No SMS/text-message notification channel exists in the current codebase — no SMS/telephony provider is integrated. The two channels that exist are (1) email, sent for assessment-sharing and account/credential events, and (2) in-app notifications, represented by the unread/new counts on your dashboard and the "new" badge on individual assessments. There is currently no per-channel preference toggle exposed to learner accounts to select which channel(s) they receive.

How do I mark a notification as read/seen?
  1. Open your dashboard and go to "My Forms" (or the assessments list) — assessments with unread notifications are visually flagged as new/unread.
  2. Click into (open) the specific assessment. Opening it automatically calls the mark-seen action for that assessment, which sets it to seen and records the time it was seen.
  3. Once marked seen, that item no longer counts toward your unread/new badge totals, though it remains visible in your forms list until you submit it.

Note: if you access an assessment through a direct link and no notification record existed yet (e.g., it wasn't shared to a group you're in), the system will create one on the fly and mark it seen immediately, so the counts stay consistent.

Will I get reminders before an assessment deadline?

Based on the current implementation, there is no automated deadline-reminder or countdown-email system — notifications are generated only once, at the moment an assessment is shared with you, not on a recurring schedule as a deadline approaches. If a form has a scheduled start/end window, that window is enforced when you try to access the form (it will show as scheduled/locked outside that window), but you will not automatically receive a reminder email a day or an hour before it closes. We'd recommend checking your dashboard regularly or noting the deadline shown in the assessment details.

Can I see a history of past notifications?

Not as a dedicated notification-history/inbox screen. What you have is the current state of each assessment's notification record — whether it's unread, when it was created, and when you saw it — surfaced through your "My Forms"/available-assessments list, which is sorted to put unread/new items first. There isn't a separate audit trail of notifications that have already been resolved (e.g., a chronological "you were notified on X about Y" log) exposed to learners.

Why do notification emails go to my spam folder?

Assessment-share and account emails are sent through your organization's own configured SMTP account (an Admin/Superadmin sets host, username, password, and "from" address in Admin Settings) rather than a dedicated transactional-email provider with platform-wide sender reputation. That means deliverability — SPF/DKIM/DMARC alignment, sending IP reputation, etc. — depends on how that specific SMTP account and domain are configured, which can vary a lot between organizations. If assessment emails consistently land in spam: (1) check the sender address shown in the email and add it to your contacts/safe-senders list; (2) ask your Admin to verify SPF/DKIM records are correctly set up for the domain they use as the "from" address; (3) in the meantime, rely on the in-app "My Forms" badge, which doesn't depend on email delivery at all.

Can I update the email address notifications are sent to?

Notification emails are sent to the email address on file for your user account, so updating your account email (through your profile/account settings, where available) is what changes where future notifications go — there isn't a separate "notification email" distinct from your login email in the schema. If you don't have self-service email-change capability in your account settings, contact your Admin, since account email changes may need to be made or approved by the Admin/Superadmin managing your organization's users. Keep in mind that changing your login email may also change how you sign in, so make sure you have access to the new inbox before switching.

Are there notifications for proctoring flags or issues?

Yes, but they're real-time and in-exam rather than emailed. When exam security/proctoring is enabled on a form and the system detects an event — tab switch, window blur, fullscreen exit, face not detected, multiple faces, low face-match confidence, or (for voice proctoring) a voice mismatch — the assessment page shows you an on-screen warning modal ("Proctoring Warning" / "Identity Warning") immediately, and on a first violation you typically get a chance to acknowledge/continue before the exam can auto-submit on repeated or severe violations. These events are also logged server-side (violation type, timestamp, confidence score, and an evidence frame) that your Admin/instructor can review afterward in a security report — but the platform does not separately email you a summary of your own proctoring flags after the fact; the in-exam warning is your notification.

What subscription plans are available?

IntelliAssess AI uses configurable, Superadmin-managed subscription plans, typically including a Free tier plus one or more paid tiers, each with its own monthly/yearly pricing, AI token allowances per provider (OpenAI, Groq, Gemini), and feature flags (e.g., whether bring-your-own-API-key is allowed, which AI models are enabled, and whether web/voice/browser proctoring is included). The exact plan names, prices, and included quotas are business decisions configured by the platform operator rather than hard-coded in the app, so the authoritative list is always what's shown on the live Pricing page.

Where can I view current pricing?

The public Pricing page is powered live by an unauthenticated pricing-catalog endpoint that returns every active plan's slug, display name, monthly/yearly USD price, AI token limits, and feature flags directly from the database — so what you see on the Pricing page always reflects the platform's current configuration, not a static marketing page. This is the most reliable place to check current pricing rather than relying on any cached screenshot or older document, since Superadmins can update prices and plans at any time.

How do I upgrade or downgrade my plan?

Plan changes are managed from the Billing/Subscription page (an Admin-level account area, since subscriptions in this system are tied to Admin billing accounts rather than individual learner accounts):

  1. Go to Billing/Subscription in the admin account.
  2. Choose the target plan and billing interval (monthly or yearly).
  3. Click Upgrade/Change Plan — this creates a Stripe Checkout session for the new plan and redirects you to Stripe to confirm payment (for a plan change requiring a new subscription) or uses the Stripe Billing Portal for existing-subscription changes.
  4. Stripe processes the change and sends a webhook back to the app, which syncs your new plan, token limits, and features into the database — this sync is what actually unlocks the new plan's quotas and features, so there can be a short delay (seconds, typically) between confirming in Stripe and the app reflecting it.

If you are a learner (User role) rather than an Admin, you generally don't manage a subscription directly — your access to AI features and proctoring is governed by whichever Admin/organization account owns the assessments you take.

What payment methods are accepted?

Payments are processed by Stripe via Stripe Checkout and the Stripe Billing Portal, so accepted payment methods are whatever your Stripe configuration enables (typically major credit/debit cards, and depending on region/configuration, other Stripe-supported methods). The app itself does not implement its own payment form or card handling.

Is billing handled securely (e.g., via Stripe)?

Yes. All checkout and subscription-management flows go through Stripe Checkout and the Stripe Billing Portal, and the platform never sees or stores your raw card number, CVV, or full payment credentials — Stripe (a PCI-DSS Level 1 certified processor) handles all sensitive payment data. Subscription state changes are synced back to the app only through Stripe's signed webhook events, which are verified using a webhook signing secret before being trusted, and each event is recorded with an idempotency key so duplicate webhook deliveries don't double-charge or double-apply changes.

Will I be charged automatically when my subscription renews?

Yes — subscriptions created through Stripe Checkout are standard recurring subscriptions, so unless cancellation is scheduled, Stripe will automatically charge your saved payment method at the start of each new billing period (monthly or yearly, per your selected interval) and the app syncs the renewed period dates via Stripe's webhook events. If a renewal charge fails, your subscription is marked past-due and Stripe's retry schedule takes over.

How do I cancel my subscription?
  1. Go to Billing/Subscription in your Admin account and open the Stripe Billing Portal (or use the in-app cancel action if available).
  2. Confirm cancellation.
  3. Behind the scenes, this schedules your subscription to end at the close of your current paid billing period rather than cancelling immediately — meaning you keep full access to your current plan's features and quotas until then.
  4. The app records this as a "cancellation scheduled" audit event the moment Stripe reports the flag flipping, so you (or your Admin) can confirm the cancellation was scheduled correctly.
  5. When the current period actually ends, Stripe sends a subscription-deleted event; the app then automatically reverts your account to the Free plan (rather than deleting your account or data) and recalculates your token/feature allowances accordingly.

If you change your mind before the period ends, resuming the subscription (un-scheduling the cancellation) is typically done from the same Stripe Billing Portal.

Do I get a refund if I cancel mid-cycle?

By default, no — per the Terms of Service, fees are billed in advance on a monthly or annual basis and are non-refundable except where required by law or as stated in a separate refund policy. Cancelling mid-cycle schedules your subscription to end at the close of the current paid period; it does not trigger a prorated refund for the unused remainder automatically. If a refund is issued, it happens outside the self-service flow — someone with billing/Stripe access (support or an admin) processes it directly in Stripe, and the app finds out via a refund webhook event, which records the refunded amount and currency as a billing audit log entry so it's visible in the account's history.

Where can I find my past invoices/receipts?

Invoices and receipts for a paid subscription are issued and hosted by Stripe, and the standard way to access them is through the Stripe Billing Portal, reachable from your Billing/Subscription page. The app itself does not generate or store its own separate PDF invoices outside of what Stripe provides — what it does track locally is AI/proctoring usage history and reconciliation summaries, which are useful for verifying usage but are not formal receipts.

Why was my card declined?

Card decline reasons (insufficient funds, bank fraud block, expired card, incorrect CVV/address, etc.) are determined entirely by your card issuer and relayed through Stripe — the app has no independent decline logic of its own. When a renewal payment fails, the app receives a payment-failed webhook, marks your subscription status "past due," and re-syncs your subscription state; Stripe will typically retry the charge automatically over the following days per its dunning/retry schedule. To resolve it: update your payment method via the Stripe Billing Portal, then either wait for the next automatic retry or ask your Admin/support to trigger a retry from Stripe.

What happens to my data if my payment fails?

Nothing is deleted immediately. A failed renewal simply flips your subscription's status to "past due" in the database — your plan assignment, token balances, forms, submissions, and proctoring records all remain intact and untouched. Only if Stripe ultimately cancels the underlying subscription (after exhausting its retry attempts) does the app receive a subscription-deleted event, at which point your account reverts to the Free plan — again, this changes your quota/feature tier, it does not delete your historical data.

Is there a free trial or free tier?

There is a Free plan that the platform always ensures exists and defaults every new Admin billing account to when they first sign up, and it's guaranteed to appear on the public pricing catalog even if not separately configured with its own price/features. Whether there is additionally a time-limited "trial" of a paid tier (as opposed to an indefinite free tier) is a plan-configuration/business decision made by whoever manages the Superadmin billing settings, not something fixed in the code.

What counts toward my "proctoring usage" quota?

Proctoring (AWS Rekognition-based identity verification and face/frame analysis) is metered using the same token-balance/credit mechanism as AI usage, under a dedicated AWS Rekognition provider bucket on your plan. Specific actions consume credits: creating a face-liveness enrollment session costs 15 credits; retrieving liveness results costs 1 credit; each in-exam frame analysis call (face detection/face-match check) costs credits equal to the number of AWS Rekognition API calls made for that check. These deductions are recorded per usage event so usage is auditable. Note: this is distinct from whether proctoring is enabled on your plan at all — a separate feature-flag check gates whether proctoring can be used on a form in the first place, independent of remaining credit balance.

What happens if I exceed my proctoring quota mid-assessment?

The system is explicitly designed not to interrupt an exam already in progress: in-exam frame analysis billing allows overage, and the code comment states this is deliberate — "Allow overage to prevent mid-exam student block." So if your organization's proctoring credit balance runs out while you're actively taking a proctored exam, individual face-check events continue to be recorded and billed (going into overage) rather than the exam being interrupted or blocked for you. The main place a hard block can occur is at the very start of enrollment — creating a brand-new liveness session does not allow overage, so if the plan enforces strict quota limits at that point, starting a new proctoring session could be rejected before you begin.

Will proctoring degrade gracefully if I run out of quota, or will it block me?

Mostly gracefully, with one caveat. Once an exam is underway, ongoing proctoring checks are billed with overage allowed rather than blocking, so a mid-exam quota exhaustion does not stop you from continuing or submitting. There's also a separate, independent "graceful fallback" in the AWS Rekognition integration itself: if the Rekognition API call errors out (e.g., AWS access denied, timeout), the code is written to fail open — letting the user pass rather than blocking — so transient AWS issues don't lock you out of your exam either. The place where a hard stop is possible is enrollment/session-start for a brand-new proctored attempt, which is billed without the overage allowance, and the plan-privilege check (is proctoring even enabled on this plan) returns an explicit error if the organization's plan doesn't include the requested proctoring type at all.

Can I purchase additional proctoring minutes/credits separately?

Yes, in the same way additional AI token credits are purchased: as an add-on "token pack" that Admins can buy via one-time Stripe Checkout. The Billing/Subscription page groups these packs by family, and proctoring-specific packs are labeled under a "Web Proctoring" category so they're distinguishable from AI model packs. Purchasing a pack applies a one-time bonus credit balance to the AWS Rekognition bucket, on top of whatever the plan's recurring allowance provides. This purchase is done at the Admin/organization level, not per individual learner.

Do unused credits roll over to the next billing cycle?

It depends on which bucket the credits are in. Plan-included allowances (the recurring per-period allocation baked into your plan) are tied to the current billing period and reset each renewal — they are not designed to accumulate indefinitely. One-time add-on pack purchases, however, are tracked as a separate "bonus" pool that is explicitly kept apart from the period allocation, which is how one-time purchased credits are able to persist and carry forward rather than expiring with the period.

How do I update my billing/payment information?
  1. Go to Billing/Subscription in your Admin account.
  2. Open "Manage Billing" / "Update Payment Method," which generates a secure Stripe Billing Portal link scoped to your Stripe customer record.
  3. In the Stripe-hosted portal, update your card or other payment method, and optionally update your billing address/tax details.
  4. Stripe applies the change to future charges immediately; no separate sync step is needed on the app side since the app never stores your card details itself.

If the update was to fix a declined card after a failed renewal, your subscription should return to "active" status once Stripe successfully retries the charge (or you can ask support/an Admin with Stripe access to trigger a manual retry).

What personal data does the platform collect about me?

Per the Privacy Policy, the platform collects: (1) account/profile data — your name, email address, password (stored hashed, never in plain text), role, and optionally organization/institution details, plus preferences like default AI model or timezone for admin-type accounts; (2) assessment and content data — the forms you're assigned, your submissions and answers, scores and feedback, and any files you upload as part of an assessment; (3) usage and device data — pages visited, features used, time spent, device/browser type, IP address, and general location (country/region), collected for security, analytics, and support; and (4), if you take a proctored assessment, biometric-adjacent verification data such as a reference selfie image, ID document image, and periodic webcam frames captured during the exam for identity/face-match checks. The policy states IntelliAssess AI does not sell your personal information.

Is my webcam/microphone data shared with third parties?

Webcam frames captured during proctoring are sent to AWS Rekognition (a third-party AWS service) for face-detection/face-match/liveness analysis — that's a necessary processing step to perform identity verification, not a general "share your video with third parties" arrangement, and it's used strictly for the proctoring check itself. If voice/audio proctoring is enabled on a form, similar third-party speech-analysis processing may apply. The Privacy Policy frames this as: your content may be sent to third-party service providers under contracts that restrict use to providing the service and protecting your data, and separately notes that prompts/content may go to third-party AI providers (OpenAI, Google, Groq) when you use AI-powered features — proctoring's use of AWS is the same category of "service provider" relationship. IntelliAssess states it does not sell personal information to third parties.

How is my proctoring video/audio data protected?

Proctoring evidence (reference selfie, ID document image, and captured exam frames) is stored in Amazon S3 with server-side encryption enabled at upload time, referenced in the database only by S3 key rather than being embedded directly, and the target bucket is described internally as an "encrypted bucket." Access to this evidence within the product is limited to your organization's Admin(s)/proctoring reviewers investigating a specific session or violation, not exposed broadly. Each proctoring event (face-match result, violation, warning) is logged with a timestamp and, where relevant, a confidence score and evidence frame, forming an auditable timeline rather than raw always-on recording being freely browsable.

Does the platform use AWS or other third-party services to process my data?

Yes. Confirmed third-party integrations in the codebase include: AWS for Rekognition-based face detection/liveness proctoring and S3 storage of proctoring evidence images; Stripe for all payment processing and subscription billing; and multiple AI providers — OpenAI, Groq, and Google Gemini — for AI-assisted question generation, grading, and feedback, selected per your organization's configuration. Email notifications are sent via SMTP using credentials your organization's Admin configures (which may itself point at a third-party mail provider, e.g., Gmail or AWS SES, depending on what the Admin sets up). The Privacy Policy's "Data Sharing & Third Parties" section covers this under "service providers" and "AI providers."

Is my data encrypted in transit and at rest?

Per the Privacy Policy: data in transit is protected with TLS, and data at rest is encrypted using industry-standard methods. This is consistent with what's visible in the code — proctoring evidence uploaded to S3 uses server-side encryption, and Stripe/AWS/AI-provider API calls are made over HTTPS/TLS as standard for those SDKs. Database-level encryption-at-rest for the PostgreSQL instance itself (e.g., disk-level encryption) is an infrastructure/hosting configuration rather than something enforced in the application code, so its specifics depend on how the database is deployed.

Can I request a copy of all my personal data?

The Privacy Policy states you may have the right to export your data in a portable format, listed alongside rights to access and correct your data, and instructs you to contact the platform via the email listed in the policy to exercise these rights, with a response within the time required by applicable law. There is no fully automated, self-service "download all my data" button visible in the current product for a learner account — this is a request handled by the team operating the platform (support/Admin) rather than an instant in-app export today.

Can I request deletion of my personal/proctoring data?

Yes, per policy — the Privacy Policy lists the right to delete your data, subject to legal or operational retention needs, and the same "contact us" process applies as for data access/export. In practice, deleting proctoring evidence specifically would mean removing the stored S3 images/frames and the associated proctoring session/event/violation records tied to your submissions; this is not currently exposed as a self-service action in the app and would need to be actioned by your Admin/Superadmin or support. Keep in mind some records (e.g., graded submission scores tied to academic records) may be subject to your institution's own retention requirements even if you request deletion.

Where can I read the full Privacy Policy?

The full Privacy Policy is available in-app at the Privacy route, linked from the site footer, and covers: information collected, how it's used, data security, data sharing & third parties, your rights & choices, cookies & tracking, children's privacy, international data transfers, and how policy changes are communicated. The page also attempts to load a CMS-managed version of the content and falls back to built-in static content if that's unavailable, so the exact wording you see may be refreshed independently of app releases — always treat the live page as authoritative over any cached copy.

Where can I read the Terms of Service?

The Terms of Service are available in-app at the corresponding Terms route, also linked from the site footer. Among other things, the Terms cover billing terms — e.g., that paid fees are billed in advance and are non-refundable except where required by law or stated in a separate refund policy, and that pricing changes require at least 30 days' notice before taking effect at the start of the next billing period. As with the Privacy Policy, this page may also pull CMS-managed content, so the live page is the authoritative version.

Does the platform comply with GDPR/CCPA?

The Privacy Policy uses GDPR/CCPA-adjacent language — e.g., referencing rights to access, correct, delete, and export data, the right to object or restrict certain processing where applicable by law (e.g. in the EEA/UK), use of appropriate safeguards (e.g. standard contractual clauses or equivalent) for international transfers, and the right to lodge a complaint with a supervisory authority — but the policy does not contain an explicit, named certification or compliance claim (e.g., "we are GDPR compliant" or "CCPA compliant") in the text reviewed. This is a legal/compliance determination that shouldn't be inferred from application code or marketing copy alone — it's a question for Legal to confirm.

Who has access to my assessment results within an organization?

Within your organization, the Admin(s) who created/own the assessment and administer your account can see your submissions, scores, and feedback for forms they administer, since forms, groups, and submissions are all scoped to that admin relationship. Superadmins, who operate the platform itself, have broader system-level access for support and platform administration. Other learners cannot see your individual results — group-based sharing controls who can take an assessment, not who can view your results, and result visibility is restricted to the admin side plus, of course, you, the learner, viewing your own results. If your assessment used AI-assisted grading, your submission content may also have been processed by a third-party AI provider as part of generating that score/feedback.

Can an admin impersonate my account, and will I be notified?

Yes — Admins and Superadmins can generate a time-limited "View as User" impersonation token that lets them act as your account for support/testing purposes, typically to reproduce an issue you're experiencing. This is implemented as a special token plus a short-lived (4-hour), one-time-use server-side session record used only to let the admin restore their own session afterward — it is not a permanent or silent takeover mechanism, and impersonation is scoped to the User role (an Admin cannot use this to become another Admin/Superadmin). Importantly, based on the code reviewed, there is no in-app banner, email, or notification sent to you when you are being impersonated, and no persistent admin-visible audit log entry specifically recording who impersonated whom and when beyond the ephemeral session store — so you would generally not know it happened. Whether impersonation is disclosed to affected users as a matter of policy, and whether a durable audit trail is required, is worth flagging for policy review.

How do I report a suspected data breach or security concern?

The Privacy Policy directs you to contact the platform via the email listed in the policy for rights requests and, by extension, for security concerns, and states the operator will respond within the time required by applicable law for legally-mandated matters. There is no in-app "report a security issue" button surfaced to learner accounts in the code reviewed, so the practical path today is contacting your organization's Admin/Superadmin (who can escalate internally) or using the contact information published on the Privacy Policy/Terms pages or the site's Contact page.

Are my payment details stored on your servers?

No — raw card numbers, CVVs, and full payment credentials are never stored by IntelliAssess AI's own database or servers; all of that is handled directly by Stripe (a PCI-DSS compliant processor) through Stripe Checkout and the Stripe Billing Portal. What the app does store locally is non-sensitive billing metadata needed to manage your subscription: your Stripe customer ID and subscription ID (opaque references, not card data), plan assignment, subscription status, billing period dates, and a cancellation flag, plus an internal audit trail of billing-relevant events (plan changes, cancellation scheduling, refunds) for support and reconciliation purposes. This is standard SaaS architecture for offloading PCI-sensitive data entirely to the payment processor.

What are the minimum system requirements to use the platform?

IntelliAssess AI is a browser-based single-page app (React/Vite frontend talking to a FastAPI backend), so there is no software to install — you just need a reasonably modern desktop or laptop web browser (current Chrome, Edge, Firefox, or Safari) with JavaScript and cookies/local storage enabled. If your assessment uses webcam/microphone proctoring or identity verification, you additionally need a working camera and microphone and must grant the browser permission to use them, since the app calls the browser's native media-access API — there is no proprietary plugin. A stable broadband connection is strongly recommended because the app continuously syncs answers and, for proctored exams, streams audio/video chunks to the server. Very old browsers or browsers with JavaScript/storage disabled will fail to load the app at all.

Do I need a stable internet connection, or does it work offline?

No — IntelliAssess AI requires an active internet connection at all times; it is not designed to work offline. Every screen (login, dashboards, assessments, reports) fetches data from the backend API in real time. That said, the platform is built to be resilient to brief connectivity hiccups during an assessment: attempt timing is tracked authoritatively on the server (an attempt ID plus a server-computed effective deadline and remaining time, not your local browser clock), and your current page position, "marked for review" flags, and shuffled question order are persisted to local browser storage. If your connection drops, refreshing the page once it's back should restore your place and your true remaining time rather than losing progress. If your connection failed between saves, whatever hadn't been sent to the server yet may not be recoverable, so submitting answers frequently on a stable connection (e.g. Wi-Fi rather than a flaky mobile hotspot) is the safest approach for graded assessments.

What do I do if the page won't load or shows an error?

Work through these steps in order: 1) Do a hard refresh (Ctrl/Cmd+Shift+R) to rule out a stale cached bundle. 2) Check your internet connection and try loading another site. 3) Open the browser's DevTools console (F12) — if you see an error like "API base URL is not configured," that's a deployment/configuration issue on our end, not something you can fix client-side; report it via Support with the exact error text. 4) If you see a CORS error or a 401 on a request that should be authenticated, it usually means your session has expired or you're on a mismatched URL — try logging out and back in. 5) Try an incognito/private window to rule out a browser extension or corrupted local storage. 6) Try a different supported browser to isolate whether it's browser-specific. 7) If the error persists, note the exact error message, the URL you were on, your browser/OS, and roughly when it happened, then submit a Technical Issues support ticket so it can be tracked and investigated — screenshots are not attachable to the ticket form itself, so include console text/error copy directly in the message.

Why is my camera/microphone not being detected?

This almost always comes down to browser permissions or hardware availability rather than the app itself. If detection fails: 1) Confirm your browser actually shows a permission prompt and that you clicked "Allow" — if you previously clicked "Block," you'll need to reset that site permission from your browser's address-bar padlock/site settings and reload. 2) Make sure no other application (Zoom, Teams, another browser tab) is currently holding an exclusive lock on the camera/microphone; close other apps using them. 3) Check the OS-level privacy settings (Windows Privacy & Security → Camera/Microphone, or macOS System Settings → Privacy & Security) to make sure the browser itself is allowed camera/mic access at the operating-system level. 4) If you have multiple cameras, use the "Active Camera Device" selector shown during enrollment to pick the correct one — your last choice is remembered in local storage. 5) The app also surfaces specific messages such as "No audio detected. Please ensure your microphone is not muted and speak louder" during voice verification — follow the on-screen guidance for that step specifically. 6) If none of that resolves it, try a different browser or device, then contact support with your OS/browser/camera model if it still fails.

The assessment page is frozen — what should I do?

First, don't panic or force-close the tab — because timing is tracked server-side and your page position/progress is saved to local storage, a refresh is generally safe and will restore your remaining time and place. Steps: 1) Wait a few seconds — a spinner during autosave or answer submission can look "frozen" briefly on a slow connection. 2) Check whether you (or a colleague/browser sync) already have this same assessment open in another tab or window — the app enforces a single-tab lock per assessment and will show "This assessment is already open in another tab. Please close the other tab and try again"; close the duplicate tab first. 3) If it's genuinely unresponsive, refresh the page (F5) — the app is designed to reload your current question, marked-for-review flags, and true remaining time from the server rather than restarting the clock. 4) If refreshing doesn't help, close the tab entirely and reopen the assessment from your dashboard link; the server-side attempt/deadline persists independent of the browser. 5) Check your network connection, since a stalled request (e.g. saving an answer or an image-heavy question) can appear as a freeze. 6) If the assessment remains frozen or you're worried the freeze cost you time or answers, submit a Technical Issues support ticket immediately with the form name, approximate time, and what you were doing when it froze — this creates a trackable record your instructor/admin can use to resolve any timing dispute.

Why can't I upload a file to my library?

Uploads to your personal library can be rejected for several specific, checkable reasons: 1) No filename — the request needs a real file, not an empty upload. 2) Unsupported file type — the backend maintains an allow-list of extensions; unsupported types are rejected with "File type not allowed for upload library." 3) File too large — each file is capped per document (a default of 50 MB per file); you'll see an explicit "File too large: max N MB per file" error. 4) Library quota exceeded — each user has a maximum item count (default 500 items) and a maximum total storage size (default 512 MiB); once you hit either cap, new uploads are rejected until you delete older items. 5) Duplicate/name conflict — uploading a file that collides with an existing item can return a 409 conflict. 6) Embedding not permitted on your plan — if you upload with the "embed immediately" option and your plan/account doesn't have library embedding enabled, you'll get a 403 telling you to store the file and embed later, or contact your administrator. If you get an error not covered here, copy the exact message shown and submit a Technical Issues ticket.

I'm getting a "session expired" error — how do I fix it?

This message means your login token is no longer valid and you need to log in again — it is not a bug, it's expected behavior once a token ages out or is otherwise rejected by the server. Mechanically: the frontend stores your access token in local storage; on load (and periodically) it calls a "who am I" endpoint, and if that call comes back as an authentication failure (as opposed to a network error), the app clears the stored token and redirects you to the login page, which then displays "Your session has expired. Please log in again." By default, access tokens are valid for 1440 minutes (24 hours), so if you leave a tab open/idle across that window (or your admin has configured a shorter window), you'll be signed out on your next action. To fix it: simply log back in with your credentials — any assessment attempt you had in progress is unaffected because attempt timing/deadlines are tracked server-side independent of your login session, though you will need to re-authenticate to continue.

Why does my PDF report fail to download?

Report downloads return the file as a binary blob; if the request fails, the frontend surfaces whatever error the backend returned, or a generic "Failed to download report" message if none is provided. Common causes and fixes: 1) Expired session — if your token has expired, the download request will fail with an auth error; log back in and retry. 2) Report not yet generated / grading incomplete — if grading (including AI-assisted grading) hasn't finished for that attempt, a report may not exist yet; wait and retry, or check your results page for a "pending" status. 3) Popup/download blocker — some browsers block programmatic downloads or open them in a new tab that gets blocked; check your browser's download/popup permissions for the site. 4) Network interruption mid-download — for large reports, a dropped connection can truncate the file; retry on a stable connection. 5) Server-side generation error — if the PDF generation itself fails (e.g. document conversion issue), you'll see a specific error detail from the backend; copy that exact text into a Technical Issues support ticket along with which assessment/submission it was for so it can be regenerated or investigated.

Is the platform accessible on tablets or only desktop/laptop?

The frontend is a responsive React/Tailwind web app, so it will generally render and function on tablet-sized browsers (e.g. iPad Safari, Android Chrome) the same way it does on a laptop, since there's no separate native app — everything is served through the same responsive web UI. That said, for proctored or timed assessments specifically, a desktop/laptop browser is the more reliable choice: features like camera/microphone permission handling, screen-sharing capture for screen proctoring, and precise multi-tab lock detection are all built and tested against standard desktop browser APIs, and tablet browsers (especially iOS Safari) can behave differently around background tab suspension and storage eviction — the app even has specific fallback logic (persisting session tokens to cookies, not just local storage) to cope with iOS evicting storage when the browser is backgrounded, which suggests tablet/mobile Safari quirks are a known consideration in the codebase. If your institution requires webcam/screen proctoring, check with your administrator whether tablets are officially supported for that specific assessment.

Does the platform support screen readers or other accessibility tools?

The frontend uses semantic HTML and includes accessibility labels across many interactive components (over a hundred instances across the component library), which is a positive sign for baseline screen-reader compatibility on things like buttons, icon-only controls, and form fields. However, no formal accessibility conformance statement, WCAG audit, or VPAT was found in the repository, so we cannot claim a specific compliance level (e.g. WCAG 2.1 AA) with certainty. If you rely on assistive technology and encounter a specific barrier (e.g. an unlabeled control, poor keyboard navigation, or a proctoring step that assumes visual/mouse interaction), please report it as a Technical Issues support ticket with the exact page and control — this is genuinely useful, actionable feedback for the product team even without a formal statement in place.

Why does the assessment look broken or unstyled in my browser?

This is almost always a stale-build or asset-loading problem rather than a real layout bug. Try, in order: 1) Hard refresh (Ctrl/Cmd+Shift+R) to bypass the cached CSS/JS bundle. 2) Check the browser console for failed network requests to CSS or font/icon assets — the UI uses icon fonts extensively, so if that CDN/asset fails to load, icons will appear as blank boxes or missing glyphs even though the rest of the layout is fine. 3) Disable ad blockers or privacy extensions temporarily, since some aggressively block third-party font/icon CDNs or inject CSS that conflicts with the app's styling. 4) Confirm you're on a currently supported browser version — very old browsers may not support modern CSS features (CSS Grid, custom properties) the UI relies on. 5) Clear your cache entirely if a hard refresh alone doesn't fix it. If the broken styling persists across browsers and after a full cache clear, it may indicate a real deployment issue on our end — report it via Support with a screenshot description and your browser/OS.

What browser extensions might interfere with proctoring or the assessment?

Because proctored assessments depend on unmediated access to your camera, microphone, and screen-sharing APIs, and on the assessment page running its own timer/lock/autosave logic uninterrupted, certain categories of browser extensions are the most likely culprits if something misbehaves: 1) Ad blockers / privacy extensions can block third-party scripts, fonts, or WebSocket connections the app uses, and can occasionally strip or alter permission prompts. 2) Camera/microphone "privacy" extensions or virtual webcam software can intercept or spoof the media stream the app receives, which proctoring integrity checks may flag or which may simply prevent the real camera from being detected. 3) VPN or proxy extensions can interfere with location checks — the enrollment flow includes a location-permission step that a VPN can cause to fail or return an inconsistent location. 4) Tab management / session restore extensions can inadvertently reopen the assessment in a second tab, triggering the single-tab lock error. 5) Password managers or form-fill extensions can occasionally interfere with focus/typing in answer fields. The safest approach for a proctored exam is to use a clean browser profile or incognito/private window with extensions disabled, ensure you're not running a VPN unless required, and close unrelated tabs before starting.

Why do I keep getting logged out unexpectedly?

A few distinct mechanisms can cause this: 1) Normal token expiry — access tokens expire after a fixed window (default 1440 minutes/24 hours, though your organization's deployment may configure a shorter value); leaving the app idle across that window logs you out and shows "Your session has expired" — this is expected, not a bug. 2) Multiple devices/tabs with impersonation or admin "View as User" sessions — the app uses cookies with a defined max-age (a shorter, 4-hour cookie is used specifically for admin "view as user" impersonation sessions) that can expire independently of your normal login. 3) Clearing cookies/local storage — if your browser (or an extension) is configured to clear site data on close, or you're in a private/incognito window, your token won't persist between visits and you'll appear logged out every time you reopen the browser. 4) Storage eviction on mobile Safari — iOS can evict local/session storage when the browser is backgrounded under memory pressure; the app has fallback logic (session cookies) specifically to mitigate this, but very aggressive OS memory pressure can still cause it. 5) Network errors misread as auth errors — the app is coded to not log you out on a pure network failure (it only clears your token on a genuine "Unauthorized" response), so if you were logged out during a known outage, that points to something else — report it. If logouts are frequent and you're on a stable connection with normal browser settings, note the approximate time and what you were doing, then submit a Technical Issues ticket so it can be correlated with server logs.

How do I clear my cache if the app is behaving oddly?

Clearing cache/site data resolves most "stale UI," styling, or stuck-state issues because it forces the browser to fetch a fresh copy of the app bundle and wipes any corrupted local app state. Steps: 1) In Chrome/Edge: open DevTools (F12) → right-click the browser's reload button → "Empty Cache and Hard Reload"; or go to Settings → Privacy → Clear browsing data, select "Cached images and files," and choose a time range. 2) In Firefox: Settings → Privacy & Security → Cookies and Site Data → Clear Data, or use Ctrl/Cmd+Shift+Delete. 3) In Safari: Develop menu → Empty Caches (enable the Develop menu in Preferences → Advanced first), or Settings → Privacy → Manage Website Data. 4) Note: fully clearing "Cookies and site data" (not just cache) will also remove your login token from local storage, so you'll need to log back in afterward — if you only want to fix visual/stale-bundle issues without being logged out, clear cache only, not cookies/site data. 5) If you're mid-assessment, do not clear site data for this site until after you've submitted, since it will remove your local progress markers (current page, marked-for-review flags) — though your true timing and submitted answers remain safe on the server. 6) After clearing, do a hard refresh and log back in if needed.

Is there a status page to check if the platform is down?

No public status page or uptime-monitoring page was found in the codebase or configuration during review. In the meantime, the backend does expose a lightweight health endpoint and a root status endpoint, but these are operational/diagnostic endpoints rather than a customer-facing status page — if you suspect an outage, the most reliable path is to try reloading after a few minutes and, if the problem persists, contact Support so the team is aware.

What should I do if I lose my work due to a technical glitch?

First, understand what's actually at risk: your assessment timing (attempt ID, deadline, remaining time) is tracked server-side and is not lost by a browser crash or refresh, and your current page position and marked-for-review flags are mirrored to local storage so a reload restores them — but any answer you typed and had not yet been saved/synced to the server at the moment of the glitch could genuinely be lost, since the client can only recover what the server actually received. Steps if this happens: 1) Don't immediately resubmit or retry blindly — first reopen/refresh the assessment to see what state was actually restored; you may find more was saved than you expect. 2) Check your remaining time — if it reflects what you expect, the server-side attempt state is intact. 3) If specific answers are missing, re-enter them promptly, since the clock (tracked server-side) continues to run regardless. 4) Immediately after the assessment (or as soon as you're able), submit a Technical Issues support ticket describing exactly what happened, when, and what was lost — this creates a timestamped, trackable record with status you (and, in follow-up, an admin) can reference, which matters if your instructor/administrator needs to grant a time extension, a re-attempt, or manually adjust a grade. 5) For non-assessment data loss (e.g. a library upload or a generated form), the same principle applies: report it via a ticket with as much detail (file name, timestamp, what you clicked) as you can recall, since admins can often recover or reconstruct state from server-side records that aren't visible to you directly.

How do I contact support?

There are two distinct channels, and which one to use depends on whether you already have an account. If you're a logged-in user, use the in-app Support page, which submits an authenticated, trackable ticket — this is the right channel for account-specific technical issues, billing questions, feature requests, or feedback, because it's tied to your user ID and creates a record you can check the status of later. If you're not logged in — e.g. a prospective customer, someone locked out of their account, or a visitor with a general/sales question — use the public Contact page, which requires no authentication and simply emails your name, email, subject, and message to the platform's designated Superadmin. The Contact form is a simple one-way email — it is not saved as a trackable ticket record the way an authenticated Support submission is, so if you need to follow up on status later, do so once you're logged in via the Support page.

What are your support hours?

The exact support hours/SLA are a business policy decision that isn't enforced or encoded anywhere in the backend — there is no time-of-day gating on ticket submission or response. The in-app Support page displays "Mon–Fri, 9AM–6PM EST" as static text, and separately shows "We typically respond within 24 hours"; the Contact page shows a somewhat different, also-static claim. Because these are hardcoded UI strings rather than values pulled from a configured policy, and because they're inconsistent with each other, treat them as an indication of intent rather than a guaranteed SLA until your organization publishes a single, reconciled policy.

How do I submit a support ticket, and how do I track it?

To submit: log in, go to the Support page, pick a category (General Support, Technical Issues, Billing & Payments, Feature Request, or Feedback), and describe your issue in the message box (capped at 200 characters client-side), then click Submit. This stores your ticket with your user ID, name, and email automatically attached, and status defaulting to "open." Submission also triggers a best-effort confirmation email to you and a notification email to the platform's Superadmin — if email delivery fails for any reason, it does not block your ticket from being created, so your ticket exists even if you never got a confirmation email. To track it: click "My Requests" on the Support page, which lists all your tickets ordered newest-first, each showing its category, your message, a color-coded status badge (open = yellow, in progress = blue, resolved = green, closed = gray), and submitted/updated timestamps — an admin or superadmin can update that status and attach internal notes, so watching this page is the way to see progress on a ticket without needing a reply email.

Can I attach screenshots or files to a support request?

No — the current Support ticket form is text-only. The request schema only accepts a category and a message string (capped at 200 characters in the UI), with no file/attachment field, and there is no upload control on the Support page itself. If a screenshot or file would help illustrate your issue, the best workaround is to describe what you see as precisely as possible (exact error text, page URL, steps to reproduce) in the message, and mention that you have a screenshot available so an admin can follow up and request it through another channel (e.g. email) if needed.

How long does it take to get a response from support?

There's no automated, guaranteed response-time SLA enforced in the system — tickets sit in "open" status until an admin manually reviews and updates them via the admin support dashboard, and there's no auto-escalation or time-based alerting visible in the code. The UI does display response-time expectations to set expectations ("We typically respond within 24 hours" on the Support page; similar but slightly different wording on the Contact page), but since these are static frontend strings rather than an enforced backend policy, treat them as a target rather than a contractual guarantee. In practice, you'll know your ticket has been addressed when its status changes from "open" to "in progress," "resolved," or "closed" on your "My Requests" view, and/or when you receive the best-effort confirmation/reply email tied to the address on your account.

Is there a live chat option?

No — no live-chat widget, chat SDK, or third-party chat integration (e.g. Intercom, Zendesk Chat, Drift, Crisp) was found anywhere in the frontend codebase. Support is handled asynchronously through the two channels described above: the authenticated, trackable Support ticket system for existing users, and the public Contact form for anyone else.

Where do I go for billing-specific support vs. technical support?

Both go through the same underlying channel, differentiated by category. On the in-app Support page, select "Billing & Payments" as the category when your question relates to your subscription, invoices, or payment method, versus "Technical Issues" for bugs, errors, or platform malfunctions — both are submitted the same way and both are trackable via "My Requests," but tagging the category correctly helps whoever reviews tickets on the admin side route it appropriately. If your billing issue is urgent and access-blocking (e.g. you believe you were incorrectly charged or locked out of a paid feature), it's still worth submitting under "Billing & Payments" rather than the general Contact form, since a ticket tied to your account gives support staff direct access to your subscription/billing records in a way an anonymous contact-form email does not.

Is there a help center or knowledge base?

There's no separate, dedicated help-center/knowledge-base site or section found in the codebase beyond a small built-in FAQ block embedded directly on the in-app Support page (covering things like password resets, viewing results, retaking assessments, and contacting an administrator) and a general Tutorials page that appears to host walkthrough/how-to content within the app. There is no evidence of an externally hosted docs site, searchable knowledge base, or article library beyond this page you're reading now.

Can I request a demo or onboarding walkthrough?

Yes, informally — the public Contact page explicitly lists "Sales & demos: Pricing, trials, enterprise" as one of the reasons to reach out, and its default subject placeholder even suggests "e.g. Demo request, Support, Feedback." Since this form requires no login, it's the right channel for a prospective customer or a not-yet-onboarded user to request a demo or walkthrough — just select/describe "Demo request" as your subject and include details on your organization size and use case in the message; it will be emailed directly to the platform's designated contact. There is no self-service demo-booking/calendar integration visible in the code, so a request submitted this way is handled as a manual follow-up rather than an automatic scheduling flow.

How do I give general product feedback or suggest a feature?

If you're a logged-in user, the cleanest path is the Support page: select the "Feature Request" or "Feedback" category and describe your idea — this creates a trackable, timestamped record tied to your account, which is more durable than an email and lets you (and admins) reference it later by status. If you're not logged in, or your feedback is more general/pre-sales in nature, you can use the public Contact page instead, which lists "Feedback: Feature ideas, testimonials" as one of its explicit reasons to reach out — this sends a one-time email and isn't tracked as a ticket, so prefer the authenticated Support route if you want to be able to check back on what happened with your suggestion.

Load More

Didn’t find what
you were looking for?

Our team is just a message away — whether it’s a setup question or a deep dive into features.