Data security
Use AI safely, with every step auditable
Every workflow we build carries these four safeguards. They are not a paid extra.
For IT and procurement — jump straight to a section
Your data does not leak
We map your data before any work starts — tap a tier to see where it is allowed to go.
- Data sorted into 3 tiers before a line of code is written
- Sensitive tier: masked, or run on your own server
- NDA on day one · contracts bar training on your data
A person approves every point that matters
AI does the heavy lifting, people decide — switch the approval off in the graphic and see what happens.
- Approval points: pricing, discounts, payments, complaints
- Approve from your phone, with the full reasoning attached
- Anything the AI is unsure about goes to a person automatically
Quality rules before anything ships
Every workflow has a checklist you signed off on — turn it off in the graphic to see what slips through.
- Numbers must match the source — price, total, tax, stock
- Answers from documents must cite them; if nothing is found, it says so
- A monthly report of the % sent back
One step at a time always reversible
There is no day when one switch changes the whole company — it opens stage by stage; tap through them here.
- We move up a stage when the numbers say so, not when we feel like it
- Your team holds the off switch; work goes back to the old way at once
- The code, the data and the vendor accounts are yours
What it actually looks like
One piece of work and everything it passed
- Price matches the latest price file
- Total and tax are correct
- Every figure traces back to a system
- 12% discount is over the 10% cap
- 09:12AI
Drafted quote #4821 from the customer chat
- 09:13System
Ran 8 checks — 1 failed, sent to a person
- 09:14Human
Manager approved — discount changed 5% → 3%
- 09:14System
Emailed and logged to the CRM
Mock example (names and numbers invented) — the real one is built around your business
In writing
Not just a promise that it is safe — there is something to inspect
NDA from day one
A DPA on top, in whatever form your legal team wants
A written data map
Which job uses which tier, and what it passes through
Access to the logs
Your team looks back on its own, without asking us
All of it belongs to you
Code, documents, data, vendor accounts
Need a stricter standard than this — see the enterprise page
Where the data sits
Three ways to set it up — you choose how far data travels
No single option fits every company. This is the table your IT team needs to decide from — the trade-offs both ways, stated plainly.
Cloud model via API
Your system calls an outside provider's model, with sensitive data masked before anything goes out.
Best for: Businesses that want to start fast, on work that still functions once the data is masked.
Runs in your own cloud account
The whole system is installed in your account and VPC. keelz works inside the access you grant, and you can take it back at any time.
Best for: Companies with an IT team and a cloud account already in use.
On your own servers (Private LLM)
A model installed on your organisation's own machines. No data leaves your network at all — details at /services/private-llm
Best for: Companies whose rules forbid data leaving, and who can invest in the hardware.
| What IT asks | Cloud model via API | Runs in your own cloud account | On your own servers (Private LLM) |
|---|---|---|---|
| Data that leaves your company | Only masked text goes out | Stays in your account, except model calls | Never leaves your company |
| Where the data sits | The model provider's data centre | Your account/VPC, you pick the region | Machines inside your organisation |
| Who holds the accounts and keys | Keys issued from your own account | You hold both the account and the keys | You hold it all, keelz enters as allowed |
| Connecting to internal systems | Only through the APIs you expose | Can connect inside the same network | Connects to internal systems directly |
| Upfront cost | Lowest, pay for what you use | Medium, cloud cost sits on your bill | Highest, hardware before you start |
| Time before you go live | Fastest of the three | Medium, cloud account is set up first | Longest, hardware then installation |
| Data sensitivity it suits | General data, and data you can mask | Internal data and customer data | Confidential and PDPA-sensitive data |
| Dependence on outside vendors | High, tied to the model provider | Medium, providers can be swapped | Low, open models on your machines |
Data that leaves your company
- Cloud model via API
- Only masked text goes out
- Runs in your own cloud account
- Stays in your account, except model calls
- On your own servers (Private LLM)
- Never leaves your company
Where the data sits
- Cloud model via API
- The model provider's data centre
- Runs in your own cloud account
- Your account/VPC, you pick the region
- On your own servers (Private LLM)
- Machines inside your organisation
Who holds the accounts and keys
- Cloud model via API
- Keys issued from your own account
- Runs in your own cloud account
- You hold both the account and the keys
- On your own servers (Private LLM)
- You hold it all, keelz enters as allowed
Connecting to internal systems
- Cloud model via API
- Only through the APIs you expose
- Runs in your own cloud account
- Can connect inside the same network
- On your own servers (Private LLM)
- Connects to internal systems directly
Upfront cost
- Cloud model via API
- Lowest, pay for what you use
- Runs in your own cloud account
- Medium, cloud cost sits on your bill
- On your own servers (Private LLM)
- Highest, hardware before you start
Time before you go live
- Cloud model via API
- Fastest of the three
- Runs in your own cloud account
- Medium, cloud account is set up first
- On your own servers (Private LLM)
- Longest, hardware then installation
Data sensitivity it suits
- Cloud model via API
- General data, and data you can mask
- Runs in your own cloud account
- Internal data and customer data
- On your own servers (Private LLM)
- Confidential and PDPA-sensitive data
Dependence on outside vendors
- Cloud model via API
- High, tied to the model provider
- Runs in your own cloud account
- Medium, providers can be swapped
- On your own servers (Private LLM)
- Low, open models on your machines
You can switch later — many companies start with the first option on low-risk work, then move anything touching personal data in-house.
Technical controls
A list your IT team can tick off line by line
Standard on every project, not a paid add-on — anything tagged “planned” is something we have not finished yet, and we say so here instead of staying quiet.
Encryption
Data is encrypted on the wire and on disk, and is never written to a log in readable form.
Encrypted in transitTLS 1.3
Every channel runs on HTTPS/TLS 1.3. Old protocol versions and unused ports are turned off.
Encrypted at restAES-256
Disks, databases and backup files are all encrypted with AES-256.
No sensitive data in logsMasked before writing
ID card numbers, phone numbers, addresses and bank account numbers are masked before anything is written to a log or sent to error tracking.
Masked before it leaves
When a cloud model is called, anything that identifies a person is replaced with a reference code before it leaves your system, then swapped back when the answer returns.
Certificates and expiry datesAuto-renewed
TLS certificates renew automatically, with an alert ahead of time if a renewal fails.
System access
Who can reach what is named person by person, and can be taken back the moment a job ends.
Only the access the job needsleast privilege
We work on least privilege. The team gets access to the specific systems and environments a job needs, never full admin by default.
One account per personNo shared accounts
Everyone uses their own account. No shared accounts and no shared passwords, so every action traces back to a person.
Two-factor authenticationIn progress
The goal is MFA on every account that reaches a customer system — cloud, code repositories and working tools. It is not yet enforced on every account.
Access reviewed each quarterIn progress
The system already builds a full access report every quarter (who can log in, who can read keys, which keys have gone unrotated). The step where an owner checks and signs it off is not yet running on a schedule.
Access pulled when a job or a person endsWithin 1 business day
Accounts are closed and every key revoked within 1 business day of the job ending or someone leaving the team.
Keys and secrets
Keys and passwords never sit in the code, are split per environment, and can be changed without touching the system.
Secrets live outside the repoNever in git
Keys and passwords sit in a secret manager or in that environment's variables. They are never in a code file.
A separate key per environmentdev/prod split
dev, staging and prod use different keys. A dev key cannot reach real data.
Keys rotated on cycle and on any eventRotated on any event
Keys change on the agreed cycle, and immediately when someone leaves the team or a key is suspected of leaking.
Secret scan before every deployStops the build
The standard deploy script scans the whole tree before each build. A .env file, a provider key or anything that looks like a secret in the source stops the build on the spot.
Secrets handed over one way onlyExpiring links
No passwords or keys over chat or email. Only a password manager, or a link that expires by itself.
Keeping environments and data apart
Experiments never touch the real thing, and one customer's data never mixes with another's.
dev / staging / prod kept apart3 separate tiers
Different machines, different databases, different keys. A change in dev has no path to real data.
No real data during developmentMasked data
Development and testing run on masked or synthetic data. If real data is unavoidable it is approved case by case and deleted when the work is done.
One store per customerNo mixing across customers
Each project has its own storage and its own permissions. One customer's data is never used for another.
Agents see a fixed scope
An agent sees only the data sets and tools named in that job. Widening it means changing the configuration, with an approver.
Team machines set up to one standardDisk encryption
Disk encryption, automatic screen lock, and no customer data files kept on personal machines.
Logs and the audit trail
Everything an agent does leaves a trace you can check later, and you can open it yourself without asking keelz.
Every agent action is loggedaudit log on everything
We record who asked, what they asked, when, which source documents were used, and what was answered.
You can open it yourselfAdmin screen
There is an admin screen on your side. Search and filter by user, time range and action type, and export to a file.
Logs cannot be editedappend-only
Logs are append-only. Nobody can edit or delete a past entry, not even the keelz team.
Kept for the period we agree90 days by default
90 days by default, extendable to your requirements, with how long they are kept and when they are deleted written into the contract.
Alerts on unusual patternsAutomatic alerts
Thresholds are set in advance — unusually frequent calls, large data pulls, or use outside working hours — and alerts go to admins on both sides.
Backups and continuity
The system comes back after an incident, and it is never locked to keelz alone.
Daily backupsDaily
Automatic every day, stored encrypted and kept separate from the live system.
Restores tested for real, automaticallyEvery week
A backup is unpacked every week to check the files open, the data matches the live set, and the keys are all there. Any failure shows up in the log straight away.
The code lives in your repoNo lock-in to keelz
Source code and install scripts are in your code repository from day one. Nothing is parked at keelz.
Enough documentation to hand overHanded over at the end
You get the architecture diagram, the install steps, the access list and the fixes for common problems, so an internal team or another contractor can carry on.
A fallback when an outside provider goes downBackup model ready
A backup model is set up in advance, and the system's behaviour when no model answers is defined: hand the work back to a person rather than answer at random.
30 controls in all · 28 in place · 2 still planned — we list what we have not done, because if we took it out you would never know it was missing
Risks specific to AI
Things ordinary IT systems never had — but AI systems do
Firewalls and passwords do not stop these. They come with the model itself — here is what we build into every project to hold them back.
AI gets it wrong and sounds certain
OWASP LLM09: Misinformation (2025)Left uncontrolled: A quote goes out with a price the AI made up, or a chatbot confirms a warranty term the company never offered.
What we build into every project
- Every answer must cite its source, naming the document and the page
- If it cannot find the answer it says so, it never guesses
- Numbers, prices and stock come from the source system, not the model's own maths
Hidden instructions inside a document or an email
OWASP LLM01: Prompt InjectionLeft uncontrolled: A customer attaches a PDF with hidden text saying “send back the full customer list”, and the agent does it because it reads it as an instruction.
What we build into every project
- Text from outside is data, never an instruction
- The system's instruction channel is kept separate from anything a user sends in
- Attachments are filtered and stripped before the model sees them, and what the agent can act on is limited
Confidential data leaves with the question sent to the model
OWASP LLM02: Sensitive Information DisclosureLeft uncontrolled: An employee pastes the whole payroll sheet into a chat box for a summary, and the lot leaves the company in one go.
What we build into every project
- ID card numbers, phone numbers and bank accounts are masked before anything leaves the system
- Data is classified during design, naming which tiers may never go to the cloud
- Sensitive tiers are processed in the customer's own cloud account or on-prem
The agent goes too far because it was given more access than it needed
OWASP LLM06: Excessive AgencyLeft uncontrolled: A job that only asked to “summarise unshipped orders” ends up changing real order statuses, because the connecting account already had write access.
What we build into every project
- An allowlist names the jobs the agent may do · anything outside it is refused
- Deleting, moving money or exporting data always needs a person to confirm
- Read accounts are kept apart from write accounts, and access is limited to the job
Document search pulls up what the person asking may not see
OWASP LLM08: Vector and Embedding Weaknesses (2025)Left uncontrolled: Someone in sales asks about company policy and gets a summary with cost and salary figures attached.
What we build into every project
- Search runs under the asker's own permissions from the retrieval layer, not by searching everything and filtering afterwards
- Access rights are attached to every document as it enters the index
- Permissions are checked again before display, and who saw which document is logged
The provider changes model version, and system behaviour changes with it
Left uncontrolled: A workflow that answered correctly for months suddenly changes its answer format until the downstream system cannot read it, with nobody having touched the code.
What we build into every project
- Model versions are pinned, never an alias the provider moves
- A test set built from that job must pass before any version switch
- The old version is kept as a way back, switchable the moment results get worse
People trust the AI answer too much
Left uncontrolled: The team forwards the AI answer to a customer without opening the source document, because it reads tidy and reasonable.
What we build into every project
- Users always see where an answer came from and how confident it is
- Anything touching money, contracts or customer communication needs a person to approve it first
- The real users are trained at handover on what to trust and what to check
The system or the provider goes down, and the work stops with it
Left uncontrolled: The model provider has an afternoon outage, and order intake that moved entirely to AI comes to a halt with no fallback way to work.
What we build into every project
- Every job has a manual way back, written into the handbook
- Designed so model providers can be swapped, never tied to one
- A kill switch per workflow, so only the part with the problem is turned off
PDPA
Who is responsible for what — written down before we start
In law you are the personal data controller and we are the processor acting on your instructions. This table is what goes into the data processing agreement (DPA).
| Duty in law | Your side (controller) | keelz side (processor) |
|---|---|---|
| Set the purpose and the lawful basis | You decide what is collected, what for, and on which basis | We process only what your instructions and the DPA allow |
| Notify data subjects / collect consent | You publish the privacy notice and collect consent yourself | We build the notice and consent points using your wording |
| Records of processing activities (RoPA) | You keep the controller-side RoPA and keep it current | We keep the processor-side RoPA + give you our data map |
| Put appropriate security measures in place | You set the sensitivity tiers and access inside your company | Encryption in transit and at rest · split access · audit logs |
| Answer data subject requests (DSAR) | You take the request, verify identity, answer within 30 days | We search, export, edit or delete on instruction, in 7 business days |
| Report a personal data breach | You notify the PDPC within 72 hrs · notify subjects if high risk | We tell you within 24 hrs, with the scope, evidence and logs |
| Using sub-processors | You approve the list, and object to any you cannot accept | We name them in advance and bind them to the same terms |
| Delete or return the data when the work ends | You choose return or deletion, and receive the final data set | We return in the agreed format, then delete in 30 days + written confirmation |
Set the purpose and the lawful basis
- Your side (controller)
- You decide what is collected, what for, and on which basis
- keelz side (processor)
- We process only what your instructions and the DPA allow
Notify data subjects / collect consent
- Your side (controller)
- You publish the privacy notice and collect consent yourself
- keelz side (processor)
- We build the notice and consent points using your wording
Records of processing activities (RoPA)
- Your side (controller)
- You keep the controller-side RoPA and keep it current
- keelz side (processor)
- We keep the processor-side RoPA + give you our data map
Put appropriate security measures in place
- Your side (controller)
- You set the sensitivity tiers and access inside your company
- keelz side (processor)
- Encryption in transit and at rest · split access · audit logs
Answer data subject requests (DSAR)
- Your side (controller)
- You take the request, verify identity, answer within 30 days
- keelz side (processor)
- We search, export, edit or delete on instruction, in 7 business days
Report a personal data breach
- Your side (controller)
- You notify the PDPC within 72 hrs · notify subjects if high risk
- keelz side (processor)
- We tell you within 24 hrs, with the scope, evidence and logs
Using sub-processors
- Your side (controller)
- You approve the list, and object to any you cannot accept
- keelz side (processor)
- We name them in advance and bind them to the same terms
Delete or return the data when the work ends
- Your side (controller)
- You choose return or deletion, and receive the final data set
- keelz side (processor)
- We return in the agreed format, then delete in 30 days + written confirmation
How long we hold the data, and when it goes
| Type of data | Stored where | Held how long | Deleted when |
|---|---|---|---|
| Real data used for testing / sample documents | keelz-managed dev machines, a separate space per project | Only during that project's build and UAT | Whole set deleted once UAT passes · masked data where possible |
| Data flowing through the workflow in production | Your own source and target systems · keelz keeps no copy | Per your own systems' retention policy | Deleted on your systems' cycle · keelz has no copy to delete |
| Prompts and answers sent to the model | The model provider via API · nothing kept permanently at keelz | The provider's temporary window (named in the annex) | Auto-deleted at the end of that window · contractual no-training terms |
| Audit logs of what the agent did | Your systems, or a server keelz runs for you | 90 days to start, adjustable to your requirements | Rotated out automatically at the end of the set period |
| Files users upload into the system | File storage in your own cloud account by default | The file lifetime agreed when the work was designed | Deleted on the set policy, or immediately when you say so |
| Contact details of system users and admins | Your permission system · keelz keeps only what it needs to coordinate | For the life of the service contract | Deleted within 30 days of the contract ending |
| Backup copies | Encrypted backup storage, separate from the live system | Overwritten on the backup cycle, no more than 30 days | Cannot be deleted one by one · expires on cycle after the live copy goes |
Real data used for testing / sample documents
- Stored where
- keelz-managed dev machines, a separate space per project
- Held how long
- Only during that project's build and UAT
- Deleted when
- Whole set deleted once UAT passes · masked data where possible
Data flowing through the workflow in production
- Stored where
- Your own source and target systems · keelz keeps no copy
- Held how long
- Per your own systems' retention policy
- Deleted when
- Deleted on your systems' cycle · keelz has no copy to delete
Prompts and answers sent to the model
- Stored where
- The model provider via API · nothing kept permanently at keelz
- Held how long
- The provider's temporary window (named in the annex)
- Deleted when
- Auto-deleted at the end of that window · contractual no-training terms
Audit logs of what the agent did
- Stored where
- Your systems, or a server keelz runs for you
- Held how long
- 90 days to start, adjustable to your requirements
- Deleted when
- Rotated out automatically at the end of the set period
Files users upload into the system
- Stored where
- File storage in your own cloud account by default
- Held how long
- The file lifetime agreed when the work was designed
- Deleted when
- Deleted on the set policy, or immediately when you say so
Contact details of system users and admins
- Stored where
- Your permission system · keelz keeps only what it needs to coordinate
- Held how long
- For the life of the service contract
- Deleted when
- Deleted within 30 days of the contract ending
Backup copies
- Stored where
- Encrypted backup storage, separate from the live system
- Held how long
- Overwritten on the backup cycle, no more than 30 days
- Deleted when
- Cannot be deleted one by one · expires on cycle after the live copy goes
Written into the contract: your data deleted within 30 days of the project ending with proof of deletion sent to you — backups expire on the cycle listed in the table
For the work we build for you, the contracting party and the data processor in law is CODELAB STUDIO CO., LTD. (บริษัท โค้ดแล็บ สตูดิโอ จำกัด) — “keelz” is a brand of that company; the name on the NDA and the data processing agreement (DPA) is always the registered one.
If your customers exercise their PDPA rights
You take the request and verify identity
The data subject files the request with you as the data controller. You check who they are and identify which right they are exercising.
You send keelz a written instruction
Send it through the channel named in the DPA, with the identifying details, the right being exercised and the systems involved. keelz never acts without an instruction.
keelz searches and does the technical work
We go through every system we run for you, then export, edit, suspend or delete as instructed. Normally done within 7 business days of a complete instruction.
We hand you the result and the evidence
A summary of which systems held the data and what was done, with the supporting logs, so you can answer the data subject inside the deadline the law sets.
Sub-processors
Who else sees your data
The question procurement always asks — we answer before it comes. The actual list for your project is an annex to the contract, and we tell you before any of it changes.
| Provider | Used for | Sees what | Processed in | No training on your data | If you say no |
|---|---|---|---|---|---|
| Anthropic (Claude) | Main model for reading, summarising and drafting in most work | Only the prompt and documents each workflow run sends in | United States | In the contract | Switch to another model, or run a Private LLM on your machines |
| OpenAI | Backup model, plus specific jobs such as speech to text | Only prompts and files sent to the API | United States | In the contract | Can be turned off · use Claude or Gemini for the same job |
| Google (Gemini) | Long documents, and work that connects to Google Workspace | Prompts, documents and files sent to the API | The region chosen for that project | In the contract | Can be turned off · swap to another model with similar results |
| Cloud / server provider | Runs the workflow apps and databases keelz manages for you | All the data that system stores (encrypted at rest) | Singapore or Thailand, agreed per project | In the contract | Move it into your own cloud account, or on-prem |
| Email / notification provider | Sends the alert emails and reports the agent produces | Recipient address, subject line and the content sent out | Depends on the provider chosen for that project | In the contract | Use your own mail server, or notify through LINE/Teams |
| File storage provider | Stores attachments and the documents the agent creates as it works | Uploaded files and output files (encrypted at rest) | Singapore, or your own account | In the contract | Point it at storage in your own account or network |
| Error tracking tool | Catches system errors so we fix them before the work stalls | Error messages and metadata · personal data stripped out | Depends on the provider chosen for that project | No specific clause | Can be turned off · use logs on your own server instead (slower fixes) |
Anthropic (Claude)
- Used for
- Main model for reading, summarising and drafting in most work
- Sees what
- Only the prompt and documents each workflow run sends in
- Processed in
- United States
- No training on your data
- In the contract
- If you say no
- Switch to another model, or run a Private LLM on your machines
OpenAI
- Used for
- Backup model, plus specific jobs such as speech to text
- Sees what
- Only prompts and files sent to the API
- Processed in
- United States
- No training on your data
- In the contract
- If you say no
- Can be turned off · use Claude or Gemini for the same job
Google (Gemini)
- Used for
- Long documents, and work that connects to Google Workspace
- Sees what
- Prompts, documents and files sent to the API
- Processed in
- The region chosen for that project
- No training on your data
- In the contract
- If you say no
- Can be turned off · swap to another model with similar results
Cloud / server provider
- Used for
- Runs the workflow apps and databases keelz manages for you
- Sees what
- All the data that system stores (encrypted at rest)
- Processed in
- Singapore or Thailand, agreed per project
- No training on your data
- In the contract
- If you say no
- Move it into your own cloud account, or on-prem
Email / notification provider
- Used for
- Sends the alert emails and reports the agent produces
- Sees what
- Recipient address, subject line and the content sent out
- Processed in
- Depends on the provider chosen for that project
- No training on your data
- In the contract
- If you say no
- Use your own mail server, or notify through LINE/Teams
File storage provider
- Used for
- Stores attachments and the documents the agent creates as it works
- Sees what
- Uploaded files and output files (encrypted at rest)
- Processed in
- Singapore, or your own account
- No training on your data
- In the contract
- If you say no
- Point it at storage in your own account or network
Error tracking tool
- Used for
- Catches system errors so we fix them before the work stalls
- Sees what
- Error messages and metadata · personal data stripped out
- Processed in
- Depends on the provider chosen for that project
- No training on your data
- No specific clause
- If you say no
- Can be turned off · use logs on your own server instead (slower fixes)
When something goes wrong
No one can promise it never happens — we can promise what we do next
A company that says “it cannot happen here” is a company with no plan. This is what we commit to in the contract.
- 1As soon as it is reported
Take the report and confirm it is real
Reports arrive through the incident channel named in the contract, or from the system's automatic alerts. The named responsible person decides whether it counts as a security incident, and the clock starts at that confirmation.
- 2Within 4 hrs of confirmation
Contain the damage before investigating the cause
Revoke the keys and accounts involved, hit the kill switch on the affected workflow, cut connections to the customer's systems as far as needed, and keep the logs as evidence before changing anything.
- 3Within 24 hrs of confirmation
Tell the customer with whatever is known so far
We are bound in writing to tell the customer within 24 hours of confirming an incident: what happened, which systems and data we believe are affected, what has been contained, and what is still unknown. We do not wait for the investigation to finish. If it counts as a personal data breach, we hand the customer, as the data controller, what they need to notify the PDPC within 72 hours under PDPA.
- 4Within 3 business days
Fix it and bring the system back into use
Close the hole, rotate every key and password involved, restore from backup if needed, then bring workflows back one part at a time while watching the results, with the order agreed with the customer first.
- 5Within 14 days
Report the cause and the permanent fix
A written report with the timeline, the real root cause, the confirmed scope of impact, the permanent fixes and a due date for each, plus a review meeting with the customer's team.
The commitment, as a number: we tell you within 24 hours of confirming a real incident, with whatever we know at that point. We do not wait for the investigation to finish — and the contract names the person you can call directly.
Standards we work from
We use global frameworks as checklists — and we say plainly that we are not certified
keelz is not certified against ISO 27001 or SOC 2 and we will not word anything to suggest we are. What we do is take the control lists out of those standards and use them as a design checklist on every real project. If your organisation requires certified vendors, we say on the first call that we do not meet that bar — better than you finding out when internal audit asks.
Personal Data Protection Act B.E. 2562 (PDPA)
We follow itThe Thai law that applies directly to our work. We act as a data processor on the customer's instructions, with a data processing agreement, records of processing, support for data subject rights, and deletion of the data within 30 days of the work ending.
OWASP Top 10 for LLM Applications
Used as a checklistThe checklist we run over every AI build before it goes live. We go item by item to show how that build blocks prompt injection, data leaks and more access than the job needs. Anything not relevant gets a written reason.
NIST AI Risk Management Framework (AI RMF 1.0)
Used as a checklistThe thinking frame we use during design: what risks this job carries, how they are measured, and who is responsible. It puts the scope and the human approval points in writing from the start, instead of after something goes wrong.
ISO/IEC 27001 Annex A
Not certifiedWe use the Annex A control list as the starting point for what we cover: access management, encryption, key handling, logging and managing sub-processors. keelz has not been audited against ISO 27001 and holds no certificate.
ISO/IEC 42001 (AI management systems)
Not certifiedA management system standard for organisations that build or use AI. We take its guidance on impact assessment, naming who is responsible, and reviewing a system after it goes live, and apply it to our delivery process. keelz has not been audited and holds no certificate.
When IT reviews a vendor
The pack we send without being chased
If your organisation has a vendor review process, we have been through it many times — tell us what you need and we will have it ready.
- Before signing
Your security questionnaire, filled in by us
Send your company's form and we fill it in, in writing. Where we do not have something or cannot do it, we say we do not, and name what we use instead. We do not answer just to get through.
- Before signing
NDA and a draft data processing agreement (DPA)
A DPA drafted under PDPA, setting the scope of processing instructions, the data types, how long it is kept, the use of sub-processors, notice of an incident within 24 hrs, and deletion within 30 days of the work ending. Your own template can be used instead.
- First week of the project
A data flow map for your project
Where the data starts, which systems it passes through, what leaves the company, what stays on your machines, where it is stored, for how long, and at which point it is masked before being passed on.
- First week of the project
Architecture diagram and sub-processor list
The architecture for your project specifically, with the providers actually used: what each one sees, which region processes it, whether there are contractual no-training terms, and which ones you can switch off.
- Before access is opened
The access we ask for, with a reason for each line
A table of every system and permission we request: read or write, what it is used for in the job, who on our team holds it, and when it is returned or revoked. Your IT team can cut anything unnecessary before opening access.
- At handover
Handover pack and a manual for the next team
Code, diagrams, configuration, the test set, how to kill a workflow, how to rotate keys, and the manual way of working when the system is down. Written so an internal team or another contractor can take over without us.
FAQ
The worries we hear most
Will our customer data be used to train models?
No. We pick providers whose contracts state plainly that usage data is never used for training, and sensitive-tier data is masked before it is sent — or processed on your own server instead.
What if the AI gets it wrong and it reaches a customer?
Every workflow is checked before anything goes out, and anything touching money or a customer needs a person to approve it. Work that fails a check, or that the AI is unsure about, goes back to a person instead of being guessed at. Every step is logged, so you can see exactly where it went wrong.
Do we have to move data out of our current systems?
No. We connect to what you already use (LINE, Sheets, ERP, accounting software) and ask only for the access that job actually needs. Your database stays where it is.
Where does PDPA come in, and who is responsible?
You are the data controller; we are the processor acting on your instructions. That is why we map the data and set the lawful basis before any work starts, keep the data to what is needed, and delete sample documents when the project ends.
If we want to stop, what happens to the data and the system?
You switch it off and work goes back to the old way without touching your existing systems. The code, the documents and the data have been yours from the start, and the support package can be cancelled any month.
Still worried about something? Just ask
A free 30-minute call. We tell you straight what will work, and what your business should not do yet.
You do not have to take our word for it — open the live system and look The real approval queue, with work sitting there until a person decides — nothing reaches a customer until someone does (sample data, no login).