用 gpt-oss-120b 为好友打造可对话的婚礼策划应用
I Built My Best Friend a Wedding Planner She Can Talk To
开发者用 OpenAI 开源权重模型 gpt-oss-120b(Apache 2.0)经 Groq 部署,为即将结婚的好友 Cynthia 做了一个可语音对话的婚礼策划与 RSVP 应用,模型不可用时回退到 gpt-oss-20b。
This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend


What I Built
Cynthia is my best friend, and she's getting married.
Her wedding plans are spread across voice notes. The budget is in one, a vendor's price is in another, and the list of things still to book is mostly in her head. When she wants to know what's left, she scrolls back and listens again.
Her guests are the same. Most of them won't fill in a form. They'll send a voice note saying "I go come with my husband" and expect someone to remember that he doesn't eat pepper.
So I built Cynthia's Wedding Plans: a wedding planner she can talk to, and an RSVP her guests can talk to.
The planner. Cynthia taps the mic and talks the way she already does in voice notes. For example: "Budget is five million naira, we're thinking December, and we've booked the photographer." The planner keeps four things up to date from what she says:
a checklist with due dates that fit the time she has left
a budget split across venue, food, outfits, decor and the rest
a timeline for the day itself
a vendor list showing who's booked, who's quoted and who she still has to find
It answers her out loud, in a short reply that confirms what it understood and asks for one missing thing at most. One tap gives her a briefing: how many days are left, what's overdue and the next three things to do. Download plan saves the whole plan as a PDF she can share with her family.
The planner, filled in with example numbers.
Voice RSVP. A guest opens the link and just speaks, in English or Pidgin: "Na Funmi. I go come with my husband. Abeg no add pepper for am." The site turns that into a card with name, coming or not, how many people, food needs and a message. The guest checks it, fixes anything that's wrong and sends it. Then they hear a thank-you that says their name.
Voice guestbook. Guests record a wish of up to a minute, or type one, then tap Send wish. Each wish is transcribed and sorted into blessings, advice, funny ones and memories. Cynthia ends up with a keepsake page that has the words and the original voices.
Cynthia's guest list. Only Cynthia can open it. She types her password once, and her phone remembers it for 30 days. It shows the headcount, every reply and the food needs. There's also a CSV download she can send straight to the caterer. Nothing on the site links to the list, and search engines are told to skip it. -->
Demo link
https://cynthias-wedding.vercel.app
Demo video
https://youtu.be/UDY3teDsXlo?si=s5e9bhlEeyu58eWm
Code
https://github.com/comzzy/cynthias-wedding-plans
How I Built It
The planning runs on gpt-oss-120b, OpenAI's open-weight model (Apache 2.0), served by Groq. If it's slow, the app retries once on gpt-oss-20b.
Every time Cynthia speaks, the app sends the model a short summary of her current plan and what she just said. The model sends back JSON: a short spoken reply, any facts she gave (budget, guest count, date), new tasks, tasks she's finished, budget changes, the order of the day and vendor updates. The app merges that into her plan. Models are bad at working out what day of the week a date falls on, so the prompt includes the real Saturdays for the next 14 months, and the model chooses a wedding date from that list. If no model is reachable, a small rule-based parser still picks up budgets, guest counts, dates and lines like "we booked the venue".
The same model reads guests' RSVPs and wishes. The prompt gives it examples of how people really talk: "I go come" means attending, "me and my wife" means two people, "I no dey chop meat" means vegetarian. It also sorts each wish into one of the four guestbook groups.
ElevenLabs does everything to do with voice:
Scribe (speech-to-text) transcribes Cynthia's planner notes, guests' RSVPs and guestbook wishes. It copes with Nigerian names and with Pidgin, which mattered more than anything else here. If the transcript is wrong, nothing after it works.
Voice Design made the planner's voice. I described a young Nigerian woman with a calm, warm voice, someone who sounds like home, and saved the result as "Cynthia Planner".
Text-to-speech in that voice reads the planner's replies and the daily briefing.
The RSVP thank-you is spoken to each guest, using their name.
My note to Cynthia on the home page has a button to hear it read aloud. I generated the audio once and saved it as a file, so playing it costs nothing.
The API keys stay on the server, and the browser only talks to the app's own routes.
Stack: Next.js, Tailwind and Framer Motion on Vercel. RSVPs, wishes and recordings go into a private Vercel Blob store, or into a local folder when it runs on a laptop. Cynthia's plan is saved in her own browser. The guest list sign-in uses a signed, httpOnly cookie, with a limit on how many wrong passwords can be tried. The flowers are hand-drawn SVG, and the look is based on a save-the-date card Cynthia liked.
Why Does Open Innovation Matter?
This is a guest list and a wedding budget. It's family money, and it has her guests' names and what they can and can't eat. I didn't want that tied to one company's API that she has no control over.
Because the model is open-weight, the model is just a setting. The app talks to any OpenAI-compatible endpoint, and changing LLM_BASE_URL and LLM_MODEL in the env file swaps it out. I don't have to rewrite anything if a price changes or a model is retired.
It can also run on her laptop. Point it at Ollama with a small open model (I tested it with gemma3:1b) and keep storage on the local folder. Then the planning model runs on her machine, and her guest list and budget stay there too. To be clear, the voice parts still go through ElevenLabs, so audio is sent to them to be transcribed and spoken. Everything else stays on her laptop.
And it costs almost nothing. Each planner message is one small JSON request to an open model on Groq, which comes to a fraction of a cent. A friend's wedding planner shouldn't come with a monthly bill.
My Agent Session
https://dev.to/agent_sessions/building-cynthias-wedding-plans-khyaox
Prize Categories
Best Use of ElevenLabs: Scribe speech-to-text for English and Pidgin, Voice Design for the planner's voice, text-to-speech for spoken replies, the daily briefing and the RSVP thank-you, and my note read aloud.
来源:Google AI:DEV 作者专属(RSS) · dev.to