App upgraded
WhatsApp (group chats). New feature: Plans.
The problem
Every WhatsApp group eventually tries to meet up, and the plan drowns in dozens of "fri?" "can't" "sat?" messages. WhatsApp has polls and events, but someone still has to read the whole argument, work out who can make which day, and create the event by hand, so most plans quietly die. This affects anyone who organises anything over WhatsApp: friend groups, families, students and project teams.
Before and after

Before (WhatsApp today): the group sends 9 messages agreeing on Saturday 8pm in Bangsar, but no event exists. Someone has to scroll back, work out who said yes to what, and create the event manually.
After (with Plans): a suggestion appears after the 2nd message. One tap creates a Plan card that fills itself in from the conversation (Sat 31 Oct, 8pm, Bangsar, 4 going, 1 still to reply) and keeps updating as people talk. Everyone answers with one tap, and the plan can be locked and added to the calendar.
What it does
- It notices. After a couple of planning messages, a quiet suggestion appears above the keyboard: "Looks like you're planning dinner. Turn it into a plan?"
- It builds the plan from what people already said. Days, times, places and replies like "can't fri", "sat ok" or "bangsar 👍" become a card with the leading day and time, the leading place, and who's in, out or still to reply.
- It keeps up. When Daniel says "8pm better", the time updates on its own. Nobody has to re-vote.
- One tap to answer, one tap to lock. "I'm going" / "Can't make it", tap a day or place to vote, then lock the plan and add it to your calendar (a real .ics file).
Try it yourself in the live demo: switch between "WhatsApp today" and "With Plans", press play, or type your own messages as "You" (for example "can't sat, sun?").
How I built it
- A planning engine in plain JavaScript that runs entirely on the device. It splits each message into clauses and picks out the activity, days ("fri", "tmr", "this weekend" resolved to real dates), times ("7.30pm"), places and availability ("can't", "busy" vs "ok", "works", 👍). A reply with no day ("ok also") applies to the day currently being discussed. Candidate days are ranked by most yes, fewest can't, most recent.
- A recreation of the group chat screen in HTML and CSS, with the suggestion, the live Plan card, a pinned summary, and calendar export.
- A side panel that shows exactly what Plans understood from each message, so the logic is transparent.
- 10 automated tests (Node.js test runner) covering date resolution, times, clause splitting, availability, place votes, the full demo conversation and calendar output. GitHub Actions runs them before every deploy to GitHub Pages.
Privacy by design: detection runs on the phone, so it fits WhatsApp's end-to-end encryption. Message text never has to leave the device.
Challenges
Group chat language is messy: "7.30pm" breaks naive sentence splitting, "can't" contains "can", and most replies ("sat ok also") don't repeat what they're replying to. Handling those cases with clause splitting, negative-first matching and a "currently discussed day" made the plan come out right.
How WhatsApp could roll it out
Ship Plans as an upgrade to the existing Events feature in groups: on-device detection only, off by default with a one-time opt-in per group, starting with common plans (meals, meetups) before expanding languages and local place names.
Tools, languages and AI
HTML, CSS, vanilla JavaScript (ES modules), Node.js test runner, GitHub Actions, GitHub Pages, Playwright (screenshots and demo recording). No AI model at runtime, by design. Built with help from Claude (Anthropic) as an AI coding assistant.
Team
Shermaine Yap ([email protected])
Independent concept. Not affiliated with or endorsed by WhatsApp or Meta. The chat screen is a recreation with made-up people and sample messages.
Built With
- css3
- github
- github-actions
- html5
- icalendar
- javascript
- node.js
- playwright
Log in or sign up for Devpost to join the conversation.