| id |
title |
status |
assignee |
created_date |
labels |
dependencies |
references |
priority |
| TASK-141 |
SMS/text-based poll input for rSpace (magic links + optional Twilio 2-way) |
To Do |
|
2026-04-09 16:42 |
| rChoices |
| rCal |
| integration |
| SMS |
|
|
| modules/rchoices/mod.ts |
| modules/rcal/mod.ts |
| modules/rschedule/mod.ts |
| server/index.ts (webhook pattern examples around line 2808) |
|
high |
Description
Enable lightweight poll/RSVP responses via text message. Users send a text or click a magic link in SMS/email to respond to polls (e.g. "1" for Yes, "0" for No).
Phased approach:
- Phase 1 — Magic links (minimal infra): Generate per-participant short token URLs for polls/RSVPs. Send via Mailcow email (free) or any SMS API. Recipient clicks link → minimal no-auth 1-tap response page → updates Automerge doc (rChoices poll or rCal RSVP).
- Phase 2 — Twilio 2-way SMS: Twilio number (~$1/mo), outbound SMS with poll question + response codes, inbound webhook at
POST /api/sms/inbound parses reply digit, phone→DID mapping table to attribute responses.
Key integration points:
- rChoices (
modules/rchoices/) — simple polls (vote/rank/spider)
- rCal (
modules/rcal/) — event RSVPs (attendee fields exist but stub)
- rSchedule (
modules/rschedule/) — could add SMS as action type for scheduled sends
- Existing webhook pattern — follow payment webhook style (unauthenticated POST endpoints)
Design notes from initial discussion:
- Magic link approach gets 90% of value with minimal new infra
- Twilio costs ~$0.02/round-trip, magic links ~$0.01 outbound only
- Email-based variant is free via existing Mailcow setup
- Need phone→DID mapping if doing 2-way SMS
Acceptance Criteria