Audit software security and where your evidence lives
Your client's evidence is your firm's data. This page names the third parties that touch it, the structure that constrains our AI, and the parts we have not built.
Your client’s evidence is your firm’s data, and we treat it that way. This page names every third party that touches an engagement, what our AI may do with it, who on our side can reach it, and what we have not built yet.
Nothing here is an adjective. Every claim is checkable from outside or readable in the code, and the last section is the one that costs us something to publish.
Audit software security is not a question you get to answer for yourself. A peer reviewer asks where the evidence lived and who could reach it, and the answer is a fact about your engagement rather than about a vendor’s marketing.1 The obligation is yours. It does not transfer when you sign a platform up.
Which is why “the vendor said it was secure” is not an answer a firm wants to give in that room. So hand this to somebody. If your practice runs its own vendor questionnaire, send it and we will answer it in writing, name by name. No is written as no.
Every third party that touches an engagement
Six services are involved in running the product, and the sixth only loads typefaces. That is the whole list. It was assembled by reading the code rather than by copying the list from our consumer product, which runs on a different set of services for a different set of customers.
| Service | What it touches |
|---|---|
| Supabase | The database, sign in, and file storage. Controls, request items, evidence, workpapers, sign-offs and the activity log all live here. |
| Amazon Web Services, Bedrock | The model host for AI assist. One call sends the context for that one task, and only when somebody asks for it. |
| Amazon Web Services, SES | Transactional email. Team invites, client evidence requests, and the notification digest. |
| Stripe | The platform fee. Card details go to Stripe and never reach our servers. |
| Netlify | Serves the application files and the marketing site. No engagement data is stored there. |
| Google Fonts | Three typefaces, fetched by your browser when the app loads. It sees an address, never a file. |
Two categories a firm might expect are absent, and that is the point of publishing the table. No error monitoring service and no product analytics service is wired into the auditor application. The consumer product uses both. This one does not, so neither is listed, and if that ever changes the row appears here before the code ships.
What we store, and where the boundary sits
One engagement is a short list of things. Naming them is more useful to you than a paragraph about encryption, because this list is close to what an inspector will ask you to produce.
- Scoping
- The criteria you selected, the period you are examining, and the record of the decisions behind both.
- The request list
- Numbered, one number per item, and the number is unique inside the engagement so a reference in a workpaper resolves to exactly one request.
- Evidence
- Each file carries a flag against your period: in window, out of window, or unknown when the date cannot be established.
- Workpapers
- The document body, its tick marks and cross references, and the version history behind it.
- Sampling
- The population, the method, the draw, and the seed the draw was keyed with, so a reviewer can reproduce the selection instead of taking it on trust.
- Sign-offs
- Recorded against the document version that was actually signed, not against whatever the document says a month later.
- Issuance
- Who sealed the engagement, and when.
- The activity log
- One spine per engagement, in the order things happened.
Evidence files have no permanent public address. When you open one the server mints a signed link that expires in ten minutes, and that link is the only way to the bytes. A report you have already shared with a client is deliberately different: those links live longer because the client has to be able to open them, and we would rather write that distinction down than quote you the smaller number twice.
The browser does not reach the database unchecked. Every row sits behind row level security keyed to your firm, and the writes that matter run through database functions that recheck your membership, your role and the seal in SQL before anything lands. A tampered client does not get another firm’s engagement by asking politely.
An engagement exports as one file. The archive holds the report, the planning memos, every workpaper, the sign-off history, the sampling records, the letters and the activity log, with a manifest, and it assembles before issuance as well as after. Anything that does not exist is listed as absent rather than filled in with a placeholder. That is the answer to the lock-in question, and it is the fourth question on the software buying page for a reason. Test it in week one.
What the AI is allowed to do
AI assist runs through one server function and nowhere else. The model is hosted on Amazon Bedrock inside our own account, and the task running there today is Amazon Nova Pro. The transport is model agnostic, so which model runs is configuration rather than a rebuild.
We do not train anything on your engagements, and no code path exists that would export them for that purpose. What Amazon retains under its own terms is Amazon’s statement to make rather than ours. Ask us and we will send you those terms as they publish them, because a vendor paraphrasing somebody else’s contract into something more comfortable is exactly the move you should not accept from us.
The vendor assurances are the weaker half of this anyway. Five things are structural, which means they hold whether or not you believe a word we say about intentions.
- No write path into the file. No task can write a control, a document, a sample, or any conclusion field. Output lands in a suggestions table and stops there.
- A model written conclusion cannot reach you. The drafting prompt forbids a conclusion section, and a server side filter cuts the stream the moment one begins. The conclusion is yours to write.
- Every suggestion and every decision is a row. The call, the suggestion, and your accept, edit or dismiss all land in the engagement activity log with the person who did it attached.
- It is a partner switch. AI assist is a firm level setting and only a partner can change it. Off means off for the whole firm, including you.
- A sealed engagement refuses it. Once the report is sealed the database rejects an AI call against that engagement outright.
Who at Polara Labs can reach an engagement
Somebody has to be able to fix a stuck engagement, so this deserves precision rather than reassurance.
There is no log in as this firm feature in the auditor product. The operator surface is a read only list: firms, their members, pending invites, and a count of engagements. It cannot open an engagement, read a workpaper, or download a file. Support that needs more than that is support that has to ask you first.
Underneath the product, the production database is reachable by the person who operates it. Today that is one person at a small company. We are not going to describe a separation of duties we have not built, and you will get this same sentence in writing if your questionnaire asks the question directly.
On the judgment itself we hold no position at all. Nothing in the product routes a draft conclusion to us for review, nothing asks us to approve one, and we form no view on your scoping. The fee does not move with your findings, your conclusions, or whether the report is qualified. We are paid the same either way. A platform fee that moved with an outcome would be an independence question,2 and you would be the one answering it in your next review.
Polara Labs is not a CPA firm. SOC 2 examinations are performed by independent licensed U.S. CPA firms.3 The scoping judgment, the conclusions and the issuance decision belong to your firm. What the system does is record who reached them and when.
What we do not have
Read this part twice. It is the part that costs us something to publish, and it is the part your procurement team would have found anyway, which makes hiding it both dishonest and pointless.
Polara Labs does not hold a SOC 2 report of its own. It is planned and it is unfinished. On the day it exists this page will name the firm that issued it and the period it covers, because that is the only version of the claim worth anything. Until then, take the absence at face value rather than reading a hint into it.
We do not run a bug bounty. No third party has performed a penetration test against this product. If your process requires either of those, or a data processing agreement on your paper, ask us and you will get a yes or a no rather than a maybe that costs you a quarter.
Reporting a security problem
Email founder@polaralabs.com and it reaches a person the same day. There is no form. A real report gets a real answer, and where the finding is ours you will hear what changed and when it shipped.
The consumer side of this business publishes the same accounting for the companies it serves at our trust page, which covers a different data set under different obligations. What we will and will not do commercially is written out in the independence and ethics policy, and what the product costs sits on the Enterprise page rather than behind a call.
Questions
Which third parties can see our engagement data?
Can the AI write a conclusion into a workpaper?
Can Polara Labs staff open one of our engagements?
Does Polara Labs hold its own SOC 2 report?
Can we take an engagement with us?
Sources
Bring one engagement.
The first engagement is on us. After that it is $600 an engagement, or $750 a month for as many as you run. Run one, start to seal, and judge the binder that comes out.
Book a working session