Skip to main content
Employee surveys ask a population a set of questions and report the answers. The whole design turns on one property: if a survey says it is anonymous, it is anonymous in the database, not just in the interface.

How anonymity actually works

For an anonymous survey the person→answer link is never persisted. The invitation records only that someone responded — which is what the reminder logic needs — and the response itself carries no identity. This is not a display setting that could be flipped later, and it is not a promise that depends on nobody querying the wrong table. There is no join to make.

k-anonymity

Anonymity fails by elimination long before it fails by lookup. If four people in a team of five have answered and you know three of them, the fourth is not anonymous. So results, the AI report and the XLSX export all stay locked until the response count reaches the survey’s minResponsesForResults threshold — 5 by default, and raisable per survey. Below it, the survey owner sees that the threshold has not been met, not a partial view they could reason against.
Set the threshold before you send. Raising it afterwards does not un-see what has already been read.

Building a survey

1

Questions

Multiple choice, scales, and free text. Question content is authored per locale so respondents answer in their own language.
2

Audience

A team, a location, an entity, or a hand-picked list. The audience definition is encoded rather than expanded to a name list on the response side.
3

Anonymity and threshold

Anonymous or attributed, and the minimum responses required before results unlock.
4

Window

Open and close dates, with reminders to people who have not yet responded — which the invitation record supports without revealing what anyone answered.
An assistant can help draft questions from a stated intent; the drafts are yours to edit before anything is sent.

Results

Once the threshold is met:
  • Aggregate results per question, with distributions.
  • Free-text responses, presented as written.
  • An AI report summarising observations.
  • XLSX export for further analysis.

The AI report

The report is observations over a stated data basis — it says what data it looked at and how many responses that was. It is not a score, not a benchmark, and not a ranking of teams.
Per ADR-006, AI output in this product may not be presented as pseudo-objective fact. The report shows its criteria and its basis, and HR retains the interpretation and the decision.

Server-only surfaces

The AI, XLSX and e-mail services sit behind the module contract and are server-only. They are never imported into client components — a client bundle that could reach the survey analysis service would be a bundle that could reach survey content.

Turning it off

FEATURE_SURVEYS=false.