What I automated

emailmanager.ai

Answers customer support mail: the routine mail of property managers, tax advisors and brokers is drafted before they read it. Never sent on its own.

1307 commits · first 7 Apr 2025 · last 15 Oct 2026 · 556 days · emailmanager.ai

commits per week, counted from the repository when this page was last built

The emailmanager.ai front page on a phone: your routine mail is answered before you have read it

The same forty questions, every day

A property manager answers the same forty questions a day: is the heating fixed, where is my statement, when is the viewing. A tax office answers where is my return. The answers are known; the typing is the cost.

The product drafts those answers in the office’s own tone, directly into the mailbox they already use. It processes in memory, on servers in Germany, stores nothing, and never sends. The person reads, adjusts, sends. That last rule is the whole product.

First commit

bf8c65c 10 Feb 2026

The first commit in the backend repository is a merge of pull request number 167. The history before it lived in a repository I no longer keep, so the story on this page starts mid-flight, in February, with a product that already had users and a staging branch.

The page for property managers gets simpler

01ed379 14 Feb 2026

The first vertical page was rewritten for small businesses: fewer sections, plainer benefits, a real example mail. Each vertical since has had its own page, and each page carries the mail that its readers actually get.

The property management page on a phone
The page for property managers, on a phone. Every vertical has one, with its own example mail.

An out-of-office is not a customer

1648dd7 22 Mar 2026

Auto-replies and out-of-office notices were being answered, politely and uselessly, because they were long enough to look like mail. From this commit they are detected as no-reply regardless of length. It is the kind of rule that only exists because a real mailbox taught it.

Two models, one prompt, a score with a fallback

e231df0 13 Apr 2026

Pipeline version two: two models answer the same mail, a score decides which draft is shown, and when the score cannot decide, a defined fallback does. Two days later version four. The month of April is that pipeline being rebuilt until the drafts stopped needing edits.

The example on the front page: a draft in the mail client, marked as an example
The example on the front page: the draft appears in the mail client, marked as such, waiting for a person.

A browser translation crashed the whole app

2e6b111 22 Jun 2026

A visitor with automatic page translation switched on could crash the entire application, because the translation rewrote nodes the app was still holding. One line of defence, and a reminder that the browser is not yours.

The demo booking page: three short questions before the appointment
The demo page. Three questions before the appointment, all optional.

Connection errors are reported, not thrown away

dbba15a 6 Sep 2026

When a mailbox failed to connect, the error was swallowed and the account simply looked idle. Now the reason is logged and shown, and a separate commit the same day follows up on registrations that never connected a mailbox at all. An account that looks idle for a week is a customer who has left.

The help page on a desktop screen
The help page. Written for the person who connects the mailbox on a Friday afternoon.

For a year the dashboard said zero. There had been 38.

a841b8a3 28 Jul 2026

Six of the seven conversions marked as important on the site had fired zero times in 365 days. They came from an advertising template, and no page had ever sent them. The dashboard was not broken. It was faithfully counting things that do not exist.

At the same time, what the site really does send was marked as nothing in particular: 19 sign-ups, 12 leads, 3 demo requests, 3 booking redirects, one download. Thirty-eight real conversions in a year, none of them counted, while a wall of zeros sat where the decisions get made.

What it does tonight

The product drafts for its users and never sends. Around it, the factory writes the blog for seven verticals and the posts for the company page, the nightly loops watch the analytics, and the health check watches the signup. This page is about that machinery; the product’s own code is not part of this log.

Runs on its own

  • drafting, classification and escalation rules inside the product
  • the blog: thirty-eight articles across seven verticals, written by the factory
  • posts for the company page, scheduled behind a guardrail
  • the nightly analytics loop and the alarm on the signup path

Stays with me

  • every send, by the customer, always
  • every article and post release, by me
  • the demo call

Article cost is the factory’s figure, about 0.94 US dollars each. The product’s own inference cost per mail is not published here.

Where this goes

The marketing side has a measurement pending: whether the thirty-eight articles bring the registrations the plan assumes, which the analytics loop counts every night. The product side is a close reading of a real office’s mailbox before any new feature. Both are counts first, features second.