Minhu Park

Looking for the next problem to solve

Complex problems,simple structures.

Minhu Park Software Engineer. For the past two years I've built a clinic CRM across the stack — from a C#/WPF desktop app through a React web migration to Kotlin backend APIs. When I find a structural problem I propose a fix, and I automate whatever repeats.

About

I've been building a clinic CRM at SmartDoctor since 2024. I started in desktop app (C#/WPF) maintenance, took on the design and implementation of my modules in the web migration (React), and now build the backend APIs (Kotlin/Spring) as well. I believe development moves faster and stays more consistent when one person can handle everything from the frontend to the backend, and that's how I work today.

I prefer fixing structures over symptoms. I rebuilt a flow that re-fetched an entire screen whenever a single reservation changed into single-item updates, and isolated the 32-bit-only integration modules that blocked a 64-bit migration into a separate process, so the same problems don't come back.

I automate repetitive work. I moved release tagging, Jira version management, and reviewer assignment onto GitHub Actions, and brought Sentry and a load-time monitoring bot into an environment where errors used to be diagnosed from customer screenshots. I enjoy building tools that give the team its time back.

Skills

Languages
TypeScriptC#KotlinSQL
Frontend
ReactNext.jsZustandTailwind CSSFSD architecture
Backend
SpringJPA/HibernateKafkaWebSocketMSSQLAWS S3
Desktop
.NET · WPF · WinFormsWebView2 bridgeInter-process communication (IPC)
Tooling · Observability
GitHub ActionsSentryGA4Jira automation

Experience

  1. Aug 2024 — Present

    SmartDoctor

    Software Engineer — Clinic CRM

    • Started with maintenance and feature work on the desktop CRM (C#/WPF), designed and built my modules in the web migration (React), and now develop the backend APIs (Kotlin/Spring) directly — about 735 Jira tickets and 772 merged PRs over two years
    • Owned the monthly reservation calendar, the clinical records screen (the largest module at ~60 tickets in a quarter), and a treatment history tool in the web migration, and improved query performance by splitting month-wide fetches into per-week cached requests
    • Rebuilt the desktop refresh flow that re-fetched everything on a single reservation change into single-item updates, and proposed and led replacing the embedded browser (CefSharp → WebView2)
    • Ported three desktop-only screens with an 'add API → standalone web app → webview embed' pattern — cross-stack development across the web, API, and desktop codebases
    • Replaced screenshot-based error reports with automated collection and alerting by introducing Sentry and building a GA4-based load-time monitoring bot
    • Built the release and review automation: automatic rc/hotfix tagging, Jira release creation, cherry-pick chaining across rc branches, and an AI code-review bot

    TypeScript / React / C# / .NET / Kotlin / Spring / Kafka / MSSQL / GitHub Actions / Sentry

Projects

At work

Desktop-to-Web CRM Migration

2025 — Present

SmartDoctor · Module design & implementation, plus the runtime foundation

A long-running migration of the desktop CRM's core screens to the web (React). Starting with the monthly reservation calendar, I designed and built my modules and improved query performance by splitting month-wide fetches into per-week cached requests. Because the web app runs inside a desktop webview, I also built the runtime foundation — authentication (refresh tokens), the native bridge, and WebView2 runtime deployment. Later I established an 'add API → standalone web app → webview embed' pattern and ported three desktop-only screens.

Cross-stack development spanning the web, API, and desktop codebases

React / TypeScript / Zustand / Kotlin / C# / WebView2

Proprietary — code not public

Clinical Records Screen

2026

SmartDoctor · The largest module in the web migration

Built a new clinical records screen covering diagnosis and prescription input, consultation-fee calculation, treatment-pass usage, and record saving. Handled fine-grained input UX and data integrity together: prescription autocomplete with input debouncing, automatic consultation-fee assignment and release, guards against duplicate saves from repeated clicks, and a refactor that made the form the single source of truth.

Owned the largest module of the migration (~60 tickets in a quarter)

React / TypeScript / Kotlin / WebView2

Proprietary — code not public

Call Center Consultation Management

2026

SmartDoctor · Frontend and backend API together

A new web module for collecting, assigning, and tracking consultation leads at clinic call centers. It talks to the telephony middleware over WebSocket to create leads from incoming calls automatically, and provides three intake channels — bulk Excel upload, individual registration, and incoming-call auto-creation — plus server-side filtering. Fixed field-reported issues in short cycles, including a race condition that duplicated leads on a single call and reconnection instability.

Contributed to adoption by a large plastic-surgery clinic running a call center

React / TypeScript / Kotlin / WebSocket / MSSQL

Proprietary — code not public

Payment Terminal Integration

2026

SmartDoctor · Across desktop, web, and backend

Integrated external payment terminals into the CRM checkout flow. Built a WebSocket client with automatic reconnection for the desktop (.NET) and a payment-session state machine for the web, and solved the multi-pod failure — where the payment plugin and the CRM connected to different pods and couldn't find each other — by replacing the in-memory session registry with a Kafka fan-out relay.

Proposed and designed the session routing for multi-pod environments

Kafka / WebSocket / C# / React / Zustand

Proprietary — code not public

64-bit Migration of the Desktop CRM

2025

SmartDoctor · Proposed and led

What blocked the CRM's 64-bit migration was the set of 32-bit-only DLLs for carrier telephony and payment terminals. I designed a structure that isolates them in a separate 32-bit process communicating with the main app over IPC, complete with lifecycle management, automatic restarts, and error logging. I also collected the OS bitness distribution of real installations via Sentry to ground the migration decision in data.

Cleared the path to 64-bit while keeping legacy integrations compatible

C# / .NET / WPF / IPC / Sentry

Proprietary — code not public

DUR (Drug Safety Review) Integration & Verification Tool

2026

SmartDoctor · Web + backend, plus a purpose-built verification CLI

Built the drug-utilization-review flow that checks prescriptions and diagnoses against HIRA (Korea's health-insurance review agency), from the web popup to the backend broker integration. Implemented every check type for prescriptions and wrote a case-based (YAML) CLI tool that regression-verifies the integration's correctness.

Kotlin / React / AWS S3 / SQLite

Proprietary — code not public

Personal · Open source

LRAGE — Legal-Domain RAG Evaluation Toolkit

2024 — 2025

Open-source research · First author

An open-source toolkit for evaluating LLMs on legal tasks in RAG settings. It extends lm-evaluation-harness with retriever and reranker abstractions and LLM-as-a-judge evaluation, ships pre-built indexes for Pile-of-law, and provides a GUI. Validated on Korean (KBL), English (LegalBench), and Chinese (LawBench) legal benchmarks.

First-author demo paper on arXiv; live demo on Hugging Face Spaces

Python / lm-evaluation-harness / Pyserini / Hugging Face

Woodshed — A Community for Guitar Licks

2026

Personal project · From idea to deployment

A community where guitarists write down and share licks as TAB. I built a graphic TAB editor — click frets to input notes, with hammer-ons, bends, and other articulations rendered as real sheet music — plus everything a running service needs: accounts, visibility controls, an explore feed, likes, comments, collections, and a moderation queue.

Next.js / TypeScript / Drizzle / Turso / Auth.js / Vitest

Education

  1. Mar 2022 — Present

    University of Seoul

    B.S. in Computer Science (enrolled)

    Conducted research on LRAGE, a legal-domain RAG evaluation toolkit, while enrolled — first-author demo paper on arXiv

Contact

Coffee chats, job opportunities, and collaboration proposals are all welcome.

alsgn2003@naver.com