Harper lets a patient book an appointment with their local pharmacist the way they'd book a doctor. Independent pharmacies give vaccines and counsel people on medication, diabetes and quitting smoking. Harper’s founder, Tara Debek, saw an opportunity to help them organise and bill for care they were already giving away.

Tara first called us in June 2024. She wanted the first version designed in four weeks. We ran six, from the kickoff to mid-July: the patient's booking flow, the pharmacist's app, a design system, two prototypes and notes for the developers she was still hiring.

Two sides of the product, two different starting points

The patient is often over 50, with low health literacy, and books from a phone. "Imagine our end user is your great-grandma," Tara said. The other reader is an investor, or a health plan, and for them it had to look modern.

The pharmacy has a different job. A small team needs to see appointments, manage services and respond to patients while working at a desk. We designed that side for desktop and the patient side for mobile, using the same components without making the two experiences follow the same layout.

Harper's pharmacist home screen, with billables against a monthly goal, charts of total billables and top services, and a link to share the booking page

Book an appointment without creating an account

I ran the kickoff through the brief line by line, asking how far each piece needed to go. A patient account would bring login screens, password recovery and verification into a task that might only happen occasionally. Tara agreed that the first version could work without it. Everyone books as a guest. We also left billing out of the first version, keeping the scope on booking and managing the care.

Choosing an immunization service before continuing the booking Choosing a pharmacist, with I Don't Mind selected by default and a note that the choice can't be guaranteed Choosing a time on Wednesday 12 June

Keep the relationship without building a staff rota

Tara wanted to keep the choice of pharmacist. In her patient interviews that relationship was "nine times out of ten the motivating factor" for turning up. I didn't want to collect every pharmacist's diary; a diary nobody updates on a sick day is worse than none. So the screen asks for a preference, defaults to "I don't mind", and says the pharmacy can't guarantee it.

a preference without a guaranteed pharmacist

Without an account, patients still needed a way back to their booking. The confirmation text contains a link to reschedule and another to cancel, followed by a reminder 48 hours before the appointment. They can change the booking from the message they already received rather than signing into a separate product.

manage the booking from its confirmation text

The appointment confirmed screen, with the pharmacy, date, time and an Add to Calendar button A text message confirming the appointment, with links to reschedule and to cancel Rescheduling an appointment from the link in the text message

The booking page belongs to the pharmacy

I asked Tara how visible Harper should be to a patient. "Err on the side of generic." We took Harper’s brand off the booking page, leaving the pharmacy’s name, photo and address, and Harper once, small, at the foot. The person following a link from their pharmacy would still recognise whose care they were booking.

Central Pharmacy's booking page on desktop, with suggested services, popular services and categories
the pharmacy’s identity leads the booking page

Pharmacies send patients the link or embed the page on their own site, from a share menu I asked Prakash to model on Loom's.

The share menu on the home screen, with options to copy the booking link or share it on X, LinkedIn and Facebook

Make billable care visible to the pharmacy

Harper needed to show a pharmacy what those appointments were worth, even though the first version would not process billing. The home screen opens on billables against a monthly goal. In the appointments list, every visit has its value beside it and each day has a total. A pharmacist can read the schedule and its potential revenue together.

The appointments list, grouped by day with a total for each day and a price on every appointment
each day has its own billable total

Services started as a table in settings. Tara described them as "profitable little chunks of time". I moved them into the main navigation as a grid, with suggested services a pharmacy could add in one click. The catalogue became something the pharmacy could actively develop, with the length and description of each service available to edit.

The services page, with services grouped into immunization, counselling and lifestyle, and suggested services down the side Adding or editing a service: its icon, name, type, length and description

Late on, Tara asked in a Figma comment for a revenue calculator: five immunizations and five counselling appointments, what would a pharmacy make? The prices came off every patient-facing screen.

The revenue calculator, asking how many appointments the pharmacy does per day and estimating missed revenue per month
estimate missed revenue from appointment volumes

Availability is the pharmacy's opening hours

Per-pharmacist availability came back at the settings screens, and I called it off for good: it means building for leave and sick days. A pharmacy sets one set of hours, with as many blocks a day as it needs, and says how many pharmacists are working each day. That number is how many appointments can be booked at once. A pharmacy can represent a split day and its capacity without maintaining a separate calendar for each member of staff.

Availability settings, with opening times for each day of the week and a count of available staff beside each
staff count controls concurrent bookings

Messages are text messages

Patients have no inbox, so every conversation happens over SMS, and the messaging screen is the pharmacist's side of those texts. I asked Prakash to keep read and unread states, like email, and leave out a "mark as resolved" action. This was a conversation with a patient, with no separate support-ticket process to manage.

The messaging screen, with SMS threads on the left, a conversation in the middle and the patient's details on the right

The patient profile holds appointments and the latest message. The rest of the record is in the pharmacy's own system, a button away.

A patient profile with upcoming and past appointments, the most recent message and a button to open the patient in the pharmacy's own system
open the existing patient record from here

What we handed over

Prakash Ghodke designed most of the screens, Vitalii Prokopenko built the component library and navigation, and Anas Bin Zia linked them into two clickable prototypes. By mid-July the developer documentation and icon set were done and Tara was collecting quotes.

"Working with NBS is like a breath of fresh air. I really appreciate how detail oriented they are and how they have the process on lock."
Tara Debek
Founder at Harper

More from Harper

Harper screen
Harper screen
Harper screen
Harper screen
Harper screen
Harper screen
TeamJeremy BlazeAnas Bin ZiaVitalii Prokopenko
CategoryHealthcare
LocationSan Francisco
Period2024
Jeremy Blaze
Founder & Design Lead
Jeremy is the founder of Never Before Seen and serves as design lead on all of our projects. For over 10 years he's led product and design for over 70 early-stage companies worth $1b+ combined.