DEV Community

Herbert
Herbert

Posted on • Originally published at puppyone.ai

How a Solo Founder Built a Shared Support Inbox

Five inboxes, four people, zero support@ that anyone actually reads. The founder hadn’t slept through a weekend in eight months.

The job: answer customer mail across a 4-person founder team

The fear: the deal that got lost because nobody read hello@

What worked: sync every inbox into one folder; whoever is on-call reads the folder, not five mail clients

The setup founders never admit to in pitch decks

They were a 4-person SaaS startup at about $30k MRR. No support hire yet. No dedicated support@ workflow. Just a handful of addresses that existed because the domain registrar made it easy to create them.

The reality looked like this:

  • founders@ forwarded into three different personal Gmail accounts. Two people had it muted.
  • support@ existed. It lasted about two weeks before it became “later.”
  • hello@ was the contact form address, plus an auto-forward into the founder’s Gmail.
  • billing@ was, in practice, the email tied to Stripe. It was personal.
  • And customers had started DM’ing the founder on LinkedIn when email felt slow.

Two pains showed up fast:

  1. Leads were scattered. They’d definitely lost some. They just didn’t know which ones.
  2. Nobody owned the company inbox. It was everyone’s, which meant it was nobody’s.

If you’ve lived through founder-led customer support, this should feel uncomfortably familiar.

The three things we ruled out, and the exact reason

Each option looked reasonable until it met the founder reality. Nobody was going to live in a new UI.

1) Just buy a help desk (Help Scout / Front / Zendesk)

The move: forward everything into a shared inbox tool and call it “support.”

How it fails:

  • Cost wasn’t the real problem. Adoption was. A founder won’t keep a second app open 24/7 just to be “in the queue.”
  • The team still replied from Gmail most of the time, so the real conversation stayed in personal inboxes.
  • Historical threads didn’t magically reappear inside the new tool. The mess just gained another surface.

Verdict: A great product once a team already has a support culture. Founders don’t.

2) Set up Gmail filters plus a shared label

The move: forward everything into one Gmail account and share the password.

How it fails:

  • It’s a security and operations trap. Google explicitly recommends avoiding shared accounts, in part because one failed security challenge can lock everyone out (see Google Workspace Admin Help: Avoid sharing an account among users).
  • Offboarding becomes panic: who still knows the password?
  • Two people reply to the same customer and you only notice after the customer replies with “uh… which answer is correct?”
  • There’s no clean audit of who did what.

Verdict: Free, until you pay for it with a lockout or a double-reply. It’s a Gmail shared inbox alternative in the worst possible sense.

3) Drop a Slack channel that ingests email

The move: push inbound mail into #support via Zapier or a built-in integration.

How it fails:

  • Slack is a great notification layer. It’s a poor system of record. On the free plan, history is capped and older data is purged (see Slack Help Center: Feature limitations on the free version of Slack).
  • Threads and long conversations become awkward. Attachments become “where did that PDF go?”
  • Replies still happen in email, which means state is still split.

Verdict: A faster bell, not a source of truth.

Key Takeaway: All three options keep the source of truth inside a mail client or a chat app. They rearrange the mess. They don’t normalize it.

What actually worked: a shared inbox for startup support as a folder

Your inbox becomes a folder. On-call reads files, not five mail clients.

The pattern is three layers. Only one layer touches email credentials.

Layer 1: at each inbox, a thin export job

Each inbox got a small export job that runs on a schedule:

  • Pull new messages
  • Write each message as a Markdown file (with structured frontmatter)
  • Maintain a rolling messages.csv for sorting and lightweight stats

The point of this layer is narrow. It’s the only place that ever touches mail credentials.

Layer 2: in the workspace, normalize to one tree

Everything lands in one directory shape:

  • One path everyone knows
  • One format humans and agents can read
  • One “table of contents” file for the day

A sane default is:

  • /support/inbox/<YYYY-MM-DD>/ for raw inbound
  • messages.csv as a sortable index
  • threads/ to keep long conversations readable
  • index.md as the on-call’s briefing

Because it’s a folder, you get version history and diffs. Not because you set up a help desk, but because you stopped treating support as a set of private clients.

The reasoning for “folder, not another SaaS surface” is the same one behind Why agents need a workspace, not another filesystem trick.

Layer 3: the on-call reads the folder, not the inbox

The operational change was simple: the on-call stops “checking email.” They check the folder.

Access is scoped:

  • Read: /support/inbox/
  • Write: /support/replies/

Rotation is just swapping that access. Offboarding is clean. Nobody shares a mailbox password.

If you want a name for this, it’s a support inbox handoff process where ownership follows scope, not a person’s inbox.

(That access model is what an “Access Point” is for: a least-privilege entry point with an explicit scope. See Agent auth.)

What it looks like inside the workspace

1) The folder tree

/support/
├── inbox/
│   ├── 2026-06-23/
│   │   ├── 0001-acme-corp-onboarding-question.md
│   │   ├── 0002-billing-pro-plan-upgrade.md
│   │   ├── 0003-lead-from-pricing-page.md
│   │   └── ...
│   ├── 2026-06-22/
│   └── messages.csv
├── threads/
│   └── thread-abc123.md
├── leads.csv
├── replies/
│   └── 0002-reply.md
├── index.md
└── CHANGELOG.md
Enter fullscreen mode Exit fullscreen mode

2) A single mail file

---
from: jane@acme-corp.com
to: support@yourco.com
date: 2026-06-23T08:14:00Z
thread_id: thread-abc123
source_inbox: founders-gmail
status: unread
labels: [onboarding, enterprise-lead]
---
Hi team,
We’re evaluating your product for our 40-person ops team. A couple of
quick questions before we book a demo: ...
Enter fullscreen mode Exit fullscreen mode

That frontmatter is the bridge. It keeps the email readable for humans, and structured enough for agents to sort, tag, and draft replies.

3) The on-call’s index.md

# Support index, 2026-06-23

- New messages: 17
- Unreplied threads: 6
- SLA breaches (24h): 1

## On-call
- Primary: Alex
- Handoff: 17:00

## Triage list
1) thread-abc123, enterprise lead, asked for demo times
2) thread-def456, billing issue, card declined
3) thread-ghi789, onboarding question, blocked
Enter fullscreen mode Exit fullscreen mode

It’s a morning briefing, not a mail client.

4) Where audit and handoff live

Once support becomes files, “who changed what” becomes cheap.

  • Replies are drafts with diffs.
  • Handoffs are a file update, not a Slack message.

That’s the same audit-and-rollback logic described in From isolated team agents to unified enterprise agent harness.

Why this answers both pains at once

Original pain Layer that resolves it
“Leads are scattered” Layer 2: everything lands in one tree; leads.csv becomes a single source
“Nobody owns the company inbox” Layer 3: on-call ownership follows scoped access, not a shared password
“We’ve definitely lost some” Layer 1 plus folder history: yesterday’s email is still there, searchable
“Threading breaks across forwards” Layer 2: threads are aggregated by thread_id, not by whoever forwarded what

Side-by-side: help desk vs shared inbox vs Slack vs folder

Help desk SaaS Shared Gmail Slack-from-mail Folder pattern
Founder lives in this UI no partial partial no, they read files
Multi-actor handoff yes (paid plan) hacky weak clean (scope swap)
Audit trail yes no partial yes (history + diffs)
Lead historicals captured depends depends no yes (backfill possible)
AI triage and drafting locked-in vendor none weak folder over MCP
Cost to add a 5th teammate +seat share password +Slack seat +access scope
Cost to rotate someone out revoke seat change password revoke channel revoke scope
Setup time days + adoption minutes + chaos minutes a weekend

When this pattern does NOT fit

This isn’t a religion. It’s a bridge.

  • High-volume support (500+ inbound/day) wants a real help desk.
  • If customers expect complex SLAs, assignment logic, multilingual routing, and CSAT workflows, a folder won’t replace those features.
  • Strongly regulated industries may need stricter chain-of-custody guarantees than “version history.” You can layer controls on top, but the folder alone isn’t enough.
  • If the team already runs happily inside Help Scout or Front, don’t churn your process just to be clever.

The point isn’t “folder beats help desk.” It’s “before you can afford a help desk culture, you still need to not lose leads.”

The template: tpl-support-mail

This template is the portable part:

  • ingest.sh: per-inbox export job (Gmail to Markdown and CSV, then write into the workspace)
  • /support/ directory skeleton
  • index.md template (counts, on-call, top threads)
  • Reply pipeline (draft replies as files, keep a clean audit trail)

The full template is shipping as a drop-in Context Base entry. Start there: Context Base.

The pattern behind both stories

Two posts. Two sources.

  • A logistics shipment DB
  • Four personal email accounts

Same three layers:

  1. A thin extractor that’s the only thing holding the source credential
  2. A normalized folder in the workspace, with an index.md as the table of contents
  3. A scoped Access Point for whoever reads the folder (human, agent, or both)

That’s what “Templates” means here: not “a connector,” not “an integration.” A directory shape plus an extractor plus an index.

If you missed the first entry, it’s here: How a logistics team plugged AI into their warehouse DB.

FAQ

Doesn’t this just recreate a help desk, badly?

No. A help desk is an app with a workflow. This is a folder that becomes the source of truth. You can layer a help desk later if you outgrow the bridge.

What about replies? Doesn’t the on-call still need a mail client?

Sometimes, yes. The difference is the drafting and the state live in files. The mail client becomes a transport, not the system.

Can an AI auto-reply?

It can draft the same way a human does: by reading the folder and writing into /support/replies/. Mount the folder over MCP and keep the same audit trail. See MCP.

Threading is hard. Will this break?

It can be imperfect, but it’s recoverable. A carried thread_id in frontmatter gives you something you can group and grep.

What about attachments?

Store them alongside the .md file and reference them from frontmatter. Version history then applies to the case, not just the message.

Is this GDPR-safe if we’re in the EU?

The pattern can be compatible. Deployment and retention are the real levers. If residency matters, self-hosting and policy controls matter more than the folder shape.

Top comments (0)