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

# Reports

> The recruiting overview, the hiring-manager newsletter, and where the other numbers actually live.

Reporting in Swiss HR Easy is deliberately not a single BI surface. Each module owns the
numbers it is responsible for, and the **Reports** page covers recruiting.

## The Reports page

Two tabs:

<CardGroup cols={2}>
  <Card title="Overview" icon="chart-column">
    Recruiting figures — positions, applications, stage throughput and time-in-stage — computed from
    the pipeline history, with an export.
  </Card>

  <Card title="Newsletter" icon="envelope">
    Subscription preferences for the hiring-manager report described below.
  </Card>
</CardGroup>

## The hiring-manager report

A recurring e-mail sent to each hiring manager about **their own** positions. Per
position it lists the active application count and the top few applicants with their
stage, application date, and fit score where one exists.

| Property    | Behaviour                                                                  |
| ----------- | -------------------------------------------------------------------------- |
| Audience    | Resolved from position roles — a manager receives only their positions.    |
| Frequency   | A per-subscriber preference.                                               |
| Language    | The recipient's own locale.                                                |
| Unsubscribe | Every send carries a token; opting out is one click, with no dark pattern. |

A fit score appears only where the applicant consented to AI processing. Where they
opted out it is absent — the same as when no score exists for any other reason, so an
opt-out is not visible as a signal. See [AI transparency](/guides/ai/transparency).

## Where the other numbers live

Each module surfaces its own, because each carries its own masking and scoping rules:

| You want                                | Go to                                                                                                                            |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| Payroll totals per Lohnart, per account | The month's **Rekapitulation** and **Buchungsjournal** — see [Payments and accounting](/guides/payroll/payments-and-accounting). |
| Year-to-date per employee               | **Lohnkonten** — see [The monthly run](/guides/payroll/monthly-run).                                                             |
| Absence and vacation balances           | [Leave and absence](/guides/time-absence/leave-and-absence).                                                                     |
| Worked hours and ArG exceptions         | [Time tracking](/guides/time-absence/time-tracking).                                                                             |
| Budget against actual                   | [Budgeting](/guides/finance/budgeting).                                                                                          |
| Survey results                          | [Surveys](/guides/people/surveys), above the k-anonymity threshold.                                                              |

## The rules any number obeys

<AccordionGroup>
  <Accordion title="Salary figures respect visibility">
    Masking is applied before aggregation, not after. A figure that would let the viewer derive an
    individual salary they are not permitted to see is not shown. See [salary
    visibility](/guides/people/compensation#salary-visibility).
  </Accordion>

  <Accordion title="Scoping still applies">
    A manager's view covers their own scope — their positions and their direct reports. Reporting is
    not a route around the permission model.
  </Accordion>

  <Accordion title="Small populations">
    The same k-anonymity reasoning as surveys: a "team average" over three people is three people's
    data wearing a hat.
  </Accordion>

  <Accordion title="No individual rankings">
    Per [ADR-006](/concepts/design-philosophy), the platform does not produce top-10% / bottom-10%
    reports or any other ranking of people against each other. The hiring-manager report lists
    candidates for **one** position; it does not rank employees.
  </Accordion>
</AccordionGroup>

## Pagination

Every list endpoint behind a report is bounded — each clamps a `limit` parameter and
returns a pagination block. Unbounded queries are blocked in CI rather than left to
reviewer diligence, so a report over a large population pages instead of trying to
materialise everything at once.

## Exports

Reports export to Excel; payroll produces its own fixed-format artefacts. Every export
is audited — an export is data leaving the system, and it is treated as such.
