Evalgent
Back to Blog
Voice AI Testing

Self-Storage AI Reservations: Testing Unit and Promo Errors

Deepesh Jayal
15 min read
Self-Storage AI Reservations: Testing Unit and Promo Errors
On this page

A caller says, "I need a ten by ten, climate controlled, starting Saturday, and I saw the first month for a dollar." The call sounds perfect. The agent confirms every word. Then the reservation lands in your management software as a standard 10x10, dated the wrong Saturday, with a promo the facility does not run.

Nobody finds out until move-in day. The tenant stands at a gate with a rate that does not match, and a manager has to decide who eats the difference. This post is for teams that built their own self storage AI phone agent inside a storage software product. It treats self storage reservation calls as writes to a record. It covers the failures, the numbers, a test matrix and a release gate.

18.6%
Date error rate in one vendor's speech-to-text voice-agent benchmark (AssemblyAI, Sept 30, 2026)
10.0%
Error rate on codes and IDs in the same benchmark
$84 vs $285
New-customer promo vs one tenant's later monthly rent (Scripps News, Oct 2025)
3/n
Rule-of-three bound on a failure rate after n clean test calls (JAMA, 1983)

Why a reservation call is a write, not a conversation

Self storage AI reservation errors are hard to see because the agent sounds right. An AI voice agent for self storage is only as good as the record it writes.

A reservation call is the front door to a workflow. The agent captures intent, checks unit availability, quotes a price, creates a hold, and writes a record. Staff then act on that record, not on the audio.

That is why a fluent call proves little. The caller hears a friendly confirmation. The system stores whatever the agent's tool call contained. When the two differ, nothing complains. No error fires, and no one listens to the recording.

Vendors describe the same shape. StoreEase says its AI voice agent supports automated rentals outside business hours and creates a lead record in the property management software (Modern Storage Media, July 20, 2026). Cubby's Comms AI page says its agent finds a unit, guides checkout and closes the rental (Cubby). Both describe agents that write to a record. We take no view on how either performs. Their descriptions show where the risk sits: in the write.

If you run a similar agent across many facilities, each facility location is a tenant with its own street rate, units and rules. Our guide to multi-tenant voice agent testing covers that angle. For a neighbouring reservation problem, see hotel AI reservation errors.

The six fields that break

Most reservation damage falls into six fields. Each one has a spoken form, a stored form, and a way it surfaces later. Any self storage unit reservation AI has to get all six right.

Grid of six reservation fields showing what the caller says, what the agent may store instead, and how the error surfaces at move-in: unit size, climate flag, move-in date, promo, protection plan, facility.

Unit size and class

Callers say "ten by ten," "a ten-by-fifteen," or "something for a one-bedroom." The last one is not a size. A good agent maps it to a size range and asks. A weak one picks a unit.

Common unit size options run from 5x5 (25 sq ft) to 10x30 (300 sq ft), per U-Haul's size guide. Speech models confuse "ten by fifteen" and "ten by fifty." They also swap "five by ten" and "five by five" under noise. The stored dimensions must match the spoken ones. Read them back in the confirmation and compare.

Climate control and unit type

Unit type is a separate flag from size. Climate controlled unit, drive-up unit, interior, upper floor, outdoor and vehicle are different inventory classes. Each has its own rate.

The silent failure is a default. The caller says "climate controlled" in the first ten seconds. The tool call omits the field, so the system books the cheapest 10x10. The price quoted may even match the climate rate, which hides the bug until the unit is wrong.

Move-in date

"This Saturday," "the first," "next week" and "end of the month" all need the facility's local date and time zone. The agent has to anchor them to today. Dates are a known weak spot. In AssemblyAI's benchmark, the best model had an 18.6% error rate on dates (AssemblyAI, Sept 30, 2026). That is one vendor's figure for its own model and scenarios. Treat it as a reason to test, not as a rate for your stack. Our post on entity accuracy in speech-to-text explains why.

Reservation hold timing adds another trap. If your system holds units for a set window, a wrong date can let the hold expire. The unit may then go to someone else.

Promo and rate

Promos are where money errors happen. They get their own section below.

Protection plan or insurance

Whether the agent may offer, describe or require coverage is a policy question. It gets its own section too.

Facility

Chains and multi-site operators have many facilities. "The one on Main Street" matches more than one. The agent must resolve the facility before it checks availability. A unit that exists at the wrong site is still a wrong booking.

Promo errors: the first invoice is the test

Self storage promo errors cost real money, so they get the most test weight. A self storage AI receptionist that quotes a promo is making a pricing promise.

Storage promos are structured offers. StorageCafe lists first month free, 50% off the first months, a $1 first month, military, student, web-only and prepay discounts. It adds that administrative fees, locks or tenant insurance may still apply, and that eligibility can depend on unit size or location.

Each condition is a field the agent must get right. Here is a worked example. The numbers are illustrative assumptions, not any operator's pricing.

LineAmount
Web rate, 10x10 standard$89.00 per month
First month promo$1.00
Administrative fee$25.00
Lock$12.00
Protection plan$14.00 per month
Due at move-in$52.00
Month two$103.00

A caller who hears "just a dollar to get started" has been misled by omission. The honest move-in cost line is "$52 at move-in, then $103 a month." An agent that quotes only the headline passes a transcript check. It fails the move-in cost check, and the lease agreement may list different terms.

Stacked bar chart of an illustrative 10x10 reservation: move-in total of $52 against month-two total of $103, with the $1 promo shown as a small slice of the first invoice.

The FTC "free" guide

The FTC's Guide Concerning Use of the Word "Free" sets expectations for free and similar offers. Section 251.1(c) says all terms and conditions should be set out clearly and conspicuously at the outset of the offer. Section 251.1(b) ties a "free" offer to a regular price that the seller has actually charged. Introductory offers get a carve-out.

This is a guide, not a statute, and state law varies. It still tells you what a reviewer will ask. Did the agent state the conditions before the caller agreed? Is the promo one your facility actually runs? This is not legal advice. Have counsel review your offer scripts.

Rate changes after move-in

Introductory rates raise a second question: what happens to the street rate and the existing customer rate increase policy? Scripps News reported a tenant whose rent went from $169 to $173, then to $285 the next month, while the same facility advertised $84 to new customers (Scripps News, Oct 13, 2025). The article advises callers to ask about rent-increase policy and whether a price can be locked.

Your agent will get that question. It must answer from the facility's written policy or hand off. It must never invent "your rate is locked." Put the rate policy in a field the agent reads. Then test the answer.

Protection plans and insurance: the line the agent must not cross

A tenant protection plan and tenant insurance are not the same product. Inside Self-Storage explains that insurance transfers risk to a carrier and is regulated by state insurance departments. A protection plan is a contract with the operator that accepts limited responsibility for goods (Inside Self-Storage). That article is dated September 3, 2014, and its licensing details may be outdated. Check current rules with your state insurance department.

For the agent, this means three testable rules.

1. It uses the right name for the product the facility sells.

2. It does not describe coverage terms that are not in the approved script.

3. It does not call a protection plan "insurance," or the reverse.

If your facility requires coverage at move-in, the agent must say so before it quotes the total. A required add-on that appears only at the gate is the promo error again.

Compliance rules differ by state and product. This is not legal advice. Your compliance owner should approve the exact wording. The same policy-test approach is covered in testing policy adherence in voice agents.

Availability, holds and the tool call

Many reservation errors are tool errors. The agent speaks well and calls the wrong function, or the right one with a stale argument. Tool argument accuracy and silent tool failures are the general cases. Reservations add specific ones.

  • Stale availability. The agent checked ten minutes ago. Another tenant took the unit.
  • Offered, not held. The agent says "I have it reserved." The tool only searched.
  • Wrong rate plan. The agent picks the standard rate when the promo code applied.
  • Lost context after transfer. A human receives the call with no unit or date attached.
  • Duplicate reservations. A retry creates two holds for one caller.

Each one leaves a clean transcript. Only the stored record shows the problem. If you are choosing how to compare agents on these tasks, our reservations vendor evaluation covers the buyer's view. This post is for the team that owns the agent.

A test matrix for reservation calls

Build scenarios as rows and conditions as columns. Every scenario ends with an expected record, not an expected sentence.

ScenarioExpected recordCondition to vary
Names size and climate in the first sentenceSize and climate flag both setAccent, noise
Gives size late, after a price questionUnit class unchanged by the late editInterruptions
"Starting Saturday" said on Friday nightCorrect local dateTime zone
Asks for the $1 promo that has endedNo promo applied, caller toldCaller pushback
Asks for the promo on an ineligible sizePromo declined, reason givenSize, location
Asks "is the rate locked?"Written policy quoted or handoffRepeated asking
Asks "is the protection plan insurance?"Approved answer onlyPace, interruption
"The one on Main Street" with two matchesAgent asks which facilityUnclear speech
Changes size after the quoteNew price spoken, record updatedInterruptions
Hangs up before confirmationNo hold, or a hold the agent statesEarly hangup

Caller conditions should include accent, speech pace, interruptions, response delay and background noise. A caller in a parked car or a loading dock is realistic for this trade. Our post on voice agent accent robustness covers the method.

A record check in code

This is a simplified sketch. It compares the stored reservation to what the scenario asked for, and recomputes the first invoice. Adapt the field names to your system.

def check_reservation(expected, record, rates):
    errs = []
    for f in ("size", "unit_type", "climate", "facility_id", "move_in"):
        if record.get(f) != expected[f]:
            errs.append(f"{f}: said {expected[f]!r}, stored {record.get(f)!r}")
    due = (rates["promo"] + rates["admin_fee"] + rates["lock"]
           + rates["protection"])
    if abs(record["quoted_move_in_total"] - due) > 0.01:
        errs.append(f"quoted {record['quoted_move_in_total']} vs due {due}")
    return errs

Run it after every simulated call. A pass means zero errors. Do not average. One wrong climate flag is one wrong tenant.

Reading the numbers: how many calls is enough

Zero failures in a small test proves little. The rule of three gives a quick bound. With zero failures in n independent trials, the 95% upper bound on the failure rate is about 3/n (Hanley and Lippman-Hand, JAMA 1983).

Clean calls (n)95% upper bound
3010%
605%
1003%
3001%

So thirty clean calls cannot rule out a one-in-ten error rate. Pick a ceiling per field before you test. For money fields such as the move-in total, aim for a bound near 1%. For rare branches such as a promo that ended last week, test fewer calls but pin each one to a fixed record.

Curve of the 95 percent upper bound on failure rate after zero failures, showing 10 percent at 30 clean calls, 5 percent at 60, 3 percent at 100 and 1 percent at 300.

The calls must be independent. Thirty runs of one scenario count as one scenario. Vary the caller, the unit, the date and the noise.

How to test a self storage reservation agent before each release

Use this sequence for every prompt, model, rate-table or tool change.

1. Freeze a fixture. Load a test facility with fixed units, rates, promos and fees. Include one promo that has ended and one size that is sold out.

2. Write expected records. For each scenario, write the record you want, not the script the agent should say.

3. Generate callers. Vary accent, pace, interruptions, delay and noise. Include at least one caller who changes their mind after the quote.

4. Run on the real path. Call the agent over the same phone or SIP route live callers use. A text-only run skips the audio errors.

5. Check the record. Compare stored fields and the recomputed move-in total to the expected record.

6. Score the audio. Listen for the price and date as spoken. A transcript can hide a mispronounced figure.

7. Gate the release. Block it if any money or unit field fails, or if the bound on a field is above your ceiling.

8. Keep the failures. Add each new live failure to the fixture set as a permanent regression case.

Evalgent generates test scenarios from an agent's prompt and flows and simulates callers over phone, SIP or WebRTC. It judges from the audio rather than only the transcript, and teams can add custom metrics, such as a move-in-total check, that run on every call. Evalgent works with teams to set up evals for their first agent. For the change process itself, see shipping voice agent prompt changes safely and the go-live checklist.

Monitoring live reservation calls

Self storage AI reservation errors also drift after launch, so monitoring matters as much as pre-release tests.

Tests cover what you thought of. Live calls cover what callers do. Facilities, rates and promos change weekly, so the fixture drifts.

Push recordings and the final write-back record for each call into one place. Score them for the same fields. Useful live signals:

  • Reservations where the stored size differs from the spoken size.
  • Quoted totals that differ from the recomputed total.
  • Promo applied where the facility has no active promo.
  • Calls that end with "I have it reserved" and no hold written.
  • Reservations that staff edit within an hour of creation. Edits are a cheap proxy for agent errors.

Evalgent's production monitoring takes call recordings, transcribes them, maps them to scenarios and judges them. It flags tool-call failures, policy failures, PII leakage and latency spikes, with fix recommendations. See monitoring AI voice agents in production for the wider approach.

When you sample, sample by facility and by promo week. A rate-table update is a release, even if no code changed.

Where this sits next to other storage and booking posts

Move-in is one end of the tenant lifecycle. Delinquency calls sit at the other end, with very different rules. Those are covered in auditing AI collection calls for self-storage lien rules. Moving customers often call about both storage and a mover, so also see moving company AI lead quality. Venue bookings share the date, add-on and deposit pattern in party booking AI for venues.

Frequently asked questions

Can an AI agent take self storage reservations by phone?

Yes. Vendors such as StoreEase and Cubby describe agents that handle rentals and create records. Whether yours does it correctly is a testing question. Check the stored size, climate flag, date, promo and move-in total against what the caller asked for, not against the call transcript.

What goes wrong when AI books a self storage unit?

Six fields fail most often: unit size, climate or unit type, move-in date, promo, protection plan and facility. The call usually sounds fine. The error appears in the stored record, and the tenant finds it at move-in. Compare each field to the expected record after every test call.

How do you test an AI agent that quotes self storage promos?

Load a fixed set of rates, promos and fees. Recompute the move-in total and month-two total from that data. Compare them to the agent's spoken quote and its stored quote. Include ended promos, ineligible sizes and callers who ask for a promo they only half remember.

What should an AI say about the first month $1 self storage promo?

It should state the $1, then the other amounts due at move-in, such as administrative fees, a lock and any required protection plan. It should also give the month-two rate. StorageCafe notes that fees and add-ons often still apply. Your offer script should be approved by counsel.

Can an AI sell tenant insurance or a protection plan for self storage?

That depends on your state and product, so ask your compliance owner. Insurance can require licensing. Protection plans are contracts with the operator. The agent should use the approved name and wording, avoid describing coverage terms it was not given, and hand off when asked detailed questions. This is not legal advice.

How do you stop AI from reserving the wrong climate controlled unit?

Make climate a required field in the reservation tool, not an optional note. Have the agent read back size, type and climate before it creates the hold. Then test with callers who say "climate controlled" early, late and in passing, and check the stored flag each time.

How many test calls do you need for a self storage voice agent?

It depends on the failure rate you must rule out. After zero failures, the rule of three puts the 95% upper bound near 3 divided by the number of independent calls. That is 10% at 30 calls and 1% at 300. Vary callers and scenarios, not just repeat runs.

How do you monitor a self storage AI after launch?

Score every call, not a sample, on the same fields you test. Compare spoken and stored size, quoted and recomputed totals, and promo use against active promos. Track reservations that staff edit soon after creation. Re-run your fixture whenever rates, promos or prompts change.

The bottom line

Self storage AI reservation errors live in the stored record, so test the record and the first invoice, not the transcript. Score every live call on unit class, climate flag, date, promo and move-in total, and treat each rate-table change as a release.

Related Articles