The Tools

I found inefficiencies in my own workflow. So I built tools to eliminate them.

HTML Content Extractor

JavaScript · DOM Parsing · Apps Script

Reads live Google Support article HTML via browser inspect. Extracts all structured text and populates a Google Doc automatically, eliminating manual copy-paste entirely from the content update workflow.

Content updates used to begin with a writer opening a live support article, selecting text section by section, and pasting it into a working document, losing structure along the way and introducing copy errors under deadline pressure.

The extractor reads the article's live HTML directly, walks the DOM to preserve heading hierarchy, lists, and links, and writes a clean structured copy into a Google Doc ready for editing. What was a 20-minute error-prone chore per article became a few seconds of automation, and the working copy is now guaranteed to match the live source.

Impact

Manual copy-paste eliminated from content update workflow

Edit Doc Reviewer

Google Apps Script · Docs Add-on · Sidebar UI

A Google Docs sidebar extension that scans documents against editorial style guidelines in real time. Flags violations such as "see", "look", and context-dependent phrases, and suggests alternatives inline. Encodes professional editorial judgment into a tool that scales without the editor.

Editorial review does not scale: one editor's judgment, applied one document at a time. This tool encodes that judgment into a Google Docs sidebar that reviews as you write.

It scans the document against editorial style guidelines in real time, flagging vague directional words, context-dependent phrasing, and style-guide violations, and suggests concrete alternatives inline. The writer sees the correction while the sentence is still warm, which teaches the guideline instead of just enforcing it. The editor's standards are now present in every document, whether the editor is or not.

Impact

Professional editorial judgment scaled without the editor present

Country Selector Content Crawler

Python · Web Crawling · Apps Script

Python script that crawls through country selector articles systematically, extracts structured content from each, and delivers it directly into an edit-ready Google Doc. Eliminated an entire manual content-gathering phase.

Country selector work meant gathering content from hundreds of market-specific article variants before any writing could begin: a full manual phase of opening, reading, and copying, multiplied by every market in scope.

The crawler walks the country selector systematically, requests each market's article, extracts the structured content, and assembles everything into a single edit-ready Google Doc organized by market. The gathering phase disappeared from the schedule entirely, and the coverage is exhaustive by construction: the script cannot skip a market the way a tired human can.

Impact

Full content extraction automated. Zero manual gathering

Culvert

Apps Script · JavaScript · Buganizer API · Google Sheets

Bi-directional sync engine between Google Sheets and Buganizer. Managed the entire team intake operation autonomously during lead absences with zero pipeline disruptions. Built independently. Not in the job description.

Team intake ran through two systems that did not talk to each other: work arrived in Buganizer, planning lived in Google Sheets, and a rotating human kept them in sync by hand. When leads were absent, the sync degraded and the pipeline with it.

Culvert is a bi-directional sync engine between the two. New Buganizer issues appear in the sheet with their metadata; sheet-side triage decisions flow back as Buganizer updates. During lead absences it ran the entire intake operation autonomously with zero pipeline disruptions. It was built independently, on the observation that the job needed doing, not on a ticket asking for it.

Impact

10-person manual triage workflow → zero human overhead

Markdown-to-XML Pipeline

Custom Scripting · CMS Integration

Custom pipeline converting Markdown source files to enterprise XML for CMS ingestion. Eliminated the manual reformatting step that was slowing every content deployment.

The CMS ingested enterprise XML; the writers were fastest in Markdown. The gap between the two was bridged manually, one reformatting pass per deployment, on every single content update.

This pipeline converts Markdown source files into the CMS's XML schema automatically: headings, lists, tables, cross-references, and metadata all mapped by rule rather than by hand. The manual reformatting step vanished from every deployment, cutting project turnaround by 20% and removing an entire category of formatting defects at the same time.

Impact

20% reduction in project turnaround time

None of these were in my job description. All of them were in my job.

← Back to Portfolio