2018 WEB / IMAGE-PROCESSING PROTOTYPE / 2018
Congressional Combovers
A 2018 experiment that uses facial-landmark detection to turn official photos of members of Congress into bad drawings with the hair left intact. The planned guessing game had a title and a tagline: “Ain't no pompadours in politics.”

The recovered third-party congressional image snapshot contains 951 unique Bioguide IDs, each with original, 450×550, 225×275, and metadata variants.
Both the masked-face output batch and the side-by-side comparison batch contain an output for every one of the 951 source portrait IDs.
The surviving congress_info.json contains 951 records assembled around Bioguide IDs and historical member metadata.
The idea was to show someone a congressional portrait with most of the face replaced by a bad line drawing, leaving the hair intact, and ask them who it was. I made the image-processing experiment and browser reveal in 2018. The mobile guessing game remained an idea.
The archive contains 951 unique congressional portrait IDs. My Python script used facial landmarks to find the eyebrow line, preserved the photograph above it, and drew the lower face using rough lines for the eyes, nose, lips, and chin. The result looks wrong in a way that keeps the focus on the hairstyle.
The code was not only drawing faces. Separate functions walked the portrait IDs, scraped historical Bioguide pages, queried the ProPublica Congress API, and wrote structured member records containing names, state, party, title, district, and Congress number. The surviving congress_info.json contains 951 records.
That metadata was meant to make the visual experiment into something game-like rather than a folder of processed portraits: each processed portrait could be connected back to a specific historical member record.
The archive also preserves the dependencies I was working from, which makes attribution clearer. The `images/` folder is a snapshot of the third-party `unitedstates/images` project, including its GPO photo-scraping utilities and public-domain portrait set. `face_recognition.zip` is an archived clone of Adam Geitgey’s face_recognition library. Those repositories are dependencies/reference material, not code I authored.
My work here is the Combovers concept, the `combovers.py` processing and metadata-assembly script, the generated portrait studies, and the early browser reveal interface.
The original HTML page populated a thumbnail grid from the member data and paired each processed image with its source portrait. Moving the mouse vertically changed the height of an overlay to reveal the real face underneath. I rebuilt a small self-contained version from the preserved outputs so that interaction can still be tried without the dead APIs and old Python dependencies.
The mobile guessing game was a direction I wanted to take the concept, not something I completed. Likewise, the animated clip from my old portfolio was a promotional thumbnail, not gameplay footage.
An old portfolio thumbnail, not game footage.
This is how I previewed the 2018 idea on my earlier portfolio. The planned mobile guessing game was not shipped.
From member photos to hair-only clues
The recovered archive contains 951 unique source portrait IDs and a matching processed output for every ID. These selected examples come from that original batch; the public portfolio intentionally includes only a small sample rather than republishing the entire historical dataset.



How the project appeared on my previous site
This short looping animation was created as the preview thumbnail for my older portfolio. It is presentation material for the concept, not footage from the web prototype or a released mobile app.













