Inspiration
“We should catch up soon” is easy to say. Finding a time across three cities and two time zones is harder.
For friends separated by university or work, and families living far apart, the small details are often the first things to disappear: a baking recipe that finally worked, a difficult week, something someone is quietly proud of. Those moments give us a sense of each other’s lives, but they do not always make it into a call or survive a busy group chat.
We built MailBuds around a simple question: what if your friends and family had their own newspaper?
Everyone could contribute a little, whenever they had time, and have something shared to look forward to. Our goal is to help communities that already care about each other keep that connection across distance.
What it does
MailBuds turns short personal updates into a private newspaper for your group.
- Bring your people together. Create a group and invite friends or family through a join code or link.
- Share the small things. Write a note or record a voice update, and attach photos from your week. Gemini transcribes voice notes, and you can review and edit the text before submitting.
- Read your lives together. When an issue is published, Gemini combines each contributor’s notes into their own story, alongside a shared headline, photos, little victories, and things to look forward to.
- Keep coming back. Read previous editions and opt in to email highlights with a link to the full newspaper.
The group’s home is an interactive 3D globe, with members’ avatars at their approximate locations and their local times. It gives a group spread across the world a shared place to return to.
An organizer can publish directly, so the complete transformation from personal notes to a shared issue can be demonstrated without waiting for the next publication date.
How we built it
We built the interface with React, TypeScript, Vite, and Tailwind CSS, using react-globe.gl and Three.js for the interactive globe.
Our Python FastAPI backend handles group permissions, notes, publication periods, and delivery. Supabase provides authentication, Postgres, and private media storage.
Gemini handles transcription and newspaper generation. We request structured JSON and validate it with Pydantic before rendering. Additional checks verify contributor coverage, names, source references, and quoted text against the original notes.
Publishing preserves a snapshot of the closing period’s notes and opens the next period before generation finishes. The backend supports both organizer-triggered publishing and scheduled calls through an internal endpoint designed for n8n. Resend handles email highlights.
Challenges we ran into
Keeping the personality without changing the story. We wanted the newspaper to be warm and playful while respecting what people actually shared. Our editorial instructions allow humor grounded in the notes, while explicitly telling the model to treat difficult news seriously.
Making publication recoverable. Publishing involves closing a period, preserving its notes, generating an issue, and sending emails. A failure halfway through should not erase someone’s update or require starting everything again. We separated generation from delivery, kept source snapshots, and added retry handling for each stage.
Making distance visible while limiting location sharing. The globe needed enough context to feel personal. We used rounded coordinates, a manual city option, and location requests while using the app, without continuous background tracking.
Accomplishments that we're proud of
We connected recording, transcription review, photo uploads, the globe, newspaper generation, and archives into one experience.
We’re particularly proud of making each contributor visible: the generated issue gives every person who submitted notes their own story, and our validation checks for missing or duplicated contributors.
Most of all, we built a format where ordinary updates deserve attention. A small win or a hard week can become something the people close to you actually sit down and read.
What we learned
We also learned how much engineering sits behind a simple publication date. Cutoffs, incoming notes, retries, and email preferences all affect whether the experience feels dependable.
The product was just as important: making it easy to contribute is only half the problem. People also need a reason to look forward to receiving those updates.
What's next for MailBuds
We want to test MailBuds with real friend groups and families across several publication cycles. We’ll look at whether people keep contributing, return to read new issues, and use the stories to start conversations.
That feedback will guide improvements to onboarding, mobile recording, accessibility, and scheduled delivery. We also want to explore multilingual transcription and newspapers so members can share and read updates in the languages they feel most comfortable using.
We also plan to add video updates, so members can share moments through both their words and what they see. Our current Supabase setup has a 1 GB media storage allowance, so we plan to expand storage capacity as part of supporting video uploads. Members would be able to submit short videos, review transcripts for inclusion in the newspaper, and watch each other’s original clips within their private group.
Built With
- fastapi
- google-gemini-api
- n8n
- pydantic
- python
- react
- react-globe.gl
- render
- resend
- supabase
- tailwind-css
- three.js
- typescript
- vercel
- vite