7.6 KiB
PRODUCT_SPEC.md
Product name placeholder
Use a neutral working name in code and UI, such as GroupHome. Keep it easy to rename.
Product thesis
Groups remain stuck on WhatsApp-like messengers because switching costs are social, not technical. The product lowers switching costs by making the group itself movable and by making the new home materially better than chat: structured events, files, announcements, member management, tasks, polls, commitments, migration tracking, browser-first access, and no mandatory account on first use.
The product must not become a universal inbox. It must become a command center for group life.
Target users
Primary:
- sports clubs;
- school and parent groups;
- tenant associations;
- volunteer organizations;
- local campaigns and civic groups;
- small professional or nonprofit communities.
Secondary:
- members who belong to several groups and need a unified action view;
- admins who want to leave WhatsApp without excluding people.
Positioning
For organizations:
Run your group professionally without forcing members onto WhatsApp.
For members:
See what matters across all your groups without reading every chat.
For admins:
Announcements, events, files, RSVPs, and members in one place.
For anti-lock-in positioning:
Your group should not depend on one company's messenger.
Required product flows
Flow A: Admin creates a group and starts migration
- Admin opens app.
- Admin creates group with name, description, visibility, and default permissions.
- Admin adds seed members manually or imports a simple CSV.
- Admin creates invite link.
- Admin gets QR-ready URL and WhatsApp reminder copy.
- Migration dashboard tracks invited/opened/joined/verified/notification-enabled.
- Admin can mark the WhatsApp channel as legacy and set a transition deadline.
Flow B: Member joins without login
- Member taps invite link from WhatsApp/email/SMS/QR.
- Browser opens join screen.
- Member sees group preview and official reason for moving.
- Member enters/accepts display name.
- Member is assigned a browser session/device.
- Member can immediately read official updates and perform one useful action, such as RSVP.
- Member is then nudged to save access via recovery email, passkey-ready protection, or browser notifications.
Flow C: Multi-group home
- Anna belongs to FC Kreuzberg U12, Class 4B Parents, Tenant Association, and Food Bank Volunteers.
- Anna opens Home.
- Home shows:
- missing RSVPs;
- open votes;
- tasks assigned to Anna;
- changed events;
- important announcements;
- catch-up summary of chatter.
- Anna does not need to open every group chat.
Flow D: Multi-device access
- Anna joined on phone.
- On PC, Anna opens the app and chooses “Link from existing device.”
- PC displays code/QR.
- Phone approves the pending device.
- PC receives a session.
- Anna sees both devices in Me → Devices.
- Anna can revoke a device.
Flow E: Self-hosted remote aggregation
- Club runs
club.exampleas a group server. - Anna's home server is
home.exampleor the hosted default. - Club server creates a scoped connection token for Anna.
- Anna connects
club.exampleto her home server. - Home server syncs structured objects through
/api/sync. - Anna's Home dashboard shows club actions alongside other groups.
- No group data is replicated peer-to-peer between unrelated servers.
Top-level navigation
Use these nav items:
Home
Calendar
Groups
Files
Me
Chat must not be top-level navigation.
Home screen details
The Home screen must include the following cards/sections:
Needs me
High priority, actionable objects:
- RSVP required;
- vote required;
- task assigned;
- file requires acknowledgement;
- direct mention;
- admin request.
Each card must show:
- group name;
- type badge;
- due date/time if any;
- primary action button;
- source server when remote.
Today / Upcoming
Unified agenda with:
- events;
- deadlines;
- changed locations/times;
- RSVP status;
- attached file indicators.
Changed since last visit
Examples:
- event changed;
- new official announcement;
- task reassigned;
- poll result finalized;
- file uploaded.
Official updates
Announcements and admin posts, separated from discussion chatter.
Catch up
Rule-based summary in MVP:
While you were away:
- 2 official announcements
- 1 event changed
- 3 open actions
- 47 discussion messages
Do not require AI to implement catch-up. AI hooks can be future work.
Group page details
Default group dashboard sections:
Important now
Upcoming
Open actions
Announcements
Files
Discussions
Members/Admin tools
Example for sports team:
FC Kreuzberg U12 Parents
- Match Saturday, RSVP open
- Training moved to Pitch 2
- 3 drivers still needed
- Files: Season schedule, Emergency contacts
- Discussions: Snacks, Carpool
Composer behavior
When creating group content, allow explicit content types:
Announcement
Event
Task
Poll
Question/thread
File
Chat message
MVP can implement simple forms for each type. Later AI can suggest structure from natural language; do not block MVP on that.
Notifications
Implement preferences by type, not only by group.
User settings:
Immediate
- direct mentions
- event changes
- urgent announcements
- tasks assigned to me
Digest
- normal discussions
- new files
- photos/general chatter
Muted
- reactions
- off-topic chatter
UI must make the pitch clear:
Mute the noise, not the group.
Search and files
At MVP level:
- global file list;
- by-group filter;
- simple text search over names/descriptions;
- upload/download local files;
- show source server for remote files.
Later enhancements can include full-text search across messages.
Migration kit details
Admin dashboard should show:
31 invited
24 opened
21 joined
14 enabled notifications
4 verified recovery
7 not reached
Generate reminder copy, for example:
23 of 31 people have joined our new group space.
The match schedule, RSVP, and files are now here: {link}
From {date}, official announcements will only be posted there.
WhatsApp export import:
- accept
.txtexport; - parse basic lines if format is recognized;
- store as archive items;
- do not treat imported messages as active verified members;
- make archive clearly read-only.
Self-hosting and aggregation
Definitions:
- Group server: canonical owner of one or more groups.
- Home server: stores a user's personal dashboard config and remote server connections.
- Remote server connection: scoped link from a home server to a group server.
- Federation: server-to-server peer network. Explicitly not included.
V2 self-hosting target:
- A server can be self-hosted by an organization.
- A user can connect multiple servers to their home profile.
- A home server aggregates structured objects.
- Servers expose an open, documented, versioned sync API.
- Users can export their data/config.
Copy guidelines
Avoid words that create friction:
- Avoid “register” as first action.
- Avoid “create account” before value.
- Avoid “federation” in end-user UI.
- Avoid “token” in end-user UI.
Use:
- “Open group”
- “Join this group”
- “Save access”
- “Protect access”
- “Link another device”
- “Connect another group server”
- “Get updates without WhatsApp”
What not to build
- Do not put chat as the whole product.
- Do not require the native app.
- Do not bridge or scrape WhatsApp.
- Do not make localStorage the source of identity.
- Do not force all self-hosted servers into one federation.
- Do not hide important state in chronological messages.