On this page
A Community Event Is A Startup That Lives For Six Weeks
- Plan: it reads your crew's chat and keeps the plan: decisions, owners, tasks, deadlines
- Build: its second agent, Ferri Builder, ships the event site with registration and a database, the posters, and the Luma listing
- Launch: it finds sponsors and partners, emails them, tracks the replies, posts announcements and social posts, and keeps the guest list
- Live: it runs the event's groups on Discord, Telegram, Slack, WhatsApp and Mattermost, with a source under every answer
- Wrap: it writes the recap, saves every partner, and turns the whole event into a starter kit for next time
Why "Ferri"
The Event Is The Unit
"You don't set up a bot. You create an event, and the event owns everything."
Five Stages, End To End
1. Plan
2. Build
- The event site: Next.js on Vercel and Supabase, with registration, a capacity and waitlist, sign-in by email link, schedule, FAQ, an admin view with CSV export, and for hackathons, sponsor credits with atomic claims and an audit log
- The posters: background art from an image model, then the exact text, logo and QR code drawn on top, in six sizes from A4 print to Instagram story. It refuses to finish unless every QR code scans back to the right link
- The Luma listing: filled in its own browser, with a screenshot posted for the crew
3. Launch
- Posters as real images: the Builder's square poster goes to every group with a caption, after one OK
- Social: LinkedIn, X and Instagram posts drafted from the event's facts and sent to Buffer to post, schedule or save as drafts
- Guests: one list from the site, Luma and CSV files, personal reminder emails with each guest's RSVP link, and a freed spot offered to the next person on the waitlist
4. Live
- Ferri Pocket: a web app the crew installs on their phones, with push notifications for every card that needs them
- Care: an attendee who is stuck, upset or unsafe becomes a case with an owner, and technical problems can go straight to the Builder to help in that person's own chat
- Desks: "@ferri make a judging desk with Arjun" creates a private channel on your platform with its own rules and a shared sheet. The check-in desk marks guests as arrived
- Shield: scam links, link floods and leaked API keys are stopped on every message in 2 to 9 ms, with no model in the path
- Desk: one dashboard where organizers see all of it, and one button to pause Ferri everywhere
5. Wrap
Built On Switch
- Rooms and bridges, in every stage: a Telegram group, a Discord channel and a Mattermost channel all become Switch rooms. Ferri talks to rooms, never to five different platform APIs
- Cards, in every stage: approvals and questions render as real buttons on Telegram, Slack and Discord, and as a typed reply everywhere else. Every "nothing public without a tap" promise is a Switch card
- Agent management and the agent controller, in Build: Ferri created the Builder through Switch, and the controller runs it with its own folder, budget and permission prompts that turn into cards
- Room templates, in Live: desks are real private channels created from a Switch template
- Library documents, in Plan and Wrap: the plan, the recap and the starter kit are documents attached to the crew's room
- Switch Trust, in Live: every message passes through Shield before anyone sees it
Run It Yourself In One Command
- Writes .env, asks for your Anthropic key once, and generates every other secret
- Starts the whole stack: Switch's core and gateway, Mattermost, Postgres with pgvector, Ferri and Desk
- Signs in to Switch, mints a personal registration key, and registers Ferri as an agent
- Creates ferri-lab for the community and ferri-crew for the crew, and seeds a made-up event, Lantern Build Night
- Prints every URL and login
How Ferri Talks To Switch
What We Learned Building On Switch
- Keep cursors as strings. Switch sequence numbers can grow past JavaScript's Number.MAX_SAFE_INTEGER. Parse one as a number and you'll quietly replay or skip events
- "Addressed" doesn't always mean mentioned. A person's next message within five minutes of your agent answering them, or a reply in its thread, also counts. Check for a real mention before assuming they're talking to you
- Mentions inside a card don't ping anyone. Switch escapes them on purpose, so post a separate message to ping the owner
- Card prompts get cut at 800 characters on Mattermost and WhatsApp. Put long context in a message right above the card
- Close your own cards before Switch expires them. An expired card renders as "answered", which is very confusing for a crew
- Agents only see what's addressed to them. Ferri never sees the Builder's posts on its stream. To read what another agent posted, use the read_context op
- Trust rules live in code, not prompts. If an answer doesn't cite a real knowledge entry, the code downgrades it to "I'm checking with the team" before it's sent. No prompt can talk it out of that
- Every feature works end to end on the real stack before the next one starts. No mocks pretending to be done. That's why we can say 158 of 158 answer checks pass on the real model, with 255 unit tests and a full-stack smoke test in CI
- The event is the unit. Every time we were unsure where something belonged, the answer was "on the event". It's why Wrap and the starter kit fell out naturally instead of being bolted on
Try It
- Watch the demo: three minutes on YouTube
- Ask Ferri something on the demo Discord (channel #build-night) or Telegram
- See what the Builder shipped: lantern-build-night.vercel.app
- Look around Desk, read-only, at ferri-demo.rudratechie.xyz
- Read the code at github.com/RudraO2/Ferri. It's MIT-licensed