Security and trust
What Ekvi does to keep a company's records separate, unaltered and correct — each statement below is about how the product is built, not a promise about the future.
Tenant isolation
Every table that holds a company's records carries the company's identifier, and Postgres row-level security is switched on for it, including for the table's owner.
The application connects with a database role that cannot bypass row-level security. Schema changes are made by a different role that the running application does not use.
A query that names no company fails; it does not return an empty page. A test against a live database proves it, and it runs on every change.
Independently of the database, the domain refuses any event that belongs to another company.
Records that are not altered
The ledger of capital events is append-only: a database trigger refuses any update or delete of a recorded event, even from the schema owner.
A document in the Data Room is never edited. Its status changes are a history of their own, and cancelling an executed document requires a written reason.
A correction is a new event that reverses the old one, so the record shows what was entered, what was corrected and when.
The one exception is a demo company, which its owner may delete together with its records. A real company is archived, not deleted.
Hosting
The service and its database are hosted on Oracle Cloud Infrastructure in the EU, in Madrid, Spain.
Prefer to keep the data on your own server? The same code runs on-premises with one command, with the same isolation.
Who else processes data
Each service below is called only when it is configured for the installation; without its settings the product does not contact it.
- Stripe — subscription payments and the customer portal.
- Cloudflare Turnstile — a challenge on the contact form of the public site.
- An outgoing-mail (SMTP) provider — confirmations, password resets, invitations and contact messages. The privacy notice names the provider in use.
- Sign-in providers — Google, Microsoft, GitHub, LinkedIn, Apple or a generic OpenID Connect provider, only for people who choose to sign in with them.
- The AI assistant's model provider — off unless enabled; when it is, a question and the records the assistant reads to answer it are sent to the model provider. The privacy notice names the provider in use.
How legal rules are reviewed
The Cyprus rules Ekvi applies are data, not constants in code. Each has a statement, a link to the primary source, the date it was last read and a status.
A rule starts as an AI draft. The owner accepts it, and a Cyprus lawyer or corporate secretary can then confirm it. An AI draft is never applied: the code that enforces a rule refuses to load one.
Today the rule book holds 78 rules: 0 confirmed by a lawyer or secretary, 78 accepted by the owner and 0 still AI drafts, not applied.
Every week an automated check compares the sources behind the rules with the last version seen and raises an issue when one changes. It never edits a rule; a person decides.
Accepting, confirming or withdrawing a rule is done by an administrator on a console that keeps a log of who did what and when.
Security contact
To report a vulnerability or ask a question about any of the above, use the contact form.