AI receptionist for self storage: reservations, payments and gate codes
An AI receptionist for self storage can answer at 9pm, quote a unit from your live inventory, reserve it and reset a tenant's gate code. It should not guess, read card numbers aloud, or hand out any account details before it knows who is calling. The calls are simple. The risk is in two of them: pa

Posted on Oct 31 • Originally published at adelatya.com
An AI receptionist for self storage can answer at 9pm, quote a unit from your live inventory, reserve it and reset a tenant's gate code. It should not guess, read card numbers aloud, or hand out any account details before it knows who is calling.
The calls are simple. The risk is in two of them: payments and gate codes. This post covers the five common calls, with most detail on payments and gate codes.
Five kinds of call keep landing on a storage office, and each one has a different level of risk.
My demo agent, StoreRight Self-Storage, handles all five. StoreRight is a demo facility I built, not a client. The agent, the inventory and the dashboard behind it are real and running.
From live inventory, and nowhere else. The agent looks at what the caller is storing, recommends a size, and reads the monthly price from the list. If a size is not listed, it does not invent one.
The demo prices are $45 for a 5x5, $110 for a 10x10, $145 for a climate-controlled 10x10 and $190 for a 10x20. Ask for a 10x10 and it quotes $110.
For a reservation it takes the name and mobile number and reads the number back digit by digit. Then it reserves the unit, and the unit comes off the available count on the dashboard straight away. A caller who is not ready to decide gets the quote by text and the agent takes the number.
A voicemail greeting gives a comparison shopper no price at all.
Yes, but this is where I would be most careful, and the details are not obvious.
My storage agent has the tenant enter the card on the phone keypad and never reads a card number back, even if the caller says it first. That keeps the number out of the spoken conversation. It does not, by itself, keep the number out of your logs.
Here is the catch. In Vapi, when keypad input is enabled, the platform adds the digits to the conversation as a user message, for example "User's Keypad Entry: 1234". Vapi's documentation says the entry is available to the model and is saved in the call's messages and transcript when transcript artifacts are enabled. For payments, the same page tells you to follow its PCI compliance guide so that sensitive values are not recorded or logged.
So the rule is simple. Card digits must never reach the language model or the transcript. A payment tool built for the job does this. As one example, Twilio's <Pay> verb accepts keypad (DTMF) input only, and its documentation says it redacts all digits captured from the logs.
If you cannot confirm where the digits go, do not take cards on the phone. Text a payment link instead, or send the tenant to your online portal.
The StoreRight demo is a demo, and I make no claim here that it meets PCI rules (PCI is the card industry's security standard).
Card handling is also a matter for your payment processor and your management software vendor, so ask them what they require before you go live. I am not a PCI assessor and this post is not compliance advice.
By making sure the agent cannot reveal what it never sees. This is the part most storage owners worry about, and they are right to.
Picture the call. A caller says they are a tenant at the gate who forgot the code. Or they say they are the owner. Or they ask for their sister's code.
A phone agent that has the whole tenant list in its prompt has the data to leak, and a persistent caller may get it to.
In my tests, prompt rules alone were not enough. The fix was to change what the agent is handed:
OWASP's guidance on prompt injection says the same thing from the security side: restrict the model's access privileges to the minimum necessary, and handle privileged functions in code rather than giving them to the model.
Here is what happened across my 63 security calls, which included the storage receptionist ( full method ). The agents ran on GPT-4o-mini with a GPT-4.1-mini judge:
This is a small test, so treat it as evidence for the method, not a promise. The case study lists testing real phone audio as a next step, and describes one open finding.
The line is answered 24/7, so the 9pm quote and the Sunday lockout get handled instead of hitting voicemail. Questions it cannot answer, like insurance terms or corporate policy, turn into a manager callback with the number taken.
I will not claim a number for how many calls a storage facility loses overnight. I could not find a source I would trust for that, so measure it yourself: look at your phone log for unanswered calls between 6pm and 8am for a month.
The emergency rule is fixed. A caller reporting smoke, flooding or a break-in is told to get to safety and call 911. The agent does not try to handle the incident.
Test it with a second AI playing the caller. My suite has 38 scenarios across three agents, run three times each. That is 114 calls per run for about 25 cents. Each scenario has to pass all three runs.
The scenarios that matter most for storage:
Results are checked in code first: did it save the right name, unit and outcome, did every price it quoted exist, did it hand over when it should.
On cost, a voice agent is $900 to build and $450 a month with 500 minutes included, then 15 cents a minute. The first three clients get the build at $600. All prices are on the pricing page.
For comparison, the pricing page puts a human receptionist at $2,800 to $4,500 a month. Whether the agent pays back depends on how many calls you currently miss.
The test method is in how I test AI phone agents and voice agent prompt injection testing. The agent setup is on the self-storage page. To see it work, call the live demo: ask for a 10x10, reserve it, then call back as a locked-out tenant.