Security & privacy
Practices, not certificates.
Auditee is working towards certification and holds none yet, so this page does not lean on badges. It describes what the system actually does with your data, in enough detail that a technical buyer can check it.
Identity and access
Auditee never stores a password.
Authentication is OAuth2 and OpenID Connect against an identity service that Effiware runs and that keeps only a salted hash. Any standard identity provider works over OpenID Connect or SAML, and platinum customers can configure their own.
- Permissions
- Five distinct permission shapes, derived per request from the token, plus a per-resource check on every detail page and every mutation.
- Sessions
- Held in memory only and never written to disk: restarting the session store signs everyone out. The session identifier is rotated at login and tokens are refreshed server-side.
- No public sign-up
- There is no registration form on the sign-in service. People join by invitation; new organizations sign up through a separate service.
- Invitations
- Reusable for at most 72 hours.
- One-time sign-in links
- An administrator can send a person a link that signs them in without a password. It works exactly once: the moment it is used it is invalidated, so a used link cannot be replayed, and an unused one expires after 30 minutes.
- Onboarding
- One email, one click: the invitation sets the password, captures the name, joins the organization and lands the person in the right place.
- Auditees need no email address
- A supported shape, not a gap — it is what makes shop-floor and field workforces possible. Auditors and reviewers do need one, because they receive alerts.
Data
Scoped to the organization, versioned on every change.
Your audit data is stored and processed in the EU. Every row is scoped to its organization, and every stored file key is prefixed with it — so removing an organization is a single prefix operation rather than a hunt.
-
History that survives erasure
Versioned history tables record organizations, teams, audits, answers, tasks, assignments and evidence sets, written inside the same transaction as the change. Those rows are designed to stay interpretable after a user is erased, which is what lets an erasure request coexist with keeping an audit trail.
-
Files behind a permission check
Served as presigned links valid for 24 hours, minted only after the check passes. Uploads are validated by sniffing the file itself, never by trusting the browser, and SVG is refused everywhere.
-
Logs that do not identify you
Request logs record the method, path, status, size and duration. No IP address and no user identifier is written to them.
-
User content cannot inject markup
Markdown written by users goes through CommonMark in safe mode, raw HTML is dropped, then an explicit allowlist applies. Only https links with a real host and mailto: survive, and every external link carries noopener noreferrer.
Operations
Running several copies never doubles anything.
Multi-instance from day one
Background work is serialised with database advisory locks, so running several application instances never doubles an email or a scheduled round.
A transactional outbox
All outbound email goes through an outbox with retry and deduplication. A reminder is never sent twice, and an outage never produces a late blast.
Observable
OpenTelemetry tracing and Prometheus metrics throughout, so a support question has an answer rather than a guess.
The honest part
What we will not claim.
Things vendors in this category often assert, and we do not.
Three things we do not claim
- No certificate yet. Certification of our information-security practices is in progress. Until it completes, we describe practices rather than hold badges.
- Not end-to-end encrypted. Data is encrypted in transit and at rest by the hosting platform. The service has to read your data to score, report and notify, so it is not end-to-end.
- On the shared plans, separation is logical, not physical. On silver and gold the hosted service is one identity store and one database, with every row scoped to its organization. Platinum and uranium get their own database and identity store.
Where a separate deployment fits The anonymity limits, in the same spirit
Accessibility
What is true today.
In the application
Every page declares its language, matching the interface language in use. Icon-only controls carry labels, and those labels are translated. Sortable tables announce their sort state and popovers announce whether they are expanded.
Charts ship an invisible data table alongside the visual, so a screen reader gets the numbers. Status is never carried by colour alone — pass and fail pair an icon with a word. Unavailable actions are shown greyed with an explanation rather than hidden.
Not yet
There is no accessibility statement and no conformance target yet.
If any of that blocks you, tell us — knowing which parts matter to a real deployment is what moves them up the list.
Send us the security questionnaire.
We would rather answer it precisely than have you guess from a marketing page. Vulnerability reports go to the address in our security.txt.