Security
The page your security reviewer actually wants.
Plain answers, no PDF behind a form, no call required. If your questionnaire asks something this page does not answer, write to security@usecapstan.com and we will answer it here for the next reviewer too.
Every section below carries one of three marks
- Enforced by the system
-
11 of 18
The guarantee is a property of how the software and the schema are built, so it holds even if someone here wanted to break it.
- A commitment we make
-
6 of 18
A decision we have taken and are telling you about, with nothing in the software forcing us to keep it. This is the part of the page you are trusting us on.
- Status
-
1 of 18
Where something stands today, rather than a control. Stated so you can see it and ask about it, not so it counts as an answer.
Several sections carry more than one kind of statement. The mark names the one the section rests on. The register at the foot carries no mark at all, because a row there is a thing to check rather than a thing to trust.
Find the one answer you came for.
Eighteen questions in seven groups, each going straight to the section that answers it, then the evidence. The right-hand column is the mark, so you can read down it and see what rests on what before you open anything.
Where the data sits
Three sections · two enforced · one commitment
Where does our data reside, and does it ever leave that region? A commitment we make
Where data lives
Capstan is region-served, and the EU is the region live today. Data and object storage are in the EU at Frankfurt (eu-central-1) and compute runs in the EU at Amsterdam (eu-west-1), so a request is served, held in memory and logged inside the EU. Each region is a self-contained deployment: one database is one region, nothing is global, and there is no cross-region service key, so the separation is structural rather than a policy applied on top, and the same stack is built to open in more regions as they come online. There is no region chooser: residency is a property of the deployment rather than a setting, which is the only way a residency commitment is real.
The data and files moved to Frankfurt from Mumbai (ap-south-1) on 6 September 2026, and both tiers, compute and storage, now reside in the EU. We state where data lives here rather than leaving it for a questionnaire, and the region list in the footer of every page is the whole of it; the marketing copy never lists a region before it is real.
If a region we operate becomes unavailable to us, our stance is stated plainly: your export works, and we give you the maximum notice the situation allows, your data is never a hostage to our infrastructure choices. Cross-region backup is a tenant choice, not a default we make for you. The region list this site displays is a versioned file in the site's own repository, updated by pull request when a region goes live, the marketing site queries nothing to render it.
What does this marketing site itself hold? Enforced by the system
This website holds nothing
The marketing site you are reading is static by design: it has no database connectivity of any kind, holds no product credentials or API keys, and stores no client information. Sign-up is a pure redirect into your chosen region's app, so the form you fill never lives here: the only thing this site ever collects is which region you are heading to, and it does that by linking out rather than by asking. Marketing sites are the most attacked surface a company operates, and ours has nothing to take.
How is data encrypted, and who holds the keys? Enforced by the system
Encryption and keys
In transit, everything is TLS 1.2 or higher. At rest, sensitive fields, compensation, national IDs, bank details, carry per-tenant envelope encryption: an AES-256-GCM data key per tenant, wrapped by a region master key, and rotatable. Here is the part that matters: the master key lives only in the API service, never in the database and never in the browser, so the database cannot decrypt its own contents a database dump is ciphertext. Each ciphertext is bound to its tenant, table, person and field, so a value can never be replayed onto another row. We do not yet claim bring-your-own-key as a shipped control, the per-tenant key is already the unit of ownership that makes it possible, but we would rather under-promise than list it before it is verified in production.
How the company is certified
One sections · one status
Do you hold SOC 2 or ISO 27001? Status
ISO 27001, and what it covers
One of the two. N53 Techworks LLP, the entity behind Capstan, holds an ISO/IEC 27001:2022 certificate for its information security management system, issued on 13 August 2025 by QFS Management Systems LLP, a certification body accredited by the Standards Council of Canada. The certificate number is SCC/2508NE/2897 and it runs to 12 August 2028. The first surveillance audit, due 12 July 2026, has been completed and the certificate continued; the second falls due 12 July 2027.
The scope is the half worth reading, because a badge without one tells a reviewer nothing. The certificate covers information security applied to software development, business consulting and digital transformation services, assessed against a Statement of Applicability at version 1.1 dated 1 February 2025. That is the management system this company builds under: how access is granted and taken away, how a change reaches production, how an incident is handled, how a supplier is assessed. It is not a penetration test of the product, and it does not make any single claim on this page true by itself. Write to security@usecapstan.com and the certificate is sent to you, unredacted and without a form.
No SOC 2 report is held, and no target date is published for one, because a date nobody has committed to is an intention wearing the clothes of a plan, and this page does not carry those. If a report is ever issued, it will be linked here, ungated, with the date and the firm on it.
The certificate is still not the strongest thing on this page. That is the register at the foot: every control, the document that defines it, and the artifact that proves it, followed by a plain list of what those proofs deliberately do not cover. An audit says a competent outsider examined the system on a date. The register says what runs. A reviewer who reads both reaches their own conclusion, which is more than either would have told them alone.
Who can reach it
Four sections · four enforced
How is one tenant kept apart from another, and how do people sign in? Enforced by the system
Access
Tenant isolation is enforced in the database with row-level security, not just in application code, with a default-deny posture for non-member identities such as contractors and alumni, they reach only what is explicitly granted, nothing by default. Sign-in is passwordless: a one-time code to your email. There is no password stored anywhere in Capstan, nothing to forget, phish, leak or breach. Admins can add MFA. SSO/SAML and IP restriction are not built today, so treat them as where the product is going rather than as a control you can switch on now. What does exist, on every plan, is the tenant activity log: your own admins filter it by action, record type and date, and export it. It is append-only in the database itself, update and delete are revoked on the table and a trigger rejects any mutation that gets past that, so a record of a change cannot be quietly edited away afterwards, by anyone, us included.
Can we read our own audit trail without asking you? Enforced by the system
Your own audit trail, not only ours
Until recently only our staff console could read an audit trail. Now a workspace admin reads their own, inside the product, at Administration then Activity log: filter by action, record type or date, page through it, and export it. Actor ids resolve to a person's name, and a change made by the system rather than a person shows as exactly that. The endpoint checks for a workspace admin in its own handler rather than leaning on the broader read policy, and the rows stay tenant-scoped whoever is asking, so an admin can never read across workspaces. It is deliberately a read surface: entries are written at the point each change actually happens, never from this screen. The practical result is that you can answer your own auditor from your own workspace, without opening a ticket with us and without taking our word for what happened.
Can your staff reach our data? Enforced by the system
Support never means database access
Our support staff have no standing access to your data. They belong to no tenant, so row-level security denies them your records by default. To help with a ticket, they need a consent you grant from inside the app: time-boxed (seven days by default), scoped to read-only or read-with-sensitive, tied to a stated reason, and revocable by you instantly, access ends the moment it expires, with no sweep job to wait for. Sensitive fields stay masked unless you granted the sensitive scope and the specific staff member is authorised for it, and every consented read is logged on both sides. Break-glass emergency access is deliberately not built as a button, it is a sealed, manual, audited procedure, not a shortcut anyone can click.
Who inside Capstan can do what, and who approves it? Enforced by the system
Who here can do what, enforced in software rather than policy
Most vendors describe their internal controls in a policy document you cannot inspect. Two of ours are worth stating because they are written into the database functions, where nobody at Capstan can route around them from a screen.
Granting the platform administrator role, the most privileged staff role we have, takes two distinct people: one platform admin requests it, a second and different platform admin approves it, and the grant lands only on approval. A direct grant is refused outright. Revocation is deliberately the opposite. Any platform admin can pull any staff role, that one included, alone and immediately, because taking power away fast is a safety property and a quorum on revocation would defeat it. The asymmetry is the point. One honest exception, recorded rather than hidden: the first platform admin comes from fixtures, because there is no first approver until one exists.
The same shape governs money. What a staff member can refund or credit is capped by their role, held as data rather than as a habit. Above that ceiling the act does not execute at all; it becomes a pending request that a second, distinct staff member of the authorising role has to approve, and the function refuses to let a request be approved by the person who raised it. Both actors are recorded in the internal audit log by the function itself, so the record cannot be forgotten by whoever made the call.
Export, erasure and what a person keeps
Two sections · two enforced
Can we get everything out, and can we have it erased? Enforced by the system
Your rights
Export everything, any time, in open formats, in one click: a single archive of decrypted JSON and CSV, taken by the workspace owner, which is a stricter check than admin on purpose. It works while an invoice is unpaid, it works while a workspace is suspended for non-payment, and it works on your way out. Deletion is a cryptographic erase: we destroy the tenant's keys, so the data is unreadable even from a backup taken before you left, not merely flagged, and not recoverable by us. It happens on your instruction or your configured retention schedule, after a cooling-off window you can cancel, and a residue scan proves no row survived outside the statutory-records allowlist. On data-subject requests you are the controller and we are the processor, so the request reaches you rather than us; our job is to make answering it executable in minutes with the export and deletion tooling already in the product, rather than a support ticket to us.
What does a former employee keep access to? Enforced by the system
Post-employment (Alumni Access)
Former employees keep self-serve access to their own payslips, letters, tax documents and settlement summary on their personal email, long after the work address is gone, no HR ticket, no re-request queue. It is included in every paid plan at no extra charge, and it is minimal by construction: a former employee sees only their own documents, in the categories your tenant allows, and nothing else. It is a DPDP-positive answer to post-employment data access, self-serve, scoped, and provable against the document catalogue.
Billing and non-payment
Two sections · two commitment
What happens if an invoice goes unpaid? A commitment we make
What happens if an invoice goes unpaid
Nothing, for thirty days. When a term ends the workspace enters a grace period and access is uninterrupted. A paying customer who is late is still a customer, and we do not hold a workspace hostage over an invoice while the grace period we ourselves granted is still running. Admins see an honest in-grace banner rather than a locked door.
You are reminded on a ladder rather than ambushed: sixty days before the term ends, thirty days before, on the day the invoice is issued, and a final warning five days before access actually stops. Those notices are a mandatory category. A workspace cannot mute the one message telling it that it is about to be suspended. Each rung is sent once, so a clock that runs twice does not mail you twice.
Thirty days past due, the subscription lapses and the workspace is suspended. Be clear about what that is and is not. It is not read-only, it is closed: sign-in returns a refusal, and the refusal says the workspace is held rather than that you are. It is also not a data event. Suspension is a reach decision taken at one guard in front of the tenant surface, and not one row of your data is touched, which is why reinstating is a restore and not a recovery.
Your export keeps working the entire time. The export endpoints deliberately sit outside the suspension check, so a suspended workspace can still take everything and leave. Holding your records against an unpaid invoice is the specific thing this company exists not to do.
Coming back is a person here recording that your payment arrived, against its reference. There is no automatic un-suspension, and the ordinary manual reinstate path refuses a billing lapse outright, precisely so a lapse cannot be waved away without recording that the money actually came in.
If you are on the free core, none of this can reach you, and not because we promised. A workspace paying for nothing has no subscription row at all, so it yields nothing to the billing clock on any date and can never be suspended for non-renewal. That is the absence of a record rather than a rule someone has to remember to write, which is why it cannot rot.
What does an invoice show us, and what happens to an overpayment? A commitment we make
What an invoice shows you, and what happens to an overpayment
An invoice here is a document rather than a total. Each carries its own sequential number, allocated so two invoices issued at the same instant cannot collide, and each is a clean self-contained HTML document you can print, not a spreadsheet you have to reassemble. Your billing page shows the whole breakdown behind the amount: every plan and module line with its quantity, its unit price and its amount, and once the invoice is settled, the receipt details too, meaning the date it was paid, the rail it came in on and the gateway reference. You see what an amount is made of and how it was paid, not a total and the word paid. One gap, stated rather than glossed: there is no tax-amount line on it yet, because that needs real rate tables, and a number we cannot source is worse than a gap.
If you overpay, we do not keep it. The excess becomes an entry in an append-only credit ledger, reconciled against the invoice that caused it, shown to you on your own billing page rather than sitting quietly on our side, and consumed at your next renewal. A credit is not a payment and never a gateway call: it reduces what is payable, so a renewal fully covered by credit reads as paid with no money moving at all. Being honest about the boundary: credits are consumed at renewal, and applying one to something else is not built, because a speculative version would be worse than an absent one.
There is also no auto-debit mandate stored anywhere. Every invoice carries a hosted checkout link that you follow when you decide to. A renewal amount that has moved because your headcount moved is therefore always shown to you before it is paid, and there is no standing recurring authority sitting on your account for anyone to misuse.
What the system cannot do
Two sections · two enforced
Is our data used to train a model, and does anything here score our people? Enforced by the system
Deterministic by design, and your data never trains a model
Every entitlement, every access decision, every approval route and every generated letter in Capstan comes from a rule you can read and audit, never a model's guess, so nothing hallucinates onto a person's record. Payroll numbers are not ours to hallucinate either: your payroll partner computes them, and Capstan records what comes back, unchanged. Two commitments sit under that. First, no personal or sensitive record is ever sent to a third-party AI model or used to train one. There is one optional assistant a workspace can turn on: when it is on, it answers a user's own question from aggregate figures they could already see, such as headcount by department, and it sends those figures to our one AI sub-processor, OpenAI, which is listed on the sub-processor register and does not train on the data. Nothing sensitive and no per-person record leaves this way. Second, no AI here scores, ranks or infers things about your people, no attrition-risk ratings, no sentiment analysis, no algorithmic screening. This is architecture, not a promise on a slide, and it rests on the same structural narrowing set out under Guarantees built into the schema: a dashboard can only ever narrow who can see what, and small groups are suppressed, so nothing here can be turned into a profiler. The assistant stays opt-in, region-controlled and clearly labelled, and it reads only aggregates a caller may already see. Any feature that would falsify this section changes the section first.
What is impossible because of the way the data is stored? Enforced by the system
Guarantees built into the schema, not the marketing
Some promises are only as good as the policy behind them; these are enforced by the way the data is stored, so they hold even if someone wanted to break them. Engagement surveys keep who answered and what they answered in separate tables with no key between them, and results never render below a minimum group size, the anonymity is structural, not a setting. Advanced Analytics runs every report as the person viewing it, so a shared dashboard can only ever narrow what someone sees, never widen it, and small groups are suppressed so no individual is re-identified, sharing can't become leaking. This is the same structural narrowing the deterministic-by-design section relies on for its promise that nothing here profiles a person. And no customer money ever moves through Capstan: payroll and contractor payouts are compiled, recorded and handed to your bank or partner, so there is no balance to misdirect.
The card question has the same shape, and it is worth stating at full strength rather than as a reassurance. Capstan has no card field, no PAN-adjacent column and no payment form. There is nowhere in this system for a card number to live, which is a stronger guarantee than a policy saying we would not store one. Our payment provider is the merchant of record: the card is entered on their hosted checkout, they take the payment, and they issue the tax receipt for it. What Capstan holds is a gateway reference and an amount, which is to say an event id, a payment id, a status, a figure and a currency. That is the entire footprint, and it is a property of the schema rather than a promise about our conduct.
How you check any of this
Four sections · one enforced · three commitment
What stops a claim on this page going stale? Enforced by the system
How we know "shipped" means shipped
This site claims a lot of things are built. Two of the checks that run before any change reaches you are what stand behind those claims, and both exist because reading code was not enough.
The first is a runtime call-coverage gate. It takes every function the database defines, subtracts everything the database, API and end-to-end suites actually execute, subtracts a list of exclusions that each have to be named in a file with a reason and a review marker, and fails the build on whatever is left, by name. It exists because of a specific failure, three times over: code shipped that was registered, applied, and then never called once, including fifteen report sources that were an error for any customer who clicked them. Every check that read the code missed all three. This one runs it instead.
The second is a module boundary audit. It checks the shipped code and the live data against a declared manifest of what belongs to which module, and it fails if any paid surface, at any level from a whole module down to a single field, is reachable without the entitlement that pays for it. A violation emails the person who owns that governance. It is the packaging argument made mechanical: not a policy saying paid things stay behind their gate, but a build that stops when one does not.
What proves each control, and who keeps that index true? A commitment we make
Every control is traced to the thing that proves it
Internally, each control names two things: the document that defines it, and the artifact that proves it, meaning a test suite, a build gate, a migration, a generated inventory or a committed record. The standing goal is that an auditor given read access to the repository needs nothing else to trace any control from policy to proof. The register at the foot of this page is that index, written out for a reader who does not have that access. The repository is private, so each row names the mechanism rather than the file it lives in.
The mark on this section is deliberately commitment rather than enforced, and the distinction is the honest one. The controls in the register hold because of how the system is built. The register itself holds because a row is updated in the same change that moves a control, and nothing in the software forces that. Read the register for the controls, and treat its maintenance as one more thing you are taking on trust.
Who are your sub-processors, and will you tell us before they change? A commitment we make
Sub-processors
The live, dated sub-processor register is at /legal/sub-processors. Changes are announced before they take effect.
Where do we report a vulnerability? A commitment we make
Vulnerability disclosure
Found something? Write to security@usecapstan.com. We acknowledge within two business days, we don't sue good-faith researchers, and we credit fixes if you want the credit.
The control register
Which control, what defines it, and what proves it. Twenty-one controls in five groups, each naming the mechanism rather than the file it lives in, because the repository is private and a filename nobody can open is not evidence.
Nothing here is a target, a date or a plan; every row describes something that exists now. One caveat travels with the register itself, and it is the reason the section behind it is marked a commitment rather than enforced: a row is updated in the same change that moves a control, and nothing in the software forces that. Read that section first if you are weighing how much of this page to take on trust.
Each row opens to the document that defines the control and the artifact that proves it. The public rows name what each check does, not the vendor tools behind it; the full evidence, the specific scanners and gates included, is shared under NDA on request at security@usecapstan.com.
The data itself
-
01
Tenant isolation, row-level security on every table
Defined by
The tenancy and identity model, and the row-level-security testing standard.
Proved by
An inventory of every enforced policy, regenerated from the live schema on each run and compared against the committed copy, so a hand edit to a generated file fails the build. Isolation, completeness and staff-escalation suites run against a real Postgres. The completeness suite is catalogue-driven, so a new table is covered without anyone remembering to cover it, and it plants a deliberately unpoliced table to prove the discovery itself still works.
-
02
Encryption at rest, field-level envelope, the database holds no key
Defined by
The encryption design.
Proved by
The unit suite over the crypto package, the migrations that dropped the plaintext columns once the ciphertext columns were filled, and the binding that ties each ciphertext to its tenant, table and row so a value cannot be replayed onto a different one. How the scheme works is set out at Encryption and keys.
-
03
Right to erasure
Defined by
The deletion control document.
Proved by
The function that destroys a tenant's data keys, the residue scan that runs after it, the offboarding flow with its cooling-off window and typed confirmation, and a database test that exercises export and deletion together.
-
04
Data portability and subject access
Defined by
The export format document.
Proved by
The export service that produces the decrypted archive, and the audit rows that record an export being requested and then downloaded.
-
05
Audit-log immutability
Defined by
The operational policies.
Proved by
Update and delete revoked on the audit tables, and a trigger that rejects any mutation reaching them anyway. The trigger is the second line rather than the only one, and the isolation suite asserts that an update raises even for the table owner.
Who reaches it
-
06
Consented support access, time-boxed, masked and audited
Defined by
The consented-access control document.
Proved by
The function that logs every consented read, the policy that keeps sensitive fields masked unless the sensitive scope was granted and the specific staff member is authorised for it, and a database test over the whole path.
-
08
Staff access lifecycle: grant, removal, quarterly review, break-glass
Defined by
The operational policies and the staff onboarding and offboarding runbook.
Proved by
Database functions for requesting, approving and revoking a staff role, with a check inside the approval function that refuses an approver who is also the requester. Every grant and every revocation lands a row in the internal audit log. Five staff roles exist and no more, a leaver is not offboarded until every region confirms revocation the same day, and the quarterly review across all regions is a committed record.
What ships
-
09
Commercial-boundary enforcement, no paid surface reachable without its entitlement
Defined by
The module boundary governance document, and a machine-readable manifest with its own schema.
Proved by
On every push and in a nightly audit, run against the shipped code and the live data rather than the manifest alone, down to a single field, with a violation alerting the owner. The mechanism is described in full at How we know shipped means shipped.
-
10
Security scanning and remediation
Defined by
The security scanning document.
Proved by
Static analysis on every push, including repo-specific rules for raw-SQL interpolation, a decrypted value in a response, and secret-shaped logging; a secret scan across the full commit history; a vulnerability scan of the filesystem and configuration layers; and a weekly dynamic baseline scan of the deployed perimeter. Every finding is triaged to a verdict, real, false positive, or accepted with a stated reason, and an accepted one sits on a dated allowlist that expires, so it cannot become permanent through inattention. A blanket suppression is not an available answer. The specific scanners are named in the full evidence, shared under NDA.
-
11
Dependency vulnerability gate
Defined by
The security hardening document.
Proved by
A scan of the lockfile against the advisory databases, evaluated against an allowlist whose entries carry a date and expire.
-
12
Migration integrity
Defined by
The migration conventions.
Proved by
Header and classification validation on every migration, a dry run that applies the line and rolls it back before the real apply, a runner that verifies checksums, one ordered migration line applied to every region in a fixed order, and a nightly comparison against the deployed schema that reports any divergence.
-
13
Release gates, and what each one proves
Defined by
The quality engineering document.
Proved by
Lint, format and typecheck; unit, database, API, component and end-to-end suites; the runtime call-coverage gate and the module boundary audit, both described at How we know shipped means shipped; a design audit; an accessibility guard; and a web build that refuses to compile a secret-shaped variable into the browser bundle. The same document sets out what each gate does not prove, which is reproduced below rather than left in a drawer.
Running it
-
14
Key and secret lifecycle
Defined by
The key rotation and secret rotation runbooks.
Proved by
Rotation executed as written, with a two-key overlap window so nothing breaks at the instant of the change, and every rotation recorded in the internal audit log.
-
15
Backup and restore
Defined by
The backup and restore drill.
Proved by
The drill runs before a region goes live, at least quarterly after that, and on any change to the backup configuration, the key setup or the storage provider. It restores to an isolated target and never over production, proves the migration state on the restored database, and confirms that encrypted fields decrypt, because a restore without the key material is a ciphertext-only restore. The yield of each executed run is a committed record. No recovery-time or recovery-point number is published, because none has been derived from a drill.
-
16
Incident and breach response
Defined by
The incident response runbook, and the breach section of the privacy policy.
Proved by
A runbook executed as written and amended where reality diverged, with severity set at declaration, a dated incident record as the artifact, and an external communication cadence fixed by a standing standard rather than decided during the incident.
Third parties, regions and sign-off
-
17
Certified information security management system
Defined by
The ISMS scope and the Statement of Applicability the certificate is issued against, at version 1.1 dated 1 February 2025.
Proved by
An ISO/IEC 27001:2022 certificate held by the contracting entity, issued by a certification body accredited by the Standards Council of Canada, plus the completed first surveillance audit that continued it. The number, the dates and the scope are stated in full above, and the certificate itself is sent to any reviewer who asks. What it does not carry is a test of the product: that distinction is published rather than left for a reviewer to discover.
-
18
Sub-processor register and privacy impact assessment
Defined by
The privacy and data protection policy, which holds the onboarding gate, the notice period and the assessment triggers, and the live register, which holds the facts.
Proved by
Every row is checked against the shipped code: the required-credential set for the deployment and the boot-time configuration laws of the running service. A vendor approved but not engaged is listed as exactly that, because publishing an unengaged vendor overstates the data footprint and omitting an engaged one understates it. The notice period and the live register are covered at Sub-processors.
-
19
Market-entry due diligence, per region
Defined by
The region carve-out runbook.
Proved by
A reusable runbook, plus the committed execution record of the first region it was run for. The record is the drill yield, not a plan.
-
20
Decision provenance
Defined by
The documentation standards.
Proved by
An append-only decision log, a protected main branch with required review, and the commit history behind both.
-
21
Ownership and review routing
Defined by
The documentation standards.
Proved by
A code-owners file that routes a change to whoever owns the area it touches, and a protected main branch that makes the review happen rather than hoping for it.
What we do not have
Six absences, collected from the sections above so you do not have to read for them. Nothing here is new; each line links to the place that states it in full.
-
No SOC 2 report, and no target date for one. The ISO 27001 certificate covers the management system, not a test of the product.
ISO 27001, and what it covers -
SSO, SAML and IP restriction are not built.
Access -
Bring-your-own-key is not claimed as a shipped control.
Encryption and keys -
No recovery-time or recovery-point number is published, because none has been derived from a drill.
Backup and restore, in the register -
An invoice carries no tax-amount line yet, because that needs real rate tables.
What an invoice shows you -
A credit is consumed at your next renewal and cannot be applied to anything else.
What an invoice shows you
What these checks deliberately do not prove
The limits are published beside the controls, because a test that appears to prove more than it does is worse than no test. Five of them, taken from the same internal document that lists the gates.
-
The isolation suites prove separation, not every authorisation decision.
They prove that one tenant cannot reach another tenant's rows, and that a staff identity and a tenant identity stay apart, at the database. An application-layer decision that never reaches the database is outside what they cover.
-
A scanner finds shapes, not reasoning.
Static analysis will not catch a policy that grants reach it should not have. That is what the isolation suites are for, and neither one is claimed to do the other's work.
-
The accessibility scan is automated only.
It runs inside the end-to-end suite and fails on serious and critical findings, which makes it a baseline guard against WCAG 2.1 AA rather than a certification. No formal audit has been run, and the accessibility statement on this site says the same thing.
-
The payment integration is fixture-tested, not live-tested.
The request and response shapes come from our payment provider's published documentation and have never run against a live account of theirs. The seam itself, the signature verifier, idempotence and the wiring rule are proven; the wire format is not, and verifying it is a gated step before money moves.
-
A green suite is not a compiling suite.
The two are different claims. The distinction is written into the internal conventions because it once mattered, and the rule that came out of it is to check the gate you are actually relying on rather than the summary line above it.
The questions a reviewer asks, answered
Where is Capstan data stored?
In one self-contained region, the EU today. Data and object storage are in the EU at Frankfurt (eu-central-1) and compute runs in the EU at Amsterdam (eu-west-1), moved there from Mumbai on 6 September 2026. Each region is an isolated deployment: one database is one region, nothing is global, and there is no cross-region service key. The same stack is built to open in more regions as they come online. There is no region chooser.
Does Capstan hold SOC 2 or ISO 27001?
The entity behind Capstan, N53 Techworks LLP, holds ISO/IEC 27001:2022 for its information security management system (certificate SCC/2508NE/2897), with its scope, body and dates stated on this page and the certificate shared with reviewers on request. No SOC 2 report is held and no target date is published for one, because no internal document supports one.
Is bring-your-own-key (BYOK) available?
No. BYOK is not claimed as a shipped control. What is shipped is per-tenant envelope encryption at rest: an AES-256-GCM data key per tenant wrapped by a region master key, rotatable, with the master key held only in the API service so the database cannot decrypt its own contents.
How do people sign in? Is there SSO?
Sign-in is passwordless: a one-time code sent to email, with no password stored anywhere. Administrator MFA is available. SSO/SAML and IP restriction are not built yet and are not sold on any plan; when they ship they will be documented here.
Can I export my data, and what happens if I stop paying?
A one-click export in open formats is always available, including while an invoice is unpaid and while a workspace is suspended for non-payment, because the export endpoints sit outside the suspension guard. Deletion crypto-erases the tenant’s keys so the data is unreadable rather than merely flagged, and it happens only on your instruction or your configured retention schedule.
Does any AI evaluate our people?
No. There is no attrition scoring, no sentiment analysis and no algorithmic candidate screening anywhere in the product. The analytics engine is built so a dashboard can only narrow who sees what, never widen it, and small groups are suppressed so no individual is re-identified.
If this page answered your questionnaire, the next step is free.