The short version

Maya is an AI voice agent. She called 1,508 small business florists across 17 US cities between April 29 and May 7, 2026. She asked one question: how much does a normal Mother's Day bouquet cost, and are you still taking orders for May 10? Every call was recorded. Every transcript was structured into a database. 463 calls produced a usable price quote. The full results are public, free, and on this site.

The whole project ran on standard, off-the-shelf tools. Nothing custom-built, nothing proprietary. Total cost was around $400. The interesting part is not the tech, it is what falls out of the data when you actually do this at scale.

The stack

TelnyxSIP trunking and outbound voice. Handles the actual phone calls and audio routing.
ElevenLabsVoice agent platform. Hosts Maya, runs the conversation, generates the speech.
Make.comWorkflow automation. Triggers calls in batches, writes results to Google Sheets, pipes data into Excel.
ClaudePost-call analysis. Reads transcripts and extracts price ranges, availability, sentiment, and AI-detection flags.
OutscraperSource of the original 1,632 florist phone numbers and business listings across 17 cities.
Excel + JavaScriptFinal cleaning, deduplication, and the public-facing dataset on this site.

How a single call worked

Maya lives inside ElevenLabs as a conversational voice agent. ElevenLabs is connected to Telnyx, which provides the actual phone-line connection through SIP trunking. When a call is initiated, ElevenLabs handles the conversation logic and Telnyx handles the carrier-grade audio routing to the florist's phone number.

Calls were kicked off in batches against the master list of 1,632 florists. Make.com captured each call's outcome, transcript, and audio file as it completed, then wrote them into a Google Sheet for processing.

The agent had two goals on every call: find out the price, and find out whether the shop was still taking orders for May 10. Once both were answered, Maya thanked the florist and ended the call. Average call length was 36 seconds.

The full audio and the full transcript were saved for every call. Those transcripts are what generated the data on this site.

The Maya prompt

This is the actual system prompt Maya ran on. Lightly trimmed for length, but the rules and reactions are unedited.

You are Maya. You are calling a florist on your lunch break to figure out flowers for your mom for Mother's Day. You have already called one other place. You are not stressed about it but you want to get it sorted today so you can stop thinking about it. Warm, quick, casual. You react first, think second. YOUR ONLY GOAL Find out roughly what a normal Mother's Day bouquet costs at this shop and whether they still have availability. Once you have BOTH pieces of information, wrap up naturally and end the call. HOW YOU TALK Short. Reactive. Natural. Like you are half-distracted but still friendly. - 1 sentence per response, occasionally 2 if you need to follow up - React before you answer ("oh", "yeah", "hm", "oh okay") - Do not finish every sentence cleanly. Real people trail off sometimes. - Fillers are fine but do not stack them. One per response. HOW YOU REACT TO PRICES Under $50 - "Oh nice, okay" $50 to $80 - "Yeah okay, that is about what I figured" $80 to $110 - "Oh okay, a little more than I thought" Over $110 - "Wow okay, yeah alright, good to know" A range - "So somewhere around [low] to [high], got it" Already sold out - "Wait seriously? I did not realise it filled up that fast" IF THEY ASK QUESTIONS Are you AI - "Yeah I am actually, just helping someone sort out flowers. Sorry if that is weird." THINGS MAYA NEVER DOES - Never repeats a phrase she already used in this call - Never uses florist catalog language - Never mentions research, data, surveys, or price comparison - Never speaks more than 2 sentences in a row

The full prompt is about 1,200 words and includes edge case handling for sold-out shops, rude florists, holds longer than 25 seconds, and what to do when the florist asks Maya for a phone number or address.

What counted as a successful call

A call was marked successful if Maya got at least one of the following before the line dropped:

Of 1,508 calls placed, 493 met that bar overall. After dropping a small number of obvious speech-to-text errors (florists quoted at $1 or $5 when the real number was clearly higher) and after mapping each call to one of 17 US metros, 463 successful calls form the public dataset.

The remaining ~1,015 calls were voicemail, hangups, robocalls being misclassified as florists, dead numbers, or florists who answered but refused to give a price.

How prices were extracted

After every call, Claude read the transcript and pulled out two numbers: the lowest price the florist mentioned and the highest. If the florist said "$65 to $85," that was straightforward. If the florist said "minimum is 50 but our designer's choice goes up to 200," same thing. The model had explicit instructions to ignore delivery fees, taxes, and "starting at" prices that referred to single stems instead of bouquets.

The "median bouquet price" headline number on the homepage is the median of (low + high) / 2 across all 463 successful calls. The mean is higher (~$96) because of a small number of $500 to $1,000 outliers. Median is the more honest summary.

What we did and did not do

Limitations

This is a snapshot, not a complete census. Specifically:

The dataset is open

The full 463-row dataset is queryable on the homepage. If you are a journalist or researcher who wants the raw CSV with full transcripts, reach out: nick@promptoast.ai.

Petal Price is a project from Promptoast. More about who built this.