DEVAI SUITE

DevAI Suite — Security White Paper

Version 1.1 — October 2026 Classification: Public · safe to share with prospects, customers, and auditors.


Executive Summary

DevAI Suite is the first Manufacturing-as-a-Service (MaaS) platform — a unified APQP programme management, supplier excellence, and smart factory intelligence environment for automotive and aerospace manufacturers. The platform handles regulated manufacturing data (PPAP submissions, FMEA workbooks, supplier qualifications, plant telemetry) for customers operating under IATF 16949 and AS9100 / AS9145.

This white paper documents how DevAI Suite is designed and operated to protect that data. It is structured around the NIST Cybersecurity Framework 2.0 (Govern, Identify, Protect, Detect, Respond, Recover) and maps each function to specific controls, technologies, and operational practices. Where certifications are pending, we say so honestly with a defensible audit timeline rather than overclaim.

The intended audience is enterprise security review teams, vendor risk-management functions, and procurement officers performing due diligence ahead of contract signature.

Posture Status
Multi-tenant isolation PostgreSQL Row-Level Security on every customer table
Encryption in transit TLS 1.2+, HSTS with includeSubDomains, AEAD ciphers only
Encryption at rest Cloud volume-level + envelope encryption for sensitive credentials
Authentication PBKDF2-HMAC-SHA256 passwords (bcrypt verified for legacy accounts), Google + Microsoft Entra ID SSO, TOTP MFA
Audit logging Append-only per-org log of security-relevant events
GDPR / CCPA Compliant; DPA available; DSR pipeline live
SOC 2 Type II In progress (observation H2 2026, audit Q4 2026)
ISO/IEC 27001:2022 Planned (certification audit H1 2027)
Disaster recovery Documented runbook, 30-min RTO target, 24-hour point-in-time history + nightly independent dump and nightly document snapshots; point-in-time restore rehearsed on staging, monthly automated restore drill in place (§6.4)

1. Govern — Security Program & Accountability

1.1 Security ownership

A named security lead reports to the founder/CEO and owns:

The platform-admin role is bound to a specific user account via the is_platform_admin flag (replacing the deprecated email-comparison check); privilege derives from the database row, not from email. In production the role is covered by MFA through the MFA requirement of DevAI's own organisation; that is an organisation setting, not a rule fixed to the role in code.

1.2 Policies in force

Policy Scope Review cadence
Information Security Policy Organisation-wide Annual
Acceptable Use Policy Personnel Annual
Access Control Policy Engineering + ops Annual
Vendor Management Policy Procurement Annual
Incident Response Plan Engineering + leadership Annual + post-incident
Disaster Recovery Plan Engineering Annual; restore tests per §6.4
Secure Development Lifecycle Engineering Annual
Data Retention & Deletion Policy Organisation-wide Annual
Cryptographic Key Management Engineering Annual
Change Management Engineering Annual

Policies are kept under version control and reviewed by the security lead before each release cycle. Customer-eligible excerpts are available under NDA.

1.3 Personnel security

1.4 Compliance & certification roadmap

Standard Status Target
GDPR (EU 2016/679) Compliant Continuous
CCPA / CPRA Compliant Continuous
SOC 2 Type II Observation period H2 2026; audit Q4 2026 Report by Q1 2027
ISO/IEC 27001:2022 ISMS scoping H2 2026 Certification H1 2027
ISO/IEC 27701 Bundled with 27001 H2 2027
IEC 62443 (industrial) Roadmap On enterprise demand

For the audit firms engaged, control narratives, and pre-audit evidence packages, contact admin@devaisuite.com.


2. Identify — Asset Management & Risk

2.1 Asset inventory

The platform's asset surface is bounded and inventoried:

The public subprocessor list, with the purpose, the data involved and the processing region of each provider, is at /subprocessor-list.html; §7.2 carries the same list.

2.2 Data classification

Class Examples Handling
Public Marketing pages, security white paper No restriction
Internal Source code, internal runbooks Access-controlled, not customer-visible
Customer Confidential APQP projects, FMEA, PPAP, supplier records, uploaded documents, AI prompts/responses RLS-isolated; encryption at rest; access-logged
Regulated PII Customer email, name, address (where collected), auth credentials Same as above + dedicated PII handling per §3.4
Secrets API keys, encryption keys, OAuth client secrets Fly Secrets store; envelope encryption for stored credentials; never in code or logs

2.3 Risk management

Material risks are tracked in an internal risk register reviewed quarterly. Top items as of 2026-Q2:

2.4 Threat model

The platform is threat-modelled against:

Mitigations are described in the relevant sections below.


3. Protect — Controls

3.1 Multi-tenancy & data isolation

Every customer's data lives in a single shared PostgreSQL database, isolated by PostgreSQL Row-Level Security. Every table that holds customer data has an RLS policy keyed to the request's tenant context. The application layer sets the tenant on every database session through the request authentication middleware:

ALTER TABLE deliverables ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON deliverables
  USING (org_id = current_setting('app.current_org_id', true)::int);

A request that leaks tenant context (even via an internal application bug) cannot read or write rows belonging to another tenant — the database refuses. Cross-tenant SELECTs return zero rows by design.

RLS is not merely enabled — it is FORCED (ALTER TABLE … FORCE ROW LEVEL SECURITY), and the application's database role is explicitly NOBYPASSRLS. That means no code path running with application credentials can opt out of tenant isolation: even privileged maintenance operations are subject to it. This is enforced in practice, not just in configuration — our own automated database backups cannot run under application credentials: pg_dump refuses to export RLS-forced tables for a role that cannot bypass RLS (verified in CI on 2026-07-23), so backups run under a separately controlled, provider-managed owner role that never serves application traffic.

Fail-closed by construction. When tenant context is missing or mis-bound, the observable failure is denial (empty result sets, HTTP 403), never cross-tenant exposure. Production incidents in this class have exclusively manifested as functionality being unavailable to the legitimate tenant — the database's default answer to an unbound tenant is zero rows.

The app.db.tenant.set_tenant_context helper is the single seam through which tenant context is applied; it is exercised on every request that resolves a user, before any business logic runs. A CI job (rls-postgres-pr) exercises the RLS posture against real PostgreSQL on every pull request.

3.2 Per-tenant document storage

RAG documents live in Cloudflare R2 with object keys prefixed by org_id. Reads are scoped by the same tenant context, with a server-side check before any presigned-URL issuance.

Embeddings (1024-dim, Cloudflare Workers AI @cf/baai/bge-m3) are stored in pgvector tables that carry an org_id column under the same RLS policy as the source documents.

3.3 Encryption

In transit. TLS 1.2+ on all customer-facing endpoints. Strong cipher suites only (AES-GCM, ChaCha20-Poly1305). HSTS is enforced with max-age=31536000; includeSubDomains. The preload directive is intentionally omitted until every subdomain meets the eligibility criteria. X-Frame-Options is DENY and X-Content-Type-Options is nosniff on every response.

At rest. Postgres data is encrypted at rest by Neon's storage layer. Cloudflare R2 encrypts at rest by default (AES-256). Sensitive integration credentials stored in integration_connectors.credentials_json are envelope-encrypted with a per-deployment Fernet key (DEVAI_CREDENTIALS_ENCRYPTION_KEY); the key is rotated on a documented cadence and never leaves the secret store.

Key management. Application keys (JWT signing, Fernet, OAuth client secrets, third-party API keys) are stored in Fly Secrets, surfaced to the running process at boot, and never persisted to disk. Key rotation procedures are documented per provider in docs/runbooks/disaster-recovery.md §3.

3.4 Authentication & access control

Identity options:

Multi-factor authentication. TOTP-based with single-use backup codes, set by each organisation's policy. DevAI's own organisation requires it, which is how the platform-admin role is covered in production. The MFA enforcement check runs in the auth dependency on every protected request; users with MFA enabled but unverified can only reach the /auth/mfa/verify and /auth/mfa/status endpoints until they verify.

Role-based authorization. Every protected route calls ensure_permission(db, user, resource_type, action, org_id) which checks the user's role-permission grant against the requested action. Decisions are recorded to an append-only policy_decisions audit table.

Session tokens. JWTs with an 8-hour lifetime by default, refreshable up to an absolute session lifetime of 30 days. The token is held in an HttpOnly; Secure; SameSite=Strict cookie that scripts in the page cannot read; it is not kept in localStorage. Signing out ends the session on the server. A password change or reset, switching MFA off or changing the account's e-mail address ends that account's other sessions, and a user can sign out of every device at once.

CAPTCHA. Cloudflare Turnstile gates registration, login, password-reset, MFA enrollment, and the public demo sandbox provisioning route. The server-side verify_turnstile_token helper logs Cloudflare's error-codes field on failure for diagnosis.

Rate limiting. A Redis-backed middleware enforces per-endpoint per-IP limits — sign-in, registration, password and MFA endpoints capped at 10 requests/minute, AI Coordinator feedback at 30/minute, default at 100/minute. When Redis is unreachable the sign-in routes stay limited by a counter held in each API process, at half the usual budget; every other route fails open (availability over rigid limits), and each such request is counted and the outage logged as an error.

3.5 Application security

3.6 LLM-specific protections

The platform sends AI work to Together AI (default inference, image understanding and speech-to-text), the embedding provider (Cloudflare Workers AI, §7.2) for document embeddings and, when web search is configured, Tavily (the search queries the assistant writes). RunPod serves DevAI's own model: with its credentials configured it is the outage fallback for turns that need no tool call, and it becomes the first choice for in-domain skills only when own-model routing is switched on, which is off by default. Anthropic and OpenAI are break-glass only, unreachable unless an operator switches on the emergency setting (off by default) or selects one of them as the model provider. Specific risks:

3.7 Secrets management

Surface Storage Rotation
Application secrets (JWT, Fernet, API keys) Fly Secrets Per provider — see docs/runbooks/disaster-recovery.md §3
Customer integration credentials (Salesforce, SAP, etc.) Envelope-encrypted in integration_connectors.credentials_json; the key is in Fly Secrets Customer-driven
OAuth client secrets Fly Secrets Annual or post-incident
Third-party API keys (Together, Anthropic, OpenAI, etc.) Fly Secrets Per provider; documented in DR runbook

No secret is ever committed to source control; pre-commit hooks and CI scan for accidental commits.


4. Detect — Monitoring & Audit

4.1 Application logging

Structured JSON logs are emitted for every request and security-relevant event. PII scrubbing is applied at the logging filter (app.core.logging_filters.PIIScrubFilter) before logs leave the application; emails, IP addresses, and other identifiers are redacted in non-debug environments.

4.2 Audit trail

A dedicated org_security_audits append-only table records security-relevant events scoped by org:

Customer admins can request export of their org's audit history via the DSR pipeline. Retention is 7 years for regulated artifacts, 1 year for general events, configurable per-customer in the DPA.

4.3 Error tracking

Sentry captures application exceptions with the FastAPI integration (transactions tagged by endpoint), the SQLAlchemy integration (slow-query detection), and the PII scrubbing filter applied at the logging layer. Profiling sample rate is set to 1% of traced transactions to balance cost and signal.

4.4 Infrastructure monitoring

Fly's automated health checking polls the liveness probe (/livez). The readiness probe (/readyz) pings the database (hard dependency) and Redis (soft, fail-open); it is used for deploy verification and incident triage, and every deploy also proves database reachability by running the schema migrations before any machine is replaced. An external monitor on Cloudflare, outside our own infrastructure, checks the web app, the API and the website every minute and the readiness probe twice an hour, and publishes the result on the public status page, https://status.devaisuite.com (English and Spanish, with a machine-readable feed); an outage it sees opens an incident there automatically.

4.5 Anomaly detection

Rate-limit middleware emits standard X-RateLimit-{Limit,Remaining,Reset} headers and logs anomalies (sudden spikes from a single IP) for review. Integration with a SIEM is on the roadmap once SOC 2 Type II is signed.


5. Respond — Incident Response

5.1 Incident classification

Severity Examples Response
P0 Confirmed data breach; full platform outage > 30 min On-call alerted (automatically by the monitor for an outage it can see); status page update within 15 min (automatic within about 3 minutes for a monitored outage); war-room
P1 Partial outage; non-data-affecting security event On-call alerted; status page update within 30 min
P2 Service degradation; suspicious activity under investigation Triage during business hours
P3 Reported vulnerability under triage; no active exploit Acknowledged within 48h

5.2 First-30-minute checklist

A paste-ready operator checklist lives in docs/runbooks/disaster-recovery.md §0:

  1. Confirm impact via /readyz.
  2. Probe Fly machine status and recent logs.
  3. Triage the failure class (DB / Redis / app bug / Fly infra).
  4. Post status page update before fixing — sets customer expectations.
  5. Mitigate per the relevant runbook section.
  6. Communicate to affected tenants directly.

5.3 Customer notification

Where legally required for personal-data breaches under GDPR Article 33, customer notification is targeted within 72 hours of confirmed awareness. The notification includes the nature of the breach, categories and approximate number of data subjects, likely consequences, and the measures taken or proposed to address it.

5.4 Post-incident review

A blameless post-mortem is written within 5 business days for every P0 and P1 incident, capturing the timeline, root cause, contributing factors, and concrete follow-ups. Post-mortems are filed internally and shared with affected customers under NDA.

5.5 Vulnerability disclosure

We publish a security.txt at /.well-known/security.txt with the report contact, admin@devaisuite.com. We acknowledge a report within 48 hours and agree a publication date with the reporter, normally once the fix is live and at most 90 days after the report. Researchers who follow our testing rules in good faith are not subject to legal action under our safe-harbor language.


6. Recover — Disaster Recovery & Continuity

6.1 Backup posture

The primary database runs on Neon, which keeps a continuous write history: any moment in the last 24 hours can be restored, and the restored copy is available within seconds (rehearsed on staging, 9 July 2026). Independently, a nightly logical dump of the production database is written to Cloudflare R2 in EU jurisdiction — a second copy at a second provider — kept 30 days daily and 12 months monthly. The dump is taken on a GitHub-hosted runner, which holds a copy of the database for the length of the job. R2 encrypts the stored dump at rest; encrypting it on the runner before upload is built and switches on once its key has been created. RTO target for full-stack restoration is 30 minutes; RPO is near zero within the 24-hour history window, and up to 24 hours when restoring from the nightly dump.

6.2 Restoration procedure

Documented in detail in docs/runbooks/disaster-recovery.md §1. Summarised:

  1. Stop the API to prevent split-brain writes.
  2. Identify the point in time before the corruption window.
  3. Restore it as a new Neon branch (do NOT overwrite in place — preserves the original for forensics). If Neon itself is unavailable, restore the latest nightly dump into a fresh PostgreSQL instance.
  4. Validate against business-metric baselines.
  5. Repoint DATABASE_URL to the restored cluster.
  6. Bring the API back up.
  7. Smoke-test via /readyz and the per-provider health endpoints.

6.3 R2 (object storage) recovery

Cloudflare R2 is single-region and does not version objects. The global template library can be regenerated from source via publish_global_library. Customer documents, trained models and chat attachments are copied every night at 03:00 UTC, server-side, into a dated snapshot in a separate EU-jurisdiction bucket (devai-object-backups-eu), kept 30 days daily and 12 months monthly. A file uploaded after the last copy relies on R2's own durability until the next one. Restoring from a snapshot is documented and has not yet been exercised.

6.4 DR rehearsal cadence

What is tested, how often, and what has been done so far:

Exercise Cadence Status
Point-in-time restore of the database as a new Neon branch On demand Rehearsed once, on staging, on 9 July 2026
Freshness of the nightly dump Nightly The backup job fails, and notifies, when the newest stored dump is older than 26 hours
Restore of the newest nightly dump into an empty PostgreSQL of the production version, with integrity checks and a measured recovery time Monthly, automated In place. It starts running once its read-only storage credential has been created; its first run will be the first restore of a dump
Full restore by hand on a scratch database, and restore of one document from a snapshot Annual Not yet run
Moving compute to another region; tabletop incident drill Not yet scheduled Not yet run

Until the monthly drill has produced its first record, the 30-minute RTO is a target, not a measurement. A failed drill is treated as an incident in waiting and is fixed within the week.

6.5 Business continuity

Critical business functions (billing, customer support, on-call rotation) are documented in playbooks separate from the platform itself, so platform unavailability does not block customer recovery efforts.


7. Vendor & Subprocessor Management

7.1 Onboarding

Each new subprocessor is reviewed for:

The decision is recorded in the vendor register; renewal review is annual.

7.2 Current subprocessor list

The providers that receive customer data on the cloud service, and the condition that switches each one on where it is not always on.

Provider Purpose Region Key compliance
Fly.io Compute (app + workers) EU (Frankfurt) SOC 2 Type II; ISO 27001-certified datacenters
Neon Managed PostgreSQL + pgvector (tenant data at rest) EU (Frankfurt, aws-eu-central-1) SOC 2 Type II, ISO 27001:2022, ISO 27701
Cloudflare R2 object storage (documents, templates, chat attachments, database dumps and object snapshots); DNS; Turnstile; the marketing site (Pages); the operator console (Workers + D1); Cloudflare Workers AI for document embeddings (document chunks and search queries), the production embedding provider since October 31, 2026 R2: EU jurisdiction. Edge: global. Workers AI: Cloudflare's network (no region choice), so inference is not pinned to the EU; Cloudflare states that it does not use customer content to train the models or to improve its services SOC 2 Type II, ISO 27001, ISO 27701, PCI DSS
Upstash Redis: rate-limit counters (IP address, user id), short-lived cache, real-time message fan-out between API machines US SOC 2 Type II
GitHub Source code and CI. The nightly database dump and the monthly restore drill run on GitHub-hosted runners, which hold a copy of the database for the length of the job GitHub-hosted runners (region not selectable) SOC 2 Type II, ISO 27001
Inngest Background job orchestration US SOC 2 Type II
Sentry Error tracking (PII-scrubbed) US SOC 2 Type II, ISO 27001
PostHog Product analytics (usage events keyed by user id) EU SOC 2 Type II
Together AI LLM inference (default), image understanding and speech-to-text; training files while a per-organisation fine-tune runs (§10.4) US SOC 2 Type II, ISO 27001:2022
Voyage AI Not used since October 31, 2026, when production moved document embeddings to Cloudflare Workers AI. It stays in the product as a selectable provider and receives document chunks and search queries only if an operator selects it again. An operator can also select DevAI's own model on RunPod; Together AI no longer offers embeddings US SOC 2 / ISO 27001 to confirm (MongoDB company)
Tavily Web search for the assistant, only when configured: the search query the model writes US To confirm
Hugging Face Storage of per-organisation adapter weights, when adapter training runs US SOC 2 Type II
RunPod Serves DevAI's own model. Outage fallback for turns that need no tool call whenever its credentials are configured; first choice for in-domain skills only when own-model routing is switched on (off by default) US / EU (per endpoint) SOC 2 Type II (Secure Cloud)
Anthropic LLM inference (Claude), break-glass only: unreachable unless an operator switches on the emergency setting (off by default) or selects it as the model provider US SOC 2 Type II, ISO 27001:2022, ISO 42001
OpenAI LLM inference (GPT), break-glass only, after Anthropic; an optional document classifier (off by default) US SOC 2 Type II, ISO 27001
Groq Not used by default: it receives prompts only if an operator re-enables it US To confirm
Stripe Billing & payments US, EU SOC 1, SOC 2 Type II, PCI DSS Level 1, ISO 27001
Resend Transactional email US SOC 2 Type II
Google "Sign in with Google", at the user's choice. Two optional services, each off unless configured: inference on inspection images (Cloud Vision) and an analytics warehouse for per-organisation fact tables and machine telemetry (BigQuery) Google (global); the BigQuery location is set per deployment (US by default) SOC 2 Type II, ISO 27001
Microsoft "Sign in with Microsoft" (Entra ID), at the user's choice; the Office viewer, which fetches a Word, Excel or PowerPoint file through a short-lived signed link when a user previews it Microsoft (global) SOC 2 Type II, ISO 27001

Public data services. The services below answer questions about the outside world. They receive no customer records, but a query can reveal where a customer's sites, suppliers or shipments are.

Service Purpose What the query contains
Open-Meteo Weather and city geocoding for supply maps and forecasts Coordinates, city and country names of sites
GDELT News-tone risk signal per country Country names
OpenSky; AISStream, FlightAware, MarineTraffic Flight and vessel positions for tracked shipments Identifiers of the flight or vessel being tracked. AISStream, FlightAware and MarineTraffic only when their keys are configured
OSRM public router Road routes for tracked shipments Start and end coordinates of a leg
CARTO, OpenStreetMap Map backgrounds, loaded by the browser The map area being viewed and the browser's IP address

Connectors that a customer configures to its own systems (ERP, MES, PLM, SharePoint, Google Drive, webhooks and others) send data where the customer points them, with credentials the customer provides. They are the customer's processors, not DevAI subprocessors, and are not listed here.

The same list is published at /subprocessor-list.html, with the data each provider may receive and the date of its last update. The compliance column records what each provider publishes about itself; collecting and reviewing the reports themselves is part of DevAI's annual vendor review. Customer notification of subprocessor changes follows the cadence in the customer's DPA (typically 30 days advance notice for material changes).

7.3 Subprocessor change review

Customers are notified of subprocessor changes per DPA cadence and may object within the contractual window. Where a customer's objection cannot be reconciled with the new subprocessor, the contract permits termination per the DPA.


8. Secure Software Development Lifecycle

8.1 Source control & review

8.2 Testing

Test type Scope Run cadence
Unit tests Service logic, validators Every PR
Integration tests Routes + DB + middleware via FastAPI TestClient Every PR
Smoke tests Highest-leverage 200-test subset Every PR (PR-tier CI)
Full sweep All 3,000 tests On push to main / staging
Schema-drift gate OpenAPI spec generated against committed Python Every PR
Vitest (frontend) React components, hooks Every PR
Type checks mypy (Python) + tsc (TypeScript) Every PR
Security regressions Specific test files for RLS, RBAC, auth, billing Every PR (smoke tier)

8.3 Dependency management

8.4 Migration discipline

Database schema changes flow through Alembic migrations, reviewed and idempotent. Production runs alembic upgrade head as a release-command pre-flight. Rollbacks are tested; destructive migrations carry a --confirm gate.

8.5 Static analysis

8.6 Configuration validation at startup

validate_production_config(settings) runs in the FastAPI lifespan startup. The application refuses to boot when:

This catches configuration drift before it can serve a single request.


9. Data Handling

9.1 Data lifecycle

Stage Handling
Collection Customer-driven via the platform UI, API, or document upload. We do not scrape or buy customer data.
Storage Encrypted at rest, RLS-isolated, region-pinned to EU (FRA) for the primary database.
Use Bounded by tenant context on every request. AI inference calls are clearly delimited and the AI provider is named in the org's audit log.
Retention Per the customer's DPA. Default: artifacts retained for the contract duration + 7 years for regulated data; general data retained for the contract duration + 1 year.
Deletion Self-service org deletion via the admin UI (Sprint 8 D3 — 30-day grace + restore window, then hard-delete via the daily purge cron). DSR-driven user deletion is processed within 30 days.

9.2 Data residency

The application tier runs in Fly's Frankfurt (FRA) region and the primary database in Neon's Frankfurt region (aws-eu-central-1). Cloudflare R2 buckets are in EU jurisdiction. The Redis cache (Upstash), the default model provider (Together AI), job orchestration (Inngest), error monitoring (Sentry) and transactional e-mail (Resend) are in the United States. Document embeddings run on Cloudflare Workers AI, which offers no region choice, so that processing is not pinned to the EU. The region of every provider is in §7.2.

For customers with strict residency requirements, on-premise / dedicated-region deployment is available on Enterprise plans.

9.3 Data subject rights (GDPR / CCPA / CPRA)

The DSR pipeline supports:

Requests are logged and tracked through the audit trail.

9.4 Cross-border transfer

Where personal data of EU subjects is processed by US-based subprocessors (LLM providers, Stripe, etc.), the transfer is governed by:

The full transfer-impact assessment is internal but available to enterprise customers under NDA.


10. AI-Specific Considerations

10.1 What's sent to LLM providers

Inference calls send:

Two further flows are not inference: document chunks and search queries go to the embedding provider (Cloudflare Workers AI), and when web search is configured the search query the model writes goes to Tavily. Such a query can carry context from the conversation.

What's NOT sent:

10.2 Provider data-handling

Two per-organisation settings govern AI data, and they are separate. Knowledge indexing is on by default: it decides whether the assistant draws on the organisation's own indexed documents. It is a product setting, not a training consent. Training-data consent (training_data_opt_in) is off by default and is switched on by the organisation's administrator, with who switched it on and when recorded. It decides whether that organisation's corrections to AI proposals are captured as training pairs, and a fine-tune runs only while it is on (§10.4). An organisation with no consent record is treated as not having consented.

10.3 AI proposal review

The platform's AI Coordinator never executes destructive actions silently. Any LLM-generated change to customer data flows through the AIProposal lifecycle:

  1. AI generates a proposal (FMEA row, dashboard tile, document classification).
  2. Proposal is stored with status=draft and surfaced to the user.
  3. User reviews and explicitly accepts; rejection is also recorded with optional correction text for tenant-learning.
  4. Only on accept does the platform commit the change to customer data.

This prevents silent data corruption from a hallucinated LLM response and creates an audit trail for every AI-driven change.

10.4 Tenant-learning isolation

Per-tenant LoRA adapters can be trained on the org's own corrections to AI proposals. The scheduled daily training job is held; today a fine-tune starts only when a platform administrator starts one. Critical consent and isolation properties:


11. Customer Responsibilities (Shared Model)

Security is shared. Customers are responsible for:

A copy of this customer-responsibility list is in the Master Service Agreement and the DPA.


12. Contacts

Channel Address
Security inquiries admin@devaisuite.com
Vulnerability disclosure /.well-known/security.txt
Privacy / DPA / DSR privacy@devaisuite.com
Status page https://status.devaisuite.com
Sales / contracts sales@devaisuite.com

PGP public key for security correspondence is available on request.


13. Document control

Field Value
Version 1.1
Effective date March 12, 2026
Last updated October 31, 2026
Owner Security Lead
Review cadence Annual + post-incident
Distribution Public (this version); internal-only versions track in-flight controls

This white paper is reviewed at least annually and on every material change to the platform's security posture. The authoritative source is docs/security/WHITEPAPER_EN.md in the platform's source repository.

A Spanish-language version is maintained in parallel at docs/security/WHITEPAPER_ES.md and rendered at /es/security-whitepaper.html.


© 2026 DevAI Suite. This document may be redistributed unchanged for the purpose of vendor security review. Excerpts must retain attribution.