Under NDA · client, name and location withheld
PrologueA tenant-services platform for an office tower

One product. Two languages, two screen sizes.

Tenants of a premium office tower needed one place to book amenities, register visitors and raise requests, in Korean and English, on desktop and phone. I was one of three designers. My part: the design system, Korean localization, the mobile versions, the screen-to-screen logic, developer handoff and design QA.

My roleAssociate UI/UX designer (team of three)
TimelineMarch – August 2023
PlatformsResponsive web (1920) · mobile web (375)
LanguagesKorean and English
Please select a conference room
YYYY.MM.DD
Start time
CancelNext

Toggle the language: same component, different font, size, line height and length. Recreated for the NDA.

01The brief and the team

A building’s front desk, turned into software.

The client wanted tenants to book lounges, meeting rooms and the gym, register visitors and report problems online, in Korean and English, with an admin side to approve requests.

Business developmentGathered requirements from the client and passed them to design.
Design team1 senior designer and 2 associate designers.
SDADMe
Development teamBuilt the platform from the design team’s screens and logic.
206web screens in the team’s design file (1920 px)
193mobile screens (375 px)
2languages on every screen: Korean and English
6months, March to August 2023
Amenities: lounge, conference rooms, fitness (group classes, paid PT, lockers), sleeping roomsVisitors: pre-registration and lookupRequests: complaints, lights-out, heating and coolingMy page: booking history, approvals, employee accounts

Screen counts are for the whole team’s file, not just my screens. Requirements came from the client through business development.

02A system before screens

Four hundred screens only stay consistent with a system.

I built the design system in Figma: tokens for colour, type and spacing, and components with every state. With two languages and two sizes to cover, every component had to behave in all four combinations.

Links
440
Labels
425
Breadcrumb
240
Inputs
187
Tab buttons
166
Buttons
292
Language switch
89

How often each component is reused across the final file (instances counted on the main page).

Breadcrumb token

Home › Tenant Service › 회의실 예약

Tabs

라운지회의실피트니스수면실

Inputs · default, focus, error, disabled

이메일 입력
user@email.com
이메일을 입력해 주세요
홍길동

Buttons · primary, secondary, disabled

다음취소예약 취소
Decision · structure

One component set with language variants, not two separate libraries.

Korean text needed a different font and size. The question was where that difference should live.

A
Duplicate every screen into a Korean fileSimple at first, but every later change would need making twice and would drift.
✓
Same components, language handled by text stylesLayout, spacing and states are shared; the Korean variant swaps the type style.
GainA fix to a component lands in both languages at once.
CostComponents needed room for the longer or taller language from the start.
03Korean localization

Translation is copy. Localization is layout.

A Korean designer supplied the Korean text. My job was to make every screen work with it: Korean script needs its own font, and it sits differently in size, line height and spacing than the English it replaced.

EnglishKorean
TypefaceGeometric sansSUIT · Noto Sans KR
SampleConference Room Reservation회의실 예약
Length27 characters6 characters
What changesWidth, trackingSize, line height, spacing
1Swap the type, keep the grid. Korean screens use Korean typefaces on the same layout grid as English.
2Re-tune size and line height per language, so Korean labels don’t look cramped or oversized next to English ones.
3Design for the longest string. Buttons, tabs and table columns were checked in both languages before they were signed off.
Conference room booking · Korean · web
Korean conference-room booking form on desktop, with Korean labels and English section title

Original screen. Client branding, imagery, tenant names and e-mail domains are cropped or blurred.

From the team’s change log · 2023.03.22Breadcrumb second level changed to English: “Tenant Service” instead of the Korean label. Navigation labels stay in English on Korean pages too.브레드크럼 수정 2nd 뎁스 → TENANT SERVICE
04Web to mobile

Same booking, one thumb.

I created the mobile versions of the web screens. A form that fits in two neat columns on a 1920 px screen has to become one comfortable column on a 375 px phone, without losing any field, rule or state.

Web · 1920
Web booking form in two columns
Mobile booking form in one column
2 columns → 1 column
Fields stack in reading orderName, company, e-mail and phone go from paired rows to a single column.
Side by side → stacked
Primary action firstOn web, Cancel sits left of Next. On mobile, Next is on top, full width, within easy reach of the thumb.
Kept intact
Ranges stay togetherStart and end time stay on one row, so the range still reads as one decision.
05The logic map

Which tap opens what, written down.

Screens alone don’t tell a developer what happens between them. I mapped the logic: which screen opens after which, what each button leads to, and what happens when something is missing or still waiting for approval. Every screen got a number, and mobile screens mirror it with an M.

1.xAbout the building1.2.5 · M.1.2.5
2.xTenants2.2.1 · M.2.2.1
3.xVisitors3.2.1 · M.3.2.1
4.xTenant services4.1.2 · M.4.1.2
5.xCommunity5.2.1 · M.5.2.1
6.xMy page6.1.3 · M.6.1.3
4.1.2Booking formvalidationMissing / invalid field4.1.2.2.MRequest received6.1.3My bookings6.1.3.1.2Before approval6.1.3.1.3Approved0.4Leave-page warningNext · a field emptyNext · all validOKpendingadmin approvesswitch tab mid-form
My bookings · before approval
Booking details before admin approval
Company name missingName missingEmail missingInvalid emailContact no. missingInvalid contact no.Date missingMissing start timeMissing end timeUsage time missingFloor missingSeat number missingPeriod of use missingTitle missingComplaint details missingType of complaint missingTerms not acceptedConsent to collect personal info missingVisit building not selectedNo landing floor selectedAccess deniedUnauthorized access

Validation states documented in the file. Each one needed a message, a position and a rule for when it clears.

06Handoff and design QA

The design isn’t done until the build matches it.

I walked the developers through the screens and the logic map, answered their questions during the build, and then did post-development design QA by hand: putting each built screen next to its design and checking them line by line.

01

Knowledge transfer

Walked developers through each flow: screen numbers, states, the logic between screens and the mobile rules.

02

Questions during the build

Developers came back to the design team with queries and edge cases while they built.

03

Manual design QA

Compared every built screen with its design, in both languages and both sizes, and reported the differences.

Spacing and alignmentKorean font and line heightColours and statesCopy in both languagesMobile breakpointsModals and validation
Design change log (from the file)85 notes
2023.03.22Content width set to 1536 px; logo size and card padding adjusted
2023.03.22Content card width 501 → 499 px; breadcrumb added
2023.03.22Breadcrumb second level: “My Page” in English
2023.03.22Breadcrumb added to remaining tenant-service screens

Translated from the Korean notes kept beside each screen. The file also holds 111 “check notes”, the functional specs each screen was designed against.

EpilogueWhat it taught me

Not the flashiest project. The one that taught me craft.

I’d keep

  • One component set for both languages
  • Numbering every screen so design and code speak the same language
  • Treating design QA as part of the design

I’d change

  • Set Korean type styles on day one, not after the English screens
  • Write the logic map before high-fidelity screens, not alongside
  • Track QA issues in a shared tracker instead of notes beside screens

What it taught me

  • Localization is a layout problem, not a copy problem
  • Developers need the logic between screens as much as the screens
  • Small mismatches add up; checking the build is where quality is won
Designed by a team of three: one senior and two associate designers, including meClient and location withheld under NDA← Back to all work
Next case study

Dnerd Studio

Ed-tech web app · Co-founder · 2025 – now

A practice platform for design entrance exams, from a 1:29 AM WhatsApp message to a live product.

Read the case study