Notion API  ·  Node.js  ·  One Week

Notion

Repair Hub

They hired me to design a brand. I found a quieter problem costing them an hour a day, and I solved that first.

My Role

Product & UX Designer

Timeline

One Week

Scope

IA, Automation, DB Design

The Short Version

Three numbers if you have ten seconds. The full story sits below.

95%

Less admin work

Six manual steps per repair collapsed into one status change.

0

Duplicate records

A live cache plus name cleanup wiped out every duplicate profile.

1 week

Idea to launch

Designed, built, and shipped inside the tools they already owned.

01Context

Hired for one project.
Fixed a more urgent one first.

Hired for a brand project, I spent week one watching the shop work. The same scene kept repeating: a repair finishes, then five minutes of copy, paste, and search just to file it.


The most expensive friction is the kind nobody complains about. I fixed it first.

The workflow before I touched it

01

Technician marks the repair complete

02

Copies name, phone, and machine details by hand

03

Opens a separate archive page

04

Searches for the customer, if they exist

waste
05

Creates a new card or scrolls the old one

waste
06

Pastes, formats a row, deletes the original card

waste

The most dangerous UX debt is the workaround nobody complains about, because they already forgot there was a better way.

Notion Repair Hub, active tracker view
Active Repair Tracker, the daily working viewFigure 01
02The Three Problems

Three friction zones. Twenty wasted minutes. Every single repair.

01High

The Context Switch

Every repair pushed the technician into a separate archive. More clicks, more errors.

02High

The Race Condition

Notion's search index lagged for seconds, so duplicate profiles appeared before the first one registered.

03Medium

The Spacing Bug

One trailing space made "Keshav Tile" two people. It silently split the history.

03The Design

One page.
Two databases.
Zero manual steps.

Two databases, one page. Active repairs and customer archive, unified so technicians never leave the hub.


Then I made archiving invisible. No button, no form. It files itself the moment a status flips to done.

System architecture

Repair Hub Portal

One parent page, one source of truth

Database A, Active Tracker

Current pipeline, received to repairing to done

Database B, Customer Archive

Each card is one unique customer profile

Repair History Table

Nested per customer, a chronological machine log

Before

Six manual steps per repair

Constant switching between pages

Duplicate profiles piling up

Dirty data hiding real history

No guide for new staff

After

One action, flip the status to done

A single hub page, never leave it

A live cache that blocks every duplicate

Name cleanup on every write

A step by step guide built into the page

Customer archive

Customer archive, per profile view

Repair history table

Per customer repair history table

04My Contribution

What I owned, and what I handed off

Information Architecture
Interaction Design
Database Schema Design
Node.js Automation Script
Coworker Onboarding Guide
Notion API Integration
Hardware Repair Operations
Production Deployment, IT

Filled badges are my work. Outlined badges sat with the client.

05System in Action
Full hub portal

Hub portal, full operational layout

Daemon sync output

Background daemon, the live sync console

The best feature I designed is the one you never see. The automation that makes filing disappear.

06Outcome

The team closed their first repair on the new system without asking a single question.

Nobody needed training. Three staff, one technician, ten-plus machines a day — they just used it.

95%

fewer admin steps on every completed repair

0

duplicate customer profiles since launch

1 week

from first observation to live system

Minutes

to onboard new staff, down from days

07What I Learned
01

Watching beats interviewing

The client never mentioned the problem. I found it by observing, not asking.

02

UX lives in the data layer

My most impactful decision was not a screen. It was a live cache that killed a race condition.

03

The best feature is the one you remove

Six steps became one. Every removed step is a removed failure point.