The problem
Agencies lose the first hour of every project to a discovery call: the same questions about the business, the audience and the budget, most of which the client's own website already answers. If you've ever hired a web agency or a freelance designer, you know the ritual. One or two hours of "tell me about your business", "who are your customers", "do you have brand colours" before anyone quotes a price.
Forms don't fix it. A long questionnaire asks the same obvious questions in writing, and clients abandon it halfway. Then someone at the agency has to chase them.
What I built
AskOnce is an AI onboarding agent that does the boring half of the discovery call. I built it alone over a weekend at the TUM.ai Makeathon in Munich, for the HappyRobot challenge, which was about AI agents that take real actions (calls and emails included), not just chat.
What it does
- Workflow builder. The agency sets up its questionnaire once: questions, agent name, tone. The client gets a link.
- Reads the website first. Before asking anything, AskOnce analyses the client's site and fills in what it can, so the agent only asks what's still missing.
- Chat or voice. The client answers by typing or talking, and the brief builds itself on screen as they go.
- Brief and decision. At the end the agency gets a branded PDF and two buttons: accept (an email goes out with a booking link) or reject (a polite email goes out instead).
- Follow-up call. If the client drops off halfway, a Call now button on the dashboard has the agent phone them, ask only the unanswered questions, and write the answers back into the brief.



Why these tools
Gemini does the reading and writing: it analyses the client's website so the agent never asks what's already public, runs the chat, and writes the final brief. I first routed every chat message through a HappyRobot workflow, but each reply meant starting a run, polling it and digging the answer out of its nodes. Calling Gemini directly made the chat fast and left far less to break in front of the judges.
HappyRobot handles what it's built for: real outbound phone calls and the accept/reject email workflows. Before dialling, a Supabase function sends the agent two lists, what we already know and what's missing, so a client who answered five of seven questions on the web doesn't get asked all seven again. After the call, an extraction step pulls the answers out of the transcript and merges them into the brief.
ElevenLabs gives each agency's workflow its own voice agent. Every workflow has different questions and tone, so AskOnce creates a separate ElevenLabs agent the moment a workflow is saved, with those questions built into its prompt.
Supabase holds the data and runs the server-side functions, so API keys never reach the browser. Lovable generated the React UI: 206 of the 243 commits are its bot's. For a hackathon that's the right call. My own work was the plumbing between the three platforms.
What was hard
Voice took three attempts. The browser's built-in speech recognition only worked in Chrome and sounded like a GPS, a HappyRobot browser call came next, and ElevenLabs was the one that stuck. Even then its startup broke on Sunday morning after I changed something that worked, and I restored the earlier version twice.
The phone call broke worse. A few hours before judging, every call failed within a second because the outbound number had lost its SIP trunk (the line between the calling platform and the phone network). Two replacement numbers failed the same way. What finally worked was the number another team was already using, which is in the changelog as a known limitation.
What it became
At the closing ceremony the slide said "2nd & 3rd Place Happy Robot", and AskOnce was third. A plaque and 100 euros.

The web app is still online. The landing page and sign-in load, and the code is public on GitHub. I haven't kept the phone workflows or the voice agents running since the weekend, so treat it as a hackathon demo, not a product you can sign up for and use.

The generated landing page still says "120+ agencies onboarded". That number was never real; it's placeholder copy I didn't have time to replace, and it's the first thing I'd delete.
The team name outlived the project. In September, under the same name, AskOnce took 2nd place in BMW Motorrad's "Best Route" challenge in Zurich with something completely different: a motorcycle route planner that scores roads on how fun they are, not how fast.
