Professional Summary

I am a product engineer who identifies problems in the field and solves them through hypothesis-driven, technical validation.

I developed DERMA:CODE, which turned intuition-led skin consultations into a data-driven workflow, and CPE, which systematised consultation and payment around the actual operations of aesthetic clinics. In both products, I went beyond implementing handed-down requirements: I observed the work firsthand, defined the problem, and shaped the product structure and technical approach.

I meet users to understand their workflows, use data to validate the scope of a problem, and turn possible solutions into concrete decisions through prototypes and benchmarks. I think not only about how to build a feature, but also what should be built and why.

Technical Skills

Frontend

TypeScript · React · Next.js · Vite · TanStack Query · Zustand · Canvas API · WebGL · three.js / React Three Fiber · Konva · SSE · WebSocket · Vitest · Jest · Storybook · FSD

Backend & Infra

Node.js · Express · Prisma · PostgreSQL · GitHub Actions · pnpm monorepo · tsup · i18next (5 locales) · Vercel

Design

Figma · Adobe Photoshop · Illustrator · After Effects · Procreate

Professional Experience

Gaia Labs

Software Engineer · Full-time · Seoul, South Korea · Nov 2024 - Present

DERMA:CODE (V1, V2)

AI-based skin consultation program

  • Identified a skewed AI diagnosis score distribution, leading to model retraining and a training-data annotation tool
    • Noticed the skin-analysis scores skewed to one side. Queried the statistics accumulated since the clinic opened and verified by age group and sex.
    • Mean-based normalisation left most scores in a narrow band with no visible difference, so I proposed a Q1/Q3-based formula showing relative position within the age and sex cohort; adopted by the backend.
    • Presented the score distribution as a model-performance issue, which became an organisation-level improvement initiative. The model is now being retrained, and I am building the human-in-the-loop annotation tool clinicians use to assign ground-truth labels to skin metrics.
  • Validated recurring VoC with a prototype and promoted the 3D simulation to a full feature
    • Spotted the recurring need for a "treatment preview" in Theia Gangnam VoC. Validated with a prototype instead of a proposal: built it in two weeks and used the working screen as the case for promotion.
    • Modelled treatment effects with six deformation parameters and moved per-treatment values into backend data → one engine handles the opposite effects of fillers (volume expansion) and general solutions (inward deformation + texture correction).
  • Fixed the mid-consultation loading bottleneck through five-stage measurement. LCP 16.7s → 5.7s
    • Confirmed the 3D screen was loading slowly mid-consultation and measured the rendering and network path stage by stage.
    • ① Removed the render gate ② Removed an unused font request that took 2,827ms (no LCP change) ③ 2D-first render with lazy 3D loading ④ Server-side image resize and WebP conversion (3,506KB → 123KB). Final LCP 16.7s → 5.7s.
    → 기록
  • Measured tab usage with heatmaps and restructured the GNB
    • Tracked per-page usage with Hotjar for two months: main tab 84%, upselling tab 4.5%. Using the protocol that consultants upsell within the solution-recommendation flow as evidence, proposed surfacing synergy solutions inside the recommendation process instead of a separate tab, and restructured the V2 GNB.

CPE (V1, V2)

Marketing / clinic operations program for aesthetic dermatology (CRM + EMR)

  • Redesigned the consultation-room screen from the ground up based on on-site interviews (V1)
    • Visited the clinic to interview consultants and found that the customer details and past purchase history needed for a treatment consultation were scattered across pages, forcing repeated screen switching.
    • Redesigned the consultation screen so checking information, buying treatments and applying discounts complete on one page; the structure was kept in V2.
  • Reassessed a Next.js structure with little SSR/SEO value and led the switch to React + Vite (V2)
    • An operations tool used only after login had little need for SEO, and most screens were interaction-heavy with Client Components used widely.
    • Compared keeping Next.js against switching to React + Vite on product characteristics and development constraints, and proposed the switch.
  • Resolved the 1-won gap between payment amounts and VAT with a calculation policy (V1)
    • Payment amounts and VAT were calculated and rounded separately, so net amount plus VAT did not match the displayed amount by one won.
    • Back-calculated the net amount from the displayed amount and derived VAT as "displayed amount − net amount" so the split always sums to the payment amount. Agreed truncation rules and the order of discounts and VAT explicitly with the backend.
    → 기록
  • Diagnosed a refund-omission defect on prepaid products and specified the API contract (V2)
    • Found that some refund records for prepaid products were missing from transaction and receipt responses; cross-checked three endpoints to identify the reference data, and documented a reproduction case with patient, transaction and invoice IDs.
    • Structured the API requests into seven categories (defects, new or changed APIs, and response optimisation) and marked which ones blocked frontend development. Applied temporary workarounds so development could continue before the API changes were available.

Derma:code Chart Library

Canvas-based in-house shared component library · sole design & development

  • Built a shared library for designs existing chart libraries could not implement
    • The hexagonal radar's gradient overlay, glassmorphism markers and sequenced animation could not be built to spec with existing libraries, so I implemented eight chart types directly on the Canvas API.
  • Verified the technology choice with a benchmark
    • Built a benchmark app with the same chart in Canvas, SVG and Recharts. Under 4× CPU throttling: Canvas 76fps, SVG 36fps, Recharts 11fps, plus click response time and DOM node count.
    • Confirmed SVG would suffice at the current scale, but chose Canvas to control animation and interaction in one rendering structure and to scale to many charts. Recorded the accessibility and retina limitations as well.
    → 기록
  • Built the release path and test structure
    • Split library, demo and benchmark in a pnpm monorepo; dual CJS/ESM bundles and automatic type declarations with tsup. Shipped 15 versions through git-tag-based CI/CD.
    • jsdom does not support isPointInPath(), limiting Canvas-dependent tests, so I extracted hit-testing into pure functions that test without mocking Canvas.
    → 기록

TheiA CPE SuperApp v2

Integrated SaaS super app for clinics

  • Designed and built the Interaction mini app
    • Reorganised existing business logic from the clinic operations web (CPE), such as status transitions, countdowns and permission checks, into 10+ feature areas fitted to tablets and role-based (patient / clinician) views
    • Spotted a frustration nobody on the floor had raised and added a face-guideline overlay to the camera screen; clinicians and leadership both responded well
  • Moved per-clinic content to a CMS and kept the data consistent
    • Moved multilingual guide content hardcoded in the app bundle onto the server, so content changes and new clinics no longer need an app release
    • Went beyond handing off requirements and wrote an interface-contract-level specification covering the DB schema, API and rendering rules, removing ambiguity for the backend team and enabling same-day implementation
    • Designed storage as a single JSONB document per clinic so new block types need no migration, and rebuilt the first version of the admin editor around operators
    • Converted map-marker coordinates that drifted in the CMS migration back to their original definition, and wrote tests pinning the two existing values within ±3px

Cheil Worldwide

Internship · Seoul, South Korea · May 2021 - Aug 2022

  • PM for the Samsung Electronics Global 85 Sites B2B/B2C content update project
    • Led communication between overseas subsidiaries, publishers and the advertiser.
    • When Jira tickets became tangled at the project's scale, built and shared JQL query presets by purpose → halved the team's ticket search time.
    • Analysing JavaScript snippets while running the large AEM-based CMS was what prompted the move into development.

Graphic Design Freelancer

South Korea, Canada · 2019 - 2024

  • Brand design, solo
    • Logos, posters and motion graphics from concept to delivery, independently.
    • Released and sold a 24-sticker desert-fox character pack on LINE Creators Market.

Education

Codeit Sprint Full Stack, Cohort 2

Full Stack Developer Program · Online, South Korea · Jul 2024 - Nov 2024

RESTful APIs on Node.js and Express; data modelling in PostgreSQL and MongoDB

Completed the five-person team project View My Startup in one month

Emily Carr University of Art and Design

Bachelor of Communication Design · GPA 3.5 (3.47) / 4.3 · Vancouver, Canada · Sep 2018 - May 2023

Design education from visual design (typography, editorial) to interaction design (motion, AR)

Cheongshim International Academy

Gapyeong, South Korea · Mar 2015 - Feb 2018

Certifications

  • Computer Specialist in Spreadsheet & Database, Level 1

    Korea Chamber of Commerce and Industry (KCCI) · Acquired 10 Jun 2022 · Certificate No. 22-K9-051691

  • Engineer Information Processing

    Human Resources Development Service of Korea (HRD Korea) · Acquired 18 Jun 2024 · Certificate No. 24201300665P

  • SQL Developer (SQLD)

    Korea Data Agency · Acquired 21 Jun 2024 · Certificate No. SQLD-053010291