Inspiration

My friend runs Prism Photography, a wedding photography studio in Melbourne. Every Saturday he's behind the camera while couples are emailing him asking about availability. 50% of couples book the first vendor who responds — and he was losing 2-3 leads a week because he couldn't reply fast enough. That's $72,000 a year in lost revenue. Enough to hire a full-time assistant, but he can't afford one because he's losing the revenue. He's trapped. I built Wedding OS to break that cycle — a 24/7 AI studio manager named Emma that handles every email and phone call in the vendor's own voice.

What it does

Wedding OS gives every wedding vendor an AI studio manager named Emma. During onboarding, the vendor pastes their website URL and connects their Gmail — no forms. Emma learns their packages, pricing, style, FAQs, and how they actually talk to couples from their past email conversations. When a couple emails, Emma drafts a personalised response in the vendor's voice within minutes. When a couple calls, Emma answers the phone in real-time with the same personality and knowledge. The vendor can review every draft before it sends, or switch to auto-mode and just check the dashboard in the morning. Two channels, one agent brain, zero missed leads.

How we built it

Four Amazon Nova models power one connected pipeline:

  • Nova Act (nova-act-latest) spins up a cloud browser in AgentCore's sandbox, navigates to the vendor's website, and its AI vision model reads the rendered page visually — extracting 17 structured fields (packages, pricing, style, testimonials, FAQs) into a typed Pydantic schema. No HTML parsing.

  • Nova Embeddings (amazon.nova-2-multimodal-embeddings-v1:0) indexes the scraped content, uploaded business documents, and past Gmail conversations into OpenClaw's vector database (SQLite-vec + FTS5) for conversation-aware retrieval.

  • Nova 2 Lite (global.amazon.nova-2-lite-v1:0) generates SOUL.md (the vendor's AI personality) and Principles.md (business rules) from the combined content. It then powers the OpenClaw agent runtime to draft every email and phone follow-up using that personality plus retrieved context from the vector database.

  • Nova 2 Sonic (via Amazon Connect + Lex V2) handles real-time speech-to-speech phone calls with 100–330ms latency. No separate ASR/TTS — one model, end to end.

The infrastructure runs on AWS: ECS Fargate (Next.js frontend + FastAPI backend), EC2 (OpenClaw agent runtime), DynamoDB (8 tables), S3 (vendor workspaces), Amazon Connect (telephony), and Gmail API + GCP Pub/Sub for real-time email pickup. Everything is defined in AWS CDK.

Challenges we ran into

  • Nova Act step budget: Our first implementation treated Nova Act like Puppeteer — navigating, clicking, and extracting in one call. It burned through the 30-step budget. The fix was understanding that act_get() with a focused extraction prompt uses only 3–5 steps because the AI just reads and responds. One job per call.

  • Cross-channel agent identity: Getting the same SOUL.md to power both email drafts (via Nova Lite) and phone calls (via Nova Sonic) required a shared workspace architecture on S3 that both the OpenClaw email agent and the Connect voice flow could read from.

  • Gmail threading: Sending replies via Gmail API that thread correctly in the recipient's inbox requires In-Reply-To and References headers (RFC 2822). Gmail's threadId only groups on the sender's side. We had to fetch the last message's Message-ID header live before every send.

  • Nova Sonic latency on Amazon Connect: Getting natural-sounding conversation required tuning the voice parameters (Olivia en-AU, 8kHz input, 24kHz output, temp 0.7) and handling barge-in so couples could interrupt naturally.

Accomplishments that we're proud of

  • Four Nova models in one pipeline — not used in isolation but feeding into each other. One URL triggers Act → Embeddings → Lite → OpenClaw Memory in sequence.

  • A real phone number that answers — judges can call +61 2 9692 3043 and talk to Emma. She knows the vendor's packages and pricing. No other submission offers a live callable phone number.

  • Zero-form onboarding — Nova Act's vision model replaces manual data entry entirely. 17 structured fields extracted from a screenshot, validated through a Pydantic schema.

  • Past conversation learning — Nova Embeddings reads the vendor's actual Gmail history so Emma responds the way the vendor would, not like a generic AI.

  • Production infrastructure — ECS Fargate, EC2, DynamoDB, S3, Amazon Connect, CDK. This isn't a notebook or a Lambda demo. It's deployed and running a real vendor's email.

What we learned

  • Nova Act is an AI vision model that happens to control a browser — not the other way around. Once we stopped treating it like Puppeteer and started giving it focused visual extraction prompts, it became the most reliable part of the pipeline.

  • Speech-to-speech (Nova Sonic) is a fundamentally different experience from cascaded ASR+LLM+TTS. The latency difference (100–330ms vs 450–1200ms) is the difference between a conversation and a chatbot.

  • The biggest technical challenge wasn't any single Nova model — it was making them share context. The SOUL.md architecture (generated once, used by both email and voice channels) was the key design decision that made cross-channel identity work.

What's next for Wedding OS

  • Multi-vendor launch: Onboard 10 Melbourne wedding photographers in Q2 and validate the revenue impact (target: 1 extra booking per vendor per month).

  • Calendar integration: Google Calendar is built — next step is Emma checking real-time availability during phone calls and booking consultations autonomously.

  • Nova Act for existing CRMs: Many vendors already use Studio Ninja or HoneyBook. Nova Act can operate inside those tools visually — no API integration needed. Emma could update their existing CRM after handling a lead.

  • Outbound follow-ups: Emma currently handles inbound only. Next phase: automated Day 2 and Day 5 follow-ups for leads that haven't responded, using Nova Lite to generate contextual nudges

Please note, timestamps for video: 0:00 — 3 Minute Overview 3:20 — Email Demo 5:08 — Phone Demo

Built With

  • amazon-bedrock
  • amazon-connect
  • amazon-lex
  • amazon-nova-2-lite
  • amazon-nova-2-sonic
  • amazon-nova-act
  • amazon-nova-embeddings
  • aws-cdk
  • dynamodb
  • ec2
  • ecs-fargate
  • fastapi
  • next.js
  • s3
Share this project:

Updates

posted an update

Currently, Amazon Connect has been having issues from the AWS side. Currently setting up cross-cloud (GCP) phone call channel connectivity with existing AWS infra to maintain phone call service along for piloted users.

Log in or sign up for Devpost to join the conversation.