Upload an SOP to begin
Select a .docx or .pdf SOP, choose the eCFR parts to check against, optionally add ICH guidelines, then click Analyze.
Version / server start: loading…
Cache all currently-selected eCFR parts and ICH guidelines now. Subsequent analyses reuse the cached text and start immediately.
Select which regulatory frameworks and eCFR sections appear in the sidebar. Use All / None per group for bulk selection, then click Apply & Save.
| Category | Title | URL (https:// assumed) | |
|---|---|---|---|
| Loading… | |||
Per-principle rules — plain English, one rule per line is clearest. These tell the AI what to always or never flag for this organisation's SOPs.
The system prompt used whenever the SUCCESS analysis runs. The default is a management-consultant persona driven by the Trusted Advisor model, communicating top-down with the Minto Pyramid Principle, focused on actionable advice and willing to ask clarifying follow-up questions when the SOP is ambiguous.

Select a .docx or .pdf SOP, choose the eCFR parts to check against, optionally add ICH guidelines, then click Analyze.

Enter your username and registered email address and we’ll send you a reset code.
Your registration has been received. An administrator will review and approve your account shortly.
Too many failed login attempts.
Your registration request was not approved. Please contact your administrator for more information.
Your organisation requires MFA. Scan the QR with an authenticator app (Google Authenticator, 1Password, Authy, etc.) and enter the first 6-digit code to complete setup.
⚠ Save these recovery codes now — they will not be shown again:
Please check your inbox for a verification link. After you click it, return here to sign in. The link is valid for 24 hours.
Need a fresh link? Confirm your email below and we'll resend.


Your account is not yet assigned to an organisation. Please create a new one or join an existing one to continue.
These actions are irreversible. All selected data for your organisation will be permanently deleted.
New users waiting for approval. Approve or reject each request below.
Currently logged-in users. Revoke terminates all sessions for that user immediately.
API keys allow external systems and the Python client to submit documents and retrieve results without a user login. Keys are scoped to this organisation.
Set in your .env file. Required for welcome emails and password resets.
SMTP_HOST
SMTP_PORT (default 587)
SMTP_USER
SMTP_PASSWORD
SMTP_FROM (optional, defaults to SMTP_USER)
Sent when creating a new user with "Send welcome email" checked.
Use {username}, {password}, {login_url} as placeholders.
Send a test message via WhatsApp (Twilio) or SMTP email to verify each channel is configured correctly.
Minimum Jaccard overlap (0–100%) required for the consistency test to pass.
Set in the admin panel or override with CONSISTENCY_THRESHOLD in .env
(the .env value takes precedence).
Runs the full regression and security test suite against this server. Results are recorded in the audit log. Allow up to 60 seconds.
IQ / OQ / PQ qualification status across the whole validation pack.
Automated entries reflect the most recent regression run above (matched by the
@pytest.mark.uc marker); manual entries reflect the stamped test-execution
record in each script. Export produces a 21 CFR Part 11 §11.10(a)
validation-evidence document.
Pick two saved analyses for this organisation and compute span-overlap between their findings. Useful for evaluating model upgrades or comparing SOP draft vs. approved versions.
Runs the analyser N times in parallel against the same document and scores pairwise span overlap. Bytes are loaded once and shared in memory by all runs — no document-store renames, no filename collisions.
Compares two consistency batches against the same SOP — typically one per model — to measure how much the models agree on findings, severity, and category. Both batches must be on the same document and (ideally) the same framework / depth.
Every model the system can call lives here. Two-axis classification: vendor (the company — anthropic / openai / xai / google / client-X) and wire protocol (the API shape — anthropic_messages / openai_chat_completions / google_generative). chat_handler dispatches on protocol, not vendor — so a Grok model registered as vendor=xai, wire_protocol=openai_chat_completions takes the OpenAI streaming path automatically. Each model declares its own key_env / url_env environment variables; the model is runtime-available iff enabled=true AND the key env var is non-empty.
Loading…
Shadow-mode extraction comparison. When enabled (env vars LANDING_AI_SHADOW_MODE=true + LANDING_AI_API_KEY), every upload runs Landing.ai's Agentic Document Extraction in parallel with the existing extractor. The analyser still consumes the existing extraction; Landing.ai output is logged for comparison only. Promote-to-primary decision is data-driven after 2–4 weeks of shadow data. See project_t107_landing_ai_plan.md.
Loading…
pgvector-backed semantic-search foundation. Three namespaces share one vector store: sops (SOP paragraphs, org-scoped via RLS), regulations (CFR / ICH / ISO chunks, global), corpus (adjacent regulatory material — MHRA blog, FDA guidance, EMA, EU Commission; Phase C consumer). Per-persona retrieval profiles arrive in Phase B; inverse-RAG regulation-coverage queries in Phase D; v4.0.0 close at Phase E. See project_v4_program.md.
Loading…
Each persona below is one AI call site in the analysis pipeline. The model selected here is what runs when that persona is invoked. Changes apply immediately to all new analyses; in-flight runs continue with their original model.
Loading…
Each prompt below is a system prompt the analyser uses at a specific call site. Edit any prompt to override your org's behaviour for that call site; reset to fall back to the parent domain's template. Edits take effect on the next analysis run — no restart required.
Loading…
Each lens is a complete, standalone QE persona prompt. The lens picker on the analysis page lets the user pick which lens drives the QE chat for a given SOP. Click the empty box in the Default column to promote a lens to default — that's the lens new SOPs land on.
Loading…
Edit the prompt templates that ship with each domain. Existing orgs are NOT auto-updated — they keep the snapshot they were seeded with at creation. Each org's admin sees a banner on the AI Models tab when their domain's template version advances; they opt in to the new text by clicking "↻ Reset to domain template" on individual prompts.
Pick a domain above to load its template prompts.
Loading…
Select a domain to edit.
Appears in the header and About dialog. Supported formats: SVG, PNG, JPG, GIF, WebP, ICO. Max 5 MB.
Appears in the About dialog, visible to all users.
Pull regulatory citation data from FDA's data feeds into local PostgreSQL.
The per-finding popup on the analyser sources from these tables.
Each row in the table below shows one dataset's current state and lets
you sync new data (incremental, fast) or reload everything (full, slow).
Same FDA FDA_AUTH_USER + FDA_AUTH_KEY environment
variables drive both API ingests; the Form 483 Excel ingest is public.
Toggle numbered debug-instrumentation components live. Each component
gates a family of [instr:<n>:<name>] log lines on the
backend. Changes apply immediately to all subsequent log output but are
in-memory only — on server restart the active set reverts
to the RC_INSTRUMENT environment variable. Enabling
all (component 0) prints every component.
Loading…
Cadence for the workflow tick: reminder after a deadline, escalation to the QL + PO, nag repeats, and the nag count after which the Process Owner can substitute for an absent Quality Lead. Zero is allowed (fires immediately). Defaults: 3 / 2 / 1 / 3.
Users designated as Quality Leads for this org. At routing-start the author picks one to govern the change order. Area of responsibility is a free-text guide shown alongside the name in the picker — not a matching key (P4: author picks any QL).
| User | Area of responsibility | ||
|---|---|---|---|
| Loading… | |||
For each lifecycle state, the ordered list of role slots that must be filled at routing-start. Role slots are labels (e.g. "Peer Reviewer", "QA") — the actual signer is a system user picked per change-order at routing-start, so emails, reminders, and Part 11 signatures attach to a real person. Sequencing = sequential (slot N must sign before slot N+1) or parallel (any order within the step). Saving replaces the entire role set for that state.
Loading lifecycle states…
These operations permanently delete data from the database and cannot be undone. They are intended for resetting a test or development environment, or wiping a fresh installation before go-live. Do not use in production with real data.
Delete all non-system-admin users, all sessions, and brute-force state.
Delete all organisations from the database.
Delete all SOP library documents, versions, signatures, and approval records.
Delete all Neo4j graph nodes (documents, taxonomy, reviews) and org metadata (roles, departments, entities).
Deletes all users (except system admin), all organisations, all documents, and all QMS data in a single operation. Use for a complete environment wipe.
Loading…
Framework sections most relevant to this document. Tick the sections you want and click Add to Selection — they will be checked in the Frameworks pane ready for your next analysis.
Choose from the library on the left, or click + New SOP to start building.


This prompt is automatically applied when a new SOP is created from this template. Use it to pre-configure the AI Architect for your organisation’s style requirements, site-specific details, or standard phrasing.



🔍 Quality Expert Review


This Visio file has multiple pages. Select the page to convert to a SOP:


This SOP is Effective. To make changes, the system will branch a new Draft from the current Effective version. The Draft inherits the current content and remains editable until you promote it back to Effective (the auto-supersede step will then move the current Effective to Superseded).
Why are you making this change? (required)
Change type
The rationale is recorded as part of the audit trail and travels with the new revision through its lifecycle (spec §4.19). A formal Change Plan can be attached later via the QMS curation panel.

Promoting this document to Effective is a controlled transition. Re-enter your password to apply your electronic signature (21 CFR Part 11 §11.200). The currently Effective version, if any, is automatically superseded.
Password (required)
Reason (optional)

Abandoning discards the in-progress Draft and keeps the current Effective version in force, untouched. This is an allowed business choice — it is NOT a deviation. A reason is recorded for traceability.
Reason (required)

Working versions are uncontrolled drafts (saved analyses). Deleting them does not affect the Effective or controlled Draft version.

| Number | Title ⇅ | Level ⇅ | Version | Status ⇅ | Owner |
|---|
Roles are extracted automatically when SOPs are imported. Click any term to see which documents reference it. ✕ removes it from the vocabulary (existing document tags are not changed).
Templates define the structure for each document type. Upload a .docx master and define its section list — used when reformatting existing SOPs into the template structure.
Only documents with a stored file are shown. Select one to load it into the Inspector.