Jay Cho

Developer and CEO, Guider Inc.

Sejong, South Korea

Reflow

Guides that keep working when the UI changes.

I build Reflow: record a web workflow once and it becomes a step-by-step guide that keeps working when the software's UI changes. It's on the Chrome Web Store and Edge Add-ons with six paying customers in Korea, and its first prototype took 1st place among 3,295 participants at the OpenAI x Primer x Jocoding AI Hackathon 2026. Now I'm working on self-healing guides.

Product

Reflow

Record a workflow once. Clicks, typing and page changes become numbered steps with screenshots, and Reflow replays the guide on the real page, highlighting each field in order.

  • Chrome and Edge extension, six paying customers in Korea
  • Built for onboarding material, internal manuals and customer how-tos
  • One recording becomes a document, PDF, video and an overlay on the live page
  • Production code is private
The guide reopens LinkedIn's event form and highlights each field in order while the side panel follows the steps. An excerpt from the product demo; the account email is blurred.

Hackathon prototype · 1st place among 3,295

ChatGPT NavigatorWhere Reflow started

Type a goal such as "create a custom GPT". The extension reads the live page, an LLM plans the steps, and it highlights the next thing to click, moves on as you act and answers questions about the current step.

  • 1st place among 3,295 participants, OpenAI x Primer x Jocoding AI Hackathon 2026
  • Built in February 2026 as a Manifest V3 extension; works on chatgpt.com only
  • Detects wrong clicks and waits for the page to settle
Step 5 explains ChatGPT's GPT editor and answers a question about it, then the guide moves on and highlights the name field. An excerpt from the hackathon demo.

Library · browser agents

agent-page-helper

One dependency-free script for LLM browser agents. It lists a page's controls with short refs and acts on those refs: it fills React-controlled inputs, refuses to click what is covered, and reaches into same-origin iframes and open shadow roots.

> __aph__.snapshot({ format: 'text' })
h1 "Profile settings"
[gngc1] textbox "Display name" value="Mina"
[gngc2] button "Save changes" covered-by=[gngc3] div#consent
[gngc4] button "Accept all"
> __aph__.click('gngc2')
{"ok":false,"error":{"code":"OCCLUDED","message":"button#save is covered by div#consent", ...}}
> __aph__.click('gngc4')
{"ok":true,"ref":"gngc4"}
> __aph__.click('gngc2')
{"ok":true,"ref":"gngc2"}
A real run on a test page where a cookie banner covers the Save button. The error line is shortened.
Median tokens per snapshot on ten public pages. It is smaller because it keeps at most 100 controls and 400 characters of text; the aria snapshot carries much more of the page.

Game · LLM opponent

Tongue of War강령전쟁

Summon an army by writing a Korean sentence, and an LLM opponent answers with sentences of its own. Both go through the same deterministic parser and a budget compiler, so a sentence can shape an army but never buy it extra stats.

  • OpenAI, Gemini, DeepSeek or any OpenAI-compatible server as the opponent
  • Fixed 50 ms simulation with a headless balance harness
  • three.js renderer with cut-out rigs
A real match against gpt-6-luna, recorded headlessly. A Korean sentence for three heavy tanks becomes three guards drawn as landships inside a 120-point budget, and the model answers with a sentence of its own. The game clock is paused while it answers, and one stretch is shown at 4x speed.

More projects

Loop Randy

A 3D random defense game in the style of Warcraft III custom maps, built in React Three Fiber with Jinwoo Choung. Summon, merge, survive 20 waves and the bosses.

Omok: the computer wins with a diagonal five under Renju rules.

Omok

Gomoku in plain JavaScript. The computer searches for forced wins in a Web Worker, and Renju's forbidden moves follow the RIF definitions.

DART Insider

Korean executives' trades in their own company's shares, parsed from OpenDART filings, with amounts from the filed prices and a price chart per trade.

Lecture Q&A

Pause a lecture video, ask a question, and get an answer from the timestamped transcript with links back to the moments it used.

AI News Today

A Korean AI news digest built from RSS feeds. A model picks and summarizes the stories, and a summary is published only if every number and quoted phrase in it appears in the source; otherwise the outlet's lede is shown.

gpt-sovits-simple

A command line tool and Python API for GPT-SoVITS text-to-speech: give it text and a short reference clip, get a WAV in that voice.