May 6, 2026
  • capstone
  • nlp
  • client-project

Echtralex / Lexicography

A UMD capstone for a real client: automating a manual bilingual transcript-alignment workflow, with a measured ~30% efficiency gain.

Role
Team of 5 (CMSC435)
Timeline
Spring 2026
Stack
Python · spaCy · Playwright · Cloudscraper · LaBSE
Outcome
12 → 8.5 min per transcript · ~30% faster workflow

Overview

Echtralex tracks how PRC ministry policy language shifts over time. That means aligning parallel English/Chinese transcripts from ministry press conferences, sentence by sentence: fully by hand, daily, up to four releases a day, averaging 12 minutes per transcript. Our team of five built the system that automates it, working directly with Echtralex founder Michael Horlick as our client. It shipped: it’s deployed to production and in active client use.

The measured result: 12 minutes down to 8.5 per transcript (~30%), faster than the manual workflow on 9 of 10 test transcripts, with typically just 1–2 manual corrections needed per ~40-sentence release. The client’s acceptance document graded the efficiency criterion as only partially met: the remaining time is the consultant still reading every transcript after alignment, a human step no pipeline was going to remove. I’d rather put the real number here than a rounder one.

What I owned: HTML extraction, end to end

Four ministry sites, four different page structures, and active scraper countermeasures to get past.

The refactor with a before/after measurement

Mid-project I restructured HTML extraction: one file of per-ministry special cases became shared utilities plus per-ministry config files: about six hours of work. Then we measured it, using an outside developer who’d never seen the codebase as the control:

TaskBeforeAfter (me)After (fresh eyes)
Add a new sourcehours (team estimate)8 minutes31.82 minutes

A second source took me 16 minutes and 35 lines of config. Walking away from a class project with a controlled measurement, including an outside tester, is a rare thing.

Beyond my component

Running the project

I was the client’s point of contact from the first meeting: scheduling every session, sending 3+ emails a week, and managing expectations when we fell behind. I introduced Jira and ran the board (I created 56 of our 95 issues), and ended up as the team’s de facto scrum master.

The moment I’m proudest of: when we were behind, someone proposed reframing our System Flexibility test (counting three of four ministry sources as “add-ons”) so it would pass. I argued that was cutting corners and wouldn’t survive scrutiny. The team backed me, and the honest version of that test became the Codebase Extensibility Test above, which is exactly what forced the modularization work. The harder criterion produced the project’s best engineering.

Result

A deployed system in daily client use, built by a team I helped keep honest and on schedule: 79 hours logged across the semester, about 48 of it hands-on development. The honest numbers (~30% faster, 9 of 10, one or two corrections per release) are the ones I’d rather defend.

The five-person CMSC435 team standing together in a conference room after wrapping up the project.
The team, right after our critical design review.