Every feature, with honest status labels

Built for schools. Honest about scope.

Four question types. Three visibility settings. Voting and feedback in one system. Every feature is labeled: Built means it's in the current app, Planned means it's on the roadmap. No bait-and-switch.

Headline feature

A guided wizard, not a wall of fields.

Every operator screen shows the same 6-step progress bar so you always know where you are in the campaign. No 12-field "create a poll" form — just six small focused tasks, in the right order.

Information setup

Title, briefing content (Markdown + images), voter count, two deadlines. That's it.

Voter engagement

Voters receive their briefing code. Read or skip — your choice. Recorded anonymously.

Review engagement

Live counters: acknowledged · skipped · never seen. Decide when to move on.

Build the ballot

Now that you've seen the engagement picture, write the questions.

Voting

Voters get a separate voting code and cast their ballot.

Analysis

Results + the information audit, cross-tabulated with abstain reasons.

The full step-by-step lifecycle, including which actor (operator or voter) is involved at each step, lives on the How It Works page.

Two output types

Voting and feedback are different functions.

One produces counts, the other produces voice. The app handles both.

Type What it produces Example
Voting Percentages and counts "62% chose Candidate A"
Feedback Written anonymous responses "Students feel lunch rules are unfair"
Question types

Four ballot formats. Mix in one poll.

Tap a type below to preview it. Every poll automatically includes "I choose not to vote" as an option.

Yes / No · Single Choice🔒 Anonymous

Should the school allow phones during lunch?

Yes
No
I choose not to vote
Multiple ChoicePick all that apply

Which after-school programs should we keep next year?

Robotics club
Debate team
Drama club
Music ensemble
Sports programs
I choose not to vote
RankingEach option once

Rank these 5 field trip options

Average rank, first-place votes, and full distribution show in the report.

Rating Scale (1–5)How you feel

Rate how safe you feel at school

1
Not safe
2
3
4
5
Very safe

Report shows average rating, distribution, and "I choose not to vote" reasons.

Four formats from the spec.

Yes / No & Single Choice. Voters pick exactly one option. Best for binary policy decisions and elections with non-overlapping candidates.

Example: Should school allow phones during lunch? Which candidate do you vote for?

Multiple Choice. Voters pick any number of options. For elections, policy preferences, and program selection where more than one answer can be true.

Example: Which committees should we keep? Which candidates do you support?

Ranking. Voters order options from best to worst. For prioritizing choices when no single "winner" is obvious.

Example: Rank these 5 field trip options. Rank the priorities for next year's budget.

Rating Scale (1–5). Voters score on a five-point scale. For measuring satisfaction, safety, or perception.

Example: Rate how safe you feel at school. Rate the new lunch menu.

Every poll includes "I choose not to vote" by default. Voters who pick it must give one of three reasons: "I was not informed enough," "I simply do not care," or "I am not satisfied with any option."

Who sees the results

Three visibility settings, picked at poll creation

🔒

Private

Who sees: Only the poll creator and designated admins.

Best for: Bullying reports, sensitive surveys, internal climate checks.

👥

Shared with voters

Who sees: Anyone who participated, after the poll closes.

Best for: Elections, school-wide decisions, transparent votes.

🌐

Public

Who sees: Published for the entire school community.

Best for: Non-controversial polls, event planning, community choices.

Safeguards

The guardrails baked into every poll

⏱️

No live results Built

Results are never shown in real time. Only after the poll closes. Late voters can never be influenced by early ones.

📉

Minimum participation threshold Planned

If fewer than a minimum number of people vote (set by the operator), results can be withheld to protect anonymity in small groups.

🛡️

Written response moderation Planned

Free-text responses can be reviewed by the operator before public release. Harmful or inappropriate comments can be flagged and hidden.

🔐

Vote lock after submit Built

Votes are locked after submission. No changes allowed. Codes are single-use.

📅

Scheduled close Built

Polls can be scheduled in advance and set to close automatically at a specific time.

🚨

Safety escalation banner Planned

Reminder banner that threats or safety concerns in anonymous responses are taken seriously regardless of anonymity, and how they're escalated.

The differentiator

"I choose not to vote" — captured as data

This is the feature no other voting product offers. Voters who decline must give one of three reasons. The result is structured insight into why people stayed silent.

📭

"I was not informed enough about this topic"

If 40% of voters pick this, the school knows their communication failed — not that the topic was unimportant.

🤷

"I simply do not care about this decision"

Honest apathy is data. The school learns which topics actually matter and which were forced onto the agenda.

🚫

"I am not satisfied with any of the candidates or listed options"

If 30% reject every choice, the school learns the options were wrong — not the voters.

Schools learn the difference between apathy, confusion, and dissatisfaction. This data is arguably more useful than the vote counts themselves.

Multi-language

Deployed in two languages today

Built for Taiwan as much as for English-speaking schools. The full interface ships in both English and Traditional Chinese.

🇺🇸

English

Full interface, ballot text, and report exports.

🇹🇼

繁體中文 (Traditional Chinese)

Full interface, ballot text, and report exports. Voters pick their language; admins manage in either.

Guided live trial

Use the real app, one step at a time.

The embedded app on the right is the actual product — but in this trial, you can only do what the guide on the left tells you to do. One field per step. No way to wander off.

Step 1: Name the poll Real app route: /demo/polls/new
Every feature

The full feature matrix

Honest status on every line: built today, or planned for later.

🎟️

One-time codes Built

Generate one unique single-use code per eligible voter. The cornerstone of the system.

📱

QR codes per voter Built

Every code has a QR. Print, project, or hand them out at the meeting.

📨

Bulk email invitations Built

Upload a CSV/XLSX of recipients. Each gets a personalized message with their code.

🗳️

Four question types Built

Yes/No, Multiple Choice, Ranking, Rating Scale. Mix in one poll.

🤷

"I choose not to vote" Built

Default option on every poll. Three structured reasons captured as data.

👁️

Three visibility settings Built

Private, shared with voters, public. Operator picks at creation.

📅

Scheduled close Built

Set a deadline at creation. Polls auto-close. Results unlock then.

📊

Auto-generated reports Built

PDF, XLSX, JSON exports the moment the poll closes.

🌐

English & 繁體中文 Built

Already deployed in both languages.

📝

Written feedback (text responses) Planned

Free-text anonymous responses for open-ended feedback questions.

Verifiable anonymity Planned

Voters receive a confirmation hash to verify their vote was counted, without revealing what they voted.

🔁

Code resend & invalidation Planned

If a voter loses their code, issue a fresh one and invalidate the old. If a vote was cast, it's removed.

📉

Minimum participation threshold Planned

Withhold results if too few people voted, to protect anonymity in small groups.

🛡️

Response moderation Planned

Review and flag inappropriate written responses before public release.

📊

Operator dashboard Planned

Manage multiple polls, see participation stats, review past results in one place.

The full picture — including known gaps and unsolved problems — is on the Roadmap & Known Gaps page.

That's what's in the box today.

Want to see what's coming, and what's still broken? The roadmap is honest about both.