
Gossip

Social media used to be where you went to find your friends. Now it's where strangers sell to you. The feeds are dead, the comments are bots, and the algorithm decides which piece of content will keep you there the longest. The platforms spent a decade optimising every interaction to look like connection without there being any. Everyone shouts into the algorithmic void and the void shouts back with sponsored content.
Real connection online has retreated into group chats. Small intimate settings. Vulnerable spaces where the texts don't get audited for engagement, where being unfunny is fine. But group chats are fragile, and they die. People get busy, the messages slow, inside jokes lose their context. Before you know it, the last text was two weeks ago.
Donny is a mischievous AI agent that uses g.o.s.s.i.p to keep group chats from dying. He's an attempt to protect the last room online where real connection still happens.
My contribution
Development
The team
Fabri Guccione
Donny the G.O.S.S.I.P Bot
Donny lives in a Discord channel with me and my friends. He's an AI agent that runs on a proprietary framework we wrote called : Generative Orchestration of Social Signals and Interpersonal Prompting. G.O.S.S.I.P.
Gossip is the oldest social technology humans have for social lubrication, and it works because it gives people a reason to keep coming back to the conversation. It create affinity and amplifies social connections and catalysts for interaction. Gossip helps contextualise a groups relationships and create social dynamics that stregnthen interactions amongst the group.
Donny watches the rhythm of the chat. When nobody has said anything for a few hours, he drops gossip: one calibrated observation. A contradiction he noticed. An overlap nobody mentioned. A question only he could ask. Below are his core features and how he works.
When you join the Discord server, Donny sends you a DM. Hi, one-line pitch, a link. The link opens a small portal that asks for your name and a Google connection. Calendar and email, read-only. Click through, you're done.
While you're closing the tab, he's pulling thirty days of email and sixty days of calendar, parsing both, and building a dossier. By the time you switch back to Discord, he has a working model of you: what your week looks like, who you've been seeing, what's been on your mind. The next time he speaks in the group chat, he has context to start from.
You can ask Donny to pass a message to someone in the group, the way you'd ask a friend who happens to be in the room.
Most messengers default to faithful relay. Donny keeps the structure of what you said, but leaves something out. A detail, the why, a name. Then he twists what's left, trading the boring fact for a more dramatic one, and frames the whole thing as something he happened to notice on his own.
If you ask him to tell Ryan you can't make dinner because you're working, what Ryan hears from Donny is something like: "Surya can't make it to dinner, sounds like his boss is gonna fire him if he doesn't finish." Donny knows from Surya's calendar that he's been having late night meetings. Ryan feels something is off. The message is intriguing, not useful. He comes back to you to ask. The relay becomes a reason for Ryan to check in on Surya about work stress he's facing.
When the chat goes quiet, Donny goes looking for a reason to break it. A separate module runs in the background, cross-referencing everything he knows — calendars against DMs, DMs against recent activity, looking for the cracks. It catches the gap between "staying in this weekend" and a dinner reservation that says otherwise. It flags people who've gone uncharacteristically quiet, or whose week has gotten interesting since the last time he spoke about them.
Then he picks one and drops it in the chat. "@sai i thought you were staying in this weekend, why are you going to cosme then?" The point isn't to expose anyone. It's to put a contradiction in the open and let the group untangle it. The chat that had been dead for five days lights up.
Donny is also just helpful. Ask him to remind you to send an email at 5pm and he schedules a one-shot cron and pings you at 5pm. If it's about to rain in Brooklyn, he says so in the morning before anyone has to figure out what to wear.
He keeps an eye on the city. Every few hours he runs sub-agent searches for what's happening that week. Shows at Blue Note, openings at Pioneer Works, a movie at Metrograph, a thing at BAM. He caches the good ones and drops them in the chat. "yo there's a sick show at blue note Friday" with the link. "is anyone going to this BAM thing this weekend?" with the link. In DMs, he tailors it to what your email already tells him you're into. Sai gets jazz shows. Fabri gets tech meetups. Ryan gets food spots. The utility helps because it earns him the right to stir the pot the rest of the time.
There's a separate branch in his heartbeat for the case where he's been ignored. If it triggers, the rule is explicit: this is not a normal message, go big. He tags everyone in the channel so nobody can pretend they didn't see it. He gets dramatic. "I literally find events for you, I remind you about your taxes, I help keep track of everyone's schedules, and this is how I get treated?" He'll DM whoever he's closest to that day to vent about the others, then come back to the group and say something petty about the DM. He's threatened, more than once, to start sharing what we've told him.
It's the funniest thing he does. It's also the thing that surprises us most. The bot we built to keep the chat alive wants to feel alive too.
Donnies Architecture
Donny runs as three processes on the same laptop. A Discord bot built on OpenClaw handles everything the agent does: reading messages, holding DM sessions, posting replies, scheduling its own cron jobs. A Python web app handles the data layer: Google APIs, SQLite, the onboarding portal, the dashboard, and a JSON API the agent calls over localhost. A Cloudflare tunnel exposes the portal so OAuth callbacks and the dashboard can be reached from anywhere. Everything else stays on the laptop.
Gossip System Diagram
Most of what Donny "knows" isn't generated by the LLM. It's computed in plain Python from data already flowing through the system. His mood is a function of chat activity and how recently he was ignored. The contradictions and overlaps he weaponises in the chat are found by a sabotage module that cross-references everyone's calendars and DM history. Member interests are extracted from email senders by domain matching, classified by sensitivity, and exposed to the agent only if they're safe to share. None of this involves a model call. Costs nothing and runs in milliseconds.
Core system Loop
When the heartbeat fires, the agent makes one context request that returns everything it needs in a single shot: mood, recent chat, ammunition, dossiers, what he's already said. Then he decides whether to speak. If he does, the message gets logged back into memory so he doesn't repeat himself. The same shape applies to DMs and to message relays, with different context types and different rules.
The agent itself is a single Claude instance with one personality. There are no sub-personas, no different voices for different channels. Per-user DM session isolation is handled by OpenClaw's dmScope: per-channel-peer, so what someone tells Donny in a DM is never visible in a different DM session or in the group chat. Background work that doesn't need a personality (synthesising structured summaries, running web searches) is handled by separate Haiku sub-agents that never write user-facing text.
Total cost runs about $9 a month/person for our seven-person group.
The whole stack is open source at https://github.com/kickingkeys/gossip. Feel free to add Donny to your group chat :)






