Inspiration
“Fix Mum’s geyser in Avondale tomorrow, under $120.”
It is a simple request. Completing it means finding businesses, repeating the problem, comparing prices, checking availability, arranging the appointment, and deciding when to pay.
That coordination becomes harder when you are helping family from another city or country. We wanted to make those everyday responsibilities easier to handle while keeping the important decisions with the person paying.
That became Switchboard: Your call. Our legwork.
What it does
Switchboard turns a typed or spoken repair request into a structured brief, comparable quotes, and a booking with two explicit payment approvals.
The buyer can:
- Describe the repair by text or voice, including the location, time window, and budget.
- Review the research. Kernel retrieves public business-directory leads, while Channel3 retrieves retail replacement-part offers for context.
- Compare the options. The quote board shows price, availability, included work, guarantee, and extraction confidence. Transcripts let the buyer inspect the evidence.
- Choose a provider. Booking opens PayPal sandbox checkout to authorize the exact agreed amount.
- Review the payout recipient before releasing payment.
- Confirm completion. Marking the job done triggers capture, payout, and a verified paid receipt.
The distinction between authorization and capture matters: approving a booking places a hold; confirming completion approves payment release.
The current hackathon demo uses simulated provider conversations and clearly labelled sample businesses. Gemini processing, Kernel directory research, Channel3 product research, and PayPal sandbox transactions use live integrations. Directory leads are separate from the simulated quote providers. Parts prices are reference information, not service quotes.
How we built it
Switchboard is a TypeScript monorepo with a Next.js frontend, a Fastify worker, and PostgreSQL for persistent job and payment records. Postgres-backed background jobs handle work that must continue beyond a browser request. Server-sent events update the interface as results arrive.
Google Gemini, through the Vercel AI SDK, transcribes spoken requests, structures repair briefs, and extracts quote details from conversation text.
Kernel runs browser-based directory research and preserves source links so the results can be inspected.
Channel3 retrieves replacement-part offers. The interface explains that these retail prices exclude labour, delivery, and taxes, and do not establish local availability or compatibility.
PayPal provides the sandbox payment lifecycle: order creation, authorization, capture, payout, and invoicing. The PayPal Agent Toolkit supports receipt preparation, while server-side checks verify the invoice against the completed payment.
The payment engine enforces the agreed amount, confirmed recipient, required approvals, and valid job state. AI-generated text cannot independently authorize money movement. Idempotency controls protect against duplicate processing.
The frontend runs on Vercel, with the worker and database hosted on Render.
Challenges we ran into
Keeping AI assistance accountable
A quote is useful only if the buyer can understand where it came from. We preserved transcripts, exposed extraction confidence, and kept unknown information unknown rather than inventing an answer.
Handling asynchronous payments
Authorization, capture, payout, and receipt creation do not finish together. We had to represent pending states honestly and use background processing, webhook reconciliation, and polling fallbacks to reach a verified result.
Working within telephony restrictions
Twilio trial restrictions limited custom calling workflows. We tested outbound calling, but chose clearly disclosed simulated provider conversations for the hosted demonstration. This made the core comparison and payment flow reproducible without presenting scripted conversations as real business calls.
Separating research from commitments
A directory listing does not confirm availability, and a retail part price does not establish a repair quote. Keeping those distinctions visible became an important part of the product design.
Accomplishments that we're proud of
- Completed a fresh hosted demonstration from voice request to verified paid receipt.
- Demonstrated a $95 PayPal sandbox authorization, completed capture, and successful $95 payout, with one capture and one payout recorded for the job.
- Integrated Gemini, Kernel, Channel3, and PayPal into one coherent workflow.
- Made the buyer’s tradeoffs visible: a lower price can mean a later appointment or a shorter guarantee.
- Built two explicit approval points into the payment lifecycle.
- Kept simulated conversations, live research, and sandbox payments clearly identified throughout the experience.
What we learned
The hardest part of an agentic product is making its actions understandable and dependable.
A useful agent needs evidence behind its recommendations, clear boundaries around its authority, and a reliable way to recover when an external service takes time or fails.
We also learned that payment status is part of the user experience. “Authorized,” “captured,” and “paid out” describe different events. Showing those differences clearly helps the buyer understand what has happened and what still needs approval.
What's next for Switchboard
Our next step is to replace simulated provider conversations with dependable live calling, including AI disclosure, consent handling, and structured quote collection.
We also want to improve location-aware discovery, verify provider payout details, support appointment changes, and strengthen recovery when a provider declines or cancels.
Before supporting real-money transactions, we would need provider onboarding, operational safeguards, dispute handling, and a review of payment and regional requirements.
The goal remains simple: make arranging a repair easier, while keeping the choice of provider and approval of payment in the buyer’s hands.
Built With
- channel3
- fastify
- gemini
- kernel
- next.js
- node.js
- paypal
- postgresql
- react
- render
- tailwind-css
- typescript
- vercel