At a glance
- Players can join Runs without an account. Participant access, export, and erasure tools require a private Audience roster email; nickname-only participation instead expires with the Run.
- Essential diagnostics run when PostHog is configured to keep Runs reliable. Optional analytics and session replay only run after you accept analytics.
- Finished and cancelled Runs use an approved 1, 7, 30, 90, or 365-day Event override, workspace or organization default, with a 30-day system fallback. Signed-in host account data remains until deletion or a removal request.
- Nothing is used for advertising, and browser storage is listed below by purpose.
Last updated
September 23, 2026.
Who we are
Discera is operated by Consensus ApS, the data controller under the GDPR. For privacy questions, or to exercise any of the rights described below, email privacy@consensus.dk.
What we collect and why
Essential diagnostics. When PostHog is configured, we collect operational error data so we can detect failures and keep Runs reliable. This is on whenever the app loads, because without it we cannot keep the service reliable. Run routes are reduced to templates, and raw join codes, internal Run IDs, and gameplay session IDs are excluded or redacted. Localization failures contain only a code, requested and fallback locales, route template, app version, and deployment environment. PostHog adds only a public project token, memory-only ID, and no-person-profile flag. Events exclude message keys, catalog or rendered text, interpolation values, and account or analytics identities. Browser-session IDs persist only after analytics consent; request IDs may correlate failures. Lawful basis: legitimate interest in service reliability (GDPR Art. 6(1)(f)).
Optional analytics. If you select Accept analytics in the cookie banner or an analytics preference control, we also record usage events (which screens you visit, when a quiz starts, how long sessions last) and may enable PostHog session replay so we can improve the product. Product event payloads do not include internal Run IDs, raw join codes, or gameplay session IDs; selected failure events may include bounded, sanitized error details. PostHog still uses pseudonymous analytics and browser-session identifiers. If you are signed in while analytics are accepted, we also attach your account ID and, when available, your account email and name to those PostHog events. Lawful basis: your consent (GDPR Art. 6(1)(a)). You can change your choice at any time using the analytics preferences below.
We do not collect address or payment data through the app. Apart from signed-in account details described above, Activity content you enter, including quiz titles, questions, slides, player nicknames, free-text answers, brainstorm ideas, and avatar choices, is stored with the Run and visible to the host or other players where the live Run experience requires it.
Public manual questions. If you use the FAQ ask box, we collect the free-text question, generated answer, cited manual concept keys, and a request-derived pseudonymous caller key used for abuse control. The question and answer are stored for up to 90 days and are not linked to an account or workspace, but free text can identify you. The question and the code-owned product manual are sent to OpenAI to generate a grounded answer. The raw request address is not stored in Convex; please do not include personal or confidential information.
Host-configured join details. A host can ask for up to three pieces of context when you join, such as department, table number, or cohort, so they can group players and report on participation. You see each question and its answer options before you join, and only the host can see what you entered — other players cannot. Answers are stored with the Run, are deleted with it on the schedule below, and are never used for advertising. If you would rather not share something, ask your host: fields marked optional can be left blank. Lawful basis: legitimate interest of the host organizing the event (GDPR Art. 6(1)(f)).
Private Audience rosters. A host may prepare a reusable list containing your display name and email, then explicitly link it to your player record during a Run. Participants never see this roster. Discera does not include roster names or emails in presentation, sharing, copied assets, workspace moves, or analytics. Lawful basis: legitimate interest of the host organizing and checking attendance for the event (GDPR Art. 6(1)(f)).
Analytics preferences
Essential diagnostics stay on to keep Discera reliable. Optional product analytics and session replay follow this browser setting.
Current choice: Loading your saved choice…
Changes apply immediately in this tab. When browser storage is available, your choice is saved in localStorage and the consent cookie. Withdrawing consent stops future optional capture and resets the local analytics identity. It does not delete analytics data already collected; email privacy@consensus.dk for help with previously collected data.
Who processes the data
The list below describes current production-relevant processors and infrastructure processors, what each is used for, what data categories they can receive, and whether the use is always-on, feature-triggered, or consent-gated.
Discera does not claim vendor no-training terms, no-retention terms, DPA coverage, SOC 2, ISO certification, or other enterprise processing commitments here unless those terms are separately documented and evidenced for the current account and vendor setup.
Required infrastructure and account services
These processors support hosting, storage, authentication, and live Run operation.
| Processor | Purpose | Data categories | Use |
|---|---|---|---|
| Vercel | Hosts the Next.js app, serves public pages and app routes, and runs server-side route handlers. | HTTP request metadata such as IP address, user agent, route, headers, and request timing for app traffic. | Always-on infrastructure when the app is used. |
| Cloudflare Turnstile | Protects the public playable-demo launcher from automated Run creation. | Browser and request signals needed to distinguish legitimate visitors from automated traffic, including IP address, user agent, challenge outcome, request hostname, and timing metadata. Demo form content is not sent to Turnstile. | Feature-triggered when the public /demo launcher is opened and a visitor starts a demo. |
| Convex | Stores and processes Activity definitions, live Run state, uploaded assets, account-linked host data, sessions, and backend function activity. | Host account identifiers, Activity content, Run state, player nicknames, answers, uploaded media or source PDFs, custom themes, browser session IDs, hashed host credentials, pseudonymous AI abuse-control rate-limit keys, and PowerPoint deck fingerprints, opaque link identifiers, workspace relationships, and lifecycle audit events. | Always-on infrastructure for Activity, Run, and account features. |
| Auth0 | Provides sign-in for host accounts through Convex Auth. | Signed-in host identity data such as email, name when available, authentication identifiers, and login/session metadata. | Feature-triggered when a host signs in or signs out. |
Diagnostics and analytics
Diagnostics help keep live Runs reliable. Product analytics and session replay are separate and require analytics consent.
| Processor | Purpose | Data categories | Use |
|---|---|---|---|
| PostHog | Receives operational diagnostics, optional analytics events, and optional session replay. | Errors, canonical route templates, memory-only pseudonymous PostHog and browser-session identities, request context, optional usage events without internal Run IDs, raw join codes, or gameplay session IDs, bounded sanitized failure details, persisted analytics identifiers, session replay data when consented, and signed-in account attribution when analytics are accepted. | Always-on diagnostics when configured; analytics and session replay are consent-gated. |
Optional commerce and workflow integrations
These processors receive data only when a host uses paid commerce, its resulting billing lifecycle is processed, or a host tests, configures, and sends to a workflow destination.
| Processor | Purpose | Data categories | Use |
|---|---|---|---|
| Stripe | Processes Host Pro subscriptions and Event Pass purchases, including hosted checkout when available, billing management, payment lifecycle, refunds, disputes, and reconciliation. | Host billing identity such as account email and name, payment and billing information entered directly into Stripe-hosted Checkout, Stripe customer references, subscription and purchase state, checkout attempts, invoice and payment status, product and price references, and Discera reconciliation metadata. Raw payment credentials entered in Stripe-hosted Checkout are not received or stored by Discera. | Feature-triggered when a host starts or manages Host Pro or purchases an Event Pass, when those purchases are available. New checkout is currently suspended; existing checkout, purchase, subscription, cancellation, refund, reconciliation, and billing-portal records continue through their normal lifecycle. Deleting the Discera account detaches local identity and schedules a current subscription to cancel at the end of the paid period; the Stripe-side customer record and retained commerce evidence remain under the commerce retention lifecycle. |
| Microsoft (Teams Workflow) | Posts a connection-test card to a host-submitted Microsoft Teams Workflow destination, then posts host-approved join, start, and recap cards after the destination is configured. | Connection-test message, Run title, join code, scheduled timing, join and recap action URLs including the public recap access capability, recap participant and question counts, recap outcome, and participant or winning-team display names that the host approved for disclosure. | Feature-triggered when a host tests and configures a Teams Workflow destination or explicitly posts a Run card. Delivered cards are recipient-controlled, so account deletion cannot recall them; participant erasure records an owner follow-up when existing permissions cannot remove an affected recap card. |
Optional AI and enrichment features
These processors receive data only when a host or public visitor uses the relevant AI or enrichment feature.
| Processor | Purpose | Data categories | Use |
|---|---|---|---|
| OpenAI | Plans event structures from host briefs, generates draft quiz questions from host prompts or source material, drafts answer options for existing questions, drafts non-question segment slide content plus host-private MC notes, reviews authored event packages for workplace content risks, and answers public visitor questions from the product manual. | Quiz topic or host prompt, audience context, generation settings, requested question count and type mix, question text, question type, existing answer options, event goal, timebox, optional preset preference, source-material availability, segment kind/title/purpose/duration, audience size/type/notes, tone, company facts, generated draft quiz or segment content, authored event-package item titles and body text, host-private MC notes, optional uploaded source PDF bytes, host-selected imported PowerPoint slide text, speaker notes, order, section labels, fallback state, and import warning codes, plus public visitor questions, generated manual answers, and cited manual concept keys. Imported PowerPoint image bytes, storage identifiers, credentials, omitted audio/video, transitions, and animations are not sent by this feature. | Feature-triggered when AI event planning, quiz generation, answer-option generation, segment-content generation, event-package review, or a public visitor manual question is used. |
| Context.dev | Extracts brand colors and logo candidates from a submitted company website for theme generation. | Domain extracted from the submitted public HTTPS company website, plus resulting brand metadata such as colors, page title, and logo candidate URLs. Usable logo candidates may be fetched by Discera and rehosted in Convex storage for the draft theme. | Feature-triggered when website-based brand theme generation is used. |
| Nominatim / OpenStreetMap | Searches for places in map-pin question authoring. | Place search text sent through Discera's map geocode route, plus normal request metadata for the upstream search. | Feature-triggered when map place search is used. |
| OpenStreetMap and CARTO tile providers | Serve map tiles for map-pin question editing and gameplay. | Tile request metadata and map tile coordinates needed to render the map. | Feature-triggered when a map view is rendered. |
| YouTube | Serves slide video embeds from supported YouTube nocookie embed URLs. | Browser iframe/video request metadata and the authored YouTube embed URL when the slide is rendered. | Feature-triggered when a slide with a YouTube embed is rendered. |
| Vimeo | Serves slide video embeds from supported Vimeo player URLs. | Browser iframe/video request metadata and the authored Vimeo embed URL when the slide is rendered. | Feature-triggered when a slide with a Vimeo embed is rendered. |
AI data use
AI features are optional. Discera only sends data to the listed AI processor when a host or public visitor chooses the matching feature.
- OpenAI: AI quiz generation
- Discera sends the host prompt or topic, audience context, requested count, difficulty, allowed question types, question-type mix, optional company facts, and one optional source: source PDF bytes, host-supplied source text (pasted text, meeting notes, or extracted public web page content), or the approved imported PowerPoint representation, so OpenAI can return draft quiz questions. The selected source is the primary factual source. The PowerPoint representation includes selected slide text, speaker notes, order, section labels, fallback state, and warning codes, but excludes image bytes, storage identifiers, credentials, and omitted media or animation content.
- Only when a host asks Discera to generate quiz content.
- OpenAI: AI answer-option generation
- Discera sends the question text, question type, requested option count, and existing answer options so OpenAI can draft answer choices for that question.
- Only when a host asks Discera to draft answer options.
- OpenAI: AI event structure planning
- Discera sends the event goal, tone, timebox, audience type, audience size, optional audience notes, optional company facts, optional preset preference, and whether source material exists so OpenAI can propose a run-of-show structure. When the host selects an imported PowerPoint Activity, Discera also sends its approved imported slide text, speaker notes, order, section labels, fallback state, and warning codes; image bytes, storage identifiers, credentials, and omitted media or animation content are excluded. Source PDFs and pasted source text are not sent in this planning request.
- Only when a host asks Discera to plan the event.
- OpenAI: AI segment content generation
- Discera sends the event goal, tone, audience type, audience size, optional audience notes, planned segment kind, title, purpose, target duration, and optional company facts so OpenAI can draft one non-question segment slide plus host-private MC notes. When the host selects an imported PowerPoint Activity, Discera also sends its approved imported slide text, speaker notes, order, section labels, fallback state, and warning codes; image bytes, storage identifiers, credentials, and omitted media or animation content are excluded. Source PDFs and pasted source text are not sent for this request.
- Only when a host asks Discera to draft non-question segment content.
- OpenAI: AI event package review
- Discera sends the event goal, tone, audience type, audience size, optional audience notes, optional company facts, and authored item kinds, titles, body text, question metadata, fact references, and host-private MC notes so OpenAI can identify tone or wording risks, risky free-text prompts, difficulty mismatches, and unsupported company claims. Discera does not automatically attach session IDs, source PDFs, player records, or cross-event records to this request. Text entered into the reviewed package is sent as authored, so hosts should omit sensitive or unrelated data.
- Only when a host asks Discera to review an authored event package.
- OpenAI: Public manual answers
- Discera sends the visitor's free-text question and the code-owned product manual corpus so OpenAI can return a grounded answer. The question and generated answer are stored in Convex with cited manual concept keys for up to 90 days; visitors should not include personal or confidential information.
- Only when a public visitor submits a question in the FAQ ask box.
- Context.dev: Website-based brand theme extraction
- Discera sends the domain extracted from the submitted public HTTPS company website so Context.dev can return brand colors, title metadata, and logo candidate URLs. When Discera uses a returned logo candidate, Discera fetches and rehosts that logo in Convex storage for the draft theme; no theme record is created until the host saves it.
- Only when a host asks Discera to generate a theme from a website.
When a host requests a paid AI authoring feature in production, Discera uses the client address observed by Vercel to derive a one-way, purpose-limited rate-limit key. The raw address is not sent to Convex or an AI provider. The derived key is sent to and stored in Convex solely to enforce rate limits. The key changes at each UTC day boundary; people sharing one public address can share a limit, and environments without a trusted address use one shared fallback limit.
Discera does not use one customer's event briefs, company facts, source material, generated content, review payloads, or event outcomes to train models or personalize AI features for another customer.
Retention and data inventory
This inventory separates browser-scoped data from server-retained data, account data, uploaded assets, diagnostics, analytics, and processor-managed data.
| Area | Data included | Scope | Retention / cleanup | Notes |
|---|---|---|---|---|
| Browser storage and cookies | Analytics consent, PostHog browser/session identifiers, host credentials, host-transfer and recovery flags, create drafts, preview data, join preferences, and sound or pacing preferences. | User/browser-scoped localStorage, sessionStorage, cookies, or history.state. These are not server account records. | sessionStorage and history.state entries last for the tab or browser session. localStorage lasts until the user clears it. The analytics consent cookie expires after 1 year. | Account deletion does not reach data stored only in the user's browser; users can clear site data locally at any time. |
| Run and participant data | Run metadata, immutable Activity snapshot, content items, rounds, round timing, players, nicknames, host-configured join details such as department or table, answers, scores, Q&A, message wall posts, brainstorm ideas and votes, moderation events, control-room state/events, operator sessions, display-name overrides, and blocked join attempts. | Server-retained Convex data scoped to the Run. | Retained while the Run is active. When the Run finishes or is cancelled, Discera sets an expiry from an approved 1, 7, 30, 90, or 365-day attached Event override, then the workspace and organization defaults, then the 30-day system fallback. Lower-level values must remain inside organization constraints. Expired Runs become unavailable, and daily cleanup removes the Run row plus cleanup-covered live-Run records such as rounds, players, answers, Q&A, message-wall, brainstorm, moderation, control-room, operator, display-name, blocked-join, score, and storage-reference rows. | Hosts and players can see Run data where the live experience requires it. Feature-specific audit and operational records follow their owning cleanup paths. |
| Audience rosters and participant data-rights records | Host-entered participant display names and email addresses, historical links to Run players, verified export/erasure workflow state, hosted-recap redaction evidence, external Teams follow-up outcomes, legal holds, and privacy-safe audit receipts. | Workspace-scoped Convex data. Roster PII is available only to authorized signed-in editors/controllers and a current host for the matching Audience-bound Run; it is never shown to participants or included in sharing, copy, move, presentation, or analytics payloads. | Roster entries remain until archived or erased by a verified participant request. Link snapshots remain for Run history until Run cleanup or participant erasure strips their identifying fields. Pending requests temporarily retain the normalized address and verification evidence. If erasure processing fails but can recover, Discera retains the normalized address and minimal phase/cursor identifiers needed for automatic retry while scrubbing verification evidence immediately. Completion or exhausted recovery removes that transient context and retains only a hashed idempotency key, request kind/status, timestamps, affected count, hosted-recap counts, external-copy outcomes, and non-identifying audit receipts. Active legal holds suspend erasure and release resumes it. | Workspace owners/admins or organization owners/admins handle verified access, portable JSON/CSV export, erasure, and holds. Erasure removes covered active identifiers, metadata, responses, uploads, standings, embedded references, and identity-linked names in hosted recap links. The retained receipt and any aggregates do not identify the participant. Recipient-controlled Teams cards use a receipted owner follow-up when existing permissions cannot remove them; processor backups follow separately disclosed windows. |
| Portable workspace exports | Revision-pinned ZIP packages with JSON, CSV tables, integrity checksums, explicit omissions, and durable controller-visible job receipts. | Discera-held package storage and download handles remain under Discera control. Once downloaded, a controller-held copy is outside Discera control. | Discera normally retains a generated package for up to seven days. Participant erasure invalidates every earlier queued, running, complete, or incomplete export that could contain the participant before completion, deletes any Discera-held package, and revokes its download handle. The non-content job receipt remains. A later export is generated from post-erasure canonical state. | Controllers must store downloaded copies securely and retain or delete them under their own policy. Participant erasure cannot recall a file already saved outside Discera. |
| Uploaded Activity and Run assets | Question media, slide media, audio, canvas images, player avatars, answer thumbnails, generated assets, and source files registered to an Activity, Run, or content item. | Convex storage objects plus storage-reference rows owned by the Activity, Run, content item, round, or related runtime record. | Follows the owning Run through its resolved retention window, then is removed by expired-Run cleanup when no other owner references the storage object. | Shared or reused storage is deleted only after Discera confirms no saved owner still references it. |
| Draft or abandoned uploads | Source PDFs, generated theme logos, images, audio, and canvas media uploaded while drafting but not saved into an Activity, template, theme, or account-owned asset. | Short-lived upload-capability rows containing the session scope, purpose, token hash, lifecycle status, and timestamps; Convex uploaded-file rows; storage objects; and bounded cleanup diagnostics. Capability rows retain a token hash rather than the client-held token. | Upload capabilities expire after ten minutes. A bound capability can be extended in five-minute increments while deletion and durable cleanup-job persistence both fail. Unadopted draft uploads are retained for at least 24 hours; after that, daily cleanup removes them when no saved owner references the storage object. | If a draft upload is saved or adopted, it follows the saved owner and validated ownership removes matching cleanup diagnostics. Failed best-effort deletes can be retried by cleanup jobs. Terminal cleanup diagnostics omit caller-linked context and are removed at an eligible reconciliation sweep after the object is deleted or confirmed absent, gains a durable owner reference, or is superseded by newer uploaded-file ownership metadata. |
| Host account data and saved assets | User profile fields, local Convex auth rows/sessions, entitlements, saved Activities and templates, custom themes, theme/template upload references, account-linked upload metadata, pending workspace invitations addressed to the verified account email, invitation creator references, and commercial-prompt cooldown state. Account export includes its documented account-owned records and retained Run metadata, but excludes commercial-prompt cooldown and attribution rows. | Convex account tables and account-owned storage references. | Retained until the host deletes the account or asks Discera to remove it. Local deletion removes the account row, linked auth/session rows, saved templates, custom themes, entitlements, commercial-prompt cooldown and attribution rows, unreferenced account uploads, and pending invitations addressed to the normalized verified identity email. Invitation audit email and ID fields are redacted first. Invitations created by the account remain usable with their creator reference removed. | Runs created by the host are detached from the deleted account and stay only until their normal Run-retention expiry. A content-free deletion receipt remains unfinished until the bounded invitation cleanup completes; it never stores the email address. |
| PowerPoint deck connections | SHA-256 fingerprints derived locally from compressed deck bytes, opaque deck-link IDs, workspace relationships, retry request IDs, revision state, and lifecycle audit events. Deck bytes, slide content, titles, and filenames are not uploaded. Static slides written locally into a presentation can include source titles, the source Theme’s colors and uploaded logo, an active join code/link, winner display names, or participation totals, plus hidden provenance tags holding opaque source and generation-event IDs, the source and asset kinds, a source revision, a generation timestamp, and the Discera asset version. | Convex link/audit tables, PowerPoint settings, and saved copies. | Personal-workspace links and events are removed through bounded background cleanup after account deletion. Team-workspace links and audit evidence remain with the team; deleted creator and actor identifiers are anonymized. Discera retention and account deletion cannot remove static slides from presentations or copies saved and shared by the host. | Access-denial evidence, including denied static-slide generation, is retained as internal workspace security evidence and is not included in the probing account’s self-service export. |
| Workspace offboarding | Workspace-owned Activities, templates, Runs and participant/runtime rows, memberships, invitations, share links, edit leases, exports, PowerPoint links, and workspace audit detail. | The selected personal or team workspace in the regional Discera application database and storage. Independently copied assets in another workspace are destination-owned and survive. | A confirmed deletion makes the workspace unavailable immediately, cancels planned Runs, and targets verified product-visible cleanup within 24 hours. A minimal no-content receipt is retained for one year. There is no grace period or recovery window. | Open/live Runs and active supported legal holds block confirmation. Export is offered but failure or non-download does not delay deletion. Product completion and processor-backup deletion are separate states; backup verification follows provider operations and evidence. |
| Auth0 identity | Provider-side identity, Auth0 login/session metadata, and upstream identity-provider session data where applicable. | Auth0 and any upstream identity provider systems. | Manual deletion boundary: deleting the local Discera account does not automatically delete the Auth0-side identity. Email privacy@consensus.dk for operator-handled Auth0 identity deletion. | Retention follows Auth0 and upstream identity-provider configuration and processor terms. |
| Diagnostics and analytics | Essential error and canonical route diagnostics, memory-only pseudonymous diagnostics identifiers, request identifiers, optional PostHog product events without internal Run or gameplay-session identifiers, bounded sanitized failure details, consented session replay, signed-in account attribution, historical first-party commercial-prompt attribution with account and Event/Workspace/Run/Activity/version provenance, and public FAQ questions, generated manual answers, and cited manual concept keys. Historical commercial attribution contains aggregate content counts and feature-use flags, never participant identity or participant content. | App telemetry, Convex attribution, and configured PostHog. | Essential diagnostics are typically retained for up to 90 days. Consent-gated PostHog analytics and session replay are typically retained for up to 12 months. First-party commercial attribution is deleted with its retained Run or local host account, whichever occurs first. Public FAQ question records are eligible for deletion 90 days after they are asked and are removed by the next successful daily cleanup; OpenAI, Vercel, and other provider or log retention follows their separate terms. | Essential diagnostics are used to keep live Runs reliable. Optional analytics and session replay run only after analytics consent. For signed-in hosts who accepted analytics, deleting the local Discera account does not automatically remove the PostHog person profile or consented product-event history linked to the account. Any consented session replays are retained separately and are not removed by local account deletion. PostHog analytics and session replays are typically retained for up to 12 months. Email privacy@consensus.dk to request operator-handled removal of the PostHog person profile, associated events, and session replays. Public FAQ question records have no structured account or workspace reference, but free text can identify the visitor. Retained first-party commercial attribution was likewise created only after analytics consent; no new attribution is written. Direct Run provenance stays first-party and is not sent in typed PostHog events. |
| Security and abuse-control records | Pseudonymous AI authoring caller keys, rate-limit counters, violation history, and temporary lockout state. | Server-retained Convex rate-limit data. | Rows become eligible for cleanup after one hour without an update. Cleanup runs daily, so a row can remain for up to about 25 hours after its last update. | The AI caller key is derived from the client address and changes at each UTC day boundary; Convex does not receive or store the raw address. |
| External processors | Vercel, Convex, Auth0, PostHog, Stripe, Microsoft Teams Workflow, OpenAI, Context.dev, Nominatim/OpenStreetMap, CARTO, YouTube, and Vimeo. | Third-party processor systems used for infrastructure, authentication, diagnostics/analytics, commerce, host-configured workflow delivery, AI/enrichment, maps, and embedded media. | Retention follows each processor's terms, configuration, and feature-specific setup. The Stripe-side customer record and retained commerce evidence survive local account deletion under the commerce retention lifecycle. Cards already delivered to Microsoft Teams are recipient-controlled; when existing permissions cannot remove an affected recap card, Discera records an owner follow-up requirement. | Discera does not promise data residency, vendor no-retention, DPA coverage, SOC 2, ISO, or similar enterprise commitments unless those terms are separately documented. |
Finished and cancelled Runs, cleanup-covered live-Run records such as rounds, player nicknames and answers, and Run-owned uploaded assets are retained through the approved 1, 7, 30, 90, or 365-day attached Event override, workspace default, or organization default, with unmanaged workspaces falling back to 30 days when none is configured. Backend expiry jobs then clean up the Run. Signed-in host account data remains until you delete the account or ask us to remove it. Browser storage entries listed below remain on your device until you clear them or until the listed expiry passes.
Host account export and deletion
Signed-in hosts can open Account to download a JSON export of their local Discera account data, including account profile fields, saved templates, custom themes, upload metadata, and retained Run metadata.
The same page can delete the local Discera account data stored in Convex: the account row, Convex Auth rows and sessions, saved Activities, templates, custom themes, and unreferenced uploads. Runs created by the host are kept until the normal Run-retention expiry, but the deleted account link is removed from those Run rows. The deletion flow can sign the browser out of Auth0 when Auth0 logout is configured, but Auth0 identity deletion is handled manually by an operator. For signed-in hosts who accepted analytics, deleting the local Discera account does not automatically remove the PostHog person profile or consented product-event history linked to the account. Any consented session replays are retained separately and are not removed by local account deletion. PostHog analytics and session replays are typically retained for up to 12 months. Account deletion detaches local identity from retained commerce evidence and schedules a current Host Pro subscription to cancel at the end of the paid period, but the Stripe-side customer record is retained under the commerce retention lifecycle. Microsoft Teams Workflow cards already delivered to a host-configured destination remain there and cannot be recalled by Discera. Email privacy@consensus.dk if you also want the Auth0-side identity removed or to request operator-handled removal of the PostHog person profile, associated events, and session replays.
Export, deletion, and sign-out act only on the regional Discera application (EU or US) you are signed in to, and the account settings page names that region. An export contains only that region's data. Deleting an account in one region leaves an account in the other region untouched, including its workspace access and sign-in session, even when both use the same email address. Signing out of one region does not sign you out of the other. To export or delete data in both regions, sign in to each regional application and repeat the action there.
Cookies and browser storage
The app uses your browser's local storage, session storage, and cookies. Nothing here is used for advertising.
Consent
analytics_consentlocalStorage + cookie- Records your "Accept analytics" or "Only essential" choice. You can change it at any time in the Privacy page analytics preferences. The cookie expires after 1 year; the localStorage entry persists until you change or clear it.
analytics_consent_deniedsessionStorage fallback- Temporary fail-closed withdrawal marker used when localStorage and the consent cookie cannot both persist a denial. It lasts for the current tab session and is removed after the localStorage entry and cookie are repaired, once sessionStorage is available.
Analytics and diagnostics
discera_observability_browser_session_idlocalStorage- Persistent browser session identifier for PostHog context. Essential diagnostics use an in-memory browser session identifier when PostHog is configured; this localStorage copy is written only when you have accepted analytics.
ph_<PostHog project key>_posthoglocalStorage + sessionStorage- PostHog SDK persistence for consented product analytics and session replay in localStorage, plus consented session context in sessionStorage, including signed-in account attribution when analytics are accepted. Essential diagnostics use memory-only PostHog and browser-session identities. The exact key includes the configured public PostHog project key.
__ph_opt_in_out_<PostHog project key>localStorage- PostHog SDK opt-in / opt-out state for analytics capture.
ph_<PostHog project key>_window_idsessionStorage- PostHog SDK tab identifier used by consented analytics to separate browser windows.
ph_<PostHog project key>_primary_window_existssessionStorage- PostHog SDK tab lifecycle flag used by consented analytics and cleared as the page unloads.
Host
discera_hasCreatedLobbylocalStorage- Onboarding flag noting that you have created a lobby.
discera_onboardingDismissallocalStorage + sessionStorage fallback- Records the onboarding version and dismissal time when you skip or move past the first-run setup intro so it is not shown again.
discera_create_draft:account:<account ID> / discera_create_draft:anonymouslocalStorage- Auto-saved draft of a quiz you are currently editing. Signed-in drafts are scoped to the account; anonymous drafts stay in a separate browser bucket and are not transferred on sign-in.
discera_hostCredentialslocalStorage- Client-readable host credentials that let you reclaim a hosted Run after a reload or browser restart. Server-side copies are stored only as hashes.
discera_sessionIdlocalStorage- Stable browser session identifier used by the app.
discera_finalRevealPacing_v1localStorage- Your preferred pacing for the final reveal animation.
discera_soundMutedlocalStorage- Whether you have muted Run sound effects.
discera_hostTransferSecret:*sessionStorage- Short-lived host-transfer secret for this tab when sessionStorage is available.
discera_hostTransferSecretshistory.state fallback- Fallback map of host-transfer secrets kept in the current tab history entry when sessionStorage cannot be written.
disceraAuth0HandoffAttempthistory.state- Boolean marker recording an automatic Auth0 handoff on the current login history entry so returning or cancelling does not create a redirect loop.
discera_accountSwitchNextsessionStorage- Same-origin login destination kept in this tab while Auth0 clears its session. It may contain an email-bound invitation token and remains until a successful fresh-authentication handoff consumes it, the switch is cancelled, or the tab session ends.
discera_hostRecoveryAttempt:*:*sessionStorage- Tracks an in-flight host recovery attempt. The key includes the join code and host recovery secret; the value is the retry attempt ID.
discera_hostRecoveryAttemptshistory.state fallback- Fallback map of host recovery attempt IDs kept in the current tab history entry when sessionStorage cannot be written. Map keys include the join code and host recovery secret.
discera_hostEliminationBaseline:*sessionStorage- Host-console snapshot used to show how many players were eliminated in the current round.
discera_hostSpeakerNotesVisibility:*sessionStorage- Per-Run host-console preference for showing or hiding speaker notes in this tab.
Player
discera_playerSoundMutedlocalStorage- Whether personal sounds are muted on this device.
discera_joinPreferences_v1localStorage- Your saved nickname and avatar choices for joining Runs.
discera_playerJoinRouteNotice_v1sessionStorage- Pending tab-scoped notice about a join preference storage save/clear failure, including the failure reason; removed after it is shown.
discera_offlineAutoRetrysessionStorage- Short-lived retry guard containing the current route/query and retry timestamp to avoid repeated auto-retries after reconnecting.
discera_playerEliminationRecap:*sessionStorage- Tab-scoped flag noting that a player has already seen their elimination recap for a round.
Integrations
discera_powerpointLinkAttempt:*sessionStorage- Tab-scoped retry ID and original SHA-256 deck fingerprint for an in-flight PowerPoint link or fork request. Reusing the payload prevents a network retry from creating duplicate links; it is removed after the operation is reconciled.
discera_teamsWorkflowAttempt:*:*sessionStorage- Tab-scoped Microsoft Teams delivery request ID, approved-preview digest, and signed completion-recovery token. It prevents a normal retry from reposting an uncertain card. An explicit resend replaces the original recovery entry with the resend attempt; the entry is removed after terminal reconciliation.
Preview
discera_preview_datasessionStorage- Quiz data used while previewing a draft, scoped to the preview tab. Includes an account-scoped identity marker so preview data is restored only for the matching signed-in account or anonymous browser bucket.
sessionStorage entries are cleared when you close the tab. localStorage entries persist until you clear them in your browser. The history.state fallback entries live in the current tab history entry and are removed after transfer recovery.
Your rights
Under the GDPR you have the right to access, rectify, or delete personal data we hold about you, to restrict or object to processing, and to data portability. Signed-in hosts can export or delete local Discera account data from the account page.
The participant access, export, and erasure workflow applies only when a participant is linked by email to a private Audience roster. An authorized workspace or organization controller verifies that participant outside Discera, then can search the roster and Run links, download complete JSON and CSV records, or start erasure. Run records are included only where the host explicitly linked the roster entry to that participant's player record during the Run. Erasure removes covered active Discera product identifiers, metadata, responses, uploads, and standings. Before completion, Discera invalidates older workspace export jobs and packages that could contain the participant, deletes their server-held packages, and revokes their download handles. A later workspace export is generated from the post-erasure canonical state. The retained receipt and any aggregates do not identify the participant. A legal hold suspends erasure until released.
Product-level erasure completion does not claim that processor backups have already been purged; those copies follow separately disclosed processor-backup windows. Files a controller already downloaded have left Discera's control and follow the controller's retention policy. Discera removes identity-linked names from hosted recaps in place when the disclosed participant can be identified safely. Older identity-bearing recaps that cannot be mapped safely are revoked instead. A recap card already delivered to Microsoft Teams is recipient-controlled: when existing permissions cannot remove it, Discera records a follow-up requirement so the workspace owner can remove the card or notify the recipient.
If you joined with only a nickname and were not linked to a roster email, the controller workflow cannot find, export, or erase your records. Your Run-scoped data instead remains until the Run expires: its recorded policy uses an approved Event, workspace, or organization window, with a 30-day system fallback. Contacting the host can identify the relevant Run and controller, but it does not create an individual erasure path. A host can end or cancel an ongoing Run, which starts ordinary retention; current host controls cannot immediately delete a retained Run or shorten an expiry already recorded when a Run finished or was cancelled.
To exercise rights that need operator handling, including Auth0 identity deletion, email privacy@consensus.dk. You can also lodge a complaint with the Danish Data Protection Authority (Datatilsynet) at datatilsynet.dk.
Changes to this page
If we change how we collect or use data, we will update this page and bump the “Last updated” date above.