← Project list

Shipped product · Browser extension

CodeCoach

A Chrome Web Store extension that reads the current code on LeetCode and Programmers, provides progressive hints, and keeps a review history.

Role
Independent product · Product design, browser extension, and AI integration
Technologies
Chrome MV3 · JavaScript · OpenAI Responses API · Firebase

Actual product

See it in action

01

A next-step hint for an incorrect solution

Identifies the missing branch assignment in a Reverse Integer solution and suggests the next edit and boundary tests instead of revealing a complete answer.

CodeCoach providing a next-step hint beside an incorrect LeetCode Reverse Integer solution
LeetCode incorrect solution with a Specific hint
CodeCoach flow sending problem context, code, and results through the service worker and OpenAI streaming to the side panel
tkim602/CodeCoach · README.md
Released on the Chrome Web Store
v1.0.0
01

Context

Showing a complete solution during interview practice may solve the immediate problem without improving the underlying weakness. At the same time, a hint that cannot read the current code and failed result remains generic.

CodeCoach reads the problem, editor code, and visible run or submission result, then provides the requested hint depth. It connects site-specific editors, streaming responses, an MV3 service worker, and local storage into an installable browser product.

02

Engineering

LeetCode and Programmers use different editor and DOM structures, so each site has a dedicated content-script adapter. The extractor checks Monaco, Ace, and CodeMirror before falling back to textarea or DOM content. Site-specific run and submission states become one context shape, and duplicate page events are filtered before snapshot storage.

The MV3 background service worker reads the OpenAI Responses API SSE stream and forwards it to the side panel. Light, direction, and specific hint levels use prompt and display guards to limit full-solution exposure. Sessions, hint events, code snapshots, weakness tags, and review schedules remain in chrome.storage.local.

My contribution

  • Implemented site adapters for problem, editor, and execution-result context extraction.
  • Connected Responses API streaming, progressive hint guards, and side-panel interaction.
  • Designed submission snapshots, structured learning metadata, weakness aggregation, and review scheduling.

Key technical decisions

Use multiple editor fallbacks

A single DOM selector broke whenever a site or editor changed. The extractor now checks Monaco, Ace, and CodeMirror before using textarea or DOM fallbacks.

Keep the API key and learning history local

The extension calls OpenAI with the user's key instead of operating a proxy. Firebase sync is optional and limited to metadata such as weakness categories and review schedules. Code snapshots and note content remain local.

03

Validation

Editor context, run and submission state, streaming hints, and history were verified on real LeetCode and Programmers pages. The extension was packaged with Manifest V3, supports Chrome 116 and later, and was released on the Chrome Web Store.

A DOM change on an external site can still bypass all fallbacks. AI features depend on the user's OpenAI API key and provider availability, and the product is not intended for active assessments.

Verified results

  • Each AI response becomes a connected learning record with a hint event, weakness tag, code snapshot, and review queue entry.
  • The released product keeps API keys and code history out of an operator-controlled server through a local-first storage model.