03 — community

Your best amenity is
currently a WhatsApp group.

A community feed and a member chat that live inside your own app — posts, polls, threads, DMs, channels, reactions and the moderation tools a real community needs. We built the engine in-house and deleted the vendors, so there is no per-member chat bill and no member data parked with someone else.

feed · chat · moderation — 106 member api routes, self-hosted, no per-seat bill

One post, the whole space.
No group chat required.

what's included

Everything a community needs.
None of the per-seat invoices.

feed

The feed

Posts with markdown, up to ten attachments, hashtags, GIFs, link previews and polls with a close date — sorted New, Top or Hot, with nested comments underneath.

chat

Chat, DMs & channels

1:1 messages, private groups and public channels members can browse and join — plus threads, voice notes, scheduled sends, invite links with an expiry, and a search grammar (from:, in:, has:, before:, after:).

emoji

Reactions & custom emoji

Any emoji, several different ones per person per message, plus emoji your space uploads itself — and a 365-entry fold map so a thumbs-up never splits its count across platforms.

moderation

Feed moderation

Reports, banned-term flagging, slow mode, mute-a-member and remove-with-reason — every removal leaves a scrubbed tombstone plus an audit-log entry, and the person who reported it gets told it was handled.

realtime

Realtime & offline

Twenty broadcast events over a Reverb server you host, and on mobile the feed and every conversation sit in on-device SQLite — write a message with no signal and it queues in an outbox, deduplicated so a retry never double-posts.

surfaces

One implementation

The same shared packages mount in the staff backoffice, the member web app and the native iOS and Android app — a feature ships to all three or to none of them.

The kitchen is closed

A community manager tells tersAI
to post the notice.

Four AI tools reach the feed. She types one sentence on the way back from the kitchen; tersAI drafts the post, picks the channel and asks before it publishes.

The confirmation is the feature: write actions never fire on a guess, and what lands is an ordinary post — comments, reactions, edit history and all.

tersAI · live

"Post that the kitchen is closed for cleaning until 14:00."

tersAI — Draft for #general: "Kitchen is closed for cleaning until 14:00 — coffee is on the ground floor." Post it?

"Yes."

Posted to #general. It's on the feed in the app and on member web already.

fig. 01 — an announcement, one sentence long · tersai · 09:41
"Our community stopped living
in a group chat nobody owned."
— the team behind tershouse, sarajevo

Stop renting your community
by the seat.