The architecture
It runs without being asked.
It never acts without approval.
Those two promises pull in opposite directions, and holding both is the entire design. An agent that waits to be prompted is a form. An agent that acts on its own is a liability you have to audit. So Kindlast splits the work across four agents, and puts the only irreversible step behind a human.
What follows is the pipeline as it is actually built. To keep it concrete, one real finding is carried the whole way through: a marketing analytics tool that is processing personal data with no record of processing behind it.
The Watcher
It checks every day, so nobody has to remember to
Every day it looks through your compliance record for problems, without being asked.
Once a day it goes looking for three kinds of trouble: deadlines coming up, things the law expects you to have that you do not, and customer data requests that are running out of time to answer.
Nothing triggers it. You do not open an app or start a scan. This is the difference between compliance you remember to do and compliance that happens.
If it finds the same problem again tomorrow, it updates the one you already have rather than sending you a second copy. Your inbox does not fill up just because time passed.
Under the hoodCalled the Watcher in the repository. A pg_cron job runs the sweep daily; the detectors are deterministic SQL with no model in the loop, and each finding carries a stable dedup key so repeat runs collapse onto the open finding rather than duplicating it.
- How often
- Every day
- What decides
- Fixed rules, not AI
- Repeat problems
- Updated, never duplicated
Signal state: Found
Picked up by the daily check. If it is still there tomorrow, this same item updates.
The Analyst
It works out what the problem means and what to do
It turns a raw signal into one specific thing you can actually do.
Knowing something is wrong is not much use on its own. This step works out what it means: what the problem is in plain English, which specific law it relates to, how serious it is, roughly how long it will take to fix, and exactly one thing to do about it.
Vague advice never reaches you. If the draft says something like "consider reviewing your processes", it is rejected and rewritten until it says something you could actually sit down and do.
Under the hoodCalled the Analyst in the repository. A language model drafts the explanation, then a deterministic critic reads it back and rejects anything vague or non-imperative, regenerating until it passes. The critic is ordinary code, not another model.
- Written by
- AI
- Checked by
- Fixed rules
- You get
- The law, the severity, one action
Signal state: Explained
Tied to GDPR Article 30. Serious, roughly two hours of work, with one thing to do.
The Messenger
It comes to you, rather than waiting to be found
The answer arrives in your inbox, and replying takes one tap.
You get an email. Approve, Reject, and Remind me later are one tap each, so answering never means logging in first or finding the right page.
There is no dashboard you have to remember to check. The same channel sends a short summary on Monday and a warning when a deadline is getting close, so the only thing you have to keep up with is your email.
Under the hoodCalled Comms in the repository. Delivery goes through an outbox as transactional email, with signed one-tap action links so a reply is authenticated without a session.
- Where it lands
- Your inbox
- To answer
- One tap
- Also sends
- Monday summary, deadline warnings
Signal state: Sent to you
In your inbox, with Approve, Reject, and Remind me later. Now it waits for you.
The Hands
It does nothing until you say yes
Nothing changes unless you approve it, and everything that happens is written down.
Until you approve, nothing happens. There is no route for it to act on its own, and a finding you ignore simply stays open. This is deliberate: an agent that can change your records unsupervised is a liability, not a help.
When you do approve, it does the one thing that was proposed and nothing else, then records what happened, when, and that you approved it. That record cannot be edited afterwards, which is what makes it worth anything to an auditor.
Under the hoodCalled the Executor in the repository. There is no autonomous write path: an explicit approval is the only trigger, and it writes an immutable audit log row carrying the actor and a timestamp.
- Starts when
- You approve
- Does
- Only what was proposed
- Leaves behind
- A record nobody can edit
Signal state: Done
The missing record was created after you approved it, and the decision is logged permanently.
Do not take our word for any of this.
Every detector, every critic rule, every prompt, and every row-level security policy described on this page is in the repository. If a claim here and the code disagree, the code is the one telling the truth, and you can open an issue about it.
