
Automating QA Workflows for Duolingo's Localization Team via Browser Extension Engineering
Unofficial Duolingo Proofreading Assistant (UDPA) is a free web browser extension to help the Duolingo Localization Team manage and transfer data from Duolingo Incubator and CopyCat to the Proofreading Sheets. It currently supports Chrome and Edge browsers, and maintained by the Duolingo development team.

🎯Challenge
Duolingo's localization process relied on disjointed internal tools ("Incubator" and "CopyCat") and external spreadsheets for quality assurance (QA). The workflow required linguists to manually copy-paste metadata, strings, and translation revisions between systems. This manual context switching introduced significant data entry latency and human error, creating bottlenecks in the release cycle for new language courses.
🛠️The Engineering
I engineered a Chrome/Edge extension to bridge the gap between Duolingo's proprietary internal tools and their reporting spreadsheets, effectively automating the data entry pipeline.
- Reverse-Engineered Internal DOMs: In the absence of a public API, I wrote robust scraping algorithms to extract context, string metadata, and revision history directly from the DOM of both legacy and modern internal tools. This included parsing raw template syntax (e.g., variable placeholders like
{{#pluralize}}) into human-readable text. - Architected Dynamic Data Serialization: I implemented a configurable mapping engine that serializes extracted JSON data into Tab-Separated Values (TSV). This allows the extension to output data formatted specifically for the clipboard, enabling instant, formatted pasting into Excel or Google Sheets.
- Built Custom Configuration UI: To support the varying workflow requirements of different language teams (e.g., German vs. Korean), I developed a vanilla JavaScript drag-and-drop interface. This allows users to define their own column schemas, which are persisted via the
chrome.storageAPI. - Secure Context Messaging: I designed an asynchronous message-passing architecture between the extension's background workers and content scripts. This ensures data extraction occurs only on-demand, preventing performance degradation on the host application.
🚀The Impact
- Adoption: The tool was adopted by both the Duolingo Localization and Engineering Team to streamline their daily QA operations.
- Efficiency: Eliminated manual data entry for proofreading reports, reducing the time required to log a translation error from ~2 minutes to under 5 seconds per entry.
- Scalability: The configuration-agnostic architecture allowed the tool to scale from supporting a single language pair to supporting all language teams with unique reporting requirements.