Skip to content

Data Classification Policy

Defines classification levels for Meridian Seven information assets and the handling requirements for each level.

All data created, received, maintained, or transmitted by Meridian Seven, regardless of format or storage location.

LevelDefinitionExamples
PublicIntended for public distribution; no harm if disclosedMarketing materials, public docs, open-source code, job postings, status page
InternalFor use within Meridian Seven; not sensitive but not for external distributionPolicies, engineering docs, meeting notes, GitHub issues, training materials
ConfidentialSensitive business or customer information; unauthorized disclosure could harm Meridian Seven or customersCustomer data, financial records, employee PII, vendor contracts, audit reports, security assessments
RestrictedHighly sensitive; unauthorized disclosure could cause severe harm; named-individual access onlyCredentials, API keys, encryption keys, DB connection strings, security incident details under investigation, SOC 2 working papers

When in doubt, classify at the higher level.

LevelRequirements
PublicNo special requirements
InternalAuthorized company systems only (GitHub, Slack, approved SaaS). No public-facing storage.
ConfidentialEncrypted at rest (AES-256). Access restricted to authorized personnel. Stored in approved systems with audit logging. BYOD endpoints may access Confidential data via approved applications; local caching for offline work is permitted only in approved apps. See BYOD Endpoint Security Policy.
RestrictedEncrypted at rest (AES-256-GCM where supported; AES-256 minimum). Designated secure systems only (Doppler, 1Password, Supabase with RLS). Named-individual access. Dedicated key management required.
LevelRequirements
PublicNo special requirements
InternalTLS 1.2+. Do not post in public channels.
ConfidentialTLS 1.2+ required. Do not transmit via unencrypted email or unapproved file sharing.
RestrictedTLS 1.2+ required. Share only via approved secure channels (1Password secure sharing, Doppler). Never transmit via email, Slack, or any system with accessible message history.
LevelRequirements
PublicUnrestricted
InternalAuthenticated Meridian Seven employees and authorized contractors
ConfidentialRole-based access with business justification. Logged and reviewed monthly.
RestrictedNamed individuals only with explicit CISO or CTO approval. Access logged, alerted on, and reviewed monthly. MFA required.
LevelRequirements
PublicStandard deletion
InternalStandard deletion from all known locations
ConfidentialSecure deletion from all storage locations. Verify deletion from cloud services. Request vendor deletion confirmation where applicable.
RestrictedCryptographic erasure or secure wipe. Written confirmation of destruction. Maintain destruction log.

All external communications use TLS 1.2 or higher:

System / ChannelEnforcement Mechanism
Cloudflare (public domains)HTTPS enforced; SSL strict mode
SupabaseSSL required at connection string level
GCP Cloud Run, GitHubHTTPS by default; no plain HTTP endpoints in production
Doppler CLIAll secret retrieval over TLS
All API integrationsHTTPS-only; no HTTP integrations permitted

Google Workspace enforces opportunistic TLS for email in transit. Confidential or Restricted information must not be transmitted via email — use approved channels in section 4.2.

All data movement is via:

MethodUse Case
Git over HTTPS or SSHCode and policy documents
HTTPS API callsSystem integrations and automation
Doppler (encrypted)Secret distribution to services
Backblaze B2 over HTTPSBackup storage
1Password secure sharingCredential sharing between personnel
ControlMechanism
Secret scanningEnabled on all Meridian7-io GitHub repositories; blocks commits containing credential patterns
Claude Security ReviewAutomated PR review scans for sensitive data patterns before merge
Doppler as single source of truthSecrets never committed to code; enforced by secret scanning and policy
1Password for credential sharingCredentials shared via 1Password secure links, not email or Slack

Removable media (USB drives, external hard drives, SD cards) is prohibited for business data. Confidential or Restricted data must not be transferred to any removable or portable storage medium.

All production system access occurs through web consoles or HTTPS APIs. No SSH-accessible production servers. Google Workspace enforces 2FA; all system consoles require MFA per the Access Control Policy. No direct database connections from developer workstations to production.

  • Label documents and data stores with their classification level where practical
  • Evidence files: include classification in document header or filename prefix
  • Source code repositories: classification noted in README
  • Databases: classification documented in schema documentation
  • Update labels if sensitivity changes
Data TypeClassificationRetention Period
Customer data (active accounts)ConfidentialDuration of relationship + 90 days
Customer data (churned accounts)ConfidentialSecure deletion within 30 days of written request; automatic deletion 90 days after account closure
Agent session logsConfidential12 months
Application logsInternal90 days
Financial recordsConfidential7 years
Employee recordsConfidentialEmployment duration + 3 years
Security incident recordsConfidential3 years
Audit evidenceInternal / Confidential3 years
Credentials and keysRestrictedRotate per Access Control Policy; no retention of expired credentials
BackupsPer source classificationPer Backup and Recovery Policy
  • All customer data is Confidential at minimum
  • Customer data containing credentials, payment information, or security-sensitive content is Restricted
  • Customer data must not be used beyond the contracted service without explicit consent
  • No customer data is shared with third parties without explicit written consent. Vendors processing data on behalf of Meridian Seven or its customers must have a Data Processing Agreement (DPA) in place prior to any data access.
  • Customer data deleted within 30 days of written request. Upon receiving a written deletion request, all customer data — including database records, knowledge graph entities, vector embeddings, and backup copies within the retention window — is permanently removed and deletion confirmation is provided to the requesting party.
  • Sensitive credentials stored within the platform (API keys, connection tokens) are encrypted with AES-256-GCM and managed exclusively through Doppler, a dedicated secrets management platform. Credentials are never stored in source code, environment files, or application configuration.

Customer data is isolated per organization using a shared schema with organization scoping model in PostgreSQL (Supabase):

LayerMechanismEnforced By
Column-level scopingAll tenant tables include an org_id column; queries are scoped to the current organizationApplication context (withOrgContext(orgId, cb)) enforces org routing
Auth enforcementSupabase Auth JWT with custom_access_token_hook injects org_ids and org_roles into JWT; validated on every API callBFF middleware (withAuth()) on every API route
RLS — tenant dataRLS enabled on all tenant tables; policies use current_setting('app.current_org_id') to enforce row-level accessPolicy applied per-connection via application context
RLS — platform dataRLS enabled on shared tables (platform.organizations, platform.org_memberships); service_all + member-scoped policiesDrizzle migrations
Direct DB accessNo direct database connections from developer workstations to production (see §5.6)Policy + no SSH access to production servers

Tenant isolation guarantee: All customer sales data is subject to PostgreSQL Row-Level Security enforcement at the database engine level. Tenant isolation is not dependent on application logic; the database enforces that authenticated client operations can only access data belonging to the requesting organization. No client-initiated query path is capable of returning, modifying, or deleting another organization’s records. Supabase’s service_role does NOT have BYPASSRLS — every query, including server-side operations, is filtered by the RLS policy.

Note on service_role access: The service_role key is used server-side only (BFF and agent service) and is stored in Doppler, never exposed to clients. While the service_role has broader query capabilities, RLS policies still enforce org_id filtering on every operation. The application sets app.current_org_id per-transaction, and the database engine guarantees isolation regardless of application behavior. This design decision is documented in the accepted risk register (automation/config/accepted-risks.yaml).

Nightly verification: The SOC2 automation (make verify) checks nightly that:

  • RLS is enabled on all tenant and platform schema tables
  • RLS policies correctly enforce org_id scoping
  • The anon role has no policies granting access to any customer data table
RoleResponsibility
CISOMaintains policy; conducts classification reviews; approves Restricted access
Founder / Data OwnerClassifies data within their domain; approves Confidential access requests; stewards data governance decisions
EngineersApply classification-appropriate controls in system design and implementation
All PersonnelHandle data per classification; report misclassification or improper handling

Mishandling classified data is a policy violation subject to disciplinary actions in the Information Security Policy. Incidents involving Confidential or Restricted data must be reported to the CISO immediately and may trigger the Incident Response Plan.

  • Information Security Policy
  • Access Control Policy
  • BYOD Endpoint Security Policy
  • Segregation of Duties Matrix
  • Vendor Management Policy
  • Backup and Recovery Policy
  • Incident Response Plan

Meridian Seven — Confidential