Work

Systems I built and still run.

I do not have a wall of client logos to show you, so I am showing you the systems themselves. Every one of these is mine, in production, running today — and I am still the person who maintains it. That is a stronger claim than a logo, and you can check it by opening the links.

Web application

antitomato.com

Problem. In 1998 a group of friends put up a joke website protesting the tomato. It collected thousands of signatures and stories and then sat on a dying platform: no moderation, no protection from spam, no way to publish news, and no tests, so every change was a gamble.

What I built.

  • Rebuilt the whole thing as a modern web application with a real database behind it.
  • A public side: petition signing, story submissions, a guestbook, and browsing of everything ever submitted.
  • An admin moderation queue, so nothing publishes without a human decision.
  • Cloudflare Turnstile human verification on every public form.
  • A daily automated news scan that finds and files tomato-related news.
  • 86 unit tests and 9 end-to-end tests that run before anything ships.

Stack. Next.js · PostgreSQL · Cloudflare Turnstile · Cloudflare name servers · Let's Encrypt

The number. 7,836 petitions, 629 stories and a 370-entry guestbook live on one system, with a daily automated scan and 95 automated tests guarding it.

Live. antitomato.com

Infrastructure

The contact-form mail pipeline

Problem. Every one of my sites has a contact form. Sending mail from a web server normally means handing your domain's reputation to a third-party mailing service, paying per message, and watching legitimate messages land in spam.

What I built.

  • A Cloudflare Worker that receives each contact-form submission on the site's own web address.
  • It validates the submission, then sends the message through the Gmail sending interface on a Google Cloud account I own, so mail arrives from a real, already-trusted mailbox instead of a rented sender.
  • Per-site routing: each site's messages go to the right inbox under its own subject line.
  • No third-party mailing service, no per-message fee, no shared sender reputation.

Stack. Cloudflare Workers · Cloudflare name servers · Google Cloud · the Gmail sending interface

The number. Live on my own sites, including this one and gord100.nodejavascript.com, at zero cost per message.

Live. gord100.nodejavascript.com

Data pipeline

The 234,000-email document pipeline

Problem. I had 234,596 emails going back to 2003 — scanned attachments, letters, statements, receipts — and no way to find anything in them. Search only worked on the message text; the words inside the scanned pages were invisible.

What I built.

  • Full archive ingest: every message and every attachment, with the original kept intact.
  • Optical character recognition over the scanned attachments, so the words inside the pictures became searchable text.
  • Deduplication, so the same document arriving five times is stored once.
  • Everything indexed and stored across MongoDB collections, with each record carrying a link back to its original so it can be opened and printed later.

Stack. Python · MongoDB · optical character recognition

The number. 234,596 emails ingested, with the scanned attachments turned into searchable text.

Live. Runs privately — I will walk you through it live, on your own documents, in the audit.

Want this applied to your business?

The first step is a free 20-minute call. I look at how the work actually arrives — the phone, the forms, the emails, the paperwork — and tell you plainly which two or three jobs are worth automating, what they cost, and which ones are not worth doing.

Book a free 20-minute callSee what it costs