Public website home page
The public site at evidencecanvas.co.uk. It describes the product, says it is not a law firm and links to the portal.
A full user acceptance test run on the production service at app.evidencecanvas.co.uk with an invented family case: sign-up, uploads, AI drafts, red-team rounds, downloads and every case screen. Each AI document is then scored against the drafting standards a family court expects.
Run date: 13 October 2026 · release 20261013T183906Z. Synthetic case: every person, address and document is invented.
The public site at evidencecanvas.co.uk. It describes the product, says it is not a law firm and links to the portal.
The pricing page leads with 'Free during launch': every feature is free, no card is needed, and paid plans are shown for reference only.
The FAQ tells users that drafts come from AI language models, that names are replaced with placeholders before text leaves the UK server, and that nobody reviews drafts before release.
Before the portal loads, Cloudflare asks for an email address and sends a one-time code. This is the edge security gate; anybody with an email can pass it.
The six-digit code arrived in the test inbox within seconds and is entered here. The code itself is not stored in this report.
After the security check the portal shows its sign-in screen with 'Create an account' and the Council PCN shortcut.
The registration form asks for a name, email, password and age (18+ only; only the implied birth year is kept). The password is masked and not stored in this report.
The account is created in 'waiting for confirmation' state. Nothing can be done until the email link is opened.
The confirmation email arrived from "EvidenceCanvas" <noreply@evidencecanvas.co.uk>. The sign-in attempt made before confirming was refused (HTTP 401, LOGIN_FAILED), which proves confirmation is required before anyone can work.
Opening the link activates the account and signs the user in. At the same moment the owner received a 'New EvidenceCanvas sign-up' email.
The dashboard greets the new user, shows the 'Getting started' checklist and the 'Free during launch · Hearing-Ready plan' chip.
A seven-step guided tour explains the workspace. It can be skipped and reopened from the Guide button.
A self-registered litigant names the case, picks the case type (here: family, domestic abuse / occupation order), and optionally adds the court and case number. This card was added during the UAT after the test found litigants had no way to open a non-parking case (defect D3, fixed and released the same evening).
The case opens straight onto Files, ready for documents. The case is private to this account.
Eight mixed files go in at once: two court-style PDFs, a police letter, a finance summary, a Word statement, a school email (.eml), a WhatsApp export and a phone photo of a handwritten note. Each is virus-scanned and its text extracted on the UK server.
9 of 9 documents are stored in the case with their status shown.
The user types a plain-English request. There is no form to fill: the request goes straight to the drafting queue, with no human approval step.
Chronology, witness statement and position statement are queued at once. Each one runs on the next one-minute worker tick on GLM-5.3-Flash via z.ai, then gets one red-team pass and one fix before it is released.
Drafts arrived automatically: chronology (25215 characters), witness-statement (19906 characters), position-statement (25691 characters).
Under each released draft the user can start another red-team round. The owner rule: one automatic red-team and fix, then any further round is the user's choice.
A litigant can now ask for a witness statement, a response to the other side, a position statement, a chronology, or another red-team round with one click (defect D11, fixed in release 8).
The user starts a red-team round on the latest draft and, in plain English, asks for a paragraph-by-paragraph reply to the other side's statement.
The user-triggered round re-checked the latest draft, fixed what it could and marked the rest ⟦TO RESOLVE⟧. Results: reply-to-statement 22943 characters, redteam-round 13683 characters.
While requests are being worked on, case chat says so and gives the expected time (about 20–40 minutes), and that an email follows when the draft is ready.
After the fixes found in this run, the drafts were requested again. Times from request to release: reply to statement 23 min, position statement (first version) 2 min, position statement (checked version) 27 min, red team round (user triggered) 23 min. Every released draft is listed with Word and PDF.
A quick first version of the position statement arrived 2 minute(s) after the request, so the user can see the shape of the document at once. It is labelled "first version, not yet checked" and says not to file it; the checked version (deep reasoning and an adversarial red-team) follows and replaces it.
A one-screen view of how ready the case is: documents in, dates set, drafts produced and gaps still open.
Every request and every released draft sits in one thread. Each draft carries the 'check before filing' banner and the 'Red-team before filing' button.
12 rendered draft(s)
All uploads with their type, size and filing status. Each can be opened, redacted, excluded from the court set or given an exhibit reference.
9 file rows
Hearing dates and court deadlines, with a calendar (.ics) export.
1 suggested date(s)
The events found in the documents, laid out in date order.
16 dated event(s) found in the documents
The graph links the dates the user confirmed by the documents they come from: 6 confirmed fact(s) shown. Before the fix it stayed empty on self-serve cases because it only used practitioner-reviewed facts.
For family cases: the children, the orders in force and the arrangements, kept in one record.
During the free launch the case no longer shows 'Payment required' or a checkout button (defect D12, fixed in release 8).
Facts, issues and how the documents relate. The ask-your-files box answers questions with the source document named.
Practise the hearing: the rehearsal builds likely questions from the case papers so the user can prepare answers.
After cataloguing, the timeline and contradiction explorer show where the two sides' accounts differ.
The user opened the source of each suggested date and confirmed 6 of them. Confirmed dates feed case health, the contradiction check and the evidence graph; each stays subject to the user's or a practitioner's check.
Generated work products (Word and PDF) ready to download, plus the court bundle builder.
8 released draft(s) listed with Word/PDF
Each released draft now has 'Download Word', 'Download PDF' and 'Red-team again' (defect D13, fixed in release 9). 6 files were downloaded for this report.
Shows the plan the account behaves as (Hearing-Ready) and that nothing is charged until paid plans go live.
A cross-case record of the family: children, orders and key dates.
How to get help, and the clear statement that this is not a law firm.
Searchable help articles for every feature.
Short courses on preparing for court as a litigant in person, free during launch.
Step-by-step tutorials for the main tasks.
Password change, active sessions and two-step sign-in.
One click on 'Start my Council PCN case' creates a separate PCN workspace with only the PCN tools. It opens on the notice-dates calculator.
From the notice dates the deterministic engine lists the 14-day discount window, the 28-day representation deadline and the later stages. No AI is used for dates.
The motorist enters the ticket details as printed, ticks the statutory grounds that fit, and explains what happened in their own words. Everything is free during the launch.
The AI drafts the representation letter against the chosen grounds. The motorist checks it and sends it to the council themselves; nothing is sent from EvidenceCanvas.
Each court draft is delivered in two stages. A quick first version arrives within minutes so you can see the document; it is marked "not yet checked". The checked version follows: drafted again with deep reasoning, attacked by an adversarial red-team, then fixed. Times below are from request to release on the live service.
| Document | Minutes |
|---|---|
| Reply to statement | 23 |
| Position statement (first version) | 2 |
| Position statement (checked version) | 27 |
| Red team round (user triggered) | 23 |
Each AI document from this run is checked by code against the drafting rules EvidenceCanvas enforces: the PD27A page and word limits, the prescribed statement of truth, the PD22A marking, first-person voice, no invented weekdays, no absolutes the evidence does not prove, every fact tied to a named document, and no internal workings shown to the user. These rules were distilled from statements actually filed in family proceedings.

| Result | Standard | Detail |
|---|---|---|
| PASS | Status block tells the user what was checked, fixed and left | |
| PASS | Labelled: review by a solicitor or McKenzie friend is optional | |
| PASS | No internal scaffolding (instruction IDs, 'NOT RELEASED', practitioner-only steps) | |
| PASS | Evidence cited by file name or exhibit, never by internal ID | |
| PASS | No forbidden vocabulary, invented weekdays, file paths or submissions in evidence | |
| ADVISORY | No unproven absolutes or motive stated as fact | absolute_claim: "sole" |
| PASS | Within the PD27A limit (25 pages) | about 3 page(s), 1,002 words |
| PASS | Statement of truth in the prescribed words | |
| PASS | PD22A marking: party, witness, number of statement, exhibits | |
| PASS | 'Date made' line | |
| PASS | Numbered single-issue paragraphs | |
| PASS | Written in the witness's own first-person voice | 37 first-person references |
| PASS | No case law in a witness statement |
| Result | Standard | Detail |
|---|---|---|
| PASS | Status block tells the user what was checked, fixed and left | |
| PASS | Labelled: review by a solicitor or McKenzie friend is optional | |
| PASS | No internal scaffolding (instruction IDs, 'NOT RELEASED', practitioner-only steps) | |
| PASS | Evidence cited by file name or exhibit, never by internal ID | |
| PASS | No forbidden vocabulary, invented weekdays, file paths or submissions in evidence | |
| PASS | No unproven absolutes or motive stated as fact | |
| PASS | Within the PD27A limit (25 pages) | about 2 page(s), 757 words |
| PASS | Statement of truth in the prescribed words | |
| PASS | PD22A marking: party, witness, number of statement, exhibits | |
| PASS | 'Date made' line | |
| PASS | Answers the other side paragraph by paragraph on their numbering | 6 paragraph answers |
| PASS | Written in the witness's own first-person voice | 28 first-person references |
| PASS | No case law in a witness statement | |
| PASS | It is the document asked for: a paragraph-by-paragraph reply, not a case summary |

| Result | Standard | Detail |
|---|---|---|
| PASS | Status block tells the user what was checked, fixed and left | |
| PASS | Labelled: review by a solicitor or McKenzie friend is optional | |
| PASS | No internal scaffolding (instruction IDs, 'NOT RELEASED', practitioner-only steps) | |
| PASS | Evidence cited by file name or exhibit, never by internal ID | |
| PASS | No forbidden vocabulary, invented weekdays, file paths or submissions in evidence | |
| ADVISORY | No unproven absolutes or motive stated as fact | absolute_claim: "sole"; absolute_claim: "solely" |
| PASS | Within the PD27A limit (3 pages) | about 3 page(s), 1,191 words |
| PASS | Within the 1,200-word ceiling | 1191 words |
| PASS | States the orders sought | |
| PASS | States the legal test: s.33 Family Law Act 1996 and the balance-of-harm question | |
| PASS | Introduces no new exhibits |

| Result | Standard | Detail |
|---|---|---|
| PASS | Status block tells the user what was checked, fixed and left | |
| PASS | Labelled: review by a solicitor or McKenzie friend is optional | |
| PASS | No internal scaffolding (instruction IDs, 'NOT RELEASED', practitioner-only steps) | |
| PASS | Evidence cited by file name or exhibit, never by internal ID | |
| PASS | No forbidden vocabulary, invented weekdays, file paths or submissions in evidence | |
| ADVISORY | No unproven absolutes or motive stated as fact | absolute_claim: "sole" |
| PASS | Within the PD27A limit (10 pages) | about 3 page(s), 946 words |
| PASS | Entries in strict date order | 14 dated entries |
| PASS | Every entry names its source | 17 rows |
| Result | Standard | Detail |
|---|---|---|
| PASS | Status block tells the user what was checked, fixed and left | |
| PASS | Labelled: review by a solicitor or McKenzie friend is optional | |
| PASS | No internal scaffolding (instruction IDs, 'NOT RELEASED', practitioner-only steps) | |
| PASS | Evidence cited by file name or exhibit, never by internal ID | |
| PASS | No forbidden vocabulary, invented weekdays, file paths or submissions in evidence | |
| ADVISORY | No unproven absolutes or motive stated as fact | absolute_claim: "complete"; absolute_claim: "sole" |
| PASS | Within the PD27A limit (3 pages) | about 3 page(s), 1,175 words |
| PASS | Within the 1,200-word ceiling | 1175 words |
| PASS | States the orders sought | |
| PASS | States the legal test: s.33 Family Law Act 1996 and the balance-of-harm question | |
| PASS | Introduces no new exhibits |
Run against the production service through the real Cloudflare email-code check, real email confirmation and the real AI drafting queue. Nothing was mocked.
The case, people and documents are synthetic. No real person's papers were uploaded. Names are pseudonymised before any AI processing in any case.
A step is marked PASS only if the screen showed the expected result when it was taken. Failures are listed with their defect number and status.
| Ref | Defect | Severity | Status |
|---|---|---|---|
| D1 | Confusing error when the Cloudflare email and the registration email differ | minor | fixed (13 Oct release): plain wording naming the security-code email |
| D2 | Sign-in text still promises human review | major | fixed (release 4) |
| D3 | Self-registered users could not start a family or civil case | critical | fixed (release 5) |
| D4 | Worker failed every minute, so no drafts were produced for anyone | critical | fixed (release 6) |
| D5 | Drafts waited for the next six-hour worker slot | major | fixed (release 6) |
| D6 | Getting-started checklist is written for practitioner-managed cases | minor | fixed (release 8) |
| D7 | PCN card quotes credit costs during the free launch | minor | fixed (release 8) |
| D8 | Released draft includes internal practitioner scaffolding | major | fixed (13 Oct release): released drafts show only the status block, the draft and next steps — verified live |
| D9 | Phone photo of a handwritten note could not be read | major | fixed (13 Oct release): photos are read on the server (Tesseract 5.3.4) — verified live, the handwritten note is readable |
| D10 | Two entries out of date order and evidence cited by internal ID | minor | fixed (13 Oct release): chronology sorted by date; file names instead of IDs — verified live (8/8 standards) |
| D11 | Plain-English drafting requests skipped the red-team and fix pass | critical | fixed (release 7) |
| D12 | 'Payment required' and a checkout button on every case during the free launch | critical | fixed (release 8) |
| D13 | No way to download a released draft | major | fixed (release 9) |
| D14 | Litigants had no 'Red-team before filing' or court-document buttons | major | fixed (release 8) |
| D15 | No dates or deadlines extracted from the sealed order | major | fixed (releases 14–15) |
| D16 | Nine automatic 'Review and catalogue' messages appear as if the user wrote them | minor | fixed (13 Oct release): automatic catalogue requests collapse into one system line |
| D17 | Drafts are shown as raw Markdown | minor | fixed (13 Oct release): drafts render as formatted text (headings, tables, to-resolve marks) |
| D18 | Every red-teamed draft failed and waited for the six-hour slot | critical | fixed (release 11) |
| D19 | Litigants could not download documents they had just built with an engine | critical | fixed (release 12) |
| D20 | Missing engine inputs crashed with a server error | major | fixed (release 12) |
| D21 | PCN AI letters never run: the privacy gateway blocks the prompt | critical | fixed (release 13, by the PCN session) |
| D22 | A release waits for in-flight AI jobs | minor | fixed (13 Oct release): the release says it waits for AI jobs and caps the wait at 5 minutes |
| D23 | Ask-your-files crashed when the model was busy | major | fixed (release 13); re-checked 13 Oct: the user now gets a truthful 'AI unavailable' answer instead of a crash |
| D24 | Case search from the screen always returned nothing | major | fixed (release 13) |
| D25 | z.ai rate limits (HTTP 429) on both keys during bursts | major | fixed (13 Oct release): short back-off and retry on HTTP 429, then the next provider |
| D26 | Cataloguing produces no dated facts, so timeline, contradictions and readiness stay empty | major | fixed (13 Oct release): confirmed dates feed case health, contradictions and the evidence graph |
| D27 | A request for a paragraph-by-paragraph reply came back as a case summary | major | fixed (13 Oct release): the 12 Oct result was mislabelled by the test script; routing tightened and the heading checked — verified live |
| D28 | z.ai Coding Plan quota exhausted after one evening of testing; all AI features stop | critical | fixed (13 Oct release): OpenRouter fallback now actually serves when both z.ai keys are rate-limited — verified live (ask-your-files answered in 8 s; PCN AI letter drafted) |
| D29 | Live-update listener warning in the portal log | minor | fixed (13 Oct release): one live-update listener; streams removed when they close |
| D30 | 'AI unavailable' answer contradicts itself and mentions an operator | minor | fixed (13 Oct release): "The AI is busy right now. Try again in a few minutes. You have not been charged." and 0 credits — verified live |
| D31 | Uploads waited up to six hours to be read | critical | fixed (13 Oct release): uploads are read on the next one-minute tick — verified live (all nine readable within a minute) |
| D32 | OpenRouter fallback never served: pinned tasks were z.ai only, and the OpenRouter key was not read | critical | fixed (13 Oct releases): z.ai pins keep the OpenRouter rung; the key is read from the environment — verified live |
| D33 | Position statement released over the 1,200-word ceiling | major | fixed and retested (14 Oct release 20261014T090830Z): the fix-up step has a 1,080-word budget and over-length drafts are shortened paragraph by paragraph; retest position statement 1,195 words (10/10 standards), red-team round 10/10 |
| D34 | Statement of truth not in the prescribed words | major | fixed (13 Oct release): exact words pinned in the prompts and checked mechanically — awaiting retest |
| D35 | Witness statement downloaded as "TO-RESOLVE-statement-number…docx" | minor | fixed (13 Oct release): the file name uses the document title |
| D36 | Evidence graph empty on self-serve cases | major | fixed (13 Oct release): the graph links dates the user confirmed — verified live |
| D37 | Red-teamed drafts took 20–55 minutes with no expectation set | major | fixed and retested: two-stage delivery, a quick first version in 2 minutes then the checked version in 27 minutes (max-reasoning draft and red-team, low-effort fixes); user-triggered red-team round 23 minutes; a "draft is ready" email is sent |
| D38 | "Ask your files" response returns the full grounding prompt to the browser | minor | fixed (13 Oct release): the browser gets the passages, not the internal prompt |
| D39 | After a release, browsers kept the previous front end for up to an hour | major | fixed (13 Oct release): code and styles revalidate on every load with a content ETag |
| D40 | Length cut silently rejected every shortened draft | major | fixed and retested (14 Oct): markers counted inside the draft only; paragraph-by-paragraph cut with quotations and markers protected; the step logs word counts |
| D41 | A red-team round removed the s.33 legal test as 'unverified' | major | fixed and retested (14 Oct): the statutory tests the platform supplies are exempt and never removed; retest red-team round states the s.33 test |