Jump to
The System We Used Was Broken
I didn't design VETS from a brief. I designed it from frustration.
I managed a veterinary clinic with tools that made simple tasks complicated - and I kept a mental list of everything I'd fix if I could.

No visual hierarchy.
No focus. No clarity
The legacy system displayed everything at the same weight.
Urgent alerts sat next to routine labels. Staff had to read every line to find what mattered - and in a busy clinic, that means things get missed.
7 clicks to record a vaccine.
4 screens to look up a patient.
The actions staff performed dozens of times a day had the most friction. No shortcut, no smart default, no memory of what you just did. Every task started from zero.
One popup.
One OK. Gone.
Critical alerts appeared in a separate tab. Press OK and they vanished. If you missed it, there was no way back. In a surgery room, a missed alert is not a UX problem.
It is a safety problem.
The terminal opened. The invoice disappeared.
The moment the receptionist moved to payment, the itemized bill was gone. The client had questions, she had to navigate back 3 screens - with the queue waiting. For multi-pet clients with insurance, it was worse: receipts got mixed across animals.
BASED ON PERSONAL EXPERIENCE
5 years as clinic manager + vet assistant, using RapidVet daily
Click burden is the #1 complaint
Alert fatigue is real
Context switching kills productivity
So I designed the system I wished had existed when I was running the clinic.
COMPETITIVE ANALYSIS
What the market already had.
And what it was missing.
Before starting the project, I mapped the three most widely used systems in Israeli and European vet clinics. The goal was not to copy, it was to understand what problems were still unsolved.
EasyVet
The leading system in the Israeli market. Covers the basics - but built around administration, not clinical workflow.
VetDesk
Mid-market European system. Strong on medical records, weak on the reception-side experience.
ezyVet
Cloud-based, international. The most modern of the three: designed for large multi-location practices, not small clinics.
These were not edge cases. Every system had most of these problems. That's where VETS began.
USER PERSONAS
Who I designed for
Three roles. Three workflows. One connected system.
Lora
Clinic Operations Manager
The person who keeps the clinic running - scheduling, billing, suppliers, and client relations, all at once.

Alon
Veterinary Assistant
Always in the treatment room - one hand on the patient, one eye on the screen.

Dr. Jonathan
Lead Veterinarian
Focused on the animal in front of him - the system needs to disappear.

USABILITY TESTING
Real people. Real feedback.
6 participants · 5 tasks · October–November 2025
Participants
PARTICIPANT 1
Receptionist
Domain expert
TESTED
Check-in flow, payment, scheduling
PARTICIPANT 2
External Tester
Fresh perspective
TESTED
End-to-end navigation, general usability
PARTICIPANT 3
Clinic Manager
Domain expert
TESTED
Billing overview, navigation, overall clarity
Task Completion
Task 01
Check in a client
✓ Done
Task 02
Open a patient file
✓ Done
Task 03
Record a vaccine
✓ Done
Task 04
Process a payment
✓ Done
Task 05
Book a follow-up
✓ Done
Key Findings
What participants said
WHAT I ACTUALLY BUILT AND WHY
Five features.
Five problems from the clinic floor.
Every feature on this list exists because I watched the old system fail.

Problem
Clinics run on a whiteboard.
Clinics run on a whiteboard. Numbers get lost. No one knows if the vet saw the message.
Solution
Internal Team Messaging
Real-time messaging with read receipts, file attachments, and notifications - every vet and receptionist, one system.
Problem
Insurance needs receipts per animal.
Three pets, one combined charge list - untangling at month-end, every month.
Solution
Split Payment by Pet
Payments tied to the correct pet and visit. Clean receipts. No manual splitting.


Problem
Terminal opened. Invoice disappeared.
Client had questions. Back 3 screens. Queue waiting. Every day.
Solution
Invoice to WhatsApp Before Payment
One tap sends the invoice to WhatsApp or email before checkout begins.
Problem
Booking is the most frequent task.
Finding free slots meant opening each vet's column one by one.
Solution
Schedule Load Indicator.
Relative load count per vet. One scan replaces four clicks.









Problem
You had no idea what was happening in the next room.
In the middle of a procedure, you had no idea what was happening in the next room. No one did. Verbal updates only - and half of them got missed.
Solution
Procedures Board
Six clinical stages, live status, one-click transitions. The whole team knows where every patient is, without leaving their screen.
WORKFLOW COMPARISON
See how it works in practice
The features don't work in isolation. Here's a real scenario: a receptionist needs to pass a file and a message to the vet during a busy morning, showing how VETS handles it from start to finish, compared to the previous system.
THE PROCESS
From Chaos to Logical Design
1
Legacy (Rapid Vet)
Random colors. No legend. No hierarchy.
-
Mapped every screen staff touched daily: found 3-5 switches per task
-
Identified that color was used decoratively, not semantically
-
Defined the core problem: no hierarchy, no urgency signal, no role clarity


2
Initial Concept
Logic before the look.
-
Structured client search around how staff actually look up patients (name, owner, pet, phone)
-
Replaced the whiteboard with Doctor Messages.
-
First attempt at semantic color: red for surgery urgency, amber for everything else

3
Advanced Prototype
Every decision documented.
-
Role-based sidebar collapsed navigation from 20+ actions to 5 focused items
-
Live status on the schedule replaced verbal room-to-room updates
-
Inline alerts replaced popups: zero interruption to clinical flow
BEYOND SINGLE SCREENS
A Synchronized Ecosystem
Each feature feeds the next. Nothing lives in isolation. This is what the five features look like working together.
● Hover the orange dots to explore features
The Design Language
Every token has a job. Nothing is arbitrary.
Three typefaces. Six colors. One rule: if you can't explain why it's there, it doesn't belong.
COLOR
Semantic, not decorative.
Navy
#0D1F35
Sidebar, structure
Blue
#2563A8
Interactive, primary action
Amber
#D97706
In progress, attention
Green
#16A34A
Recovered, complete
Red
#DC2626
Urgent, error
Off-white
#F4F6F9
Surface, background
Every color maps to a clinical state - not a brand preference.
Green = recovered. Amber = in progress. Red = urgent. Staff don't read the label. They read the color.
All color combinations in the interface meet WCAG 2.1 AA contrast requirements. Status is never communicated by color alone: every indicator pairs color with a label or icon.
TYPOGRAPHY
Three typefaces. Three jobs. No overlap.
Snoopy
Sora - Patient names & section headers
Names need to feel like people, not database entries. Sora has warmth without being decorative.
Visits · Billing · Records
14px regular
Outfit - UI labels & body copy
Neutral and readable at clinical density. Stays legible at 12px - the minimum the system uses.
985141009078234
13px monospaced
DM Mono - IDs, numbers, doses
Monospaced digits don't shift layout as values update live. In a medical context, a misread dose is not a UX problem - it's a patient safety issue.
Font choice in a clinical system is a functional decision, not an aesthetic one. Every typeface above was chosen because it makes the right information easier to process under pressure.
SPACING
Every value is a deliberate step.
Base gap
8px
inline items
Form rows
12px
between fields
Card padding
16px
standard cards
Section header
20px
left/right padding
WHAT THIS CHANGES
Numbers don't lie.
Every metric below maps to a feature above. Design decisions with measurable consequences.
7 → 2
Clicks to record a vaccine
Task analysis: vaccine recording workflow
0
Room-to-room interruptions
Live dashboard + messaging replace all verbal coordination between rooms
-40%
Receptionist navigation time
Workflow benchmark vs. RapidVet baseline: scheduling + billing tasks
HOW I WORK
The AI wrote code. I made decisions.
Every decision in this project is documented. The AI moved fast - I moved right.

Button = current card state. Not destination.

Two tabs, two jobs. No overlap.

Workflow nuance Claude couldn't know. She ran the clinic.

Clinical mental model: each pet is a unit. Not a flat list.

Screenshots before diagnosis. Every time.
UX DECISION
Alert placement: inline, not popup.
Popups demand attention at the worst possible moment: mid-exam, mid-procedure. Inline indicators let staff notice alerts on their own time without breaking focus. Same information. Zero interruption.
UX DECISION
No financial status in the Visits tab.
Clinical and financial data have separate mental models. A vet reviewing visit history shouldn't see billing status - that's a receptionist's job. Two tabs, two jobs, no overlap.
REFLECTION
If I had another sprint...
VETS is a prototype, not a shipped product.
If I had another sprint, I'd run a second usability test, this time on the hi-fi- with participants I didn't reach in the first round: a practicing veterinarian, and someone less comfortable with technology.
The first round validated the reception workflow.
A vet's workflow and a low-tech user's first impression are the two gaps I'd close next.
I'd also revisit the research phase. Every participant in the test was already familiar with clinic software. That made onboarding frictionless, but it also means I haven't stress-tested the system against someone encountering it cold.
The AI wrote code faster than I could alone. What I learned is that speed means nothing without direction, Claude didn't know that a missed alert in a surgery room is a safety issue, not a UX preference. Every meaningful decision required me to bring the domain knowledge, push back, and re-explain the context.
I also discovered that AI is a surprisingly sharp critic, asking it to challenge my own decisions surfaced problems I'd stopped seeing. That back-and-forth is what turned a functional prototype into a considered one.
