2nd Place
Zeppy
Voice calling agent that will make a call on our behalf and inquire about details in any language.
Core trick
Places an outbound SIP call through LiveKit to a business, runs a Gemini Live conversation, then extracts structured answers to a schema.
Description
Voice calling agent that will make a call on our behalf and inquire about details in any language.
README excerpt
# CallAgent AI-powered phone investigation assistant that calls contacts, investigates requirements, streams live progress/transcripts, and recommends the best option with action items. ## Tech Stack - Next.js 16 App Router + shadcn/ui - Next.js API routes (Node runtime) - SSE for live updates - LiveKit SIP outbound calls (Twilio SIP trunk setup expected) - Google Gemini Live API + structured extraction - PostgreSQL (Docker) + Prisma ## Local Setup 1) Install dependencies ```bash npm install ``` 2) Configure environment variables ```bash cp .env.example .env ``` Fill all required telephony and AI keys in `.env`: - `LIVEKIT_URL` - `LIVEKIT_API_KEY` - `LIVEKIT_API_SECRET` - `LIVEKIT_AGENT_NAME` (agent worker dispatch target) - `LIVEKIT_SIP_TRUNK_ID` - `TWILIO_ACCOUNT_SID` - `TWILIO_AUTH_TOKEN` - `TWILIO_SIP_TRUNK_SID` - `GEMINI_API_KEY` - `GEMINI_REALTIME_MODEL` (defaults to native audio realtime model) - `GEMINI_REALTIME_VOICE` - `CALL_SESSION_TIMEOUT_SECONDS` - `CALLAGENT_LOG_LEVEL` (optional: `debug`, `info`, `warn`, `error`; default `info`) Optional recording vars (LiveKit Egress -> GCP): - `RECORDING_PROVIDER` (`gcp`) - `RECORDING_GCP_BUCKET` - `RECORDING_GCP_PREFIX` (optional, defaults to `zeppy/recordings`) - `RECORDING_GCP_CREDENTIALS_B64` (base64 of service-account JSON file) 3) Start Postgres and migrate ```bash npm run db:up npm run db:migrate npm run db:generate ``` 4) Run the app + voice agent worker ```bash npm run dev:all ``` Open `http://localhost