SMF·TWIST
Can a prompt replace Twist?
Community platforms — online communities and team communication
Exhibit tracking slip
Verdict
Twist's design is defined by what it refuses: no green dots, no typing indicators, no read receipts, and notifications batched rather than instant. Building the threaded discussion tool is ordinary work; the discipline is in leaving out the features every chat tool adds by reflex, because each one reintroduces the pressure to answer immediately that the product exists to remove. The gap you cannot close is the mobile app, and an async tool nobody can read on a phone gets read less, not more calmly.
Exhibit A — The prompt
Received on31.07.2026Build an asynchronous team discussion tool. The absent features are as important as the present ones.
Structure: channels contain threads. A thread has a title and an ordered list of comments. There is no channel-level message stream — every message belongs to a titled thread, which is what stops a channel becoming a river nobody can catch up on.
Deliberately absent, and to be refused if asked for later. Write these in the README as design decisions rather than gaps:
- No presence or online status of any kind.
- No typing indicators.
- No read receipts or seen-by lists.
- No instant notification on every message.
- No unread badge counts on channels — a list of threads with new activity since your last visit, with no number attached.
Notifications: a digest, delivered at times each person chooses (defaulting to twice a day), listing threads with new activity and the first lines of what was said. A direct mention may optionally notify sooner, at an interval the recipient sets, with immediate as an option they must choose rather than a default.
Catching up: an inbox of threads with activity since you last read them, oldest first, marked read individually and never in bulk. Someone returning from a week away should be able to work through what happened in order rather than declaring bankruptcy on it.
Threads: Markdown with code blocks, file attachments, reactions, mentions, and quoting a specific earlier comment. Threads can be marked resolved and archived, and a resolved thread stays searchable.
Search: full-text over thread titles and comments with filters by channel, author and date, using PostgreSQL full-text search with a maintained tsvector column and a GIN index. Results with surrounding comments for context.
Direct messages: kept as a separate space and deliberately limited — one-to-one and small groups, with the same digest notification model. The point is that the channel is where work is discussed and the direct message is not a way around the async model.
Administration: email invitations, deactivating a member without deleting their writing, per-channel membership, and a full export of every channel, thread and attachment as JSON plus files, runnable without the application running.
Out of scope: desktop and mobile applications, push notifications, replying by email, voice or video, 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 their notification handling
- B.2 replying to a thread by email, which is how async actually works for some people
- B.3 search quality across years of threads at team scale
- B.4 somebody keeping it running when a team depends on it
Prior art
Exhibit C — Why people still pay: network, moderation, and communication infrastructure
Because an async tool has to be reachable from wherever people are, and Doist's apps plus email integration are what let a distributed team live in it rather than checking a website.
Questions
Can I import my Twist workspace?
Twist exports threads and comments as JSON, and the structure maps almost directly since both tools model threads the same way. Attachments are URLs that expire with the workspace, so download them before cancelling.
Is a batched digest not just slower?
It is slower on purpose. The whole premise is that most messages do not need an answer within the hour, and that treating them as if they do is what makes team chat exhausting. If your team genuinely needs immediate responses, this is the wrong tool and adding notifications will not fix that.
What does it cost to run?
A VPS with PostgreSQL, ten to twenty dollars a month regardless of team size, plus a transactional email provider for digests. Against eight dollars per person, this favours self-hosting from about three people onward.
What is the one thing that does not survive the rebuild?
Reading it away from a desk. Twist's apps and its reply-by-email support are how a genuinely distributed team stays in the conversation across time zones. A web-only tool means people fall behind and then stop opening it.
Related tools
Receipt