User guide

Run the room, live.

ClassPulse turns a presentation into a two-way conversation: you ask, your audience answers from their phones, and results appear as they arrive. This guide covers everything a presenter needs — from your first session to letting the room propose its own questions.

1Getting started

You need a presenter account to build and run sessions. Your audience needs nothing — no app, no sign-up.

  1. Register a presenter account. Open your ClassPulse site and choose Get started. On a brand-new deployment the first person to register becomes the administrator automatically, already verified — so you can sign in immediately.
  2. Verify your email (everyone after the first). Later sign-ups receive a short code by email and enter it once to activate the account. Lost the email? Use resend verification code on the verification page.
  3. Sign in. That's it — you land on your dashboard, where sessions live on the left and the one you're editing opens on the right.
Forgot your password? Use Forgot password? on the sign-in page to get an emailed reset code. If email isn't configured yet, an operator can reset any account from the server — see self-hosting below.

2Sessions

A session is a container for your questions and the join code your audience uses. Build it once; reuse it whenever you like.

  1. Create a session. Click + New session. It opens with the title selected, so just type its name; the session list updates as you type and the name saves itself. Rename it any time by clicking the title. The list can be sorted newest or oldest first, by name, or by recently used (the menu beside the Active/Archived tabs; your choice is remembered). Each session gets a unique 6-character code (letters and numbers) and a matching QR code and join link.
  2. Add questions. Click + Add question, pick a type, write the prompt, and fill in its options. Reorder questions with the arrows beside each one; duplicate, copy or delete from each question's row.
  3. Activate it. A session is closed to the audience until you Activate it. Activating opens joining and unlocks Present. Deactivate any time to stop new responses.

Reusing questions

  • Copy to… on a question copies it into another of your sessions, with its options and quiz answer but not its responses. Uploaded images are copied too, so the copy keeps working if you later delete the original session.
  • New session from this starts a fresh session with copies of every question (no responses) and its own join code. Use it to run the same lesson with another class. It works from archived sessions too.
  • Hide a question (● Live / ○ Hidden) to take it off the audience page and Present while keeping its results. The session's Results view still shows it.
  • Delete a question to remove it for good. If it has responses, you're told how many and asked to confirm; they're deleted with it.
  • Archive a session you've finished with. It moves to the Archived tab, closes to the audience and can't be edited, but its results and export stay available. Unarchive brings it back.

How the audience joins

Share any of these — all three lead to the same place:

  • The QR code (shown in present mode and on the session) — scan and go.
  • The join link for the session.
  • The 6-character code, typed into the Join a session page.

Participants are anonymous and need no account. Each person gets one response per question; submitting again replaces their previous answer rather than adding a vote.

Done with a session but want to keep the data? Archive it — it moves out of your active list (under the Archived tab) without deleting anything. Delete is permanent.

3Question types

Fifteen types, mixable within one session. Options are entered one per line unless noted.

Multiple Choice

One answer from a list. The classic poll or comprehension check.

At least two options.

Select All

Like multiple choice, but participants can pick several options at once.

At least two options.

Poll w/ Other

Multiple choice plus a free-text “Other” box for the option you didn't list. Results list the typed “Other” answers under the chart.

At least two options.

Ranking

The audience puts a set of items in order, best first, using the up/down arrows beside each one. Results show each item's score, best first: a longer bar means ranked higher.

At least two items.

Rating Scale

A star rating for confidence, satisfaction, or agreement. Results show the distribution.

Scale of 2–10 stars (default 5).

Numeric

Collect a number, decimals included. Results include the running average.

Optional minimum, maximum, and step. Can be a quiz question (correct value, plus a tolerance).

Short Answer

Free-text responses, shown as a live list.

No options to configure.

Word Cloud

Short answers that build a word cloud in real time — great for warm-ups and sentiment. Each answer counts as a whole phrase, so “machine learning” stays together.

No options to configure.

Image Choice

Vote between images — design critiques, “which looks right?”, spot the difference. Results display the images with live tallies.

Upload images, or paste one Label|https://image-url per line. At least two.

Emoji Poll

Answer with a single emoji — instant mood checks and reactions. Results grow each glyph with its share of the vote.

Pick a preset (mood, reactions, traffic light…) or type your own set of 2–12 emojis.

Grid / Matrix

Tap one cell of a labelled grid. A 2×2 “Likelihood × Impact” grid is a classic risk matrix; bigger grids work as heatmaps.

Grid size 2×2 up to 4×4, optional axis and end labels. Laid out like a chart: horizontal axis along the bottom, vertical axis up the left.

Scatter Plot

Drop a point anywhere on a labelled plane — predictions, estimates, “where do you stand?” Results plot every respondent's dot live.

Optional axis labels and end labels (“Cheap” … “Expensive”, shown instead of 0 and 100), quadrant lines, and colour and size dimensions for the respondent to pick.

Pin on Image

Tap a spot on an image: label a diagram, find the bug in a screenshot, mark a place on a map. Results show every pin on the image; clusters show where the room agrees.

Upload an image or paste an https:// image URL.

Slider

Drag a slider between two labelled ends, e.g. “How confident are you?” from “Not at all” to “Completely”. Results show the spread with the average and median.

Minimum, maximum and step (default 0–100 in steps of 1), plus a label for each end.

Points Allocation

Each person shares out a budget of points across the items, so you see how strongly the room prefers each one, not just which won. Answers must use exactly the full budget.

2–10 items and a points total (default 100).

Quiz mode

Multiple choice, select-all, image choice and numeric questions can carry a correct answer. Set it in the question editor under Quiz answer (for select-all, list every correct option; for numeric, give the value and how close counts). In Present, a quiz question shows only how many have answered, so early answers don't steer the room. Press Reveal answer (or R) to show the results with the correct answer in green and the percentage who got it right. Revealing closes the question, and each student's page tells them whether they were right. You can hide the answer again, and fix a wrong answer key even after responses arrive. Answers stay anonymous: there is no leaderboard.

Uploaded images are handled safely. ClassPulse re-encodes and resizes them server-side, so what your audience sees is a clean, size-limited copy rather than the original file.

4Presenting live

Present mode is the big-screen view for the room — questions and results, updating as answers land.

From an active session, click Present. You get:

  • A full-screen join page (QR code and session code) to open with — press space to flip between it and the results.
  • A slim join panel beside the results, so latecomers can still scan while you present.
  • One question at a time, with its live chart, word cloud, or image tallies.
  • An overview grid of every question — click any card to enlarge it.
  • Move between questions with the on-screen ← Prev / Next → buttons or the ← → arrow keys.
  • Reveal quiz answers with the Reveal answer button or the R key (see Quiz mode).

Because everything streams over a live connection, you never refresh — bars grow, words appear, and counts tick up while you talk.

5Results & export

Review responses live during the session or afterward, and take the raw data with you.

Reading results

  • Choice, select-all, numeric, poll-with-other render as bar charts (numeric also shows the average; poll-with-other lists the typed “Other” answers). Quiz questions show the correct answer in green with the percentage correct.
  • Ranking shows each item's score, best first: a longer bar means ranked higher.
  • Slider shows how answers spread between the two end labels, with the average and median.
  • Points allocation shows the average points each item received per person.
  • Pin on image draws every pin on the image.
  • Rating shows the spread across the star scale.
  • Word cloud and short answer show the text — as a cloud or a list.
  • Image choice shows each image with its live vote tally.
  • Emoji sizes each glyph by its share of the vote, with counts and percentages.
  • Grid / matrix shades the cells as a heatmap — hot cells are where the room clustered.
  • Scatter plots every respondent's dot; colour and size carry the extra dimensions if enabled.

Exporting to CSV

Export a whole session or a single question. The file has one row per response with these columns:

response_id, question_id, session_id, response_value, respondent_id, timestamp

Open it in any spreadsheet for grading, analysis, or your records.

6Cohort mode: let the audience ask

Turn on cohort mode and your audience can propose questions and upvote each other's — you stay in control of what actually goes live.

  1. Enable it on the session. Open the Audience proposals panel and switch it on.
  2. The audience proposes and votes. Participants see a + Propose a question button and can anonymously suggest questions and upvote the ones they'd most like asked.
  3. Moderation runs automatically. Every proposal passes a keyword filter first; if an AI provider is configured, an extra check runs too. Anything flagged is hidden from the public list and waits for you.
  4. You decide. Review proposals from your dashboard — approve, reject, unflag, or merge. Approving a proposal turns it into a live question in your session.
The keyword filter blocks unambiguous profanity out of the box. You can extend it with your own terms — one per line in instance/moderation_keywords.txt on the server.

7Accounts & admin

Administrators manage who can present. Most presenters never need this section.

  • The first registrant is the admin; there is no built-in default account.
  • From Manage Users, an admin can Verify a user directly (handy if a verification email went astray), Block someone (they can't sign in or re-register until unblocked), or Delete an account permanently.
  • Sign-ups can be restricted to specific email domains (for example, only your institution's addresses).
  • Every page footer shows the exact build running, linked to its commit — handy when reporting an issue.

Deleting your own account

Any presenter can delete their own account from the Account page (confirm with your password). Deletion is permanent and immediate — it removes your account and every session, question, and result you created, with no recovery. ClassPulse treats survey data as disposable, so there is no trash to restore from afterward.

8Self-hosting

ClassPulse is open source and runs anywhere Docker does. The repository is the source of truth for setup and operations.

  • README — features, local setup, and configuration overview.
  • DEPLOYMENT.md — Docker / reverse proxy / persistence, and email & AI provider settings.
  • SECURITY.md — the security model and required settings.
  • .env.example — every environment variable, documented.
Email note: until you configure an email provider, verification and reset codes are only written to the server log — real users won't receive them. Set EMAIL_PROVIDER (Resend, SMTP, or Gmail) in your .env to send mail. The app warns about this at startup.