Product design

oosm

A case library I designed and built for a dental clinic in Korea. Staff find past cases that match a new patient, and the dentist shows them at the chair in one tap.

The name comes from 웃음, Korean for a smile.

Every patient wants proof from someone like them.

전Before후After

All teeth on this page are illustrations. No patient photos are used.

Role
Research, design and build, solo
Client
A dental clinic in Korea
Timeline
October 2026, ongoing
Built with
Claude Code, React, TypeScript, Firebase
Status
Built, running on sample cases
The oosm consult screen on a tablet: one illustrated sample case before and after treatment, side by side, with angle, stage and view buttons below and similar cases along the bottom
The consult screen, opened from a set prepared before the patient arrived.

Part 1 of 3, filed the way oosm files a case

First
visit

The clinic, its six-case deck, and the idea I had to let go.

초진
  1. 초진
  2. 과정
  3. 결과

Every patient saw the same six cases.

The first consult always opened one PowerPoint, whoever was in the chair. A closer match meant digging through charts, folders and an external drive, because the clinic’s photos lived in five places. Adding a case to the deck took so long that it was refreshed about once every six months.

My favorite idea didn’t survive the first interview.

An illustration of a generated future smile: perfectly even, glowing teeth with sparkles
Concept AAn AI preview of the patient’s future smile

I didn’t want to invent the problem myself, so I went to a dental clinic. I brought a few rough concepts to the first interview and let the clinic choose.

My favorite generated a patient’s future smile with AI. The business manager told me patients trust real cases, and that generated images had done little for the clinic.

She set the clinic’s other big problem, bookings, aside as too hard to connect, and chose a case library. The results that persuade patients already existed. Nobody could find them at the chair.

Research: a 21-minute interview with the business manager, written answers from four staff, and follow-up questions answered by the dentist.

  1. HeardThe clinic had tried a case tool before and dropped it. Photos went in one at a time, on the one PC it ran on.

    BuiltA web app that takes whole folders and old decks at once, on any PC or tablet.

  2. HeardTwo people use it, minutes apart. The consult manager adds and tags cases; the dentist presents them.

    BuiltThe consult screen first, designed around the dentist’s one tap.

  3. HeardLittle pain. Asked what the deck lacks, three of four staff left it blank. One wanted only cases that fit the patient.

    BuiltMatching as the core feature, with the dentist as the person to win over.

  4. HeardThe clinic can’t change its own software. An outside vendor built its records system.

    BuiltTags and cases the staff edit themselves, on an account the clinic owns.

Part 2 of 3

Treatment

How cases get in, get found, and reach the chair.

과정
  1. 초진
  2. 과정
  3. 결과

Before the patient sits down

Most of the work happens before the consult. Cases go in when there’s time, and the right ones are picked before the patient arrives.

1Add

Day one doesn’t start empty.

The importer opens the clinic’s old consult deck, PowerPoint or PDF, right in the browser. It groups the photos by case and guesses each one’s stage and angle from the slide.

61 slides in 138 photos out On the clinic’s own deck. The window shown reads a sample deck.

oosm's import window reading a sample deck: each slide's photos grouped, and every photo labeled with the stage and angle it guessedABCD

Swipe to see the whole screen

  1. A슬라이드 2 · 초진Slide 2, first visit. The slide’s title says which visit it shows.
  2. B전 · 정면Before, front. Stage and angle, guessed from where the photo sits in the slide’s grid.
  3. C중간 · 1개월During, month 1.
  4. D태그 자동 선택Tags picked for you: the group’s title becomes the treatment tag.

2Find

Matched in the patient’s own words.

Tags come in groups the staff edit themselves: the concern as the patient says it, treatment, age and result. Staff run it while preparing a consult, and the dentist can run it at the chair. Two or three taps rank every case by the tags it shares, so the answer is never empty.

이 환자와 비슷한 사례Cases like this patient

Try it: pick what the patient says and their age. The cases sharing the most tags move to the front, as they do in oosm.

Concern, in the patient’s words

Age

겹치는 순 Most tags in common firstNo case has both tags yet, so the ones sharing one come first.

  1. Crowded front teeth, drawn가장 비슷해요

    치아가 삐뚤어요청소년비발치 인비절라인

    Teen, crowded front teeth

  2. Upper teeth covering the lower ones, with gaps, drawn가장 비슷해요

    입술이 들려요성인발치 교정

    Adult, deep bite and gaps

  3. A narrow arch with crooked teeth, drawn가장 비슷해요

    치아가 삐뚤어요소아상악궁 확대장치

    Child, narrow upper arch

  4. Slightly crooked teeth, drawn가장 비슷해요

    치아가 삐뚤어요성인부분교정

    Adult, mild crowding

  5. Front teeth that don’t meet, drawn가장 비슷해요

    입술이 들려요청소년발치 인비절라인

    Teen, open bite

  6. Crowded lower teeth, drawn가장 비슷해요

    치아가 삐뚤어요소아1차 교정 (홀슈)

    Child, crowded lower teeth

3Prepare

Picked in order, named by the clock.

I asked when cases get picked. The answer, before the patient comes in, made prepared sets the main path. Staff tap cases in the order they’ll be shown and name the set by appointment time, never by patient name.

Prepare mode: drawn cases numbered in the order they were tapped, and a set named 2 PM consult at the bottomABC

Swipe to see the whole screen

  1. A상담 때 보여줄 사례를 순서대로 누르세요“Tap the cases in the order you’ll show them.”
  2. B1 · 2 · 3The tap order becomes the order on the consult screen.
  3. C오후 2시 상담“2 PM consult.” The hint beside it asks for an appointment time instead of the patient’s name.

At the chair

A prepared set opens straight into the consult screen, before and after side by side.

The dentist steps through the set with the arrows, on screen or on a keyboard, switches the angle with the numbered buttons, or jumps to a similar case along the bottom. The consult screen always stays dark, so the photos read clearly.

  • Side by side viewSide by sideWhere every case opens
  • Slider viewSliderDrag to compare in place
  • Full mouth view, five angles before and afterFull mouthAll five angles at once
  • Progress view, one angle with the treatment stages as dotsProgressOne angle, before to after

After the consult

When a set or a quick match is shown, oosm logs which cases appeared, in what order, and when.

It keeps no patient details and clears itself after 180 days. A follow-up call can say “like the second case we showed you.” From the log, staff make a take-home sheet: the front view of each case, before and after, printed or sent by KakaoTalk or email. Face photos never go on it.

The consult log: a quick match and the 2 PM set, each with the illustrated cases shown in order
The take-home sheet: cases shown in today’s consult, each a before and after front view
The lip simulation screen: a drawn side profile, as taken on the left and with the lips pushed back by a brush on the right, the note that results may differ underneath

For patients worried about their profile

Staff photograph the profile at the chair and push the lip line back by hand with a brush. Nothing is generated and oosm keeps no copy. The image sent to the patient carries a note that the real result may differ. Whether the consent form covers profile photos is one of the clinic’s open checks.

37 problems found. 36 fixed in two days.

I walked every flow myself and logged what tripped me, sorted by usability principle.

The one I held back is search. At today’s size, tags find anything, so the search box waits until the library passes about 40 cases.

전Two different “archive” buttons sent things to two different places.

후One trash for cases and tags, with restore and an undo right after deleting.

전The card menu appeared only on hover, so it never showed on the tablet.

후It’s always visible on touch screens.

전A case saved without tags never showed up when filtering.

후Saving without tags asks first, and a “No tags” filter finds the strays.

전Dragging a tag reshuffled the row under my finger, too fast to follow.

후A placeholder holds the spot and moves only in the gaps.

Three answers from the dentist changed the design.

  1. Are unfinished cases ever shown to patients?

    Yes.

    A case can now be saved as “in progress” with only a before photo.

  2. How do the old deck’s two-by-three grids read?

    Column by column.

    Each column is one visit, left to right, and the importer reads them that way.

  3. Can patients take the photos home?

    Without faces.

    The take-home sheet carries the front view of the teeth only.

Built for the clinic’s Wi-Fi and budget

Offline at the chair. Every clinic device keeps its own copy of the photos, so a consult carries on when the Wi-Fi drops.
About 2,000 photos, free. Paid billing wouldn’t set up on the clinic’s new Google account, so I fit the photos into the free plan, with a meter that warns at 80%.
  • A login for each staff memberReact and TypeScript on Firebase, built with Claude Code, on an account the clinic owns.
  • A guide ordered by the staff’s dayWritten in Korean for the handover. Its screenshots use sample images and are re-shot by a script whenever the interface changes.

Part 3 of 3

Result

Where oosm stands, and what I learned.

결과
  1. 초진
  2. 과정
  3. 결과

Working end to end, with sample cases

Real photos go in once the dentist and the consult manager confirm that the consent form covers cloud storage.

I’ll judge oosm by cases added each week and consults where it was opened. Staff told me they lose little time today, so use is the honest measure, and the dentist reaching for it is the one that matters. Next on the list: a QR code on the take-home sheet, and search once the library needs it.

What I learned

  1. Ask what they already tried.My favorite idea ended in one sentence from someone who had watched it fail. That question was worth more than any concept I brought.
  2. Design for the person who decides.Most staff saw nothing missing in the PowerPoint, so I designed for the dentist’s one tap and the manager’s few minutes. I’ll measure use, not opinions.
  3. Put privacy in the form.The set name field asks for an appointment time, so patient names stay out of the app with no extra step.
Next case studyWater Reuse Consortium
Previous
Previous

RE:Tract