SMF·PUMBLE
Can a prompt replace Pumble?
Community platforms — online communities and team communication
Exhibit tracking slip
Verdict
Pumble competes with Slack on one axis: Slack hides your old messages behind a paywall and Pumble does not. That reframes the build — the chat surface is ordinary, and the thing worth engineering is retention and search, because a team chat is only useful in proportion to how far back you can look. Getting search to stay fast across years of messages, and getting export right so the archive is never hostage to the tool, is where the effort belongs.
Exhibit A — The prompt
Received on31.07.2026Build a self-hosted team chat where permanent retention and fast search are the design centre.
Chat surface: public and private channels, threads on any message, direct and group messages, reactions, mentions, file attachments, and message editing with an edit history that is visible rather than silent. Live delivery over WebSocket, but every message committed to PostgreSQL in the same transaction that broadcasts it — a message that reached a screen and not the database is the failure mode that destroys trust in a chat tool.
Search, which is the point of this build:
- Full-text over message bodies, thread replies, file names and the extracted text of attached PDFs and plain-text files.
- Filters that compose: from a person, in a channel, before or after a date, has an attachment, in a thread.
- Results with surrounding context — the two messages either side — because a chat result without context is unreadable.
- Jump-to-message from a result, loading the conversation around that point rather than only the message.
Keeping it fast as it grows: index messages with PostgreSQL full-text search, maintaining a generated tsvector column with a GIN index rather than computing it at query time. Partition the message table by month once it is large. Document, and actually test, the query plan at a million messages — a chat search that takes four seconds is a search nobody uses, and the whole premise of this build is that people look things up.
Retention: permanent by default. If a retention policy is configured, it must be per-channel, visible to members of that channel, and announced in the channel when set. A team chat that quietly deletes history is worse than one that never had it.
Export, treated as a guarantee rather than a feature: a full export of every channel, thread and attachment as JSON plus files, runnable from the command line without the application running, and documented well enough that the archive is readable if this software disappears. Also per-user export for anyone who asks.
Administration: invitations by email, deactivating a user without deleting their messages, channel archiving that preserves searchability, and an audit log of administrative actions.
Out of scope: desktop and mobile applications, push notifications, voice or video calls, guest accounts, and any hosted multi-tenant deployment.
Opening prefills the prompt — press enter to run it.
Exhibit B — What you lose
- B.1 the desktop and mobile apps, and push notifications
- B.2 voice and video calls
- B.3 guest access with restricted visibility
- B.4 somebody else keeping it running when it matters
Prior art
Exhibit C — Why people still pay: network, moderation, and communication infrastructure
Because three dollars a head is less than the attention self-hosting a chat server takes, and a team chat that is down is a team that has stopped working.
Questions
Can I import a Slack or Pumble export?
Slack's export is JSON per channel per day and imports well, including threads and reactions; user identities need mapping by hand. Pumble exports similarly. The attachments in a Slack export are URLs that expire, so download them before the workspace is cancelled.
Why so much attention to search?
Because it is the only reason to keep history at all. A chat archive nobody can query is disk usage, and search that gets slower every month quietly trains a team to stop looking — at which point you have rebuilt the paywall you were avoiding, just with worse performance.
What does it cost to run?
A VPS with PostgreSQL, ten to twenty dollars a month depending on how much attachment storage you keep. Against three dollars per person, this is only cheaper above a handful of people, and the running cost is attention rather than money.
What is the one thing that does not survive the rebuild?
Notifications. Without desktop and mobile apps there is no push, which means a chat tool that only works when someone happens to have the tab open. For a team, that is close to fatal, and it is the honest reason this is a kinda rather than a yes.
Related tools
Receipt