← All projects

Henk: AI-Powered Voice Fundraising Platform

Cover Image for Henk: AI-Powered Voice Fundraising Platform

The problem

Charities face a painful dilemma with phone fundraising. Personal phone calls convert donors well, but call centers are expensive and don't scale. When campaigns spike, organizations either miss opportunities or burn through their budgets on temporary staff.

The deeper problem isn't just cost. It's also consistency. Different callers deliver different experiences. Some are great, some aren't. Tracking what actually works across thousands of calls is nearly impossible.

What I built

Henk is an AI voice platform that enables charities to have natural phone conversations with donors at scale. The AI adapts to what donors say, handles objections gracefully, and logs everything for compliance and analysis.

The journey

I underestimated this project completely. I thought voice synthesis exists, telephony APIs exist, just connect them. What I didn't realize was how different voice interactions are from text.

Tech stack

Layer Technology Why
Frontend Next.js 15 App Router with server actions
Database Supabase PostgreSQL with real time subscriptions
Voice AI ElevenLabs Most natural sounding synthesis
Telephony Twilio Programmable Voice, reliable infrastructure
Hosting Vercel Edge functions for low latency

What building this taught me

1. Latency is everything in voice

In text chat, a 2 second delay is fine. On a phone call, 2 seconds of silence feels broken. I became obsessed with latency. Every millisecond mattered.

I learned to pre buffer, predict likely responses, and stream audio before full sentences complete. The realization: real time isn't a feature, it's a completely different engineering discipline.

Resources that helped me optimize:

2. Real conversations break your assumptions

I built the happy path first. User asks question, AI responds. Easy. Then real users happened.

They interrupt mid sentence. They mumble. They say "uh huh" while you're talking. They ask questions you never anticipated.

I learned that conversation design is closer to game design than software engineering. You're designing for unpredictable human behavior, not deterministic flows.

Resources on conversation design:

3. Compliance isn't a checkbox, it's architecture

Fundraising has strict regulations. Call timing rules. Mandatory opt out language. Disclosure requirements.

I originally planned to add compliance "at the end." That was naive. Compliance touches every part of the system: recording consent, timing restrictions, script requirements. Building it in from day one would have been easier than retrofitting.

4. Twilio's documentation tells half the story

The Twilio docs show the happy path beautifully. What they don't tell you is how WebSocket connections drop under load, how DTMF detection varies by carrier, or how international calls have completely different latency profiles.

I learned more from debugging production issues than from any documentation.

// What the docs show:
twiml.say('Hello!')

// What production taught me:
twiml.say(
  {
    voice: 'Polly.Matthew',
    language: 'en-US',
  },
  'Hello!'
)
// Plus: error handling, fallbacks,
// carrier-specific quirks, timeout handling...

The bigger realization

Building Henk changed how I think about AI products. The AI isn't the product. The experience is.

Nobody cares that ElevenLabs generates the voice or that GPT-4 writes the responses. They care that the conversation feels natural and the campaign converts donors. I spent too much time on AI capabilities and not enough on conversation design.

What I would do differently

Build a conversation simulator from week one. I tested with real calls, which was slow and expensive. A simulator that could throw edge cases at the system would have caught issues faster and cheaper.

References

Links

Let's build something together.

Got an idea? I'm always up for a new challenge, whether it's a side project, a startup, or something in between.

© 2026 Cyrus David Pastelero. All rights reserved.

Built with Next.js, TypeScript & Tailwind CSS