okeep.voice
Your user talks. Your screen fills itself in.
okeep.voice is a conversation layer for vendors of vertical CRM and DMS. It puts a voice copilot inside your product in weeks, not quarters — you do not build telephony, and you never hand your customer to anyone.
One call inside okeep.auto — our own workshop CRM, running this integration in production. What the caller says, and what appears on screen in the same second.
A panel from okeep.auto during a call. On the left, the caller card the copilot puts on screen before anyone picks up: the call is ringing at twelve seconds, the caller is Sarah Mitchell, her Ford Focus is already in the shop, the live service line reads suspension diagnostics, and one button offers to create the job. On the right, the new-job form filling itself in from the call: customer Sarah Mitchell, vehicle Ford Focus, the work as suspension diagnostics for a knocking at the front, and a date of Thursday at ten — that last row tagged as changed, because she first said Tuesday. Nothing reaches the database until Dan presses the button.
Four ways to put a phone line in your product.
The same call, four ways to answer it — and what each one leaves your team doing afterwards.
Build it yourself
Telephony, turn-taking and transcription become somebody's full-time job.
the phone line is on you
A generic voice platform
You get a call runtime. The rest of it you still build.
the data model is on you
A white-label agent
Quick to launch — but someone still types the job in afterwards.
your user gets a recording
okeep.voice
Writes the job up during the call, inside your product, under your brand.
your user gets the job
Service API · line config
This does not replace the person on the phone.
Your user does the talking and stays invisible to the caller; anything they typed by hand is never overwritten. The bot is the fallback, not the product.
One line's configuration and what it decides. During business hours the call rings your operators first, with the bot as the fallback if nobody picks up within twenty-five seconds; after hours the bot takes the call instead of voicemail. Whether the shop is open is worked out from the hours your own handler supplies.
Service API · line state
Switch the assistant off. The telephone keeps ringing.
Three states, and the service writes the sentence your user reads for each one. Off stops the assistant, not the line: the call goes straight to whoever is on the roster that day.
The assistant speaks Polish, and only Polish, in this version. These notices are the product's own words; there is no English one to show you yet.
The three states a line can be in, each with the sentence the service returns to the owner. Active says the assistant is on. Paused says it is held and calls go to the team. Off, the state selected here, says the assistant is off and the telephone still works — calls go to the team — and adds the date the reserved number is held until. The notices are Polish because the product speaks only Polish so far.
Service API · calls
The calls nobody finished are the ones worth reading.
Every call comes back as a row: who rang, how it ended, how long the bot held it, and whether anyone has dealt with it since. Two of the five endings count as missed, and those two are what the badge counts.
The journal your product reads back, filtered to the calls counted as missed. Four rows: a message taken at 18:42 from a caller asking about a timing belt and wanting a call back after four, still unhandled; a call abandoned after twenty-one seconds at 17:58, also unhandled; a message taken at 16:30 asking for a brake quote, already dealt with; and a three-minute call answered by a person at 11:04. Each row carries how long the call ran, how much of it the bot held, and whether anyone has picked it up since.
Your customer will never notice we are here, and that is the point.
A conversation layer, not a CRM. The database, the interface, the brand and the customer stay yours — and the call runs on your number or on ours.
- The call — your number or ours
- okeep.voice — listens, writes, handles corrections
- your product, in real time
- your database, your interface, your customers
- your user approves — then it is saved
@okeep/voice-node
The first question at your standup is how much of this lands on your team.
Two packages and one endpoint. You implement the handlers you need, and the ones you skip answer 404 — which is the correct answer, not an error. The caller card ships as a component; the live form is a hook into the form you already have.
The adapter a vendor writes, in about a dozen lines: two packages installed, the tenant secret read from the environment, and the handlers they choose to fill in — the shop's hours and services, who is calling, the draft booking a person then approves, and four notifications about the call itself. Four further handlers are left out, and any action with no handler answers 404.
How do you know it works outside a demo?
The panel above is okeep.auto — our own workshop CRM — on this integration, in production. Automotive is the one vertical hardened so far. Running a workshop rather than building software? You want okeep.auto, not this page.
What a technical team asks first
Does the copilot write into our database?
No. It never writes into your order tables. It fills a form, and a person saves it — the same person who would have typed it in afterwards.
What happens when our adapter is down?
The call still connects. A missing adapter degrades to the cached shop snapshot and then to voicemail; it never becomes a dropped call. Copilot pushes are best-effort by design, so a failed screen update cannot fail a conversation.
What if the caller changes their mind halfway through?
A change of mind arrives as a fresh snapshot plus the list of fields that moved, so your interface can say the client changed this instead of silently overwriting it. Whatever your own user typed by hand is never touched.
Whose telephony is it?
Ours. We own the line, the routing, the recording, the live transcription and the extraction that turns a conversation into fields; the calls run over Twilio. What you own is the adapter, the screen and the customer.
Can a workshop keep the number it already advertises?
Yes, by forwarding it. We provision a number, and their operator forwards the existing one to it — nothing on their van or their Google listing has to change. One consequence worth knowing up front: their handset then shows our number rather than the caller's, and who is calling appears on the call card instead.
How stable is the contract?
It is v1 and it may still change in breaking ways. It is also what runs behind okeep.auto today, so it changes with a real consumer attached. Ask for a sandbox tenant and we will version it with you.
Which languages does the assistant speak?
Polish, and only Polish. Everything a caller hears is pl-PL, and automotive intake is the one vertical hardened so far. Another language or another vertical is a conversation, not a setting.
What does it cost?
There is no published price yet, and we would rather say so than invent one. There is also no card and no procurement round to get started: we set up a tenant, a test number, and walk your team through the first integration.
Tell us who is calling you
How many calls a day, who picks up when everyone is busy, and what gets lost between the call and the job. We will tell you what okeep.voice would hear in yours — and what it would miss.