Audio-only live (think X Spaces) but geo-native & civic — every room is bound to a place and can be linked to a real issue. Officials, ward members and neighbours gather, speak and listen. Three roles below: the host who runs the room, a listener who tunes in and can raise a hand, and a speaker — a listener brought on stage, who joins muted and controls their own mic.
One activity card at a time — the zone above the bar holds ONE thing. Comments are a 2-line whisper (1 line each, tap → full sheet). A raise-hand slides in as a toast (“Bring on stage”), auto-dismisses to a compact ✋ N-raised chip in ~8s. No mid listener bar — the count lives only in the top-right 🎧 pill, freeing the lower-third for comment flow.
Same rule for the listener: while a poll is live it takes the activity zone and comments collapse to the 💬 badge (12 unread) — vote, it shrinks, comments return. ✋ Request to speak shows only while the host allows it — realtime, no refresh.
On joining, a transient toast (~3s, once per join) confirms the room's scale, then fades — the count then lives only in the top-right 🎧 pill. Never a persistent mid-screen pill. When N == 0 (you're first in), the host instead gets a one-time “share to invite neighbours” nudge (shown below), not a lonely "0 listening".
N == 0 (host, first in): instead of the toast, the host sees a one-time gold nudge — “You're live. Share to invite neighbours →” — a toast (or a row under Controls), never a persistent mid-screen "0 listening" pill:
The listener whose raise-hand was accepted. Joins muted (no hot-mic surprise) — the big pill is the self mute/unmute, and Leave mic steps back down to listener anytime. Host can still mute or remove them.
Tap 💬 or the whisper → a bottom sheet slides over the room — never a new page, the audio keeps playing and the title stays visible. All | Questions filter (gold), composer at the bottom, swipe down to close. Host long-presses a row to pin / delete / mute.
Tap Controls to open Live controls — the same toggles set when starting the Chaupal: Comments, Q&A, Polls, Requests to speak. Each flip is realtime & in-place — turn requests off and every listener's “Request to speak” button disappears instantly, no refresh, no rejoin. Raise-hand is core to a Chaupal, so it defaults ON.
Tapping the top-right 🎧 count as host opens a bottom sheet — avatar-stack header + the full joined list (name · role LISTENER / SPEAKER · joined-time optional). Host-only: a listener or speaker tapping the counter does nothing — the count is already visible to them.
Surfaced hyperlocally — neighbours discover an audio room happening in their ward, not a global feed. The constant brand name Chaupal always rides with the localizable 🎙️ Live audio descriptor so every language community gets it at a glance.