Four email addresses. Five life categories. One dashboard.
How I used ChatGPT and Codex to build a private, unified email command center around my actual life: the signature map, the category system, the unresponsive tab, and every prompt I used to get there.
By Zoe··11 min read
I have different email addresses for different parts of my life. But the address something arrives at does not tell me what it is about, or whether I need to do anything.
A brand deal lands in my personal inbox. School emails compete with shopping promos. Business emails need different signatures. My assistant Rachel sometimes replies through my account. Four addresses, and none of them understood my life.
So I built the inbox I wished existed: one dashboard that understands those distinctions, shows me what needs attention, and helps me respond with the right identity. I built it with ChatGPT and Codex, and this is the whole build, every prompt included. Here is where it ended up:
The dashboard, digitally rendered so nobody's real email ends up on my website. Five life categories, four accounts, one view.
1. Start with the outcome you want
My first request was essentially: build me something with the speed and feel of Superhuman, consolidated across every inbox I own and personalized to my life. Describe the destination, not the features.
Build me a private, unified email dashboard across these accounts: [your accounts]. I want a light, fast interface inspired by Superhuman, with a conversation list, reading pane, clear priorities, and editable suggested replies. Organize it around my responsibilities and the decisions I need to make. Start by checking what email access is actually available.
That last sentence matters more than the pretty ones before it, which brings me to the first lesson.
2. Connect email before assuming it can see anything
The AI will happily describe an inbox it cannot read. In ChatGPT, email comes in through plugins: search for the Gmail or Outlook plugin, install it, and complete the account connection when it prompts you. What is available depends on your account and workspace, so verify instead of trusting.
Help me connect my email using the available Gmail or Outlook plugin. Confirm the exact email address for every connection. List which accounts you can read and which actions are available. Do not describe an account as connected until you have successfully retrieved mail from it.
The biggest unlock of the whole build: ChatGPT lets you connect multiple inboxes through a single Gmail MCP connection. Multiple accounts, one pipe. That is what makes a four-inbox dashboard possible at all, and it is the part I did not know going in.
The rule that saved me weeks: "connected" means it pulled real mail. Not that the button turned green.
3. Map your accounts and signatures
This was the piece I did not know I needed. Every address of mine signs differently: work replies carry a title, company, and phone number, personal replies are just my first name. The dashboard has to know which signature belongs to which account before it drafts a word.
Create a signature profile for each email address. Use the matching sender name and, where it applies, title, company, phone number, and website. Work accounts sign formally, personal accounts sign with just my name. Default replies to the address that originally received the email. If forwarding or aliases make that unclear, resolve the original account before sending.
One dashboard, different signatures. Work signs like work, personal signs like me.
The line that organizes the whole build: the category tells the app what the conversation concerns. The mailbox tells it which signature to use.
4. Choose categories from your life, not Gmail's tabs
Mine are Family, Content, Janitorial, Real Estate, and Olilu / Consulting. Yours might be Clients, School, Household, Finance, Travel, Side Business. The point is they come from your responsibilities, not from anyone's default folders.
Organize my mail into these life areas: [your categories]. Add filter pills across the top. Search across every connected account within each category. Let me correct the category of a conversation and remember that correction.
5. Teach it what important actually means
Gmail thinks it knows what is important. It does not know that locking in a party vendor outranks a newsletter from a store I bought one thing from in 2024. Mine watches for critical appointments, bids and contracts and pricing, brand deals, party vendors, and unanswered questions from me or Rachel.
Prioritize messages involving [your important topics]. Look for an actual request, decision, deadline, or unresolved commitment. Do not equate Gmail's Important label with my priorities. Show why you think each message needs attention.
Give it examples of both kinds when you set this up: two emails that genuinely mattered, two that looked urgent and were not.
6. Split "needs my reply" from "waiting on them"
These are two different jobs, and mixing them is why inboxes feel endless. One view for messages waiting on me. Another for conversations where I already replied and the next move belongs to someone else.
Add a Needs My Response view for incoming messages that need an answer. Add a Waiting view for conversations where I have already replied and the next move belongs to someone else. Read the full conversation, including sent messages, before deciding who is waiting on whom.
Then build the tab that has quietly saved me the most money: Unresponsive. Important requests that I or Rachel sent in the last 30 days that never got an answer.
Find important conversations where I or [assistant name] asked for something within the last 30 days and received no later answer. Show whom we are waiting on, what we asked, and when. Exclude requests already answered, declined, canceled, or resolved in another related thread. Do not count every outgoing email as a request.
The Unresponsive tab. The most useful feature was knowing whether I owed someone a response, or they owed me one.
7. Give Family its own cross-account view
School emails, Tutu School, activities, applications, requests from teachers. They arrive on every account, so Family gets a view that searches all of them.
Create a Family view across all accounts. Include mail from [schools], [activities], and relevant messages about [children's names]. Highlight application deadlines, forms, RSVPs, appointments, and anything the school needs from me. Exclude unrelated shopping emails that happen to mention kids or back-to-school.
Separate upcoming school deadlines from old reminders. Do not assume a form is still missing just because an earlier email requested it.
8. Summarize what is pressing, by horizon
The dashboard outgrew one long priority list fast. What works is attention groups: now, this week, waiting, planning ahead. That is the blue strip at the top of every category.
At the top of each life category, summarize what needs attention now, this week, and further ahead. Include the requested action, relevant date, and a link to the conversation. If a deadline has passed, say that its outcome needs checking rather than assuming I missed it.
9. Hand it your context and your voice
Generic email summaries come from generic context. I gave it my actual documentation: business folders, current projects, key people, my writing style. You provide the files, it cannot see your desktop on its own.
Review these approved folders and documents: [paths or uploaded files]. Create an email-context guide covering my responsibilities, businesses, current projects, writing preferences, key people, and signature rules. Flag anything outdated or conflicting, and tell me what you could not access.
Then the voice. My work voice and my personal voice are not interchangeable, and neither are yours. Teach it from mail you personally wrote, nothing automated, nothing your assistant sent.
Read a representative sample of my recent, personally written sent emails. Identify my usual length, greetings, tone, and sign-offs. Keep separate guidance for work and personal. Do not invent availability, pricing, attachments, or commitments. Ask me for missing facts.
10. Put an editable reply inside the conversation
I wanted the suggested response sitting right in the thread, with the correct From and the right signature already attached, editable in place. And I wanted to see at a glance when Rachel had replied through my account, so nothing gets answered twice.
Add an inline reply editor with a suggested response when there is enough context. Show From, To, and the account-specific signature clearly. Preserve my edits when I switch conversations or refresh. Before sending, show the exact final message for approval and recheck whether a newer reply has arrived.
When [assistant name] replies through one of my accounts and signs the message, add a small colored "[Name] replied" tag. Check the actual outgoing message signature. Do not tag a message merely because their name appears in quoted history. The tag is informational and should not automatically mark the conversation resolved.
The inline editor: right identity, visible draft state, and the tag that says Rachel already handled the last one.
One detail worth insisting on: a suggested reply, a queued request, and a sent email need visibly different states. You should never wonder which one you are looking at.
11. Make the ordinary buttons dependable
Read, Archive, Copy, Send. The boring buttons matter as much as the AI features, and this was one of my realest lessons: a button that creates a request to perform an action is not the same as a button that performs the action.
Make Read and Archive operate on the correct account and conversation. Show Pending while the action is running, Completed only after the mail service confirms it, and a useful error if it fails. Prevent double-clicks from creating duplicate actions. Keep archived conversations available in All Mail.
Same discipline for freshness. I noticed recent emails were missing and had to ask for a real chronological view with visible sync status.
Make All Mail chronological, newest first, across all accounts, including sent and archived, excluding only Spam and Trash. Show each account's last successful refresh, any failures, and exactly how much history is covered. Add a Refresh button with a loading state, and do not advance the successful-sync timestamp when a refresh fails.
Mine refreshes hourly on a schedule, and the refresh only looks, it never sends or changes anything. Twice a day would serve most people fine.
12. Turn it into a real app
The last stage is my favorite. The dashboard became a Mac app I open from my Dock, with scheduled refreshes running on their own. Mine is called Zoe Mail, and clicking a real icon instead of hunting a browser tab is a bigger quality-of-life jump than it sounds.
Turn this dashboard into an app I can open from my Dock or desktop, with a clear unread count. Explain what needs to stay running and what happens after I restart my computer.
And when something feels off, skip "keep iterating." Describe exactly what felt broken: the scrolling, the missing recent email, the wrong signature. Specific feedback drove every useful fix in this build.
What to notice
I started by describing the inbox I wished existed. The outcome first, the features later.
My categories came from my life, not Gmail's tabs. You do not need my categories. You need a clear description of your own responsibilities.
The best feature is direction of debt. Knowing whether I owe someone a response, or they owe me one.
I had to teach it everything that made it good. What matters, whose voice to use, which documents to check.
Verified beats claimed. Connected means mail was retrieved. Sent means the service confirmed. Everything else is a green button lying to you.
The email address something arrives at tells you almost nothing. I built the thing that knows what it is about, and who should answer.