Hello, I’m

Jounghee Kim

AI Engineer who automates human judgment work

LLM agents · inspection automation · speech & NLP research

Move your cursor to get my attention!
See the work ↓

Coding an agent…

Scroll

01 · Now

At Toss, agents that stand in for human judgment

I build agents that take over review work people used to do by hand. Merchant review automation saved 20 FTE, and the inspection automation platform, where AI takes over prompt refinement, has been adopted by 10+ departments.

Viva Republica Inc. (Toss)AI Product Team · AI Engineer · Dec 2025 – Present
20 FTE
review headcount saved
card-company merchant review (payment-path capture)
10+
departments
used as a shared module across inspection tasks
+25 pp
average accuracy gain
ad-copy typo policy pilot · mean gain of the refinement and held-out sets (36 ads)

T-01Viva Republica (Toss)May 2026 – Present

Merchant Review Automation

Automated card-company merchant review and Toss Pay merchant review with a browser-use agent that browses merchant websites like a human reviewer and collects the evidence a review needs.

RoleReview agent design and development

20 FTEreview headcount savedcard-company merchant review (payment-path capture)

01 / 06

A merchant URL to review

When a merchant URL comes in, the browser-use review agent opens a browser and goes to the merchant website.

02 / 06

Look and reason like a reviewer

It reads the screenshot and page text together and decides where to look next based on what the review still lacks.

03 / 06

One action at a time

It runs one action — navigate, click, scroll or extract — and records what it saw and why.

04 / 06

Only what the review needs

It repeats observe → reason → act until it finds what the review needs: terms, payment methods, business details. For card-company review it follows the payment path and captures each screen.

05 / 06

Stops on its own

Once it has the public information it needs, it stops. It reads public pages one at a time, so a merchant server sees no more load than a single visitor.

06 / 06

Handed over for review

The captured screens and text are handed over as review material. Automating card-company merchant review saved 20 FTE.

agent.review(merchant_url)
example-shop.testbrowser-use
ShopStorySupport
Handmade ceramicsSpring collection
Moon cup₩38,000
Linen tray₩24,000
Clay vase₩52,000
TermsPrivacyBusiness infoDaily Craft Co. · CEO Yesi Kim · Business reg. 000-00-00000 · Mail-order reg. 0000-Seoul-0000

Terms of service

Article 12 (Returns)Buyers may return items within 7 days of receipt; refunds are processed within 3 business days after the return is confirmed.

Moon cup₩38,000Shipping ₩3,000 · free over ₩50,000Buy now

PaymentCardTransferEasy pay

TermsPrivacyBusiness infoDaily Craft Co. · CEO Yesi Kim · Business reg. 000-00-00000 · Mail-order reg. 0000-Seoul-0000

Order form

Moon cup × 1₩38,000
Shipping

Payment
Credit card
Bank transfer

Card payment

Card ACard BCard CCard DCard ECard F
Total₩41,000
Pay (not requested)

※ Reconstruction with a fictional shop — not a real merchant or review screen.

  • Built a browser-use review agent that browses merchant websites like a human reviewer and collects business details, terms and the payment path
  • Automated card-company merchant review (payment-path capture), saving 20 FTE, and applied the same agent to Toss Pay merchant review (an 8-person workload)
  • Had AI run reviewers' browser checks the same way they did, targeting same-day results for a manual review that averaged about 3 days

T-02Viva Republica (Toss)Jun 2026 – Present

Inspection Automation Platform

A platform where AI automates the steps between an inspection request and a working, improving inspection agent. AI handles everything from organizing requirements to refining prompts and re-validating, and shows users where the data conflicts with the current direction, so they only set the direction and approve.

RolePlatform design and development

10+departmentsused as a shared module across inspection tasks

01 / 06

AI organizes the requirements

AI gathers material scattered across chat threads, wiki pages, sheets and owner notes, drafts the inspection requirements, and turns gaps into questions.

02 / 06

AI drafts the agent

From the requirements, AI proposes the components and their order and builds a draft inspection agent, flagging anything it cannot build or that is missing.

03 / 06

Verdicts, evidence, versions

Each run keeps the verdict, evidence, run history and version together. Reviewers can check results right away, and these records become the data for the next improvement.

04 / 06

Compare with review data

Set against real reviewers’ decisions, the results show where the two disagree. This is where the improvement cycle starts.

05 / 06

AI fixes, people set the direction

For gaps a prompt can fix, AI drafts a change with the agent’s structure in mind and re-runs the same data to compare. Where the data conflicts with the current criteria, it shows the user the cases and asks which way to go.

06 / 06

A new version, then the next cycle

Approved changes become a new version, and what is left becomes the next cycle’s question. 10+ departments have applied the platform to their inspection work.

platform.improve(agent, review_data)
Inspection Automation Platform · merchant reviewv1
Chat threadWiki pagePolicy sheetOwner notes
Inspection requirements (draft)

GoalCheck that merchant sites show the required notices

ItemsRefund notice · business info · payment methods

QuestionDo overseas merchants follow the same rules?

StepComponent (AI proposal)Uses
1Collect notices from merchant pagesInput format
2Judge refund, business info, paymentPolicy 3.2 · 2.1 · 4.1
3Write up verdicts and evidenceResult format

Missing: rules for overseas merchants → sent back as a question

Merchant AViolation

BasisPolicy 3.2 — refund policy required

ObservedNo refund notice on product or terms pages

Historyv1 · run log saved

Merchant COK

ObservedName and registration number in the footer

Case (example)AIReviewer
Fixable by the prompt · 1

AI drafts a prompt change: payment methods shown only in an image go to a person instead of being judged

+ Notice only in an image → needs reviewRe-run on the same data → 1 resolved
Direction check needed · 2

Current rule: refund policy must be on the product page

Data: reviewers accept a refund clause that is only in the terms (2 cases)

This is about the rule, not the prompt. Which way should it go?

Keep the ruleUpdate the rule to match
v14/8agree with reviewers
v27/8same example data

Changes: 1 prompt fix · 1 rule update (approved by the user)

1 difference left (overseas payment) → carried into the next cycle as a question

10+departments apply it to their inspection work

※ Reconstruction with a fictional inspection task; merchants, rules and numbers are illustrative, not real screens or data.

  • Built an inspection automation platform where AI refines prompts from data and the agent's structure and shows users where the data conflicts with the current direction, making the improvement cycle easy
  • Automated the in-between steps of building an inspection agent with AI features (requirement drafting, agent drafts, versioned experiments); used as a shared inspection module by 10+ departments

T-03Viva Republica (Toss)Mar 2026 – Jun 2026

Ad Review Agent

Built an ad review agent that generates a review guideline from a one-line ad policy and has AI refine it from real review data.

RoleDesign and development

+25 ppaverage accuracy gainad-copy typo policy pilot · mean gain of the refinement and held-out sets (36 ads)

01 / 06

A one-line policy

Ad policies are a line or two — "restrict expressions that look like typos." That gives an agent no criteria, boundaries or examples, and leaves out the judgment only reviewers know.

02 / 06

Generate the guideline

Grounded in the policy source, the one-line policy becomes a guideline that says what to reject and what to accept, with boundaries and references.

03 / 06

Compare with reviewers

The refinement ads are judged by the guideline and compared with reviewers’ verdicts. Most disagreements were false rejections of acceptable ads; this first version is the baseline.

04 / 06

Revision 1 from the gap

AI finds the common pattern behind the false rejections (compounds and amount units that are normal in ads) and revises the guideline. Accuracy rose, but loosening it too far caused a miss.

05 / 06

Revision 2 tightens the edge

Ad-style phrasing is marked OK, and compounds of unrelated words that hurt readability are rejected again. People only checked the revisions.

06 / 06

Unseen ads improve too

Accuracy also rose on held-out ads never used for refinement; across the refinement and held-out ads it rose 25 pp on average. The gain carries over to unseen ads, and this approach became the Inspection Automation Platform’s improvement cycle.

guideline.refine(policy, reviews)
Review policy adminv1
Policy source (summary): ads that needlessly use misspelled expressions may be restricted.
Generate guideline
  1. Find the basis in the policy source
  2. Write rejection criteria and examples
  3. Draft the violation / review / OK boundary
  • 2.1 Violation types
  • 2.2 Rejection criteria · examples
    Typo — Discuont → DiscountUnfinished — Sign up tod → Sign up todaySpacing — reject any rule violation
  • 2.3 Policy basis
  • 2.4 Decision guide
  • 2.5 Decision context
  • 2.6 Violation / review / OK boundary
Ad copy (synthetic)DocReviewer

Re-checked on ads never used for refinement

18 refinement ads+17 pp
18 held-out ads+33 pp
Average+25 pp

Unseen ads improved too → the gain carries over to new ads · single-policy pilot

※ Ad copy and policy text are synthetic examples of patterns seen in the pilot. Numbers come from a single-policy pilot (36 real ads).

  • Built an ad review agent that turns a short ad policy into a review guideline with criteria, boundaries and examples
  • Added AI refinement that finds where the guideline disagrees with reviewers and revises it, raising average accuracy by 25 pp on the pilot policy
  • Accuracy also rose on held-out ads never used for refinement, so the gain carries over to unseen ads

02 · SK Telecom

Conversational agents behind A-dot

For A-dot and T Membership, I designed and built a scheduling agent that handles several requests in one sentence, a movie agent that finishes the booking inside the conversation, and a main agent that offers 17 functions through chat.

SK TelecomAI Agent Department · Manager · Apr 2022 – Oct 2025
67%
registrations via agent
66K of 98K schedule registrations
60→80%
function-call success
across 17 functions, after fine-tuning and prompt work
12%
booking conversion
T Membership movie booking · bookings / visitors

S-01SK TelecomApr 2025 – Oct 2025

A-dot Scheduling Agent

Designed and built A-dot's scheduling agent, which lets users manage events and reminders through conversation and splits multi-intent requests into sub-tasks to handle them quickly and accurately.

RoleAgent design and development

2.5×schedule MAU growth203K → 511K (Jan → Sep 2025)
67%registrations via agent66K of 98K schedule registrations

01 / 06

Three intents in one sentence

“Add a dentist appointment at 3 tomorrow, push Friday’s meeting back, and tell me this week’s schedule.” Create, update and read are mixed in one sentence. First the intents are split and details like time and target are extracted.

02 / 06

Plan: sub-tasks and order

The request is split into ordered sub-tasks. The meeting must be found before it is moved, so “find → update” runs in sequence; the rest are independent.

03 / 06

Execute: independent tasks in parallel

Tasks that do not affect each other run at the same time; only ordered tasks run in sequence. Latency is set by the longest lane, not the sum of every task.

04 / 06

RAG for finding events

Candidates are filtered by owner, subscription and date, then split into N chunks searched by parallel LLM calls. Each hit is verified with evidence, which rejects look-alikes such as a team dinner.

05 / 06

Refine: re-plan from results

Execution results feed a re-planning step. The meeting that was found (Fri 10:00) fixes the update task’s arguments, and the remaining work is organized and distributed again.

06 / 06

One answer, registered accurately

All three results come back in one answer. Recurring events and reminders use the iCalendar and ISO 8601 standards for accuracy, and 67% of schedule registrations went through this agent.

agent.plan_and_execute(utterance)
Schedule assistantChat
Wed, Sep 24

Add a dentist appointment tomorrow at 3 PM,push Friday’s team meeting back 30 minutes,and tell me what’s on this week

  1. Analyzing intents3 intents found
  2. PlanningPlanned 4 sub-tasks
  3. Running 3 lanes at onceRan 3 lanes in parallel
  4. Finding “Friday team meeting”Found Fri 10:00 meeting
  5. Re-planning from resultsRe-planned

Handled in 5 phases

All three are done.

  1. Dentist added · Thu 15:00reminder 30 min before
  2. Team meeting 10:00 → 10:30
  3. 4 events left this week
  • Thu 15:00Dentistnew
  • Fri 10:30Team meetingmoved
  • Fri 19:00Team dinner
  • Sat 11:00Family lunch
  1. Intent
  2. Plan
  3. Execute
  4. RAG
  5. Refine
  6. Answer
intent_analysis()1 request → 3 intents
  • 1
    CreatecreateDentist appointment
    when: 09-25 15:00
  • 2
    UpdateupdateFriday team meeting
    shift: +PT30M
  • 3
    ReadlistThis week
    range: 09-22 ~ 09-28

Each intent needs different tools and data → plan sub-tasks

plan()4 sub-tasks · 2 stages
Stage 1 · togetherStage 2
1create_eventno depsDentist · tomorrow 15:00
2afind_event“Friday team meeting”
3list_eventsno depsThis week
2bupdate_event+30 min · the meeting 2a finds

Independent tasks share stage 1; only tasks that need a result wait for the next stage

execute()Example

Parallel

1create
create
2find→update
findupdate
3list
list

If run one after another

Sequential
1.7sparallel · longest lane
3.7ssequential · sum of all
find_event()Example
  1. 1Filter
    312eventsOwner: meNo subscriptionsSep 22–2824candidates
  2. 2Parallel search24 → 4 chunks · 4 LLM calls at once
    #1LLM0
    #2LLM1
    #3LLM0
    #4LLM1
  3. 3Verify + evidence
    Fri 10:00 · Weekly team meetingEvidence: “team meeting” in title · Friday · own calendar
    Fri 19:00 · Team dinnerEvidence: a dinner, not a meeting
refine()results → re-plan
2bupdate_eventarguments resolved
TargetunknownWeekly team meeting · Fri 10:00
Time10:0010:30
iCalendar · RFC 5545ISO 8601 duration
1create_eventBEGIN:VEVENTSUMMARY:DentistDTSTART:20250925T150000tomorrow 15:00BEGIN:VALARMACTION:DISPLAYTRIGGER:-PT30M30 min beforeEND:VALARMEND:VEVENT
2update_eventthis occurrence of a seriesRRULE:FREQ=WEEKLY;BYDAY=FRseries · every FriRECURRENCE-ID:20250926T100000this oneDTSTART:20250926T10300010:00 → 10:30

※ Reconstruction with a fictional calendar and numbers — not the actual service screen.

  • Designed and built an agent that handles multi-intent scheduling requests by splitting them into sub-tasks and re-planning from the results (Plan-and-Execute + Refine)
  • Kept multi-intent requests fast by running independent sub-tasks and schedule searches in parallel
  • 67% of schedule registrations came through the agent (66K of 98K)

S-02SK TelecomApr 2024 – Dec 2024

A-dot Main Agent

Designed A-dot's flagship LLM agent, which offers 17 functions such as exchange rates, weather and directions through conversation, and raised its function-call accuracy through fine-tuning and prompt design.

RoleAgent design, prompt engineering, training-data design, fine-tuning

60→80%function-call successacross 17 functions, after fine-tuning and prompt work

01 / 06

An everyday question

“Is Euljiro 3-ga Station crowded right now?” The agent first decides whether to just chat or to call one of its 17 functions.

02 / 06

Call a function, don’t make it up

The LLM picks search_congestion and fills the location argument with “Euljiro 3-ga”. Colors in the log on the right mark the message role: user · function_call · function · assistant.

03 / 06

Function results as Markdown

The system returns the function result formatted as Markdown. Unlike code-laden JSON, Markdown is easy for the model to read and quote, so answers stay faithful to the result. Use the toggle to compare.

04 / 06

An answer plus a UI card

The agent explains the result in words, and the screen shows the same result as a congestion card.

05 / 06

Multi-turn: where is “there”?

In “fastest way from there to Guro”, “there” is Euljiro 3-ga from the previous turn. The agent fills the argument from context, calls search_route and answers with a route card.

06 / 06

17 functions, success 60% → 80%

It covers 17 functions such as exchange rates, weather, time, directions, news and subway congestion. Designing multi-turn function-calling training data, fine-tuning GPT models and refining prompts raised function-call success from 60% to 80%.

agent.chat(messages, functions)
AssistantAI assistant

Hi! Ask me anything — weather, exchange rates, directions, subway congestion.

Weather todayUSD rateWhat time is it?

Is Euljiro 3-ga Station crowded right now?

search_congestiongot result

Euljiro 3-ga is very crowded right now — 230%. Car 10 is relatively roomy.

Euljiro 3-ga2Example
Very crowded230%
car 1per carcar 10

Fastest way from there to Guro?

search_route

Take Line 2 and change to Line 1 at Sindorim — about 27 min.

Euljiro 3-ga → Guro27 minExample
  1. 2Euljiro 3-ga → Sindorim
  2. Change at Sindorim
  3. 1Sindorim → Guro
messages[]What the LLM sees Example
  • user
  • function_call
  • function
  • assistant
  1. system

    fixedpersona · answer rules · 17 function definitions

    variabletime 18:20 · current app screen

  2. user

    Is Euljiro 3-ga Station crowded right now?

  3. assistant · function_call

    search_congestion({ "location": "Euljiro 3-ga" })

  4. function · search_congestion
    {
      "stn_cd": "0203", "ln": 2,
      "cgst": { "lvl": 4, "rt": 2.3 },
      "cars": [4,4,3,4,4,4,3,4,3,2],
      "ts": "1820"
    }
    ## Congestion · Euljiro 3-ga (Line 2)
    - At 18:20: **very crowded** (230%)
    - Most room: car 10

    Codes (lvl 4, rt 2.3) must be decoded by the model → error-prone

    Readable lines quoted as-is → faithful answers

  5. assistant

    Euljiro 3-ga is very crowded right now — 230%. Car 10 is relatively roomy.

  6. user

    Fastest way from there to Guro?

  7. assistant · function_call

    search_route({ "origin": "Euljiro 3-ga", "destination": "Guro" })

    “there” → Euljiro 3-ga from the previous turn
  8. function · search_route
    ## Route · Euljiro 3-ga → Guro
    - Line 2 → change at Sindorim → Line 1
    - About 27 min
  9. assistant

    Take Line 2 and change to Line 1 at Sindorim — about 27 min.

functions[17]Chat + 17 functions
  • Exchange rateget_exchange_rate
  • Weatherget_weather
  • Timeget_time
  • Newssearch_news
  • Subway congestionsearch_congestion
  • Directionssearch_route
  • +11more functionscalled in this chat
Function-call successacross 17 functions
Before
60%
After
80%

Fine-tuned GPT-3.5 Turbo · GPT-4o mini + prompt engineering

  • Markdown results
  • Merged functions
  • Sequential calls
  • NER for time
  • Multi-turn data

※ Reconstruction with a fictional conversation and numbers — not the actual service screen. Only the function-call success rate (60% → 80%) is a real result.

  • Designed the training-data schema (multi-turn, function calling) and fine-tuned and evaluated GPT models to raise function-call accuracy and multi-turn quality
  • Split hallucination-prone or low argument-accuracy functions into sequential calls and extracted time arguments with NER first, reducing time-parsing errors
  • Raised function-call success across 17 functions from 60% to 80% through data design, fine-tuning and prompt work

S-03SK TelecomJan 2024 – Dec 2024

Movie Booking Agent (T Membership & A-dot)

Designed an agent that recommends, searches and books movies as naturally as talking to cinema staff, built as an LLM workflow where chat and UI work together.

RoleUX & LLM workflow design, RAG development

12%booking conversionT Membership movie booking · bookings / visitors
110Kcumulative usersmovie-booking agent
8,000MAUT Membership movie booking

01 / 05

Like talking to cinema staff

The user just says what they want in the membership app’s chat. The message lands on the LLM message stack, and the agent starts collecting what a booking needs (slots).

02 / 05

Slot filling with personalization

A fine-tuned model uses function calling to pull date, time and area into slots. The user’s location and recently visited cinemas suggest a cinema first, and a state-management module keeps slots intact across long conversations.

03 / 05

RAG for movie search

A Trie built from a title-synonym dictionary tags movie titles, the LLM extracts keywords and metadata, and vector search with metadata filters finds candidates. Finally the LLM picks the movies that fit.

04 / 05

UI taps join the same workflow

When the user taps a showtime instead of typing, the result becomes a message in the LLM prompt. The next reply knows what was just tapped, so chat and UI flow as one. Try tapping a time yourself.

05 / 05

All slots filled, ready to book

Once party size and seats are filled, a booking card appears. This flow reached 12% booking conversion (completed bookings / visitors).

movie_agent.run(chat, ui_events)
ChatUI tapProfile
Membership · MoviesAI

Hi! What would you like to see?

I want to see a movie in Euljiro tomorrow evening

I’ll check Euljiro Cinema, where you went recently. Any movie in mind?

Is starvoyage still on? Something calm is fine too

Tomorrow evening at Euljiro Cinema:

Sci-fi · 124 min
Drama · 108 min
Drama · 116 min
Star Voyage · tomorrow

Star Voyage at 19:40, got it. How many of you?

Two of us, seats in the middle

Star VoyageTomorrow 19:40 · Euljiro Cinema Hall 32 people · F7, F8
✓ Booking details 6/6Book now
Type a message
Slotsbooking details0/6
Movie—
Cinema—
Date—
Time—
People—
Seats—
ProfileRecent · Euljiro CinemaFavorite · Myeongdong Cinema
LLM Messageschat and UI in one stack2 msgs
  1. systemMovie booking agent · user profile (location, recent cinemas)
  2. userI want to see a movie in Euljiro tomorrow evening
  3. tool_callupdate_slots(date="tomorrow", time="evening", area="Euljiro")
  4. assistantI’ll check Euljiro Cinema, where you went recently. Any movie in mind?
  5. userIs starvoyage still on? Something calm is fine too
  6. tool
    search_movies()→ 3 movies
    1. TrieTitle taggingstarvoyage → “Star Voyage”
    2. LLMKeywords·metacalmdrama
    3. VectorSearch + meta filterEuljiro · tmrw eve → 18 candidates Example
    4. LLMFinal pick3 movies
  7. ui_eventUI tap · Star Voyage 19:40 · Euljiro CinemaUI result added to the prompt
  8. assistantStar Voyage at 19:40, got it. How many of you?
  9. userTwo of us, seats in the middle
  10. tool_callshow_booking_card(slots=6/6)
12%booking conversioncompleted bookings / visitors

※ Reconstruction with a fictional app, cinemas and movies — not the real service screen.

  • Designed a UI-integrated agent that lets users move between chat and buttons to find and book movies, feeding the results of UI actions into the LLM workflow
  • Built RAG that finds the movie a user asks for in conversation, and automated metadata and keyword extraction from daily movie updates to keep search current
  • Fine-tuned GPT models on data collected from service logs to raise function-calling accuracy and multi-turn fluency
  • 12% booking conversion on T Membership (completed bookings / visitors); 110K cumulative users of the movie-booking agent

03 · Research & Speech

Speech & language research

Researched speech recognition and NLP at Korea University’s DSBA lab (Interspeech 2022), then improved ASR decoding at Hyundai.

Interspeech 2022 · First author·Sep 2022

K-Wav2vec 2.0: Korean ASR with Grapheme–Syllable Joint Decoding

Proposed a Korean-adapted Wav2vec 2.0 with joint decoding over graphemes and syllables and further pre-training on Korean audio.

kwav2vec.decode(wav)
Speech “안녕하세요”16 kHz
Head output · waitingExample
Beam candidates
안녕하세요
안녕하새요
안녕하세여
안영하세요

※ Synthetic example; candidates and scores are illustrative.

  • Designed a multi-task head that learns graphemes and syllables together and a joint decoder that combines them, reflecting how Korean syllables are built from graphemes
  • Further pre-trained an English-pretrained model on unlabeled Korean speech to improve low-resource performance

Korea Univ. DSBA × Hanwha Systems (ICT) industry–academia project·Jan 2020 – Sep 2021

Predictive Maintenance for Chemical Processes

Built a predictive-maintenance system that detects early warning signs in chemical-plant equipment and explains them, so engineers can act before a failure.

plant.monitor(pump_07)
5 sensors · liveExampleNormal
Lead time
Vibrationmm/s
SounddB
Speedrpm
Temp.°C
Pressurebar
Recon. errorRNN-AEThreshold 0.50Alarm
LSH matchesLikely cause cavitation
Cavitationsim 0.93
Cavitationsim 0.88
Normalsim 0.41

※ Reconstruction with a fictional unit and synthetic sensor data; all values are illustrative.

  • Detected warning signs early with an RNN auto-encoder anomaly detector and RNN time-series forecasting, so engineers could act before a failure
  • Built an analysis system that finds similar past patterns with LSH and separates normal from anomalous patterns

Hyundai Motor Company AIR Lab·Feb 2022 – Apr 2022

In-vehicle & Mobile Speech Recognition

Integrated a generative language model that reads the previous dialogue turns into ASR decoding to improve recognition in noisy cars.

Speech inputnoisy car cabinPrevious turnsdialogue contextAcoustic modelacoustic scoresKoGPTLM trained on dialogueJoint Decodingbeam search · acoustic + LMTranscript
Beam search scored by the acoustic model and a KoGPT LM that reads previous turns · +5% accuracy under external noise
  • Combined ASR decoding with a generative LM (KoGPT) trained on spoken-dialogue data to make up for accuracy lost to in-car noise
  • Modified joint decoding (LM + beam search) so it also uses the previous dialogue turns when choosing the transcript

JKIIE 2021 · First author·Dec 2021

Multi-modal Korean Emotion Recognition with Consistency Regularization

Applied consistency regularization to multimodal emotion recognition that uses external speech-to-text, making it robust to recognition errors.

external STTpqSpeechGold transcripttraining onlySTT transcriptwith ASR errorsFusion encoderBERT + Wav2vec 2.0Fusion encoderBERT + Wav2vec 2.0Consistency regularizationaligns the emotion predictions of both paths
Matching the gold-text and STT paths’ predictions (p, q) in training makes emotion recognition robust to STT errors
  • Built a multimodal emotion-recognition framework that combines speech with text from an external STT module
  • Applied consistency regularization that aligns gold-text and STT path predictions so the model tolerates STT errors

Korea University (graduate project)·Apr 2020 – Jul 2020

Open-Domain Korean Question Answering

Built a Korean open-domain QA system that gathers candidate documents from search engines and finds the answer span with BERT-based reading comprehension.

QuestionSearch enginescandidate docsParagraphsper paragraphAnswer-span extractionBERT · KoBERT · HanBERTAnswer
Retrieve candidate paragraphs, then read them to extract the answer span · Flask web demo
  • Built a retrieval pipeline that collects candidate documents from search engines and splits them into paragraphs
  • Evaluated BERT, KoBERT and HanBERT span-extraction models quantitatively and qualitatively to choose the final model

arXiv 2021 · Second author·Jul 2021

Back-Translated Task Adaptive Pretraining

Studied how combining back-translation augmentation with task-adaptive pre-training improves the accuracy and robustness of text classifiers trained on little data.

fine-tuneTask datafew labelsBack-translationtranslate, then backAugmentedparaphrasesTask-Adaptive Pre-trainingmore pre-training on aug. + orig.Classifier
Task-adaptive pre-training on back-translated paraphrases, then fine-tuning · more accurate, robust classifiers from little data
  • Further pre-trained (TAPT) on task data augmented with back-translation, to improve text-classification accuracy and robustness when data is scarce
  • Implemented back-translation augmentation (nucleus sampling for diverse paraphrases) and compared it with EDA, TF-IDF and embedding-swapping augmentation

04 · Earlier

Banking systems and financial AI

SK Inc. C&C (now SK AX) · Jan 2015 – Mar 2020. Built KDB’s e-finance services (FIDO fingerprint authentication, remote ID verification, Smart OTP), then corporate-distress early warning, robo-advisor and news-based market-prediction models.

SK C&C·Jul 2019 – Mar 2020

Market Caster: News-based Market Prediction

Built the event-extraction, prediction and sentiment models for Market Caster, a news-based market-forecasting platform.

Newstuned parsingEvent tuple(actor, action, object)NTN embeddingNeural Tensor NetworkHierarchical attentionevent → time levelPrices · indicestime seriesMarket forecastnews + price ensemble
Ensembles news-event embeddings with price series to forecast indices, bonds and other markets
  • Predicted market moves with an ensemble model combining news-derived events and price data
  • Extracted and embedded (actor, action, object) events from news and predicted market events with a hierarchical event- and time-level attention model

SK C&C·Jul 2018 – Feb 2019

Portfolio Robo-advisor

Built an automated trading system that rebalances a user's portfolio with reinforcement learning, accounting for price moves and trading costs.

Automated trading · RLSimilar-stock recommendationPortfolioPrice movesTrading costEnsemble DQNDeep Q-LearningRebalanceWord2VecStock2vecK-meansclustersSimilarco-moving
RL that rebalances from the portfolio, price moves and trading cost, plus co-moving stock picks · used in paper trading
  • Built an ensemble deep Q-learning trader that accounts for the portfolio, price changes and trading costs
  • Embedded co-moving stocks with Word2Vec and recommended similar stocks with K-means

SK C&C (client KDB)·Jan 2018 – Jul 2018

Early Warning for Corporate Distress

Built the news-analysis part of an early-warning index that flags corporate distress, using news events and industry sentiment (KDB pilot).

Company newsS–V–O triplesIndustry newssentimentPrice movesEvent distressrelation emb.Sentiment indexper industryWarningindex
Event distress, industry sentiment and price moves combined into an early-warning index · piloted in KDB’s credit-risk system
  • Built corporate-distress indices from news events and industry sentiment, piloted in KDB's corporate credit-risk assessment system
  • Extracted subject–verb–object triples from news and built an event-based distress index from their relation embeddings

SK C&C (client KDB)·Jan 2016 – Mar 2017

KDB E-Finance Services

While maintaining KDB's e-finance systems, built new services prompted by regulatory change — FIDO fingerprint authentication, remote ID verification (eKYC) and Smart OTP.

FIDO fingerprint · 2017Remote ID check (eKYC) · 2016Smart OTP · 2016on device · biometrics stay thereFingerprintSignatureBank msgStoreID captureOCR featuresSMS verifyApp OTPOTP handlingAdmin menu
Three e-finance flows launched after regulatory change · interfaces, screens and business logic
  • FIDO fingerprint authentication: built the app interface and signature management so customers can authenticate with a fingerprint, not only an accredited certificate
  • Remote ID verification (eKYC): built the browser–app flow linking ID capture, authenticity check and SMS verification, plus screens and business logic, so customers can verify identity without visiting a branch

05 · Sharing & awards

Learning in public

Awards

  • Dec 20221st Prize · SK AI Challenge
    Document summarization for faster decision-making (fine-tuned T5)
  • Nov 20211st Prize · KIIE Master's Thesis Competition
    Multi-modal Korean emotion recognition with consistency regularization
  • Jan 2021Excellence Award (KPC Award) · 2nd Factory Hack Korea (MOTIE/KIAT)
    Forecasting oil and coolant temperature and pressure changes
  • Nov 2013Gold Prize · KIIE Fall Conference 2013
    Optimizing routing and wavelength assignment in next-generation ROADMs

Talks · Teaching

  • Nov 2021NAVER CLOVA AI Tech Talk
    K-Wav2vec 2.0: Korean ASR based on joint decoding of graphemes and syllables
  • Jun 2021KIIE Spring Joint Conference 2021
    Korean speech recognition with Wav2vec 2.0
  • Sep 2021Hyundai Mobis · Project Assistant
    Mentored corporate team projects on explainable AI for a plating process
  • Jul 2021LG Innotek · Instructor
    Python for machine learning and deep learning
  • Aug 2020LG Chem · Instructor
    Python for machine learning