Compliance hub

Lumi's privacy and security posture for parents, schools, and auditors. Last reviewed 2026-05-14.

COPPA-compliant
No advertising
No child data for AI training
No data sales
Encrypted in transit + at rest
Parent-owned data
One-click delete
No third-party trackers on /play

Standards & frameworks

  • COPPA + 2025 FTC Amended Rulecompliant
  • California AB 1394 (Online Privacy Rights for Children)compliant
  • California Privacy Rights Act (CPRA)compliant
  • New York SAFE for Kids Actcompliant
  • GDPR Article 8 (EU child consent)honored
  • FERPAreadiness mode
  • SOC 2 Type IIroadmap (Phase 3)
  • kidSAFE+ COPPA Safe Harborapplication planned Phase 2

Data inventory

TableFieldPurposeRetentionAccessed by
parentsemailAccount identity, email contactAccount lifeGoogle (OAuth), Resend
parentsnameGreeting in emails + dashboardAccount life
parentsgoogle_subOAuth account bindingAccount lifeGoogle (OAuth)
childrenfirst_namePersonalize tutor voiceAccount lifeAnthropic
childrenagePace tutor to age-appropriate vocabularyAccount lifeAnthropic
childrendob_yearBirth year only — used to track grade-band progressionAccount life
childreninterestsPersonalize examples Lumi usesAccount lifeAnthropic
childrenvoice_idWhich ElevenLabs voice to useAccount lifeElevenLabs
consentspolicy_version + tos_versionAudit trail of which version the parent accepted7y audit
consentsip_hashSHA-256 hash only — used for fraud prevention7y audit
consentsuser_agentAudit trail device context7y audit
attemptsskill_code + task_type + is_correct + reaction_msAdaptive pacing engine, parent dashboard statsAccount life
attemptsprompt_payload + response_payload (raw)Detailed analysis during debugging90d → aggregate
mastery_statetrials, correct, stable_mastery, median_rt_ms, confusion_partnersDrives pacing decisions and parent dashboardAccount life
tutor_memoriescontent (text)Longitudinal memory — Lumi greets the child tomorrow and references yesterday's workAccount lifeAnthropic
audio_assetsblob_url + text_hash + voice_id + modelCache pre-rendered audio. Filenames are content-addressed by hash — no child identifiers.180d unusedVercel Blob
eventskind + payloadInternal debugging logs30d
data_requestskind + status + timestampsAudit trail for export/delete requests7y audit

Sub-processors

Anthropic, PBCpolicy ↗
Tutor model inference (Claude)
Receives: redacted student_state (first name, age, interests, recent task outcomes, confusion partners); recent tutor memory summaries (text only)
Certifications: SOC 2 Type II
Last reviewed 2026-05-14
ElevenLabs Inc.policy ↗
Text-to-speech synthesis
Receives: tutor utterance text; voice ID
Certifications: SOC 2
Last reviewed 2026-05-14
Neon, Inc.policy ↗
Managed Postgres hosting
Receives: all application data, encrypted at rest
Certifications: SOC 2 Type II, ISO 27001
Last reviewed 2026-05-14
Vercel, Inc.policy ↗
Application hosting + Blob storage of pre-generated audio
Receives: HTTP requests + logs (PII-scrubbed); audio files keyed by sha256 hash (no child identifiers in filenames)
Certifications: SOC 2 Type II, ISO 27001
Last reviewed 2026-05-14
Google LLCpolicy ↗
OAuth identity provider for parent sign-in only
Receives: parent email; Google subject identifier (sub)
Certifications: SOC 2, ISO 27001
Last reviewed 2026-05-14
Resend, Inc.policy ↗
Transactional email (consent receipts, weekly summaries, deletion confirmations)
Receives: parent email address; summary content
Last reviewed 2026-05-14
PostHog, Inc.policy ↗
Product analytics on PARENT routes only (never on /play)
Receives: parent page views; parent action events from an allow-list
Certifications: SOC 2 Type II
Last reviewed 2026-05-14
Sentry (Functional Software, Inc.)policy ↗
Error monitoring with PII allow-list scrubber
Receives: application errors with PII stripped by allow-list
Certifications: SOC 2 Type II, ISO 27001
Last reviewed 2026-05-14

Security practices

  • TLS 1.2+ in transit, AES-256 at rest (Neon, Vercel defaults)
  • Least-privilege database roles; no admin keys in client code
  • Vercel envs for secret management; CI never echoes secrets
  • Dependabot + npm audit on every push
  • Sentry PII allow-list scrubber on errors
  • PostHog disabled on /play; never loaded for child sessions
  • Designated security coordinator: founder
  • Annual third-party risk review
  • Breach notification within 72 hours where required

AI safety

  • Locked tutor persona constraints: ≤12 words per utterance, no jargon, no shame, no claimed emotions.
  • Automated filters on tutor output (length, jargon, shame language).
  • No model training on child data — contractual with Anthropic, technical via zero-retention API headers where supported.
  • Microphone disabled in Phase 1. No voice recordings are captured or transmitted.

Vulnerability reporting

Email security@lumikids.dev. Safe harbor for good-faith security research; 90-day disclosure window.

Retention enforcement

  • attempts.prompt_payload / response_payload: 90 daysredact to aggregate counters; keep is_correct + reaction_ms
  • audio_assets (unused): 180 daysdelete from Blob; remove row
  • events: 30 daysdelete row
  • mastery_state + tutor_memories: account liferetain until deletion request
  • On account deletion: ≤30 dayshard-delete everything; retain audit record 7y

Enforced by daily cron /api/cron/retention-purge.