< Back

EAT SAFE VERIFIED
/
SHIPPED 2022

Making compliance invisible → 70% faster Certificate of Analysis document creation

UX/UI
Systems Design
B2B SaaS
0 → 1

Designing a system where compliance errors become structurally impossible by transforming documents into controlled systems.

70%

70%

Faster COA creation

Faster COA creation

~85%

~85%

Fewer compliance errors

Fewer compliance errors

89%

89%

Template reuse

Template reuse

Role

Product Designer

Timeline

~6 months | Apr - Oct 2022

Team

2 Product Designers, 2 Engineers, 1 PM

Skills

Problem definition & UX strategy, User research & workflow audits, Information architecture & interaction design, Prototyping, usability testing, iteration, Cross-functional collaboration with engineering, QA, and SMEs

OVERVIEW

< Back

Making compliance invisible → 70% faster Certificate of Analysis document creation

How I designed a template builder that makes compliance structural, giving QA teams flexibility without the fear of making errors or breaking rules.

Problem

QA teams spent ~45 min per COA, manually copying data and relying on memory to ensure compliance. Errors were inevitable.

Solution

A COA builder feature designed as a core part of the platform with a three-tier permission model - locked, partially locked, and free sections, so compliance is structural, not manual.

Impact

70% Faster COA creation

~85% Fewer errors

89% Template reuse

What is ESV? And what is a COA!?

Before the problem makes sense…a little context.

EatSafeVerified (ESV) is a B2B food safety platform used by suppliers, manufacturers, and QA teams to manage the entire workflow - from sample submission and lab test tracking to document generation and audit preparation. Clients range from small organic farms to large-scale food manufacturers.

A Certificate of Analysis (COA) is the regulatory backbone of food safety. An official document showing test results, product details, and compliance statements - a product's safety passport. What auditors ask for during FDA inspections. A missing field or outdated regulatory language can invalidate an entire product batch, delay shipments worth hundreds of thousands, or trigger a recall.

This is what a COA usually looks like

This is what a COA usually looks like

This is what a COA usually looks like

context

Role

Product Designer

Timeline

~6 months | Apr - Oct 2022

Team

2 Product Designers, 2 Engineers, 1 PM

Skills

Problem definition & UX strategy, User research & workflow audits, Information architecture & interaction design, Prototyping, usability testing, iteration, Cross-functional collaboration with engineering, QA, and SMEs

Hiding in plain sight

When I joined ESV, the brief for my first project was simple: " Help QA teams create COAs faster. " But something was immediately strange - these critical documents were being assembled outside the platform. In Word. From templates on personal drives.

I needed to understand why. So I interviewed five QA managers across different company sizes and product types, and spent two weeks shadowing them. Despite their differences, their workflows were almost identical.

Here's what I saw

Here’s a typical walkthrough. A QA Manager at a mid-sized organic supplier has been building the same Certificate of Analysis for forty-three minutes. Exports test results from the lab system. Finds the right template buried somewhere in a personal drive. Copies values by hand. Cross-references FDA requirements. Double-checks everything...triple-checks the regulatory language. Generate PDF. Hope everything was right and nothing was missed.

This wasn't an outlier. This was the daily workflow for most QA teams across our user base.

A typical COA creation workflow : ~45 minutes, 6 different Apps

A typical COA creation workflow : ~45 minutes, 6 different Apps

A typical COA creation workflow : ~45 minutes, 6 different Apps

This wasn’t just inefficient.

In a zero-tolerance compliance environment, every step introduced the possibility of an undetectable error.

And that made this more than a workflow problem - it was a liability.

problem

Role

Product Designer

Timeline

~6 months | Apr - Oct 2022

Team

2 Product Designers, 2 Engineers, 1 PM

Skills

Problem definition & UX strategy, User research & workflow audits, Information architecture & interaction design, Prototyping, usability testing, iteration, Cross-functional collaboration with engineering, QA, and SMEs

Getting uncomfortable with the truth

I spent two weeks interviewing and shadowing QA specialists to understand not just what was slow, but why a workflow this fragile and cumbersome had become standard practice.

🗣️

5 QA MANAGERS

In-depth Interviews

👀

2 WEEKS SHADOWING

Contextual Inquiry

📊

USAGE ANALYTICS

Quantitative Data

"I know what a correct COA looks like... I just don't have the time to rebuild it every time."

- QA Manager, during research

Research synthesis - Affinity map

Research synthesis - Affinity map

Research synthesis - Affinity map

Pain points - Frequency vs Severity

Pain points - Frequency vs Severity

Pain points - Frequency vs Severity

‘ The Templates were artifacts

Teams resisted moving away from Word templates. Not because they preferred Word…but because those templates contained years of invisible expertise.

Regulatory language that had been refined over audits. Field placements that avoided past errors. Layouts that clients and auditors trusted.

They were records of what had worked…and what had failed - over time.

Rebuilding them felt risky. because no one fully knew what could be safely changed.

In a regulated workflow, that uncertainty is enough to stop adoption.

What the numbers revealed

Digging into usage data with the team revealed patterns that matched what I was seeing:

6-8

Compliance errors per month

Compliance errors per month

60%

From outdated templates

From outdated templates

The compliance errors weren’t caused by carelessness…They came from users correctly following incorrect structures.

The platform had delegated its most critical responsibility, compliance, to users.

As long as correctness depended on memory and manual checks, speed wasn’t the real problem.

The problem was that an incorrect COA could be created at all.

discovery

FRAMING

The Flexibility vs Safety standoff

There was a tension that kept surfacing during research that couldn't be resolved by picking a side. QA teams genuinely needed flexibility - customisation wasn't just aesthetic, it was part of client trust and professional credibility.

But any flexibility that allowed required fields or regulatory language to be altered introduced unacceptable risk.

Too much freedom

Missing mandatory fields

Outdated regulatory language

Transcription errors

Audit failures

Too much restriction

Rigid, one-size-fits-all output

Workarounds outside the system

Unhappy clients

Eventually back to personal templates

This made me question…

What if we stopped asking " how do we help users avoid mistakes "
and started asking " how do we make mistakes structurally impossible "?

The system owns compliance. Users own customisation. Those two things don't have to conflict.

This could remove the possibility of incorrectness altogether.

framing

What if documents were systems ?

What if documents were systems ?

The solution emerged from a shift in perspective.

A COA is not a document, it's a structured output assembled from four independent data sources - each with its own validation requirements and system of record.

Even a perfectly transcribed COA carries structural risk: it cannot be re-validated, it cannot detect when source data changes, and it leaves no audit trail. For an FDA inspector, the question isn't just "is this value correct?"… it's "can you demonstrate how this value got here?"

This reframe was the foundation for every design decision that followed. If a COA is an assembly, then the builder isn't a document designer - it’s for setting up the structure behind them.

Where the data in a COA originates

Where the data in a COA originates

Where the data in a COA originates

-> The information architecture — decomposing a COA into tiers

I worked with engineering to decompose COAs into modular sections - each with an explicit permission tier that governs what can be changed, what must be system-controlled, and what the user owns entirely.

🔒
LOCKED

Test results

Regulatory statements

Product name

System-controlled. Can reposition, can't edit content.

🔐
PARTIALLY LOCKED

Product metadata

Signature block

Contact details

Some fields locked, others editable. Layout flexible.

✏️
FREE

Company branding

Custom sections

Text boxes

Full control. Add, edit, delete, style as needed.

Information architecture - Three-tier permission model

-> Data mapping - from system to coa

Every field in a locked or partially-locked section is a named placeholder - not a hardcoded value.

When a user selects a product, the system fills in those placeholders automatically all at once. It pulls data from the right sources, checks that each value is valid, and only then generates the COA.

Field resolution - Template placeholder -> Source -> Output value

Field resolution - Template placeholder -> Source -> Output value

-> The interaction principle — if the system let you do it, it was safe

This became the guiding rule for every interaction decision in the builder. We didn't want users to need to think about what was allowed. The permission model had to be self-evident through action - not explained through documentation, not communicated through warnings.

A user dragging a field onto the canvas would see it resolve, or snap back, based on the tier of the section they'd dropped it into. There was no modal, no error message, no explanation needed. The behaviour was the explanation.

New COA creation workflow

New COA creation workflow

architecture

design

And finally...The COA Builder

The builder is a three-panel interface: a section palette on the left, a live canvas in the centre, and on the right, data fields and a properties inspector. Each panel has a distinct job, and the design had to make the system's rules legible without explaining them.

Left panel

Sections

Lists every section available to the template. Each shows its permission tier badge.

centre panel

Canvas

A live preview of the COA document being assembled. Sections stack vertically. Free sections accept dragged data fields.

Right panel

Fields and properties

Selects when a section is clicked on the canvas. Shows tier, source binding, data origin, and user capabilities.

Tier indicators - On-hover tooltips

colour-coded left borders on each section communicated tier at a glance, with tooltips on hover explaining what each tier meant.

Drag-and-droppable data fields

Users can drag data fields from the right panel directly onto sections. These fields auto-populate when a product is applied.

Properties panel

Clicking any section on the canvas reveals its full schema in the right panel: permission tier, source binding, data origin system, what the user can and can't do.

Freedom to customize

Headers, logos, and visual elements remain fully editable. These sections allow teams to match client requirements and brand guidelines without affecting compliance.

This wasn’t the final answer...

Naturally, the first design had problems.

Early usability testing revealed a problem: users couldn't tell what was editable vs. locked until they tried to interact with it.

This created constant uncertainty.

"I'm not sure if this is a bug or if I'm not supposed to do this."

- Participant during Round 1 testing

So changes were made…

What didn't work

Tooltips on hover

Nobody hovered long enough to read them. Uncertainty persisted across sessions.

What worked

Persistent visual hierarchy

Permission state readable at a glance, before interaction. Locked fields are greyed out.

Silent prevention

The cursor change was perhaps the subtlest detail — and the most important. When a user hovered over locked content, the cursor became a lock icon. Over moveable content, a grabber. No label. No tooltip.

The moment we knew it worked…

A QA specialist tried to delete a required section, saw it snap back, and immediately said 

" Oh, right...can't remove that."

 No frustration. No confusion. The interaction taught her the rule clearly.

testing

The numbers ( and what they don’t tell you )

The numbers ( and what they don’t tell you )

70%

70%

Faster creation time

Faster creation time

~85%

~85%

Less compliance errors

Less compliance errors

89%

89%

Template reuse

Template reuse

How these were measured

70% faster COA creation : Time-on-task, measured against the old workflow established during research (~45 min average across 5 QA managers, observed). Post-launch figure (~13 min self-reported in a post-launch survey). Range varied by template complexity; the 70% figure is the median.

~85% fewer compliance errors : Self-reported by QA managers in a 30-day post-launch check-in, comparing errors ( outdated regulatory language, missing fields, transcription mistakes ) flagged in their COAs before and after switching to the builder. Limited sample, but consistent across all teams in the pilot.

But the numbers weren’t the real story...

🧠 The behavioural shifts were!

Teams stopped double checking

In the first weeks after launch, QA teams still manually reviewed every generated COA - old habits. By week four, that behaviour had almost completely disappeared. They'd internalised that even if they wanted to create an invalid COA, the system wouldn't let them.

Expertise shifted focus

QA managers stopped spending cognitive energy on compliance mechanics. Instead, they focused on what actually required human judgment: interpreting borderline test results, advising clients on edge cases, analysing patterns across products.

Onboarding transformed

Before : 2-3 weeks of shadowing before new hires could create COAs independently.

After : New team members productive on day one. The system encoded the institutional knowledge.

Before

~45 min per COA, 6 app switches

Templates on personal drives

Correctness depends on memory

2–3 weeks to onboard new hires

After

~13 min per COA, 1 platform

Shared, versioned template library

Correctness guaranteed by structure

New hires productive on day one

impact

But the numbers weren’t the real story...