Portfolio
KOEN

Dongho Kang

강동호

Software engineer focused on solving operationally complex problems and delivering reliable, polished products. I contribute from product planning through production operations, with customer experience as a primary design constraint. At VoltUp, I work across billing, customer-facing, charging, and roaming services in a microservices architecture.

(+82) 010-6590-3302 gongdongho12@gmail.com github.com/gongdongho12 linkedin.com/in/dongholab

Experience

LG Uplus VoltUp

(Software Engineer)
Sep 2024 — Present

EV charging joint venture between LG U+ and Kakao Mobility.

  • Payments & Billing — Built multi-provider payment architecture and dead-letter queue (DLQ) recovery, preventing duplicate charges with database-backed atomic approval locks
  • Promotions & Customer Products — Built reusable coupon and points systems, customer-facing backend services, and the VoltUp mobile app
  • Reliability — Standardized graceful Pub/Sub shutdown and isolated external API failures across microservices
  • Developer & AI Tooling — Built specialist-agent routing, first-pass log diagnosis, shared CI/CD workflows, and automated technical documentation

Kakao Style

(Backend Engineer, Pricing Platform)
Jun 2022 — Sep 2024

Built external-to-internal product matching, dynamic pricing, and the Final Pricing API Developed Catalog Engine Page and lowest-price update pipelines for Naver Shopping and YouTube Shopping

Storelink

(R&D Engineer)
Mar 2021 — Jun 2022

Built product-data collection and keyword-ranking analytics services Developed AdLink, Uzzit, Pugshop, and Friday

WhaTap Labs

(Frontend Engineer)
Mar 2019 — Mar 2021

Built monitoring dashboards for infrastructure, JVM applications, databases, and Kubernetes environments.

Hamschout

(SW Engineer)
Aug 2017 — Aug 2018

Built Itfluencer, a platform that connects advertisers with influencers for campaign delivery.

OpenBridge

(SW Engineer)
May 2016 — Jul 2017

Developed AlarmTalk (alarm + chat), Potion (photo editing + missions), and the OpenBridge web platform.

VoltUp Projects (Sep 2024 — Present)

Led the payment service from initial architecture through production delivery, evolving a single-provider flow into a modular multi-provider platform. Added database-backed approval ownership and layered recovery to prevent duplicate charges and move failed or unpaid transactions into traceable, recoverable states.

  • Led the payment service from initial design through implementation as a core engineer
  • Designed a provider strategy layer that integrates Kakao Pay, Toss Payments, and Kakao T, a South Korean ride-hailing and mobility platform, behind a common interface
  • Combined Pub/Sub dead-letter queues, retries, and recovery batches into a layered flow that isolates failures and prevents unpaid transactions from being missed
  • Added database-backed approval ownership before payment-gateway calls, preventing duplicate approvals after lock expiry, lost responses, or provider changes; an eight-thread MySQL concurrency test confirmed a single winner per order
  • Separated payment confirmation from unpaid-balance bookkeeping so ledger-lock contention cannot roll back successful approvals or trigger duplicate charges; also corrected double point deductions and retroactive configuration changes during retries
  • Added recovery for orphaned READY orders and long-running AUTHORIZED states through event republishing, scheduled reconciliation, and operator repair APIs

Coupon and Points Promotion Platform

Coupon: Jul 2025 / Points: Aug 2025 — Present

Built reusable coupon and points services for partner campaigns including Nexen, Toyota, and Bluemembers. Applied coupon-level payment-method restrictions consistently across issuance, lookup, redemption, and operations-console workflows.

  • Designed a point-wallet model with independent expiration per deposit, aggregate balance queries, and separate tracking for points expiring within seven days
  • Applied free points first and then the earliest-expiring balance; cancellation refunds reverse that order to preserve the most useful balance for customers
  • Implemented a Hold-Confirm-Release lifecycle that automatically restores points when payment fails
  • Encoded partner-specific rules for expiration, duplicate issuance, and benefit amounts across Nexen, Toyota, and Bluemembers campaigns
  • Enforced coupon-level payment-method restrictions across issuance, lookup, redemption, and operations-console creation flows
  • Designed and implemented scheduled campaign-coupon issuance

Connected the customer app, coupon service, and operations console to issue monthly benefits for LG U+ VIP and VVIP members. Gave operations teams the lookup, eligibility checks, and assisted-issuance tools needed to resolve customer inquiries without manual engineering support.

  • Added the UPLUS_VIP coupon type, overlapping-benefit-month checks, and payment-method restrictions across preview, search, redemption, and operations-console creation
  • Consolidated phone-based membership lookup, birth-date verification, monthly user/card limits, LG U+ approval, coupon issuance, and compensating cancellation in a dedicated U+ VIP issuance service
  • Implemented operations-console APIs and screens for assisted issuance, identity-mismatch checks, and issuance-history lookup
  • Added benefit-month defaults, minimum-spend validation, and allowed-payment-method selection to coupon configuration
  • Built one-time SMS, push, and Kakao AlimTalk messaging with immediate or scheduled dispatch and searchable delivery history

Outcomes

  • Unified external membership approval and internal coupon issuance so self-service and assisted issuance follow the same validation rules
  • Moved recurring log and policy checks into operations-console search and pre-check screens, reducing engineering dependency during customer support
  • Shifted recurring customer messaging to console and batch workflows, reducing manual requests to developers

Built customer-facing backend services spanning four microservices, including Kakao T account and payment integration, Plug & Charge enrollment, failed-payment monitoring, and isolation of external-system failures.

  • Designed Kakao T account and payment integration across auth, user, billing, and customer-app services, covering OAuth2 linking, five-step card registration, payment approval, and partial cancellation
  • Established the partner customer token as the link between external payment methods and internal user context, adding search indexes, unlink validation, and a callback-specific activation API
  • Built vehicle enrollment and Plug & Charge credential-registration services
  • Combined historical totals and same-day real-time data in one homepage statistics API, using local and remote caches plus distributed locks to protect source systems from public traffic
  • Isolated external certificate, LG U+ Membership, and Bluemembers integrations with dedicated thread pools, timeouts, circuit breakers, and CallGuard so uncertain outcomes fail explicitly instead of exhausting request threads

Outcomes

  • Delivered the end-to-end Kakao T integration—card registration, payments, cancellations, and promotions—across four microservices

Led delivery of the Flutter-based VoltUp 2.0 app, designing its WebView-to-native bridge and core flows for QR scanning, permissions, push notifications, and mandatory updates.

  • Scoped the app through a proof of concept and delivered the Android/iOS hybrid app for the March 2025 launch
  • Defined a JS bridge for communication between the web frontend, native app, and device hardware
  • Built WebView-based UX flows for new-window handling, QR scanning, camera permission, and forced updates
  • Custom ML Kit-based QR scanner page and responsive scan UI
  • FCM-based push notification system
  • Crashlytics-driven Dart/native error collection and camera/FCM stabilization

Outcomes

  • Launched within 2 months (Dec 2024 — Feb 2025)
  • Defined the contract that allows the web frontend to invoke native capabilities through the JS bridge
  • Improved core app entry points through Crashlytics-based stabilization and QR/permission/update-flow refinements

Built a Chrome extension that reproduces app-dependent flows in the browser, removing the need to connect a mobile app for routine validation. Extended it with controlled API capture and replay for operational corrections not available in the operations console.

  • Reproduced new-window handling, QR scanning, camera permissions, and mandatory-update scenarios without connecting the mobile app
  • Added API capture and replay to shorten validation cycles and automate repeated QA workflows
  • Added row-based bulk replay for controlled, single-API corrections not available in the operations console, including charge-zone repair cases

Outcomes

  • Reduced waiting and repetitive manual steps by making app-dependent behavior testable directly in the browser
  • Replaced one-off JavaScript corrections with a reusable, auditable internal workflow

Built Voltbot, an internal agent platform that routes employees to specialized agents based on intent, permissions, and agent availability. Developed an evidence-driven incident-diagnosis workflow that combines Cloud Logging, BigQuery, internal guidance, and code search across broken trace boundaries, then verified groundedness and cost improvements with an evaluation harness.

  • Implemented AgentRouter to classify requests by intent, permission, and agent availability before routing them to specialists for log diagnosis, BigQuery analysis, legal support, or code policy
  • Connected AgentRunner, ToolHandler, and WebSocket streaming through a shared Agent/Tool contract so tool history, permissions, quotas, interruptions, and final answers remain visible in one conversation
  • Added customer-support and operations modes to LogDiagnosisAgent, with iterative pivots across trace IDs, user IDs, order numbers, time windows, and report signatures; enforced a hypothesis-trace-query-verdict loop to reduce premature conclusions
  • Replaced regex-based tool calls with Gemini native function calling and parallel execution, persisting structured inputs, failures, and shared log, data, and code evidence for downstream agents

Outcomes

  • Standardized Cloud Logging, internal documentation, and GitHub code search as reusable tools for first-pass diagnosis before engineering escalation
  • In a 9-case × 3-run evaluation harness, preserved statistically equivalent answer quality while improving average groundedness from 87.7% to 100%, cutting tokens/cost by 46%, and reducing runtime by 10%

Redesigned card-state recovery and resynchronization for Korea's public EV-roaming network, and made long-running Kakao T partner batches safe to stop and migrate without overlapping executions.

  • Changed public-roaming card-state updates from payment responses to unpaid-balance events so only relevant failures trigger state changes
  • Simplified the roaming card-state processing path and consolidated billing lookups to improve throughput
  • Built a retry process that prioritizes baseline membership-card data over lower-priority charger-status updates
  • Added monthly full resynchronization for public-roaming membership cards to prevent long-term drift from the external system
  • Corrected Kakao T batch shutdown ordering so Redis remains available until active work completes, then added an opt-in resident scheduler and shutdown guards for 60-75 minute charger-sync jobs

Outcomes

  • Improved data accuracy by aligning card-state changes with unpaid-balance events
  • Reduced processing overhead by eliminating serialization and consolidating billing queries
  • Added an operational safety net that periodically restores member-card baseline data after missed events or transient failures
  • Reduced forced-shutdown and missed-schedule risk while allowing a staged migration without racing existing CronJobs

Standardized recurring engineering work through automated first-pass reviews, shared CI/CD workflows, developer-environment tooling, documentation automation, and internal API conventions.

  • Built a reusable repository of microservice conventions and recurring task patterns for Claude Code, Cursor, Gemini, and other coding agents
  • Rolled out a LiteLLM proxy and a single source of truth for model defaults, then standardized first-pass reviews, pull-request summaries, security-review drafts, and Slack notifications as shared CI workflows
  • Built automated Docusaurus documentation with GitHub Actions and change detection
  • Standardized graceful shutdown across four Pub/Sub consumers: stop intake on SIGTERM, drain in-flight work, redeliver unfinished messages, and align application timing with Kubernetes termination budgets
  • Introduced Firebase App Distribution to shorten QA and release cycles
  • Built a Gradle-based generator for local microservice configuration
  • Standardized internal operations-console API boundaries with shared clients and an X-Internal-Caller convention
  • Simplified Android and iOS delivery to reduce key-management overhead and avoidable failures
  • Consolidated Android Jenkins pipelines into shared libraries and added remote Gradle caching, iOS TestFlight automation, and shared R8 policies

Outcomes

  • Reduced review overhead via automated first-pass AI review
  • Removed the intake/in-flight loss window during normal node drains and rolling deployments, establishing a reusable shutdown contract across four services
  • Shortened QA and deployment cycles while enabling self-service distribution through Firebase
  • Reduced manual documentation maintenance through automated generation
  • Improved release stability by reducing mobile delivery key-management burden and avoidable failure points

Kakao Style Projects (Jun 2022 — Sep 2024)

Built a mobile proxy pool to keep product-data collection reliable under anti-bot restrictions, then automated dynamic pricing from competitor price comparisons.

  • Allocated per-port mobile HTTP proxies and developed proxy pool lookup APIs
  • Built mobile device control APIs (airplane mode, reboot) and automated rate limit management
  • Built AWS Athena datasets that connect external shopping-feed and lowest-price data with internal products
  • Developed batch jobs for competitor-price analysis, dynamic pricing, and Excel reporting

Replaced a one-to-one model with many-to-many matching that links external marketplace products to internal catalog products across stores and product types.

  • Added a two-level cache for complete match-group lookups and served the selected canonical product in search
  • Developed matching batch jobs using AWS Athena for items with ≥99.5% image similarity
  • Built match-review APIs and applied new matches automatically through Kafka consumers

Final Pricing API

Dec 2023 — Sep 2024

Consolidated channel-specific pricing rules into one API so coupons, promotions, and other benefits follow a consistent contract.

  • Applied timeouts and circuit breakers for service stability
  • Connected company-wide gateways to the Final Pricing API, keeping displayed prices consistent across customer-facing channels

Membership Platform Migration

Apr 2023 — Jun 2023

Redesigned membership tiers and migrated the legacy service to Spring Boot without downtime.

  • Migrated the legacy cormo.js service to Spring Boot with a schema-compatible database transition and no downtime
  • Expanded the membership tier calculation period from 3 to 6 months
  • Optimized 3-month tier calculation by caching monthly totals and using cumulative sums

Outcomes

  • Reduced database load from the 70% threshold to below 30% by caching monthly totals and using cumulative sums
  • Achieved zero-downtime deployment through API I/O integration tests and gradual gateway switching

Built shopping-feed and lowest-price update pipelines that kept Zigzag products eligible for Naver Shopping price comparison.

  • Built batch jobs that selected commercially competitive products and attached card promotions, delivery badges, and category mappings
  • Implemented logic to compare prices with competitors and consumed real-time Kafka updates
  • Standardized the shopping-feed and lowest-price pipeline for reuse with Google and YouTube Shopping, while also building operations tooling and supporting the transition from CPC to CPS billing

Outcomes

  • To satisfy the 2-hour product update interval required for CPS, replaced full-catalog refreshes with partial updates for sold-out or price-changed items, enabling generation of the Naver Shopping feed CSV and changed-product sync dataset within an hour
  • Built a reusable shopping-feed and lowest-price pipeline that could be extended quickly to Google and YouTube Shopping
  • Consolidated team-specific final-price APIs behind the Final Pricing API, aligning pricing logic across customer-facing channels

Earlier-Career Projects

[Storelink] Friday Commerce Analytics

Mar 2021 — Jun 2022

Built backend services for commerce keyword and search-ranking analytics.

  • Introduced Kotlin and WebFlux as the team's primary backend stack
  • Replaced core product capabilities with Friday search APIs that remained in production
  • Built internal developer tooling for Jenkins CI/CD, WireGuard VPN, and reusable npm/NPX boilerplates
  • Cross-architecture Docker builds (AMD64/ARM64) via buildx for AWS Graviton2 compatibility
  • Built a Puppeteer-based collection API for page access, API queries, element selection, and controlled JavaScript execution

[WhaTap Labs] WhaTap Monitoring Frontend

Mar 2019 — Mar 2021

Built unified monitoring dashboards for telemetry collected from applications, servers, databases, and containers.

  • Developed core components including time-range controls, server lists, and unified dashboards
  • Bridged legacy page handlers into React components and built agent setup and installation screens
  • Created shared data-processing utilities to improve consistency and reuse

Outcomes

  • Reduced API polling churn for real-time dashboards and mitigated memory pressure on chart-heavy screens
  • Used the product in real operational workflows to refine metric combinations and dashboard layouts for troubleshooting and performance analysis

[Hamshout] Influencer Marketing Platform

Aug 2017 — Aug 2018

Built an influencer-marketing platform where advertisers manage campaigns and creators participate in sponsored work.

  • Developed influencer/blogger review and verification systems
  • Built Naver search ranking lookup APIs
  • Developed advertising reporting services for clients

Outcomes

  • Automated advertiser-influencer matching, reducing manual outreach
  • Improved marketing accessibility for small businesses and startups

[OpenBridge] AlarmTalk (Android)

May 2016 — Aug 2017

Built a social alarm app that combines alarms and chat so users can help wake one another.

  • Led the development of AlarmTalk 2.0
  • Implemented voice recognition and shake-to-wake alarm features
  • Built the in-app alarm store system

[OpenBridge] Potion (Android)

May 2016 — Aug 2017

Built a mission-based photo app where users earn points and redeem them for photo prints.

  • Developed core photo adjustment components (brightness, contrast, crop, etc.)
  • Implemented the photo-filter engine and effects in close collaboration with the design team
  • Integrated account systems and mission-related APIs

Side Projects

Clip Atlas (clip-indexer) — Media Tag Generator Personal Project

Ongoing

Built a CLI and local web media manager that scans media files, combining FFmpeg and multimodal LLM analysis for smart file renaming, tag sidecar storage, and browser-based file management.

  • [Media Indexing Engine] Developed high-performance media indexing pipeline, CLI tools, and HTTP web server
  • [Multimodal Analysis] Built scene/voice tagging algorithms combining FFmpeg frame extraction and LLM multimodal analysis
  • [Local Web File Manager] Created interactive web UI for folder planning, metadata sidecar generation, and dry-run file movement

Commit Map Personal Project

Ongoing

A map-based travel planner for drafting itineraries, visualizing routes, and sharing trip plans through one link.

  • Combined trip schedules and travel routes in a shared map and timeline view
  • Added an AI workflow that turns natural-language destinations and routes into a rough itinerary draft, which can then be refined directly in Markdown
  • Managed trip content as Markdown-backed structured data and deployed it statically for simple link-based sharing

Teddy Resume Personal Project

Ongoing

A multilingual resume and portfolio service that generates multiple layouts and print-ready PDFs from one YAML source.

  • Managed Korean and English resumes, portfolio pages, and multiple layouts from one YAML data source
  • Built A4 pagination, print guidance, background-graphics checks, and PDF export for real submission and sharing workflows
  • Refactored shared components and content models so project links, language switching, and copy or layout changes remain consistent across views

Other Activities

Mentor, Kookmin University SW-Centered University Program Mar 2024 — Present

Mentored students in software architecture, problem-solving strategy, and flow design.

[Mentor Profile]
Mock Interview Mentor, Codeit Backend Program Sep and Dec 2025

Provided technical and mock-interview coaching for backend program graduates.

Backend Mentor, Kernel360 (Cohorts 1–5) Dec 2023 — Aug 2025

Mentored five cohorts on team projects solving real company problems.

Backend Mentor, Kakao Tech Campus (2nd Cohort) Jun 2024 — Aug 2024

Mentored the second cohort of the Kakao Tech Campus backend track.

Guest Lecturer, Hanyang University ERICA Software Startup Program Feb 2024

Delivered an "Effective Backend" lecture for a software startup program.

Backend Mentor, Boostcamp Web·Mobile (8th Cohort) Nov 2023 — Dec 2023

Mentored two iOS service project teams.

Speaker, Hanbit N Microservices Monitoring Session Dec 2023

Presented the monitoring session in Hanbit Media's MSA seminar series.

Backend Code Reviewer, Boostcamp Web·Mobile (7th–8th Cohorts) Sep 2022 — Oct 2023

Led campus meetings and code reviews for web-backend campers across two cohorts.

Speaker, UbuCon Korea 2023 Sep 2023

Presented "Building a Development NAS Using WSL."

Mentor, 2023 SW-Centered Universities Joint Hackathon Jun 2023

Provided frontend and backend technical mentoring and career guidance.

[Mentor Profile]
Java Mentor, Programmers School (11th Cohort) Mar 2023 — Apr 2023

Provided technical Q&A, code reviews, and remote mentoring.

Guest Lecturer, React Course at Gyeongbuk Software High School Sep 2022 — Oct 2022

Taught a hands-on React course progressing from concepts to a final project.

Infrastructure Manager, Ubuntu Korea Community Mar 2018 — May 2021

Maintained the community forum, wiki, Q&A, and mail infrastructure.

Award Winner, AngelHack Seoul 2020 (Common Computer Prize) 2020

Developed LiBi, a local group-buying platform, and received the Common Computer Prize.

[Related]