> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hr-easy.nlead.ch/llms.txt
> Use this file to discover all available pages before exploring further.

# Employee surveys

> Mitarbeiterumfragen with real anonymity, k-anonymity thresholds, and an AI report that shows its basis.

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.

<Note>
  Set the threshold before you send. Raising it afterwards does not un-see what has already been
  read.
</Note>

## Building a survey

<Steps>
  <Step title="Questions">
    Multiple choice, scales, and free text. Question content is authored per locale so respondents
    answer in their own language.
  </Step>

  <Step title="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.
  </Step>

  <Step title="Anonymity and threshold">
    Anonymous or attributed, and the minimum responses required before results unlock.
  </Step>

  <Step title="Window">
    Open and close dates, with reminders to people who have not yet responded — which the invitation
    record supports without revealing what anyone answered.
  </Step>
</Steps>

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.

<Warning>
  Per [ADR-006](/concepts/design-philosophy), 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.
</Warning>

## 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`.
