View .md

Security & your data

What actually happens to your clients’ passports and records inside CorpSec.app — explained without jargon, including the honest answer to “what if you get hacked?”

CorpSec.app product guide·Updated 2026-07-28

The question everyone asks first: “what if you get hacked?”Live

Fair question, and here is the direct answer. Every document and every uploaded file is locked in its own individual envelope before it is written to storage. Each file gets its own one-time key. That key is then locked with a key that belongs only to your firm. And your firm’s key comes from a master key that is not kept in the database at all — it lives in a separate encrypted store.

So if someone stole our entire database and our entire file store tomorrow, what they would have is scrambled bytes. Not a passport scan. Not a shareholder register. Nothing readable. They would need the master key as well, and that is somewhere else.

Each envelope is also stamped with which firm it belongs to and a fingerprint of the file itself. Take a sealed file out of one firm and try to open it inside another — it refuses. The maths refuses, not a setting someone could switch off.

One more thing worth knowing: if the key is ever unavailable, the system will not save the file at all. It fails and tells you, rather than quietly storing your client’s passport unprotected.

Note

Worth comparing honestly against today. If client identity documents currently travel by WhatsApp and live in a folder on someone’s laptop, that is one unlocked door away from exposure — and there is no record of who opened it. That is the real baseline this replaces.

Sensitive data is masked everywhereLive

Identity numbers are never shown in full. Across the screen, in exports, and in anything the AI sees, an NRIC / FIN / passport number is masked to its first character and last four digits — for example S1234567A becomes S****567A. This means even the AI that drafts your documents never handles a raw identity number.

An officer record showing a masked ID number like "S****567A".

What exactly is encryptedLive

Two separate things are protected, because they are two separate risks:

  • Whole files — every generated document and every uploaded file, including scanned IDs, sealed individually before storage.
  • Individual fields — the identity number, address and email on a person record, plus sensitive answers in client forms, are each encrypted on their own. So even a database row read directly shows nothing useful.
Note

This runs on top of the encryption every serious host provides. When another vendor says “encrypted at rest”, they usually mean their hosting provider encrypts the hard disk — which does nothing if someone gets a valid database connection. Our layer is applied by our own code before the data reaches storage, so it holds even then.

Nobody can go around the app — not even with a valid loginLive

A common weak spot in products built on modern cloud databases is that a logged-in user can talk to the database directly and skip the application entirely — bypassing every approval, KYC and filing check the product carefully implemented.

That door is closed here. The database refuses writes from client logins by default. Every change has to come through the application, which means it has to pass four-eyes approval, KYC gates and filing-evidence checks. There is no back route.

An audit trail that cannot be editedLive

Every meaningful action — a document generated, a status changed, a company created, a firm renamed, a KYC gate blocking a document — is written to an audit log. You can read it in Settings → Audit Log or the right panel’s Activity tab.

Crucially, the log is append-only. Records can be added but never changed or deleted — and this is enforced at the database level, not merely by the app. That gives you a tamper-evident history you can stand behind in an inspection.

The Audit Log table: Time, Action, User and Details columns, newest first.

Export everything — no lock-inLive

Your data is yours. An admin can export the entire firm from Settings → Account → Export firm data. Three shapes are available:

  • JSON — a full snapshot: companies, officers, tasks and their workflow state, KYC dossiers, invoices and billing, fee schedule, documents and an audit summary.
  • CSV — the ACRA-style registers of companies and officers.
  • ZIP — the JSON and CSVs plus every generated document file, with a manifest of what is included.
Note

By default, identity numbers in exports are masked. An admin can produce an unmasked export with an explicit confirmation step — and that stronger export is itself recorded in the audit log.

Inspection evidence packLive

CorpSec.app assembles a regulator-ready evidence pack — a cover attestation, each company’s CDD dossier, a firm summary, and an integrity manifest that lets a third party re-verify nothing was altered, with honest flags wherever screening was on demo data.

It is available today from Settings → Inspection Pack (admin only). Choose the pack type — ACRA CSP AML/CFT, PDPC data protection, or general due-diligence — and generate the bundle in one action. The full JSON / ZIP data export above remains available for a raw snapshot.

Note

The Prepare for an ACRA inspection playbook walks you through using the inspection pack step by step.

Where your data is hosted

CorpSec.app hosts data in Singapore — in-region, close to your clients and to ACRA, so there is no cross-border transfer question to answer. For the full posture — sub-processors, retention and the data-processing agreement — see the Security and Privacy pages.

How the AI works — and what leaves your systemsLive

AI drafting calls out to a third-party provider (Anthropic) over the public internet, using standard TLS encryption in transit — the same kind of connection your browser uses everywhere else on the web.

What we send is never the original file. Not a passport scan, not a photo of an ID card, not a PDF — only text, and only after it has already been through the same masking described above. An identity number becomes S****567A before the request ever leaves our servers.

This is not something we are promising to do carefully — it is enforced by a dedicated guard that inspects every outbound request before it can reach the AI provider. If anything that looks like a raw file, an image, a storage link, or an unmasked identity number turns up anywhere in that request, the guard blocks it and the call is never made. There is no code path that skips this check.

What we don’t haveLive

A security page that only lists strengths is a brochure. These are the real gaps, so you can decide with your eyes open:

  • We do not hold SOC 2 or ISO 27001. Both are on the roadmap. If your client or your bank requires a current certificate today, we are not yet the right fit and we will tell you so.
  • No independent penetration test has been done yet. Our controls are covered by automated tests that run on every change — including tests that deliberately try to break each control — but that is our own testing, not a third party’s.
  • Backups are the managed backups on our hosting plan. We have not run a timed full-restore drill, so we publish no recovery-time guarantee. Your own export (above) is the backup nobody can take away from you.

Frequently asked questions

Can anyone tamper with the audit log?

No. It is append-only and the database itself refuses to update or delete entries. New records can be added, but history cannot be rewritten.

Is my data encrypted?

Yes — and by our own code, not just by the hosting provider. Every document and uploaded file is sealed in its own encrypted envelope before it is saved, with a unique per-file key wrapped by a key belonging only to your firm. The most sensitive fields on a person record are encrypted individually as well. Data is hosted in Singapore.

What happens to my clients’ passports if you get hacked?

Whoever took the data would hold ciphertext, not documents. Each file is sealed with its own key, that key is locked with your firm’s key, and the master key behind it is not stored in the database. The envelope is also bound to your firm and to the file’s fingerprint, so a sealed file moved elsewhere will not open.

Could someone with a login skip the app and edit the database directly?

No. The database refuses writes from client logins by default, so every change must pass through the application — and therefore through four-eyes approval, KYC gates and filing-evidence checks. There is no back route around them.

Do you have SOC 2 or ISO 27001?

No, and we will not imply that we do. Both are on the roadmap, and an independent penetration test has not been carried out yet either. If a current certificate is a hard requirement for you today, we are not yet the right fit.

Is this really safer than how we work today?

Compare it honestly to the current baseline. If client passports arrive by WhatsApp and sit in a folder on a laptop, they are unencrypted, uncontrolled, and there is no record of who opened them or when. Here every file is individually sealed, access is role-gated, and every meaningful action lands in an audit log that cannot be edited — which is also the record you will want when ACRA asks.

What if I want to leave?

Export everything at any time — JSON, CSV, or a ZIP that includes all your generated documents. There is no lock-in.

Does the AI see clients’ NRIC numbers?

No. Identity numbers are masked before they ever reach the AI; the real number is only re-applied inside the final legal document, server-side.

Do you send our documents to a third-party AI?

Document drafts are produced with help from a third-party AI (Anthropic) — that part is true. What is not true is that your original documents go with them. Before anything leaves our servers, a dedicated guard strips out raw files, images and identity numbers; the AI only ever sees masked text. The original scan or upload is never sent.

How is my firm’s data kept separate from other firms using CorpSec.app?

Every read and every write is filtered by which firm you belong to, and that filter is enforced at the database level, not just checked in application code. It is the same idea as the sealed envelope stamped with your firm’s name described above — a request for another firm’s data simply returns nothing, the same way a sealed file from another firm refuses to open elsewhere.

This is a product guide for CorpSec.app. Where a feature runs on demo data or is not yet released, it is labelled as such. Compliance references are general information for Singapore corporate service providers, not legal advice.

Was this helpful?