CURRICULUM VITAE
Sangmin Lee
A developer who creates business value and reduces team pain points
- red9runge@gmail.com
- Phone
- +821020809652
Summary
Hello, I'm Sangmin Lee. I have developed the product and operational features teams need, with a focus on frontend development.
I have worked across commerce, mobile WebView, insurance, and web games. More recently, while building medical and clinical analysis products, I have taken on responsive behavior, accessibility, and performance as well as deployment, log storage, and request tracing.
I use AI development assistants for more than code generation.
I systematized features needed by operations teams and set project-specific instructions, Skills, Hooks, and PR validation rules, making them available to Codex and Claude through an LLM Wiki and MCP.
I care more about how a technical choice changes the user's and team's next task than about the technology itself.
Experience
7 years 5 months total experience
Oprimed Co., Ltd.
Full-Stack Developer
2026.02 - Present
Medical and Clinical Analysis Products
Medical and Clinical Analysis Screen Development
I work on screens, accessibility and performance improvements, development environments, and backend tasks for medical and clinical analysis products.
- I developed input, execution, result, and report screens plus ECharts and Plotly comparison charts so users could move from condition setup through result review across long-running analyses.
- To let users continue when the viewport changed or they returned after an error, I proposed responsive, error, and re-entry behavior that was missing from the plan and defined and applied it with product, design, and backend teammates.
- To reduce repetitive input and mouse movement on input-heavy screens, I added keyboard tab navigation and import features.
- To reduce image requests and the scope of UI changes, I replaced image-based UI with shared components and added a build task that converts static images into viewport-specific WebP assets. Calculated image transfer size fell by about 95%, while a separate Lighthouse comparison reduced LCP from 1.3 to 1.0 seconds and Speed Index from 3.4 to 0.7 seconds.
- To avoid requesting the same disease list on every screen, I replaced direct requests with a shared TanStack Query hook and managed cache and refetch rules in one place.
AI Development Tooling Experience
- To keep AI from interpreting medical and clinical terminology and screen behavior on its own, I stored project instructions, task-specific Skills, execution Hooks, and PR rules in the repositories for Codex and Claude to reference.
- To make domain material easier for non-engineering roles to understand, I converted planning and history documents to Markdown and built and deployed an MCP server backed by a local LLM Wiki searchable from Codex and Claude.
Development Environment and Backend Operations
Tech Stack Next.js, React, TypeScript, Tailwind CSS, Radix UI, TanStack Query, Zustand, React Hook Form, ECharts, Plotly, Vitest, Playwright, axe-core, GitHub Actions, Husky, Docker, Python, Django, Django REST Framework, PostgreSQL, Codex, Claude, MCP
- I unified the structure and deployment flow of four frontend projects split between Vite and Next.js Pages Router, then updated the existing code to a shared coding convention.
- I led the move from manual Docker deployment to GitHub Actions and made the workflow leave an Actions Summary and logs when backend HTTP responses or container status were abnormal after deployment.
- I connected typecheck, test, and build to Husky pre-commit and pre-push so type, test, and build failures could not reach remote branches.
- To trace service errors by product, environment, and request, I separated logs from business databases across three backends and stored them by environment, service, and request ID. In Admin, I added log-query and frontend error-reporting APIs and mapped frontend error types to server logs.
CodeCrayon
Frontend Development
2023.05 - 2025.07 (2 years 3 months)
WebView Products and Web Games
WebView Products and Web Games
- The video platform needed content worth revisiting, but putting events and games in the app meant waiting for an app release for every change. I proposed and demonstrated a WebView Playground prototype, then led the setup of a dedicated frontend project after it was adopted. I later moved fortune and event content into it and expanded it with gift codes, lucky draws, and surveys.
- Users needed light content to enjoy beyond watching videos and a reason to return. Built FlyingPop and OpenSesame with Phaser, using existing bonuses for OpenSesame. Based on my recollection of database checks at the time, the games had roughly 2,000–3,000 weekly unique users.
- I integrated the Flutter bridge and game APIs with app and backend teammates and handled ad completion, deep links, Safari audio, duplicate progression, and timeout issues.
AI Use and Content Operations Tools
AI Use and Content Operations Tools
- Moved the subtitle translation CLI into a web tool and integrated it into the Shortime backoffice to reduce repetitive translation across eight languages. Based on my recollection, one operator went from roughly three days per episode to processing six to eight episodes per day.
- To secure content that could improve user retention and test an SEO acquisition strategy using backlinks, I built a prototype that generates drafts for Sellectors product blog posts with AI.
- Brought candidate videos from three platforms into one screen to reduce repetitive searches. Operators reported that checks with a similar number of keywords fell from about 50 minutes to under 10 minutes.
Customer-Facing Commerce
Customer-Facing Commerce
As an early team member, I focused on frontend development for customer-facing commerce, seller and operator screens, mobile WebView and web games, and content-operations tools.
- To let domestic and international users order in their own language and payment environment, I supported Korean, Japanese, English, and Traditional Chinese and separated domestic payment methods from international cards and PayPal. I also connected country-specific address input and international shipping fees to the order flow.
- The experience needed to continue after payment through gift receipt, purchase confirmation, claims, and reviews. I developed gift receipt and cancellation, purchase confirmation, returns, exchanges, refunds and partial-return amounts, plus review lists, create and edit flows, and photo reviews, separating review eligibility by purchase confirmation, matching order items, and return status.
- Because mobile was the primary environment and maintaining separate desktop and mobile screens was taking time from other product work, I used the same app-like mobile UI on desktop customer screens.
- To keep live-sale participants aware of the sale and new activity, I refreshed product and participation status every five seconds and connected confetti and an AWS Polly voice notification that I proposed for new participants.
- I designed and implemented infinite scrolling and list-state restoration for categories and seller shops.
Seller Screens and Operator Back Office
Tech Stack Next.js, React, TypeScript, MUI, Tailwind CSS, Jotai, SWR, React Hook Form, Toss Payments, PayPal, Phaser, Flutter InAppWebView, Branch.io, Airbridge, Node.js, Express, AWS Bedrock, OpenAI API, Google Cloud Translation, Axios, Cheerio
- I developed desktop layouts for product and shipping settings and for order, cancellation, exchange, and refund screens so sellers could review and process products and multiple orders on a wide screen.
- When the previous owner moved to app development, I replaced the Flutter Web back office with Next.js in one pass and owned the frontend implementation so operations requests could continue.
- I migrated and developed screens for operators to manage products, seller approvals, orders, claims, settlements, inquiries, banners, and search keywords, adding search reset, Excel export, and drag sorting.
all of them Co., Ltd. · Japan
Frontend Developer
2021.07 - 2023.04 (1 year 10 months)
Shared Subscription Entry and Performance Improvement
Shared Subscription Entry and Performance Improvement
- I built a shared CDN SDK so the same insurance subscription modal could be reused across multiple client pages. It accepts an API key and display options as configuration and separates product-specific screen assets by planId path.
- When a blank screen and loader remained visible for about five seconds on subscription entry, I grouped initial requests with Promise.all and moved customer-data loading earlier. I then moved the flow I owned to Next.js and handled initial data through SSR, confirming Lighthouse LCP of 1.2 seconds and an actual entry time of about 1.2 to 1.5 seconds in Japan before deployment.
Subscription and Operations Systems
Subscription and Operations Systems
Tech Stack React, Next.js, TypeScript, Redux, Context API, Java, Spring Boot, Doma2, MySQL, Redis, GraphQL, DynamoDB, S3, Sass, GitLab CI/CD
- I connected occupation-based premium calculation, applicant information and disclosures, card payment, and completion so users could continue online from checking premiums through finishing an application. For separate cancer and hospitalization insurance, I added mid-flow save and restore and cleared card data on restoration.
- I developed an administration system and separate back office so operators could review insurance customers, transactions, subscription history, policies, and agency information and handle file workflows. I worked on search and detail screens, the Spring backend, a module that stores CSV files in S3, branch, agent, policy, payment, and premium-invoice queries, and file uploads.
Datalogics
Operations, Maintenance, and Development
2020.08 - 2021.07 (1 year)
Ministry of Foreign Affairs Consular Call Center Maintenance
Ministry of Foreign Affairs Consular Call Center Maintenance
- To respond to operational requests and incidents at the Consular Call Center, I handled feature improvements and bug fixes in the agent application and troubleshot the toll-free calling app. I also developed JSP survey screens and an API connected to the database batch server.
Smart-DIS Data Migration and Runtime Environment Transition
2020.08 - 2020.09
Smart-DIS Data Migration and Runtime Environment Transition
Tech Stack Java, JavaScript, JSP, eGovFrame, MyBatis, MariaDB, Oracle, Linux, HTML, CSS
- To deploy Smart-DIS to institutions with different databases, operating systems, and network environments, I developed data-migration features and made Oracle queries work with MariaDB. I moved Linux-only features to Windows, replaced online libraries for closed networks, and wrote the operations manual.
Datalogics
Infrastructure Engineer
2017.08 - 2019.05 (1 year 10 months)
Public-Sector Infrastructure Build and Operations
Public-Sector Infrastructure Build and Operations
Tech Stack Linux, Server, Network, L2/L3, Firewall, IPS, TMS, Backup
- To support incident recovery and audits for public-sector systems, I operated the Office for Government Policy Coordination's servers in Sejong and Seoul together with network, security, and backup equipment and handled incident recovery, security audits, and preparation for National Assembly inspections.
Social Security Information Service Advancement Project
2018.01 - 2018.02
Social Security Information Service Advancement Project
- To bring new equipment and institutions online on the operations schedule, I handled equipment inspection, rack mounting, and installation tests for the Social Security Information Service advancement project.
Child Protection Agency Construction and Maintenance
2017.08 - 2017.12
Child Protection Agency Construction and Maintenance
- For a Child Protection Agency call-center relocation and the opening of new agencies, I moved equipment and built the required infrastructure.
External Activities
Hybrid App and Web Developer Training Program
- To transition from infrastructure to software development, I studied Java and Spring-based web development, REST APIs, and the fundamentals of Android and iOS app development.
2020.03