Group Mail System — Specification

\n

Group Mail System

Factory specification — privacy-first group communication by email — factory.success.build

1. Overview & Design Principles

This is a group communication system where email is the interface. Every action — subscribing, changing settings, booking a meeting — can be done by sending an email. There is no required web login, no app to install, no account to create beyond having an email address.

Core Principles

  • Privacy-first. A group can be configured so that no member knows anything about other members beyond a chosen handle (display name). Email addresses are never exposed to other members. Messages are relayed through the system, not forwarded.
  • Email-native. Every command is sent as the subject line (or first line of the body) of a plain email to the group's command address. Replies come back as plain email.
  • Soft presence. Unsubscribing stops regular group messages but does not remove you from the group. The manager can still reach you for important announcements (meetings, events). Your replies still get delivered. You are a member who has muted the firehose, not someone who has left.
  • Groups are real groups. This is not a mailing list in the traditional sense. It is a group of real people with a communication channel. The distinction matters for unsubscribe/mute behavior and for the relationship between members and managers.
  • Agent-capable. Any message can be routed to an AI agent for processing, summarization, research, or action. The agent acts on behalf of the sender within the group context.
  • Platform-integrated. Groups are managed through Factory (factory.success.build). Group creation, membership, and settings are available via the web UI as well as by email command.

2. Addressing & Email Routing

Each group has a slug — a short identifier set when the group is created (e.g., marketing, board, neighborhood-watch). The slug determines the group's email addresses.

AddressPurpose
{slug}[email protected]Send a message to the group (distributed per group settings)
{slug}[email protected]Send a command (subject line is the command)
{slug}[email protected]Send a message to group managers only

Commands can also be sent by including the command keyword as the first line of the message body when emailing the +cmd address, or as the subject line. If the subject is empty, the first non-blank line of the body is used as the command.

Shorthand: Throughout this document, +cmd means the group's command address. To subscribe to a group with slug "neighborhood-watch," email [email protected] with subject subscribe.
Inbound routing: Outbound mail is sent from {slug}[email protected]. Inbound commands and manager messages use the parse.success.build domain, which routes through the inbound email processor webhook.

3. Identity, Aliases & Privacy

Display Names & Handles

Every member has a display name visible to other group members. This can be:

  • Their real name (default, pulled from their email display name on first message)
  • A group-only alias — a name used only within this specific group, invisible to other groups
  • A network alias — a handle used across all groups on the platform

Aliases are set via email command and can be changed at any time. In a fully anonymous group, only the alias is ever shown — no email address, no real name, nothing.

Privacy Levels (per group setting)

LevelWhat members seeWhat managers see
openDisplay names and email addresses of all membersEverything
names-onlyDisplay names only, no email addressesEverything
anonymousAliases/handles only. No real names, no emails. Member count only.Real identity + alias mapping

Identity Commands

Command (subject line)What it does
set name Your Name HereSet your display name for this group (group-only alias)
set network-name Your HandleSet your network-wide handle (used across all groups)
whoamiReply with your current display name, network name, email (masked), and group membership

4. Member Commands

All commands are sent to {slug}[email protected] as the subject line.

Subscription & Membership

CommandWhat it does
subscribeJoin the group. May require confirmation or manager approval depending on group settings.
confirm TOKENConfirm a pending subscription (double opt-in). Token is provided in the confirmation email.
unsubscribeStop receiving regular group messages. Does not remove you from the group. See Unsubscribe & Mute.
leavePermanently leave the group. Removes you from the member list entirely. Requires confirmation.
resubscribeResume delivery after unsubscribe or mute.

Delivery & Preferences

CommandWhat it does
digestSwitch to digest mode (bundled messages). Default: daily.
digest dailyReceive digest once per day (sent at 6 AM, group timezone).
digest weeklyReceive digest once per week (sent Monday at 6 AM).
nodigestSwitch back to individual message delivery (each email).
muteStop all delivery (including digest) but remain a member. See Unsubscribe & Mute.
unmuteResume delivery after mute.
vacationTemporarily stop delivery. Alias for mute with a friendlier label.
noreproDon't send me copies of my own messages.
reproSend me copies of my own messages.

Information & Discovery

CommandWhat it does
helpGet a friendly reply with available commands, tips, and a link to this page.
explainGet a plain-language explanation of how the group works, privacy model, and available modes. See Explain.
infoGet the group description, member count, creation date, and group type.
membersGet the member list (if privacy settings allow) or the member count (if anonymous).
whoAlias for members.
mygroupsList all groups you belong to on this platform.
settingsShow your current personal settings for this group (delivery mode, alias, etc.).
indexGet a list of recent message subjects (archive index).
search KEYWORDSSearch group archive for messages matching keywords (if archives enabled).
lastGet the most recent message sent to the group.
last NGet the last N messages (max 25).

Sending Messages

CommandWhat it does
privateSend this message to managers only (not the whole group). Use as subject prefix: private: actual subject
reply HANDLESend a direct reply to a specific member by handle (if group allows 1-to-1). The system relays without exposing either address.

5. Manager Commands

Manager commands require the sender to be a designated group manager. Sent to the same +cmd address.

Member Management

CommandWhat it does
add EMAILAdd a member to the group. Sends them a welcome message.
add EMAIL as ALIASAdd a member with a pre-set group alias.
remove EMAILRemove a member from the group entirely.
approve EMAILApprove a pending subscription request.
reject EMAILReject a pending subscription request (with optional reason in body).
ban EMAILBan an email address from the group.
unban EMAILRemove a ban.
invite EMAILSend an invitation to join the group.
mod EMAILPut a member on moderation (their posts require approval).
unmod EMAILRemove moderation from a member.
promote EMAILMake a member a co-manager.
demote EMAILRemove manager role from a co-manager.

Message Moderation

CommandWhat it does
accept MSGIDApprove a held message for distribution.
reject MSGIDReject a held message. Sender gets a notification with optional reason.
discard MSGIDSilently discard a held message (no notification to sender).
pendingList all messages awaiting moderation.

Announcements

CommandWhat it does
announceSend to ALL members, including unsubscribed and muted. For meetings, events, critical notices. Use sparingly. Subject prefix: announce: actual subject
broadcastAlias for announce.

Group Configuration

CommandWhat it does
set SETTING VALUEChange a group setting. See Full Settings Reference.
configShow all current group settings.
config diffShow only settings that differ from defaults.
Web UI: All manager settings are also available at factory.success.build/group/{group}/settings/mailgroup. The email moderation queue is at /group/{group}/email-queue.

6. Delivery Modes & Digest

Each member independently controls how they receive group messages. Preferences are managed via email command or at the Subscription Center (factory.success.build/user/{user}/subscriptions).

ModeBehaviorCommand to activate
each_emailEach message delivered immediately as a separate emailnodigest
daily_digestOne bundled email per day (6 AM, group timezone)digest daily
weekly_digestOne bundled email per week (Monday 6 AM)digest weekly
noneNo delivery at all. Member still exists, can still send, still receives announcements.mute
Digest content: Digests include message subject, sender display name (or alias), and full message body. In anonymous groups, only aliases appear. Attachments are stripped from digests with a note indicating an attachment was present.

7. Group Communication Modes

The manager sets how messages flow. Factory supports granular posting permissions and moderation levels that map to these communication patterns:

Posting Permissions (field_who_can_post)

ValueBehaviorSetting command
all_membersAny group member can post. Classic discussion list.set who-can-post all_members
managers_and_ownersOnly managers and owners can post. Announcement channel.set who-can-post managers_and_owners
owners_onlyOnly group owners can post.set who-can-post owners_only
all_platform_usersAny platform user (even non-members) can post.set who-can-post all_platform_users
anyoneAnyone, including external senders, can post.set who-can-post anyone
noneNo email posting allowed (web-only group).set who-can-post none

Moderation Levels (field_moderation_level)

ValueBehaviorSetting command
noneMessages distributed immediately, no moderation.set moderation none
new_membersFirst few messages from new members are held for approval.set moderation new_members
non_membersMessages from non-members are held for approval.set moderation non_members
allAll messages require manager approval before distribution.set moderation all

Reply Behavior (field_reply_to)

ValueBehaviorSetting command
reply_to_listReply-To header points to the group address. Replies go to the whole group.set reply-to list
reply_to_senderReply-To header points to the original sender. Replies go to the author only.set reply-to sender
reply_to_ownerReply-To header points to the group owner.set reply-to owner
reply_to_customReply-To header points to a custom address configured by the manager.set reply-to custom ADDRESS
reply_to_ignoreNo Reply-To header set. Behavior depends on the member's email client.set reply-to ignore

Member-to-Member Direct Messages

In any mode, if the group allows it, members can send direct messages to other members by handle using reply HANDLE. The system relays the message without exposing either party's email address. This is controlled by the allow-dm setting.

8. Moderation & Bounce Handling

Moderation

  • Full moderation: All posts require approval (set moderation all)
  • New member moderation: First messages from new members held (set moderation new_members)
  • Non-member moderation: Messages from non-members held (set moderation non_members)
  • Per-member moderation: Specific members on moderation (mod EMAIL)
  • Content filtering: Optional keyword blocklist (set blocklist word1, word2)
  • Attachment policy: Allow all, strip all, or allow specific MIME types
  • Max message size: Configurable, default 2MB
  • Moderation expiry: Held messages expire after 14 days (configurable)
Web moderation: The moderation queue is accessible at factory.success.build/group/{group}/email-queue with approve, reject, and spam actions.

Bounce Handling

  • The system tracks delivery failures per member
  • After 5 consecutive bounces over 7+ days, delivery is automatically suspended (equivalent to mute)
  • Manager is notified of suspended members
  • Member receives a "your delivery has been paused" notice to an alternate contact if available
  • Manager can manually re-enable with unmute EMAIL
  • VERP (Variable Envelope Return Path) is used for precise bounce attribution

9. Unsubscribe, Mute & Soft Presence

This is a key design distinction from traditional mailing lists.

Unsubscribe (soft)

When a member sends unsubscribe:

  • Regular group messages stop
  • The member is not removed from the group
  • The group manager can still send occasional messages (meetings, events) via announce
  • If the member replies to a group message (e.g., forwarded by someone, or an announcement), their reply is still delivered to the appropriate recipients
  • A notice is sent on every message they send while unsubscribed
Auto-reply when an unsubscribed member messages the group:

"You are currently unsubscribed from [group name]. Your message has been delivered to [managers / the group] as appropriate.

You are still a member of this group. The group manager may send occasional messages about meetings or events. To resume full delivery, reply with resubscribe. To switch to a digest, reply with digest. To permanently leave the group, reply with leave."

Mute

Identical to unsubscribe but with a different semantic intent (temporary silence vs. opting out). Same behavior, same auto-reply. Delivery preference is set to none.

After a muted member sends 3 messages to the group without resubscribing, they receive a shorter notice:

Muted member reminder (after 3+ messages):

"You're muted in [group name] — you're sending messages but not receiving them. To start receiving again: reply unmute or digest.

Manage all your subscriptions: factory.success.build/user/{user}/subscriptions"

Leave (hard)

The leave command permanently removes the member. Requires confirmation. After leaving, they receive no messages of any kind and must re-subscribe to rejoin.

10. Meeting Booking

Members can propose and book meetings through the group. Meetings are tracked by the system and can generate calendar invites.

CommandWhat it does
meetPropose a meeting. Subject becomes meeting title. Body contains details (date/time, agenda, location/link). System parses natural language dates.
meet DATE TIMEPropose a meeting at a specific date/time. Example: meet 2026-03-15 2pm EST
meet pollPropose a meeting with a time poll. List options in the body, one per line. Members vote by reply.
rsvp yesAccept a meeting invitation (reply to the meeting message).
rsvp noDecline a meeting invitation.
rsvp maybeTentatively accept.
meetingsList upcoming meetings for this group.
cancel MEETINGIDCancel a meeting you proposed (or any meeting, if manager). Sends cancellation notice.
Calendar integration: Meeting confirmations include an .ics attachment that can be added to any calendar app. RSVP responses update the meeting record. The group can optionally generate a shared calendar feed URL (set calendar on).

11. Agent Commands

Any member can route a message to an AI agent for processing. The agent operates within the group context, respecting privacy settings.

CommandWhat it does
agentSend the message body as instructions to the group's AI agent. The agent's response is emailed back to you.
agent summarizeAsk the agent to summarize recent group activity (last 7 days or since your last read).
agent draft TOPICAsk the agent to draft a message to the group on a given topic. You review before it sends.
agent research QUERYAsk the agent to research a topic and email you the results.
agent remind DATE MESSAGESet a reminder. The agent emails you (or the group) at the specified date/time.
agent translate LANGTranslate the most recent group message into the specified language and email it to you.
agent actionThe message body contains action items. The agent extracts them, confirms with you, and tracks completion.
Privacy guarantee: The agent only has access to messages you can see. In anonymous groups, the agent cannot reveal identities. Agent responses are private to the requester unless explicitly shared to the group.

12. Creating a Group

Groups can be created in two ways: by email or through the web interface.

Create by email

  1. Send an email to [email protected]
  2. The subject line becomes the group name (if available). Alphanumeric and hyphens only, lowercased automatically.
  3. The message body becomes the group description that all members see.
  4. You become the group manager automatically.

Create via web

  1. Log in to factory.success.build
  2. Navigate to the group creation form for the desired group type
  3. Enter the group name and description
  4. The system auto-generates an email slug from the group title (lowercased, hyphenated). You can customize it.
  5. Configure initial settings (posting permissions, moderation, reply behavior)
  6. Save. The group is immediately active.

What you get back

The system replies with:

Subject: Your group "neighborhood-watch" is ready Your group has been created. Here's everything you need: GROUP ADDRESS [email protected] COMMAND ADDRESS [email protected] MANAGER ADDRESS [email protected] SIGN-UP LINK https://factory.success.build/join/neighborhood-watch QR CODE [attached as PNG — scannable link to sign-up page] WEB SETTINGS factory.success.build/group/{group}/settings/mailgroup EMAIL ARCHIVE factory.success.build/group/{group}/emails POST BY WEB factory.success.build/group/{group}/post-message SUBSCRIPTION CENTER factory.success.build/user/{user}/subscriptions CURRENT SETTINGS (defaults) who-can-post: all_members moderation: none privacy: names-only join: open (anyone can subscribe) reply-to: list allow-dm: off digest-default: each_email attachments: allowed (max 2MB) archive: on (members only) calendar: off agent: on subject-prefix: [neighborhood-watch] welcome-message: (default) max-members: unlimited QUICK COMMANDS (send to +cmd address) invite EMAIL — invite someone add EMAIL — add someone directly set who-can-post managers_and_owners — announcement mode set privacy anonymous — full anonymity set join approval — require approval to join config — see all settings HOW TO CHANGE GROUP CONFIG BY EMAIL Send any "set SETTING VALUE" command to your +cmd address. For example: Subject: set moderation all holds all messages for manager approval. Send "config" to see all current settings, or "help" for the full list of commands.

Group Types

Factory supports multiple group types, each with email capability. The email slug format is the same across all types: {slug}[email protected].

13. Explain & Help

The help command

Returns a concise list of available commands organized by category, with one-line descriptions. Includes a link to this page for full documentation.

The explain command

Returns a plain-language explanation of how the group works. This is longer than help and is meant for someone who wants to understand the system, not just use it.

Subject: How neighborhood-watch works HOW THIS GROUP WORKS This is a private group called "neighborhood-watch" with 14 members. Messages you send here are private to this group — they are not public and are not indexed by search engines. HOW MESSAGES FLOW This group is set to "all_members" posting with no moderation. When you send a message to [email protected], it goes to every member of the group. Members see your display name but not your email address (this group uses "names-only" privacy). Some groups work differently: "managers_and_owners" posting — only managers and owners can post. Members receive announcements only. "all" moderation — every message is held for manager approval before distribution. If you want a group that works differently, you can create your own. Send an email to: [email protected] with your desired group name as the subject and a description in the body. You'll get the group address, a sign-up link, a QR code, and configuration commands. You can also create groups at factory.success.build. YOUR OPTIONS help — list of commands settings — your current preferences digest weekly — switch to weekly digest mute — pause messages unsubscribe — stop messages (stay in group) leave — permanently leave Manage all subscriptions: factory.success.build/user/{user}/subscriptions Questions? Reply to this email or send "help" to the +cmd address.

14. Full Settings Reference

All settings are changed by the group manager via set SETTING VALUE to the +cmd address, or through the web UI at factory.success.build/group/{group}/settings/mailgroup.

Communication

SettingValuesDefaultDescription
who-can-postnone, owners_only, managers_and_owners, all_members, all_platform_users, anyoneall_membersWho can send messages to the group.
moderationnone, new_members, non_members, allnoneWhich messages require approval. See Moderation.
reply-tolist, sender, owner, custom, ignorelistWhere the Reply-To header points.
allow-dmon, offoffAllow members to send direct messages via handle.
subject-prefixany text, or "off"[groupname]Prefix added to all message subjects.

Privacy & Access

SettingValuesDefaultDescription
privacyopen, names-only, anonymousnames-onlyWhat members can see about each other.
joinopen, approval, invite-only, closedopenHow new members join.
archiveon, off, members-onlymembers-onlyMessage archive availability. Web archive at /group/{group}/emails.
member-listvisible, count-only, hiddencount-onlyWhether the members command returns names or just a count.

Content & Moderation

SettingValuesDefaultDescription
attachmentson, off, MIME typesonAttachment policy. Use MIME types to whitelist: set attachments image/*, application/pdf
max-sizesize in KB or MB2MBMaximum message size including attachments.
blocklistcomma-separated words(none)Messages containing these words are held for review.

Delivery

SettingValuesDefaultDescription
digest-defaulteach_email, daily_digest, weekly_digesteach_emailDefault delivery mode for new members.
welcome-messagetext (in body)(default)Custom welcome message for new members. Put full message in the email body.
goodbye-messagetext (in body)(default)Custom message sent when a member leaves.
footertext, or "off"(default)Text appended to every message.
headertext, or "off"offText prepended to every message.

Features

SettingValuesDefaultDescription
calendaron, offoffEnable shared group calendar and meeting features.
agenton, offonEnable AI agent commands for members.
max-membersnumber, or "unlimited"unlimitedCap on group membership.
timezoneIANA timezoneAmerica/New_YorkGroup timezone for digest delivery, meeting scheduling.

Platform Administration

These settings are controlled by platform administrators at factory.success.build/admin/config/success-build/mailgroup and affect all groups.

SettingValuesDefaultDescription
command_channelfull, essentials, disabledfullControls which email commands are available platform-wide. See below.
enabledon, offonMaster kill switch for all mailgroup functionality (distribution, inbound processing, digest cron).

Command channel levels

The command_channel setting controls what members can do via email commands sent to the +cmd address. This is a platform-level control — it applies to all groups and cannot be overridden per group.

LevelWhat's availableUse case
fullAll commands in this spec: subscription, delivery, identity, info, meetings, agent, manager commands, group creation by email, settings by email.Fully email-native platform. Members never need to visit the web UI.
essentialsSubscription: subscribe, confirm, unsubscribe, leave, resubscribe.
Delivery: digest, digest daily, digest weekly, nodigest, mute, unmute, vacation.
Info: help, explain, info, settings, whoami, mygroups.
Safety: All List-Unsubscribe one-click handling.

Blocked: identity commands (set name, set network-name), discovery (members, who, index, search, last), sending (private, reply HANDLE), all manager commands, group creation by email, config by email, meetings, agent commands.
Members manage their own subscription and delivery preferences by email. All group administration and advanced features require the web UI.
disabledNo email commands processed. The +cmd address returns a reply directing the user to the web UI. List-Unsubscribe one-click still works (RFC 8058 compliance).

Email distribution and digest delivery continue normally — this only disables the command channel, not the mail system itself.
Web-first platform. Email is for receiving group messages only. All actions happen at factory.success.build.
Important distinction: command_channel=disabled is NOT the same as enabled=off. When enabled=off, the entire mailgroup system is shut down — no distribution, no digests, no inbound processing. When command_channel=disabled, email distribution works normally; only the command interface is turned off.

15. Message Flow Diagrams

Standard Distribution (all_members posting)

Member A sends to: [email protected] | v [Inbound processor at parse.success.build] | [Apply filters: size, blocklist, moderation level] | [Rewrite From: to show alias/display name] [Set Reply-To: per group setting] [Add subject prefix] [Add footer] [Add List-Id, List-Post, List-Unsubscribe headers] | v Deliver to: Member B, C, D, E... (each gets individual copy, BCC'd) (muted members skipped) (digest members: queued for DigestQueue)

Moderated Distribution

Member A sends to: [email protected] | v [Inbound processor] | [Moderation check: new_members / non_members / all] | Message held → GroupEmailQueue (status: pending) | Manager notified → reviews at /group/{group}/email-queue | Manager approves → distributed to all members Manager rejects → sender notified Manager marks spam → silently discarded

Announcement Pattern (managers_and_owners posting)

Manager sends to: [email protected] | v Deliver to: All members Member replies: | v Deliver to: Manager(s) only (per reply-to setting)

16. Reply Message Examples

Subscribe confirmation

Subject: Confirm your subscription to neighborhood-watch To join "neighborhood-watch", reply to this email with the subject: confirm a7f3x9k2 Or simply reply with "confirm" in the body. This confirmation expires in 48 hours. If you did not request this, ignore this email.

Welcome message

Subject: Welcome to neighborhood-watch You're now a member of "neighborhood-watch" (14 members). A neighborhood safety and coordination group for the Elm Street area. HOW TO PARTICIPATE Send messages to: [email protected] Send commands to: [email protected] WEB ACCESS Email archive: factory.success.build/group/{group}/emails Post by web: factory.success.build/group/{group}/post-message Subscriptions: factory.success.build/user/{user}/subscriptions QUICK COMMANDS help — list of commands explain — how this group works digest — switch to digest mode mute — pause messages settings — your preferences unsubscribe — stop messages (stay in group) Your display name: Jordan K. Your delivery mode: each_email (every message)

Unsubscribe acknowledgment

Subject: You've unsubscribed from neighborhood-watch You will no longer receive regular group messages. IMPORTANT: You are still a member of this group. - The group manager may send occasional messages about meetings or events - If you reply to a group message, your reply will still be delivered to the appropriate people - Your membership and group history are preserved TO RESUME MESSAGES resubscribe — get every message again digest — get a bundled digest instead TO LEAVE PERMANENTLY leave — removes you from the group entirely Manage all subscriptions: factory.success.build/user/{user}/subscriptions You'll receive this notice each time you send a message to the group while unsubscribed.

Manager message (managed mode)

Subject: [neighborhood-watch] Message from Jordan K. From: Jordan K. (member) To: Managers of neighborhood-watch --- Hi, I wanted to report that the streetlight at the corner of Elm and Oak is out again. Can someone contact the city? --- MANAGER ACTIONS Reply to this email — goes to Jordan K. only Forward to group — send to all members: forward to: [email protected] subject: forward

Group Mail System specification — Factory platform — factory.success.build

\n