Truenote security architecture

Security controls Truenote has today

Implemented safeguards for a knowledge assistant, the checks that support them, and the configuration and operating evidence required before customer use.

Reviewed October 9, 2026Pre-pilot security reviewEvidence scope shown

Code evidence and production readiness

Truenote applies server-side access limits, deterministic content checks, cited answers or refusals, browser request defenses, and security-event recording. Repository checks verify specific code paths. Customer use remains subject to organizational security approval, deployed-control verification, and the open requirements below.

View PCI-focused safeguards

Verified safeguards

VerifiedRepository acceptance checks

"Verified" means the named repository acceptance check passed. It does not mean every deployed path or provider has been independently assessed. Configuration and operating limits stay attached to each capability.

01

Program and clearance isolation

Server-side filters deny cross-program and above-clearance access before protected content reaches ranking, generation, citations, or document reads. A request for another person's conversation, or feedback on another person's answer, gets the same "not found" response as a record that does not exist.

Repository tests passed

02

Controlled content activation

Source, file-signature, EICAR, parsed-content, lifecycle, and role checks constrain activation. Missing or failed malware scanning quarantines uploads when scanning is enabled.

Repository tests passed

EICAR detection is a test-signature check. A super user can disable external scanning; authorized senior managers and super users can activate their own uploads. Independent approval is not universal.

03

Hybrid retrieval boundary

Vector, full-text, typo-tolerant, reranking, and neighbor retrieval preserve authorization and lifecycle limits through the complete pipeline.

Repository tests passed

04

Zero Data Retention routing policy

Approved answer routes request Zero Data Retention, deny data collection, pin one provider, disable OpenRouter provider fallback for each request, and reject arbitrary routes. Truenote can retry other routes within its approved model chain. Super users can reorder that chain but cannot add or remove a route; changing the approved list takes a code change.

Repository tests passed

This is a routing policy. Actual provider eligibility, account settings, contracts, and retention require separate evidence. It does not cover every parser, embedding, or reranking service.

05

Pre-provider input firewall

Supported secret, US Social Security number, Luhn-valid 13-to-19-digit card-number (space or hyphen separators), email, structured-phone, and IP-address patterns are redacted at embedding, reranking, answer, and utility-model text boundaries. In answer requests, excerpts from approved documents keep their email addresses, phone numbers, and IP addresses; secrets, Social Security numbers, and card numbers are still redacted.

Boundary tests passed

Names, street addresses, arbitrary credentials, standalone card-verification codes, and obfuscated or contextual personal data are not comprehensively detected. Raw uploaded files follow a separate path.

06

Cite or refuse

Missing, malformed, unknown, and out-of-range citations produce a refusal. Generated text matching the supported secret, Social Security number, or card-number rules is also refused.

Generation tests passed

A valid citation does not prove every statement is accurate. Output screening has a defined pattern scope; it does not guarantee complete personal-data protection or immunity to prompt injection.

07

Version-bound citation receipts

Ordered source snapshots preserve version and anchor context. Stored history rechecks current program, clearance, source approval, and lifecycle access before returning questions, answers, excerpts, or titles. Exchanges without complete authorized provenance, including zero-citation refusals, are withheld as a whole, so a past answer never appears with some of its sources missing. Refused questions and missing-content flags go to the Content gaps report instead: supervisors see their own team's, managers the whole program's. A title is hidden unless the exchange it was generated from is shown and every other withheld exchange is an uncited refusal; conversations with nothing to show are not listed. Eligible superseded receipts remain readable while their parent document and source stay authorized.

Repository tests passed

08

Browser request defense

Trusted same-origin mutations pass while foreign, opaque, malformed, cross-site, and sibling-origin requests are rejected. CSP restricts active content. Clients sending neither Origin nor Fetch Metadata headers pass this browser-origin check and still require authentication on protected routes.

Browser-security tests passed

09

Redacted diagnostics

Structured error handling removes credentials, complete private keys, Social Security numbers, and payment-card values from covered diagnostic paths.

Redaction tests passed

10

Bounded provider failure

Provider operations use explicit deadlines, retry caps, and abort propagation. The ask path has an overall deadline that cancels outstanding provider calls; a request cut off that way returns the standard refusal. Database steps do not observe this deadline.

Failure-path tests passed

11

Hash-chained audit logic

Security events are written through a database function that hash-chains each event to the previous one. In production the database refuses edits, deletions, and truncation of these events, and the application's database account can add events only through that function. API sign-ins and administrative/document changes produce events, and database triggers record document-version creation and lifecycle-state transitions, including background parsing and automatic activation, and content-source creation and updates, in the same transaction. A worker job writes each committed event to the service log in order and checks it against alert rules; ten of eleven rules were tested in production on 2026-10-10 by triggering the event and confirming the alert email.

10 of 11 alert rules tested in production

A daily copy of the logs is kept outside the hosting provider, but one owner administers the database, the hosting account and that copy, and can switch off the append-only protection. Define the retention period and separate who administers the copy before relying on audit integrity against a database administrator.

12

Evaluation integrity

Evaluation tests cover retrieval, reranking, citations, refusals, faithfulness, durable queue recovery, and separate pass rates for held-out questions.

Evaluation tests passed

13

Workload limits

Answer requests use PostgreSQL counters per user and program; uploads use per-user counters. Login and selected administrative routes have additional limits.

Rate-limit tests passed

Some static, history, personal and administrative reads remain without application request limits by an intentional demo-phase decision. Before customer use, the owner must approve application or verified edge abuse coverage and thresholds.

Data handling and account access

Permitted content

Truenote is intended for approved policies, procedures, and operational reference material. Until a signed data and PCI scope decision permits otherwise, keep payment-card numbers, CVV/CVC, PINs, track data, credentials, and live customer personal data out of questions, history, documents, screenshots, and reports.

Raw-file boundary

Uploads reach object storage before ingestion. An enabled scanner receives raw bytes; PDF and image parsing can send those bytes to LandingAI before parsed-text screening. Parsed text is persisted before its sensitive-content decision. Quarantine restricts activation; it does not undo earlier storage or disclosure.

Provider coverage

OpenAI receives protected embedding text, Cohere receives protected reranking text, and OpenRouter and its selected model provider receive protected generation and utility text. Parser and scanner data handling, account settings, contracts, retention, and subprocessors require separate approval.

Identity and sessions

Code implements Argon2id password hashing, hashed session tokens, production Secure and HttpOnly cookies, account deactivation checks, and session revocation. OIDC with MFA-claim validation is available but intentionally unconfigured during testing. Explicit disabled or break-glass local-login policy remains enforced even when OIDC configuration is unusable, including password-reset and invitation completion; a link refused this way is not used up and still works, before it expires, once access is allowed. Password-reset requests get the same response, sent before the account lookup, whether or not the email has an account. Public demo accounts cannot make shared or administrative changes by default; their personal notes, highlights, and labels stay available within that account. They cannot change or reset their published passwords, and only a super user can edit them, so one visitor cannot lock others out. Passwords set through account creation, reset, and change must be at least 15 characters; demo accounts configured by the operator are exempt. Application sessions have a seven-day absolute lifetime and no enforced idle timeout.

The security owner must approve session controls, MFA, access reviews, and break-glass handling. Public demo access must be isolated or retired before organizational data is introduced.

Retention and deletion

Normal document removal retires it and retains source bytes and evidence. Retention-gated permanent purge is restricted to super users. A deployment setting can permit a retention override. Customer-approved schedules must cover originals, parsed content, questions, answers, diagnostics, security events, provider copies, and backups; document purge alone does not establish complete deletion.

Unscreened personal fields

Personal notes, label names, and document titles are stored without the question or document sensitive-content screening. The prohibited-data policy applies to these fields too; current pattern controls do not enforce it there.

Transport and storage

The reviewed public pages serve over HTTPS with HSTS and a restrictive Content Security Policy. Private-service transport, storage and backup encryption, key access, rotation, and deletion still require platform evidence. Public HTTPS does not establish encryption for every hop or stored copy.

See the data-flow inventory and provider responsibility matrix for the reviewed paths and required evidence.

Service providers and data paths

Text redaction applies at the implemented AI boundaries. It does not screen raw files or establish provider contracts, account settings, endpoint eligibility, or retention.

Provider inventory reviewed against current source
ProviderPurposeData handled
Railway and bucket provider TigrisWeb, worker, PostgreSQL, and private file storageApplication records, uploaded originals, parsed content, and operational records
OpenRouter and approved model hostsAnswer generation, query rewriting, and conversation titles; approved hosts include DeepInfra, Azure, Baseten, Inception, and CoreWeaveQuestions, conversation context, and retrieved excerpts after application text redaction
OpenAIEmbeddings and optional evaluation scoringDocument passages, questions, and evaluation text after application text redaction
CohereSearch rerankingQuestions and candidate passages after application text redaction
LandingAI and a configured malware scannerPDF/image parsing and optional malware scanningOriginal uploaded file bytes before parsed-text screening
ResendInvitation and password-reset emailRecipient names, email addresses, and one-time links
GitHubSource hosting, automated checks, and security-report intakeSource code, check artifacts, and submitted reports; application customer content must stay out of reports and CI artifacts

Truenote's OpenRouter account also has a guardrail for answer and query-rewrite requests, configured to redact card numbers, Social Security numbers, email addresses, phone numbers, IP addresses, and prompt-injection patterns. Its person-name and street-address detection is turned off, because it cannot be limited to the question and it redacted names in approved documents. Provider account settings, contracts, and retention still need separate approval.

Requirements before customer use

The review is incomplete. The current repository and limited read-only deployment observations support the following status, as of October 9, 2026. SSO and scanner integrations are intentionally unset during the demo/testing phase; they require configuration and end-to-end verification before customer use. Missing database prerequisites for external audit delivery are a separate installation gap. Missing evidence remains open even when the implementation passes tests.

Production controls and acceptance evidence
AreaEvidence gradeRequired acceptance
Organizational approval and PCI scopeOperational evidence requiredApproved data policy, accountable owners, assessed boundary, provider responsibilities, and written customer security approval.
SSO, MFA, and accessConfiguration requiredConfigure the approved IdP, verify MFA and revocation, resolve idle-session controls, restrict emergency access, and review privileged and demo accounts.
Malware scanningConfiguration requiredConfigure an approved scanner, confirm scanning is enabled, govern overrides, and prove clean, infected, unavailable, and failure outcomes before parsing.
External audit deliveryGapComplete the deployed database prerequisites and receiver configuration; retain delivery, retry, alert, dead-letter, privilege, and independent-retention evidence.
Recovery and incident responseOperational evidence requiredConfirm database and uploaded-file backups, restore to an authorized test target, measure recovery time and data loss, and complete an incident tabletop. Current records show backups off and no retained restore result.
Vulnerability management and release controlOperational evidence requiredReconcile current scans, assign and disposition findings, pass the strict managed-release gate, approve change records, and bind deployed bytes to the reviewed release.
Provider and cryptographic assuranceThird-party evidence requiredApprove contracts, retention and deletion, subprocessors, account controls, encryption, key management, and the exact service scope of any provider attestation.
Independent assuranceThird-party evidence requiredComplete authorized application/API and AI testing, any applicable network or segmentation tests, remediation, and retest. A separate test environment or explicitly approved substitute is required.

Grades distinguish passed acceptance checks (Verified), existing code without operational proof (Implemented, unverified), missing configuration, missing operating records, missing provider or assessor evidence, and an absent or ineffective control (Gap). Not applicable requires a named owner and written justification.

Supporting procedures: security evidence map, recovery runbook, incident plan, and PCI review requirements.

Security delivery checks

The hosted security workflow for reviewed main commit e63293ca7d9d passed these checks. This receipt covers that commit; later commits and deployed bytes require their own verification.

Type checking and production build

Workspace TypeScript checks and the production frontend build completed successfully.

Automated test suites

Frontend, API, and security-script suites completed successfully.

Secret scanning

The hosted secret-scan job completed successfully.

Dependency audit and SBOM

The production dependency audit and CycloneDX software bill of materials step completed successfully.

CodeQL analysis

Hosted analysis and SARIF evidence generation completed successfully. Job success does not mean zero findings or approved finding dispositions.

Security evidence integrity

Machine checks validated evidence links, identifiers, hashes, and required security records.

The strict managed-release vulnerability gate and supplemental branch-enforcement gate were skipped in this ordinary main run. Green CI verifies engineering checks; it does not approve a production release or close the vulnerability register.

Source and vulnerability reporting

Inspect the implementation or report privately

The public repository contains implementation, tests, and evidence records. Use GitHub's private advisory intake for suspected vulnerabilities and follow the security policy. Reporting discovery is verified; intake monitoring and an end-to-end response exercise still require operating evidence.

Open implementation and test evidence · Reporting discovery record · Security reporting policy. Use synthetic data; keep exploit details, credentials, payment-card data, and customer content out of public issues. Test only systems and accounts you are authorized to use.

Compliance documents

Two tiers: public compliance summaries are open to everyone. Detailed documents, such as the full system security plan and the plan of action and milestones, describe security weaknesses and are available only to authorized reviewers who sign in.
Evidence boundary: repository tests verify the code paths and conditions they exercise. This page is not a certification, authorization, legal opinion, independent assessment, or deployed-configuration attestation.