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:
- A specific price or price range for a Mother's Day bouquet
- An explicit "we are sold out" or "we are not taking orders" with the date
- A clear "we are not a florist" or "wrong number" reply that confirmed the listing was bad
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
- We did not lie about what Maya is. If a florist asked Maya whether she was an AI, the prompt instructed her to say yes. 10 florists asked. All 10 were told.
- We did not place orders. Maya never gave a credit card, address, or last name. No real customer was simulated.
- We did not scrape websites. Every price on this site was spoken aloud by a real human florist.
- We anonymized everything that could identify a small business. Audio recordings and pull quotes published on this site do not name the florist or the city. The full searchable list contains shop names because the price a business charges is public commercial information.
- We did not pay florists for data. The full project, including phone bills, voice agent compute, and API costs, came in around $400.
Limitations
This is a snapshot, not a complete census. Specifically:
- Sample sizes vary by city. New York has 54 successful calls. Portland has 5. Smaller-N cities have wider error bars on their median price. Where it matters, the sample size is shown next to the city and flagged on the chart.
- Big-box and grocery florists are underrepresented. Maya called florists pulled from public business listings, which prioritize independent shops over Whole Foods or Kroger.
- Prices reflect what florists quote, not what customers pay. A florist who says "$75 to $125" might really sell more $90 arrangements. The data is what was offered, not what was sold.
- Speech-to-text errors exist. A handful of price extractions caught the wrong number. We removed values like $1 stems and $5,000,000 typos in cleaning, but more subtle errors are possible.
- Maya occasionally got tripped up. A few calls ended early or with garbled numbers. Those calls were marked "failure" and excluded from the dataset.
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.