Inspiration

Every event has the same broken loop: a Luma page with 200 names, a room full of strangers, and everyone wandering around hoping to bump into the right person. LinkedIn tells you who someone was; nothing tells you who to meet right now. We wanted the guest list itself to become an agent — one that works the room on behalf of every attendee, and scouts it on behalf of the host.

What it does

Envoy turns any event guest list into a live matchmaking engine.

For attendees: scan a QR code, claim your profile (or join as a guest with your LinkedIn), say one line about what you want today — and you get a personal AI concierge that knows everyone in the room. It finds your best matches, explains exactly why each one fits, and pings them on your behalf with your location so you actually meet. Not sure who to ask for? It asks where you are and makes the intros.

For hosts: a live dashboard with an AI-scored feed of the entire room, ranked against your agenda — who's a potential customer, who's hiring-grade talent, who can open doors. Tell the host concierge what you actually care about ("I'm looking for design partners") and the scoring re-prioritizes around it. The dashboard tracks who's checked in, who's making intros, and surfaces warm leads from live in-room intent — synthesized, never surveilled.

In the background: Envoy researches every attendee through the lens of the event's agenda — web search plus an Omnara agent distilling 2–5 concrete facts per person — and feeds that intelligence to the concierges, the scoring engine, and the host's feed. The longer the event runs, the smarter it gets.

How we built it

  • Next.js 14 (App Router) + TypeScript + Tailwind on Vercel, with Supabase Postgres as the single source of truth
  • Omnara's agent API powers every brain in the system: each attendee's concierge, the host's concierge, the feed-scoring engine, the background researcher, and even the personalized suggestion chips — all separate agents launched with carefully scoped instructions
  • Guest-list ingestion from Luma — scrape the event page, import the roster, enrich with LinkedIn
  • Background research pipeline — DuckDuckGo snippet scraping + Omnara synthesis, drained 2 people at a time by the dashboard's own polling so it never blocks a render; claiming your profile triggers instant self-research
  • Ping system — agent-initiated introductions with location context, delivered in-app with WhatsApp-style threads
  • Everything stateful lives in Postgres: scores, research, chat history, host conversations — because serverless taught us the hard way that in-memory caches lie

Challenges we ran into

  • Serverless amnesia: our in-memory score cache silently didn't exist across Vercel lambdas — scores "never updated" until we moved all caching into Postgres with TTL columns and atomic row-claiming for concurrent research workers
  • No web search in the agent sandbox: the researcher needed real-world facts, so we built a lightweight search-snippet scraper and let the agent do the synthesis — facts only, with explicit instructions to refuse name-collision noise
  • The creepiness line: the host agent can see in-room intent (what people ask their concierges), which is gold for lead qualification — but reading messages back verbatim felt like surveillance. We prompt-engineered a hard boundary: paraphrase intent as insight, never quote, never name recipients
  • Multi-event isolation: a global unique-email constraint meant importing the same guest list into a second event moved attendees (and all their history) instead of copying them — rebuilt around per-(event, email) uniqueness with profile cloning
  • A five-hour clock: every fix shipped straight to prod while people were using it

Accomplishments that we're proud of

  • A real room used it live: 40 attendees imported, researched, scored, and matchable within minutes of launch
  • Six distinct Omnara agents cooperating around one Postgres brain
  • The host feed adapts to what the organizer says they want, not just the written agenda
  • Zero-friction onboarding: QR → claim → matched in under 30 seconds

What we learned

  • Agent UX is prompt UX: the difference between "creepy" and "insightful" is one paragraph of instructions
  • On serverless, the database is the only memory you have — design for it from the start
  • Background intelligence (research, scoring) should ride on traffic you already have (polling) instead of queues you don't have time to build

What's next for Envoy

  • Post-event follow-up: Envoy emails you the people you met, the ones you missed, and why they mattered
  • Organizer analytics: which intros converted, which segments showed up
  • Multi-event memory: your profile and research travel with you from event to event

Built With

Share this project:

Updates

Submission history