Plainly, and in full. A security page that lists only strengths is marketing.
We never create, store or ask for a password — so there is no password database to leak, no reuse risk, and no reset flow to get wrong.
We generate 32 bytes of cryptographic randomness and store only its
SHA-256 hash. The raw token exists in exactly one place: the email we
just sent you.
Valid for fifteen minutes and usable once. Expired, reused or unknown tokens all return the same generic response, so the page cannot be used to discover which email addresses have accounts.
An opaque identifier in an httpOnly · Secure · SameSite cookie — never a
token in browser storage where a script could read it. The session lives server-side,
which means we can revoke every session everywhere, instantly.
There is no separate signup form. The same link that signs you in creates your account and grants the free hour — one less flow to secure.
Billing is measured in minutes of source material, shown to you as hours.
| Rule | Value | Why |
|---|---|---|
| Billing unit | 1 minute of source | Hour-rounding punishes short uploads |
| Minimum per job | 10 minutes | Stops tiny uploads flooding the queue at no cost |
| Maximum per job | 12 hours | Matches storage and queue limits |
| Charged | on success only | A failed job costs you nothing |
| Shorts produced | does not affect price | Compute follows source length, so price should too |
| Top-up credits | never expire | Spent after your monthly allowance, so you never lose what you paid extra for |
| Layer | Control |
|---|---|
| Upload | Your file goes straight from your browser to storage with a signed, expiring URL. It never passes through our application server. |
| Download | Signed URLs with short expiry. No bucket is ever public. |
| Payments | Handled entirely by Stripe on their pages. Card details never touch our systems. |
| Transport | TLS everywhere, HSTS. |
| Database | Row-level security — a query cannot reach another account's rows even if application logic is wrong. |
| Auth gate | Fails closed. A broken verifier denies access; it never defaults to allowing it. |
| Secrets | Environment only, never committed, rotated on staff change. |
| Voice profiles | We hold none. Customer voice enrolment is not built, so there is no biometric data in your account to protect or to delete. When it is built it will store a numeric vector, never audio — and this row will say so only once that is true. |
The controls that are live today, in plain language.
Written down in advance, because the middle of an incident is the worst time to decide what to do.
Report a vulnerability: security@vigge.pro — we will not pursue anyone acting in good faith
If something here is unclear or you need it in a signed document, write to us.