Identity Mail
A personal project · 2026

One inbox.
Five hundred of me.

Identity Mail is an email client where every address is a persona. Each company gets its own address, the inbox knows which one they wrote to, and replies go out as the right one without me thinking about it.

Toikea@my-domain · Your delivery is on its way09:12
Tochatgpt@my-domain · Your receipt from OpenAI08:47
Toamazon@my-domain · Return acceptedTue
Togithub@my-domain · New sign-in to your accountMon
The problem

One address, given to everyone, forever.

Most people have one email address and hand it to every shop, app and newsletter they ever sign up to. After a few years that address is in hundreds of databases. Some get breached, some get sold, and the spam that follows has no return label.

Aliases are the usual fix: a different address per company. The trouble is that email clients treat them as an afterthought. They all land in one pile, and when you reply you have to remember which address you used, or you send from your main one and undo the whole point.

You can't tell who leaked it

Spam arrives at the same address as everything else, so there's no way to trace it back.

You can't turn one company off

Unsubscribe links get ignored. The only way to stop them all is a new address for everything.

Replies give you away

Write back from the wrong address and the company now has your real one.

Managing aliases is a chore

Most alias services want you to create each one in a dashboard before you can use it.

The idea

Every address already exists.

The domain takes mail for any address at all. Signing up to Spotify? Type spotify@my-domain into their form. There's nothing to set up first. The first email to arrive creates the identity, gives it a colour, and files it.

The inbox is organised by who the mail was for, not just who sent it. Colour is the only bright thing in the interface, so you see which persona a conversation belongs to before you read a word of it.

InboxBy identity
ikea@
IKEA Delivery09:12
IKEA FamilySun
chatgpt@
OpenAI Receipt08:47
ChatGPT Plus2 Oct
amazon@
Return acceptedTue
spotify@
Welcome to Spotifyjust now
New identity, created by this email
Replying

It remembers who you are to them.

This is the part the whole app turns on. When you write to someone, the From address is picked for you, and the app says why. It checks the evidence from strongest to weakest:

  1. You've written to this person before

    Use the identity you used last time.

  2. You've written to their company before

    Every sent email teaches the app a preferred identity for that domain.

  3. Same company, different country

    amazon.de gets the identity you use for amazon.co.uk.

  4. Nothing matches

    Fall back to the default, and suggest a new identity named after them.

Try it: pick a recipient
From ikea@my-domain
You emailed this address from ikea@ in August.
The kill switch

Turn one company off, for good.

If an identity starts getting spam, you know exactly who let it out. Disable it and the mail is refused at the edge, before it reaches the server. To the sender it looks like the address never existed. Every other identity carries on as normal.

Keeping it quiet

A busy inbox that doesn't feel busy.

Five hundred identities bring in about twelve thousand emails a month. Most of it is receipts, delivery updates and marketing. Each message is tagged as it arrives by a small AI model, with fixed rules for the cases it kept getting wrong. Quiet tags stay out of the main inbox and never buzz your phone.

Spam scoring learns from your Spam and Not spam taps, and messages that look like phishing carry a warning banner. The scoring is checked against a hand-labelled set of 54 real emails before any change ships.

Tags
personalfinanceshippingaccountlegalshopping marketingnewslettersocialdev

Dashed tags are quiet: kept, searchable, but no notification.

How it's built

No mail server to babysit.

Email servers are hard to run well, so there isn't one. Cloud services handle the parts of email that are easy to get wrong, and everything clever lives in the app.

Arrives

Cloudflare Email Routing accepts mail for any address on the domain.

Checked

An Email Worker applies the kill switch and saves every message to storage first, so nothing is lost if the server is down.

Filed

A Go backend parses it, threads it, assigns the identity, scores spam and tags it into Postgres.

Read

A Next.js web app, and a SwiftUI iPhone app with a home-screen widget and push.

Sent

Replies go out through Resend, from whichever identity was picked.

It runs on a small home Kubernetes cluster with two copies of the API, so updates go out without dropping mail.

What we were missing

The aliases always worked. Replying didn't.

An address per company on a catch-all domain isn't new for me. I've run it for years on Zoho, and receiving was never the problem. Replying was. To answer IKEA from ikea@, that address had to be set up as a send-as identity in Zoho, then again in Apple Mail, then again on the phone. Nobody does that for five hundred addresses, so replies went out from the main address, or didn't go out at all.

The new apps fill that gap. They already know every alias, because every alias is just an address mail has arrived at, and they pick the right one when you reply.

~500aliases, built up over years
~12kemails a month
0aliases to set up before replying from one
3apps: web, iPhone, widget

What the new apps add

  • Mail arrives straight into the new apps, with older mail imported from Zoho
  • Automatic From address with reasons
  • Kill switch at the edge
  • Tagging, quiet tags and spam learning
  • Push notifications with Archive and Mark as read
  • Drafts and undo send on web and iPhone

Still to come

  • One-tap mute for an identity
  • Reply suggestions while writing
  • Searching inside attachments ("find the IKEA receipt")
  • Identities that expire on a date
  • A browser extension that makes an identity at sign-up
  • More than one domain, and sharing with family