Vora.now - ElevenLabs AI Partner Catalyst Hackathon Submission

Inspiration

In Nigeria, 93% of the workforce operates in the informal sector. Event staffing—ushers, bartenders, bouncers, DJs—is a massive industry that runs almost entirely on WhatsApp groups and word-of-mouth. We saw this firsthand when we launched Vora.now December 2025 to connect event organizers with verified talent.

Our initial approach was text-based: candidates would answer interview questions in a chat interface, and our AI (powered by Google Gemini) would evaluate their responses. It worked. We completed our first gig in December 2025, 7 days after we wrote our first line of code—staffing an event with ushers, bartenders, and security personnel. We received positive reviews from both the organizers and the talent.

But we noticed something: many talented candidates struggled with written interviews. English isn't everyone's first language. Typing on a phone is slow. Some candidates would abandon applications mid-way because the process felt too formal, too much like a job application at a bank rather than a gig at a party.

Then, five days before the ElevenLabs hackathon deadline, we discovered the AI Partner Catalyst challenge. The timing felt like fate. What if candidates could just talk to our AI recruiter instead of typing? What if applying for a gig felt like a phone call with a friendly HR person rather than filling out forms?

That's when Ehi was born—our AI voice recruiter powered by ElevenLabs Conversational AI.

What it does

Vora.now is a platform that connects event staff (bartenders, ushers, bouncers, DJs, photographers, and more) with gig opportunities in Nigeria. The platform serves two audiences:

For Talent:

  • Browse 12 different event staff roles
  • Apply through a 3-5 minute voice conversation with Ehi, our AI recruiter
  • No typing required—just speak naturally about your experience
  • Receive feedback on application status within 24-48 hours
  • Get matched to paid gigs at events

For Event Organizers:

  • Access a pool of pre-verified, interview-screened talent
  • Post gigs and receive qualified applicants
  • Review AI-generated candidate evaluations
  • Hire with confidence knowing candidates have been vetted

The Voice Interview Flow:

  1. Candidate selects a role (e.g., "Bartender")
  2. Clicks "Start Voice Interview" and grants microphone access
  3. Ehi greets them by name and asks role-specific questions
  4. Natural back-and-forth conversation with real-time turn-taking
  5. Interview ends, transcript is evaluated by Google Gemini
  6. Candidate receives approval/rejection notification

The entire experience feels like talking to a real recruiter—because ElevenLabs' Conversational AI handles the complexity of speech recognition, natural language understanding, and voice synthesis seamlessly.

How we built it

The Foundation (Pre-Hackathon): We built Vora.now on a modern stack: React 19 + Tailwind CSS 4 on the frontend, Express + tRPC on the backend, with MySQL/TiDB for data storage. Authentication uses OAuth, and we integrated Google Gemini for candidate evaluation from day one.

Our original interview system was chat-based—candidates would type responses to questions, and Gemini would score them on experience, communication, and role fit.

The Voice Transformation (Hackathon Period):

When we discovered the ElevenLabs hackathon with 5 days remaining, we immediately pivoted to voice.

Day 1-2: React SDK Attempt We started with the @elevenlabs/react SDK and the useConversation hook. The API looked clean—startSession(), endSession(), callbacks for messages. We built a custom UI with a pulsing orb, transcript display, and manual controls.

But we hit WebRTC DataChannel errors. Connections would fail silently. The overrides parameter for customizing the agent's prompt wasn't being applied correctly. Candidates would start interviews and hear nothing.

Day 3: The Widget Pivot After debugging for hours, we made a critical decision: use the ElevenLabs embed widget instead of the SDK. The widget is battle-tested, handles all the WebRTC complexity internally, and "just works."

<elevenlabs-convai 
  agent-id="your-agent-id"
  dynamic-variables='{"user_name":"John","role_title":"Bartender"}'
></elevenlabs-convai>

This was the turning point. Within hours, we had voice interviews working. Ehi was greeting candidates, asking questions, and having natural conversations.

Day 4-5: Polish and Integration

  • Added dynamic variables to pass candidate name, role title, and interview questions to the agent
  • Implemented call duration tracking to detect complete vs. incomplete interviews
  • Fixed a critical bug where React re-renders were destroying the widget mid-call
  • Built a feature flag system to toggle between voice and chat interviews
  • Created the ChatInterview component as a fallback for candidates who prefer text

Tech Stack:

  • Frontend: React 19, Tailwind CSS 4, ElevenLabs Widget
  • Backend: Express 4, tRPC 11, Drizzle ORM
  • AI: ElevenLabs Conversational AI (voice), Google Gemini (evaluation)
  • Database: MySQL/TiDB
  • Auth: OAuth with session cookies

Challenges we ran into

1. React SDK WebRTC Issues The @elevenlabs/react SDK's useConversation hook produced DataChannel errors that prevented calls from connecting. We spent significant time debugging before realizing the embed widget was more reliable for our use case.

2. Widget State vs. React State When our React component re-rendered (e.g., to show "Interview in progress"), the widget would be destroyed and recreated, disconnecting the call. We solved this by:

  • Moving the widget creation to a useEffect with proper cleanup
  • Using refs instead of state for the widget container
  • Ensuring the widget HTML was set once and never touched again

3. JSON Escaping in Dynamic Variables Interview questions contain apostrophes, quotes, and special characters. When passed as a JSON string in an HTML attribute, these broke parsing. We built a cleanText() function to sanitize inputs before embedding.

4. Call End Detection The widget doesn't emit a clear "call ended" event that we could reliably capture. We implemented multiple detection methods:

  • Listening for various event names (call-end, disconnect, conversation-end)
  • MutationObserver watching for "ended the conversation" text in the widget's shadow DOM
  • Duration-based completion tracking (1+ minute = complete)

5. Five-Day Timeline Discovering the hackathon with only 5 days remaining meant making hard tradeoffs. We focused on the core voice interview experience and deferred features like transcript storage and webhook integration.

Accomplishments that we're proud of

1. Real Traction Before the Hackathon Vora.now isn't a hackathon project—it's a real business. We completed our first gig in December 2025, staffing an event with ushers, bartenders, and security. We have real users, real reviews, and real revenue potential.

2. Voice-First for Accessibility By adding voice interviews, we've made our platform accessible to candidates who struggle with written English or find typing tedious. This isn't just a feature—it's inclusion.

3. Seamless Integration The ElevenLabs widget integration feels native. Candidates click a button, grant microphone access, and start talking. No app downloads, no complex setup, no friction.

4. Feature Flag Architecture We built the system to be flexible. One environment variable toggles between voice and chat interviews. This lets us A/B test, handle fallbacks, and gradually roll out voice to our user base.

5. Production-Ready Code Everything we built is deployed and working. This isn't a demo—it's a live product that candidates are using today.

What we learned

1. Embed Widgets Are Underrated We initially dismissed the widget as "less flexible" than the SDK. Wrong. The widget encapsulates years of WebRTC engineering. Sometimes the "simple" solution is the right one.

2. Voice Changes Everything Watching candidates interact with Ehi was eye-opening. They relax. They share more. They sound like themselves instead of trying to write "professional" responses. Voice interviews capture personality in a way text never can.

3. ElevenLabs Conversational AI is Powerful The turn-taking, interruption handling, and natural flow of ElevenLabs' Conversational AI exceeded our expectations. Candidates don't feel like they're talking to a robot—they feel like they're talking to Ehi.

4. Dynamic Variables Enable Personalization Passing user_name, role_title, and interview_questions to the agent means every interview is personalized. Ehi greets candidates by name and asks relevant questions. This small detail makes a huge difference in candidate experience.

5. Build for Resilience Things break. WebRTC connections fail. Browsers behave differently. By building multiple detection methods and fallback options, we created a system that degrades gracefully.

What's next for Vora.now

Q1 2026: Scale Our goal is to staff 20 events in Q1 2026. We're actively onboarding event organizers in Lagos and expanding our talent pool across Nigeria.

Webhook Integration We're implementing ElevenLabs webhooks to capture conversation transcripts server-side. This will enable:

  • Storing full interview transcripts for admin review
  • More accurate completion detection
  • Analytics on interview quality and candidate engagement

Multi-Language Support Nigeria has over 500 languages. While English is the business language, many candidates are more comfortable in Pidgin, Yoruba, Igbo, or Hausa. We're exploring ElevenLabs' multilingual capabilities to serve more candidates.

Mobile App A dedicated mobile app will make it even easier for candidates to complete voice interviews on the go—at a bus stop, during lunch break, wherever they have a few minutes.

Funding We're seeking seed funding to:

  • Scale our operations across Nigeria
  • Expand to other African markets (Ghana, Kenya, South Africa)
  • Build out the organizer-side features
  • Hire a small team to support growth

The Vision Vora.now is building the infrastructure for Africa's gig economy. Voice interviews are just the beginning. We envision a future where any talented person can find work opportunities regardless of their typing speed, English proficiency, or access to formal credentials.

ElevenLabs' Conversational AI is helping us make that future a reality—one voice interview at a time.


Try it yourself: vora.now

GitHub: github.com/osasisorae/vora-voice-interview

Contact: [email protected]


Built with ElevenLabs Conversational AI for the AI Partner Catalyst Hackathon

Built With

Share this project:

Updates

posted an update

Update: Webhook Integration Complete!

We've shipped the ElevenLabs Post-Call Webhook integration we mentioned deferring in our initial submission.

What's new: Full transcript capture when interviews end Automatic AI evaluation with Gemini scoring Incomplete interview detection (checks for closing phrases, minimum responses) Retry system - candidates get 3 attempts if they disconnect early

Current status: Our ElevenLabs credits have run out - we'll be renewing post-hackathon so judges can test the full voice interview flow. In the meantime, the chat interview fallback is fully functional.

The webhook was the missing piece from our 5-day sprint. Now Vora.now reliably knows when interviews complete and can process transcripts automatically

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