Compliance
Data Protection Impact Assessment
- Project
- VetForms (vetforms.co.uk)
- Controller
- Josh Human trading as Human Builds (account data); UK veterinary practices (owner & animal data)
- Date of this version
- 27 May 2026
- Status
- Draft for review
- Next review
- by 27 May 2027
Working draft
This DPIA is a working scaffold filled in with the facts that can be drawn from the VetForms repository and specification. The risk register and residual-risk ratings are first-pass estimates and should be reviewed by a UK data protection professional before going live, and signed off by the Controller. The ICO DPIA template is the reference structure used here.
1. Why we are doing a DPIA
1.1 The trigger
Article 35(1) of the UK GDPR requires a DPIA where processing is “likely to result in a high risk” to the rights and freedoms of natural persons. The ICO additionally requires a DPIA for any processing on the list of operations always requiring a DPIA.
For VetForms the relevant triggers are:
- systematic and extensive evaluation of personal information using automated processing (the validation engine, V-001 to V-012 and W-001 to W-005);
- large-scale combination of datasets in a way the data subject (the pet owner) would not necessarily expect, combining contact details, travel itinerary, and animal records;
- processing that feeds a regulated cross-border process (the AHC is presented to EU border authorities); and
- innovative use of technology in a sector (veterinary regulatory) where digital handling of owner data is not yet the norm.
We have therefore chosen to complete a DPIA before going live with any practice processing live owner data.
1.2 Why no statutory DPO
A statutory DPO is required under Article 37 UK GDPR where:
- the Processor is a public authority (not us);
- the core activity requires regular and systematic monitoring of Data Subjects on a large scale (not us — we operate per-certificate, not continuous); or
- the core activity is large-scale processing of special-category data (not us — animal health is not special category for humans).
Accordingly no DPO is mandatory. Responsibility sits with the sole proprietor, Josh Human, who will discharge DPO-equivalent duties (privacy by design, breach response, this DPIA, ICO liaison).
2. Describe the processing
2.1 Nature of the processing
VetForms is a multi-tenant SaaS application that lets a UK Official Veterinarian (OV) prepare, validate, and issue Animal Health Certificates (“AHCs”) for companion animals (dogs, cats, ferrets) travelling from Great Britain to the European Union. The flow is:
- OV creates a practice account. Authentication is via Clerk. Practice administrator accepts the Terms and the DPA.
- OV creates a draft certificate and, in most cases, generates a tokenised owner-collection link valid for 14 days.
- Owner submits their details through
/collect/[token]. The submission populates the certificate. - OV reviews, runs validation, corrects, and signs. A PDF is generated server-side by overlaying data onto the EU Annex IV template via pdf-lib; the PDF is stored in Vercel Blob and referenced from the database.
- Certificate moves through statuses
draft → owner_pending → ov_review → validated → generated → signed(orvoided). - Audit log captures every state change with user, IP, and action.
2.2 Scope: what data, who, how much, where
| Question | Answer |
|---|---|
| What data? | Owner identity and contact (name, address, telephone, email); authorised person name and relationship; carrier name; travel plan (date, EU point of entry, scheduled arrival); animal data (species, breed, sex, name, DOB, colour, microchip number, microchip location, microchip implant date); vaccination records (rabies); treatment records (tapeworm); audit metadata (user ID, IP, timestamp). |
| Special-category data? | None intended. Animal health data is not special category under UK GDPR. |
| Whose data? | Pet owners (UK adults, occasionally minors named as authorised persons — to be controlled in UI); OVs and practice staff; named carriers. |
| Volume? | At pilot scale: tens to low hundreds of certificates per practice per year. At a target of 20 practices across the pilot, an order of thousands of owner records per year. Each owner appears once or a small number of times. |
| Geographic scope? | Data collected in the UK from UK-resident OVs and (in the vast majority of cases) UK-resident pet owners. Data is hosted in UK/EU regions where possible (see §2.4). The output PDF is intended to be presented at EU borders. |
| Source of data? | Directly from the OV; directly from the owner via /collect/[token]. No third-party data brokers. |
| How long? | OV/practice data: term of account + up to 12 months. Owner-link tokens: 14 days. Certificate records: at least 3 years from issue (regulatory). Audit logs: lifetime of certificate + retention period. Backups: rolling 30 days. |
2.3 Relationships with Data Subjects
- Owners have a direct relationship with their veterinary practice. They reach VetForms via a link sent to them by the practice. Our brand is visible in the form but the controller is the practice. Owners are typically the data subjects most at risk if a leak occurred.
- OVs and staffconsent to VetForms’s terms when they create an account. The relationship is contractual.
- Carriers and authorised persons typically do not interact with the service at all; their data is entered by the owner or the OV. They are unlikely to be aware their data is on the system unless the practice tells them.
2.4 Processors and locations
| Processor | Service | Location | Transfer safeguard |
|---|---|---|---|
| Vercel Inc. | Hosting, PDF generation, Blob storage | US, with UK/EU edge | UK IDTA / SCCs+UK Addendum |
| Neon Inc. | PostgreSQL | UK/EU region | UK IDTA / SCCs+UK Addendum where any cross-border ops support occurs |
| Clerk Inc. | Auth + organisations | US | UK IDTA / SCCs+UK Addendum |
2.5 Technologies and processing methods
- TypeScript/Next.js application on Vercel; PostgreSQL on Neon; auth on Clerk; PDFs generated in-process with pdf-lib.
- Automated validation rules (V-001 to V-012, W-001 to W-005) evaluate field timing and consistency. They produce blockers and warnings; they do not make a binding decision (see §4.5).
- Owner tokens are random, single-use, time-limited (14 days), and tied to a specific certificate.
- Audit logging is server-side and append-only.
3. Consultation
Article 35(9) UK GDPR requires the Controller to seek the views of Data Subjects where appropriate. For this DPIA we propose:
| Group | Method | Status |
|---|---|---|
| UK OVs (Data Subjects in the OV/practice category) | Direct interviews with pilot practices; feedback on the /collect flow and certificate review UI. | Planned during pilot. |
| Pet owners | Plain-English privacy notice on the /collect form; usability testing of the collection flow with at least 5 owners. | Planned before public launch. |
| Professional bodies (BVA, BSAVA) | Letter to data-protection contacts asking for views on owner-data handling expectations in the sector. | Recommended; not yet done. |
| ICO | No prior consultation under Article 36 is required unless residual risk remains “high” after mitigation. We do not currently expect that to be the case. | Re-evaluate at sign-off. |
4. Necessity and proportionality
4.1 Lawful basis
| Data | Controller | Lawful basis (UK GDPR Art. 6) |
|---|---|---|
| OV account data | Human Builds | (b) performance of contract |
| Practice-credential data (OCQ(V), stamp) | Human Builds | (b) contract; (c) legal obligation (records that support a regulatory document) |
| Operational logs incl. IP | Human Builds | (f) legitimate interests in service security and integrity |
| Owner / authorised person / carrier contact data | Practice | (c) legal obligation (the practice’s regulatory obligation to issue an accurate AHC); the practice will document its own basis in its privacy notice. |
| Animal-linked records identifying owner | Practice | (c) legal obligation |
4.2 Is each processing operation necessary?
| Operation | Necessary? | Why |
|---|---|---|
| Collecting owner name, address, telephone, email | Yes | These fields appear on the AHC and are required by the EU Annex IV template. |
| Collecting authorised person details | Yes (when applicable) | Required where the owner is not personally accompanying the animal. |
Storing IP on /collect submissions | Yes | Audit trail of who submitted the form; misuse investigation. |
| Storing the generated PDF in Blob | Yes | The OV needs to retrieve, re-print, and provide the certificate. |
| Running automated validation rules | Yes | Reduces certificate rejection at borders; primary product purpose. |
| Retaining certificates for at least 3 years | Yes | Regulatory expectation for OV record-keeping. |
We do not collect data that is not used by the template, the validation rules, or the audit log. There is no analytics tracking of identified users in the product (see action P-1).
4.3 Is the data minimal for the purpose?
Reviewed against the database schema (src/db/schema.ts):
- No special-category data.
- No financial data (no current billing system).
- No marketing fields.
- Free-text fields (colour markings, address line 2) are minimised to what the certificate template asks for.
Action P-1: confirm no third-party analytics is loaded on /collect pages, and document this on the privacy notice.
4.4 How do we support Data Subject rights?
| Right | How |
|---|---|
| Be informed | Privacy policy; in-product notice on /collect flow. |
| Access | Practice can export certificate data via product; we will respond to access requests via the DPA, section 8. |
| Rectification | OV can edit certificate fields up to signing; after signing, void + reissue is the route. |
| Erasure | Subject to the 3-year regulatory retention. Beyond that, we delete on request. |
| Restriction | We can flag a record as restricted on request and exclude it from active product flows. |
| Portability | JSON export of certificate data on request. |
| Object | Owners can refuse to use the /collect link and provide info to the practice another way. |
| Withdraw consent | Not applicable to most processing (basis is contract / legal obligation), but applies to any optional features later (e.g. marketing opt-ins). |
4.5 Article 22 — automated decision-making
The validation engine evaluates field-level rules and produces blockers/warnings in the UI. A blocker prevents PDF generation until resolved by the OV. This is automated processing, but it does not produce a decision with legal or similarly significant effect within the meaning of Article 22(1), because:
- a human OV is in the loop on every certificate and must consciously review, sign, and issue it;
- a blocker does not refuse to issue the certificate — it asks the OV to fix data or override; an override path exists in the product;
- the rules concern animal-eligibility-by-data-completeness, not a decision about a human person.
We will revisit this conclusion if the rules ever shift to denying issuance with no human override.
5. Risk register
Scoring uses ICO-style 1–5 for likelihood and impact (1 = remote / minor, 5 = near-certain / severe). Inherent risk = likelihood × impact before mitigation; residual risk = same after the mitigations listed in §6 are in place.
| ID | Risk | Inherent L | Inherent I | Inherent | Residual L | Residual I | Residual |
|---|---|---|---|---|---|---|---|
| R-1 | Unauthorised access to owner contact data via a leaked /collect token | 3 | 3 | 9 (Med) | 1 | 3 | 3 (Low) |
| R-2 | Cross-tenant data leak — a query escapes a practiceId filter | 2 | 5 | 10 (High) | 1 | 5 | 5 (Med) |
| R-3 | Account takeover of an OV account | 3 | 4 | 12 (High) | 1 | 4 | 4 (Low) |
| R-4 | Sub-processor breach (Vercel / Neon / Clerk) | 2 | 4 | 8 (Med) | 2 | 3 | 6 (Med) |
| R-5 | Data retained beyond the necessary period | 4 | 2 | 8 (Med) | 1 | 2 | 2 (Low) |
| R-6 | Owner is not adequately informed about how their data is being used | 3 | 3 | 9 (Med) | 1 | 3 | 3 (Low) |
| R-7 | Wrongful disclosure of a generated PDF to the wrong owner | 2 | 4 | 8 (Med) | 1 | 4 | 4 (Low) |
| R-8 | Personal data inferred from animal records (e.g. microchip cross-referenced) | 2 | 2 | 4 (Low) | 1 | 2 | 2 (Low) |
| R-9 | International transfer becomes non-compliant (e.g. Privacy Framework challenged) | 2 | 3 | 6 (Med) | 2 | 3 | 6 (Med) — monitor |
| R-10 | Sole proprietor incapacitated / business discontinuity | 2 | 3 | 6 (Med) | 1 | 3 | 3 (Low) |
6. Measures to reduce risk
| Ref | Measure | Addresses | Status |
|---|---|---|---|
| M-1 | Owner-collection tokens are random, single-use, time-limited (14 days) and one-token-per-certificate; the is_used flag is set on submission. | R-1 | Implemented |
| M-2 | Server-side filtering by practiceId / clerkOrgId on every query; integration tests assert no API route returns data across tenants. | R-2 | Implemented (verify in code) |
| M-3 | Authentication via Clerk; MFA available; session cookies are HttpOnly and Secure. Practices encouraged to enforce MFA at the Clerk org level. | R-3 | Implemented; MFA enforcement guidance to be added to onboarding |
| M-4 | Sub-processor due diligence (SOC 2/ISO 27001 reports reviewed) and DPA in place with each. Sub-processor list public at vetforms.co.uk/sub-processors. | R-4, R-9 | Action — list page to be created |
| M-5 | Automatic deletion job for owner-collection tokens after expiry; certificate-level retention runner that flags records past the 3-year + buffer window for review. | R-5 | Action — retention runner to be implemented |
| M-6 | Plain-English privacy notice on /collect form, naming the practice as controller, with link to vetforms.co.uk/privacy. | R-6 | Action — notice copy in repo, integrate into /collect page |
| M-7 | PDF download URL on the certificate page is bound to authenticated OV session; tokenised links to owners (if introduced) will be single-use and time-limited. | R-7 | Implemented for OV side; verify before adding owner-facing PDF download |
| M-8 | TLS 1.2+; encryption at rest; backups expire after 30 days; audit logging with IP. | R-1, R-2, R-3, R-4, R-7 | Implemented |
| M-9 | Documented break-glass / business continuity plan covering loss of access to Vercel / Neon / Clerk consoles, including a named backup contact and printed recovery credentials in a secure offline location. | R-10 | Action — write and store BCP |
| M-10 | Annual DPIA review and sub-processor list re-check. | R-9 | Action — diary 27/05/2027 |
| M-11 | Validation rules version-pinned and changelog kept in repo. | Quality risk, not strictly a data-protection risk, but reduces certificate-rejection knock-on | Implemented |
| M-12 | OV credentials (OCQ(V) number, stamp image) treated as professional credentials with the same protection as account data; stamp image stored in Vercel Blob with random URLs not enumerable. | Account / professional reputation | Implemented; review URL randomness |
7. Outstanding actions to close before live
The DPIA cannot be signed off until the following are in place:
- A-1. Register Human Builds with the ICO and add the registration number to the privacy policy.
- A-2. Stand up vetforms.co.uk/privacy, vetforms.co.uk/terms, vetforms.co.uk/dpa, vetforms.co.uk/sub-processors as public pages.
- A-3. Implement the retention runner (M-5).
- A-4. Wire DPA click-through acceptance into the practice-creation flow and store the event in
audit_logs. - A-5. Document the business continuity plan (M-9).
- A-6. Owner consultation: usability test the
/collectform with at least 5 owners and incorporate findings into the privacy notice wording. - A-7. Independent legal review of the privacy policy, terms, DPA, and this DPIA.
- A-8. Penetration test of the multi-tenant boundaries (M-2) — even a light-touch internal test before pilot, full external test before scaling.
8. Outcome and sign-off
8.1 Residual-risk outcome
After the actions in §7 are complete and the measures in §6 are in place, the highest residual risk is R-9 (international transfer regime change), scored Medium. This is monitored rather than mitigated below Medium because it depends on UK government policy on data transfers, which is outside our control.
No residual risk is rated High. Prior consultation with the ICO under Article 36 UK GDPR is therefore not required.
8.2 Approval
| Role | Name | Date | Sign |
|---|---|---|---|
| Controller | Josh Human (Human Builds) | ||
| Reviewer (external DP lawyer) | To be appointed |
Once signed, store this document with the version number and date. Re-review on material change to the processing, or no later than 27 May 2027.
