UX/UI Design · 2025–

DNK Resident Portal

An admin-first rental operation in Japan,
redesigned around the people who live there.

RoleUX/UI Designer
Duration2025–
ContributionProduct Planning, UX/UI Design,
Design System, Cross-platform Structure
TeamDesigner, PM, Dev, DL Engineer
DNK RP App on iPhone

A resident-first,
two-sided housing platform

Japan's housing market runs on complex mechanics: guarantor registration, recurring lease cycles, separate maintenance and system fees. The admin-side PMS that drives operations sits entirely apart from the resident's experience.

I designed a two-sided platform on a single contract data model — RP App for residents, RP Admin Web for operators, and the PMS — connecting all three. Residents can view contract details, payments, announcements, facility bookings, and intent submissions directly from the app. Operators handle contract issuance, announcements, push notifications, request management, and invoicing through Admin Web.

This is a PMS-integrated housing platform built around the resident — designed to honor Japan's local regulations and operational norms while giving residents the agency to verify and act on their own information.

The rental system has evolved.
The experience hasn't followed.

Traditional Japanese rentals run admin-first. Residents receive everything — contracts, payments, announcements — second-hand. When PMS adoption digitized the admin workflow, the resident touchpoint stayed broken. The right job wasn't redesigning the ops system. It was redesigning the entire living experience.

Market research timeline — 2000 to 2025

RP App Overview

RP App home screen with feature tags

Residents had to go find
what they needed — every time.

In Japan's legacy rental systems, everything flows one way: from the admin, on their terms. Residents go looking. Talking to actual tenants made the real problem clear — it wasn't missing features. Contract, payment, announcement, and request never connected into one resident flow.

User 01#Payment info isn't clear

I can't see how much I owe this month in one glance, so I get confused every time.

User 02#Contract info is hard to reach

Finding my contract details or payment history takes way too many steps.

User 03#Late fees come out of nowhere

I got hit with a late fee, but I can't tell from the app when it was added or how much.

User 04#Facility booking is unclear

I want to book a facility but I can never figure out how, so I keep asking the manager.

User 05#Co-residents have no access

My family living with me can't see anything. We need separate logins for residents.

Insight — From Fragmented Touchpoints To A Connected Living Experience

We grounded the UX in how residents
actually live, and pulled out four directions.

Drawing on Korean and Japanese tenant research, behavioral analysis, PMS integration constraints, and lived resident scenarios, I defined the UX directions that anchor the Resident Portal App.

Accessibility

Information at the speed of need

"What do I need to do right now? How much do I owe, by when?" Residents should know without searching. The home screen surfaces this through a status-based structure.

Contextuality

Adapt to where the resident is in their lease

Pre-move-in, in residence, planning to leave — each state demands different info and actions. Notifications, menus, and submission rules branch automatically by state.

Clarity

Translate the money clearly

Lease cycle invoices, late fees, refunds, payment status — complex financial structures need a visual translation. Within the constraints of PMS data, I simplified and layered the information so it lands immediately.

Autonomy

Put the resident in the driver's seat

The legacy PMS was admin-centric. RP App lets tenants submit, verify, and track their own contracts, bills, and facility usage.

From Fragmented Touchpoints
To A Connected Living Experience

We structured the data around the contract, then built an environment on top where residents can manage and decide for themselves. Contract → Data → Autonomy. That stack is the core of the RP System.

Step 01

Contract

Unify contract data into a single model. Residents and operators share the same contract in real time — lease cycle, guarantor, and corporate-vs-individual all managed as one model.

Step 02

Data

Layer billing, payment, notifications, announcements, and requests on top of the contract. Two-way PMS sync removes data drift and double entry.

Step 03

Autonomy

On top of the structured data, give residents a self-serve environment to verify, submit, and manage. They run their living arrangement themselves — without asking the operator.

Concept — Contract → Data → Autonomy

One UI/UX system spanning
the mobile app and admin web

RP App and RP Admin Web express the same contract data in different contexts. A resident's billing status tag in the app and the payment-status column an operator sees in Admin Web are the same data — but presented and prioritized differently. Add the reality of PMS field changes and new feature asks, and a shared design system became non-negotiable. It's how we kept both platforms scaling in sync without the experience drifting.

Unified visual language across App and Admin Web

The 'unpaid' tag in the app and the payment-status column in Admin Web share the same color and icon system. Same information, different surfaces, no confusion.

Built to absorb PMS changes

When PMS adds billing items or changes contract fields, we don't redesign screens from scratch. Figma Tokens and a structured component library let us recombine existing elements to ship the response fast.

No interpretation gap between design and dev

We specified boolean variants, semantic color usage, and spacing rules upfront. No more 'which style is right for this state?' — engineers ship from the spec directly.

Typography / Spacing & Layout
Color System
Icon System
Button & Interaction System

My Contract

Japanese rental contracts are structurally complex — cycle renewals, guarantor registration, corporate vs. individual. In the app, residents see lease terms, payment history, guarantor info, and submitted documents directly, and can share them on the spot. In Admin Web, operators handle tenant detail, status changes, and blacklist management from a single view. The result: a contract flow where both sides can operate independently, without phone calls or paperwork.

My Contract — App and Admin Web views

App: Contract info + document sharing

Residents view lease terms, payment history, and guarantor info directly. They can share lease agreements, income certificates, and other documents through AirDrop, email, or message — no need to ask the operator again.

Admin Web: Live contract operations

Operators see tenant details, contract history, blacklist status, and emergency contacts in a single view. Contract status changes propagate to the app immediately — no calls, no manual cross-checks.

Cycle history + corporate/individual handling

Multiple contracts (cycles) under one account are differentiated, and corporate-only fields (company name, contact person, etc.) are separated. Internal ops measured contract and document inquiries dropping by ~47% after rollout.

Billing & Overdue

PMS billing data was built for operators — feed it straight to residents and it's unreadable. The core job was translating it into the resident's view. The app surfaces amount, due date, and account on one screen; Admin Web manages per-unit invoice lists, transactions, deposits, and late-fee logs from one place.

Billing & Overdue — Web and App views

App: Billing status + payment guidance

Color and tags shift by state — unpaid, partial, overdue. Amount, due date, and account info live on a single screen, so 'when, how much, where to' is immediate.

Handling the delay between real payment and system

There's a lag between auto-calculated late fees and confirmed deposits. To cut down on 'I already paid, why am I overdue?' inquiries, we designed a separate lag-aware UI — repeat inquiries dropped significantly.

Admin Web: Unified billing operations

Monthly invoice lists by unit, transaction records, deposit management, late-fee logs — all on a single screen. Information that used to live across multiple views is consolidated, and the ops team reports ~40% less time spent on unpaid checks and collection workflows.

Intent Submission

Move-out, renewal, and room change used to live on phone calls and paper forms. We turned them into a mobile self-serve flow. Residents go from checking their contract, to choosing an intent, to entering conditions, to submitting — all in one motion. Admin Web supports approval/rejection/hold per request, plus e-contract integration and automatic eligibility checks.

Intent Submission — Web and App views

App: Move-out, renewal, room change — self-serve

Residents submit their living plans directly from mobile. Before/after rollout, related inquiries from the phone-and-paper era dropped by ~65%. The full flow — submission to history — completes inside the app.

Condition-based room-change requests

Residents enter preferred area, rent range, and move-in date; the request links to PMS for candidate matching. Submission history is always visible in the app, so follow-up inquiries drop.

Admin Web: Status management + auto-filters

Operators handle approve/reject/hold per request from Admin Web. Auto-reject filters fire for blacklist, unpaid balance, or unmet early-termination conditions — fewer dropped requests, and ops measures roughly 2x processing speed.

Notifications System

The old bulk-broadcast model sent every resident the same message. We replaced it with a condition-based system that only sends what's relevant — driven by contract state, payment status, and request progress. The app drives action; Admin Web tracks who got what and whether they responded.

Notifications System — log and settings

App: Five categories + opt-in settings

Notifications are split by contract, payment, overdue, announcement, and request states. Residents can opt in or out per category — fewer unwanted pushes, more focus on the ones that matter.

Auto-sends tied to contract state

If an overdue balance isn't paid, a reminder follows. Push notifications go out at 30 days, 7 days, and on the day a lease ends. 'When was that due again?' kind of inquiries dropped sharply.

Admin Web: Delivery log + tracking

Operators see per-notification send time, success/failure, and read state. Failed sends can be retried, and a per-resident notification history sits on a single screen.

Tenant Requests

Filing a request was a black box — residents had no idea what was happening, so they asked again. We built a ticket system where requests filed in the app flow straight to Admin Web, and both sides see assignment, status updates, and resolution transparently.

Tenant Requests — ticket system

App: Categorized intake + photo attachment

Requests are split into 'unit issue' and 'common-area issue' upfront. Residents add a description and photos, so the responder can read the situation before showing up.

Admin Web: Kanban-based ticket handling

Received → in progress → resolved → reopened, managed as a Kanban flow. Structured assignment and status transitions cut down on dropped requests and silent gaps.

Live status sharing → fewer follow-up inquiries

Status changes surface in the app in real time, so 'is this received?' and 'when will it be handled?' inquiries drop sharply. Clearer intake also speeds up assignment — ops reports average resolution time cut by more than half.

Building Announcements

Operators sent announcements with no idea who read them — and no way to reach the people who didn't. To solve the last mile, we built a system with multilingual support, automatic read-tracking, and re-broadcasting to non-readers. In the app, residents filter by type; in Admin Web, operators watch read rates in real time.

Building Announcements — Web and App views

App: Type filters + multilingual reading

Residents filter by category — community news, common areas, construction notices. More than half of users read announcements through these filters. Multilingual content (JP, KR, and more) is supported, and opened announcements are auto-marked as read.

Admin Web: Read-rate tracking + re-send

Operators see per-announcement read rates in real time, with per-resident read status including account state. Pushing only to non-readers lifts read rates further on re-broadcast.

Fewer 'I didn't get the notice' inquiries

After rollout, missed-announcement inquiries dropped sharply. Internal ops data shows the average announcement read rate clearing 80%, taking real load off the announcement workflow.

Project results

3Integrated platforms

RP App + RP Admin Web + PMS, connected on a single data model as a two-sided housing platform.

6Core feature modules

Contract, billing, intent, notifications, requests, and announcements unified into one system.

47%Fewer inquiries

Self-serve structure — internal ops comparison, before vs. after rollout.

65%Fewer manual filings

Phone and paper-form processes migrated to mobile — before vs. after.

Reflection

This project was never just about redrawing screens. Guarantor registration, lease cycles, separate utility and system fees — Japan's rental operations come with structural complexity that UI alone can't resolve. The real work was understanding the limits of what PMS could give us, and designing an information layer on top that residents could read and act on themselves.

The hardest part was showing the same data to two different users. For operators, billing data is a collection-management tool. For residents, it's an answer to 'how much do I owe this month?' Putting two contexts cleanly on top of one data model meant designing for both scenarios from the system level, not after.

RP System isn't a single app. It's a two-sided structure — resident App, operator Admin Web, and PMS connected on one data model — built to give residents real agency inside Japan's local regulations and norms.

In the end, the project wasn't another app on top of the stack. It was a shift from admin-first operations to a resident-first platform.

DNK Resident Portal · Louis Seo