Vektor Labs
VEKTOR LABS
00%

Speak it · Bill it

KaasaVoice-first GST billing for retail shops.KuralAI voice agents that make and take your business calls.AboutContactTalk to us

Kural · Technology

WhathappensonaKuralcall.

This page is for the person who has to sign off on it: an IT head, a hospital compliance officer, a reviewer doing diligence. Real phone lines, streamed speech in both directions, a gate that runs before a single number is dialled, and data that stays in India.

How a Kural call runsA dial request passes a compliance gate — entitlements, telecom registration, do-not-call list, calling window, attempt caps, balance and a free concurrency slot — before the telephony adapter connects the line. On every turn, caller audio goes through voice-activity detection to speech recognition, the text to the language model, and the reply sentence by sentence to speech synthesis and back to the caller; a caller speaking over the agent cancels playback. When the call ends, a structured result with the recording and transcript is delivered to the customer by webhook, API or the console.Compliance gatewindow · DND · consent · caps · balanceTelephonyreal Indian phone lineEVERY TURN, STREAMEDVoice activityend of turn · barge-inSpeech → textTamil · English · mixedLanguage modelyour facts, your scriptText → speechnatural voice, streamedcaller audio in · agent audio out · interrupt cancels playbackYour systemlookup · book · check, during the callStructured resultfields · recording · transcriptwebhook · API · consoleATS · HIS · CRM · a sheetSpeech and language engines are chosen per agent and locked for the call, with fallback chains behind circuit breakers; a voice never changes mid-call.

Oneturn,streamedendtoend.

Caller audio arrives from the carrier over a signed stream and goes straight into speech recognition. A voice-activity model decides when the caller has finished a thought — not when they paused for breath — and the transcript goes to the language model with the conversation so far, the agent's instructions and the facts it is allowed to use. Tokens come back as a stream; the reply is sent to speech synthesis a sentence at a time and played while the rest is still being written.

If the caller speaks over the agent, playback is cancelled and the new speech takes over — a real interruption, not a restart. If the model is slow to start, a short natural filler keeps the line alive. Nothing on this path touches the database: at call start one bundle is loaded with the agent's published configuration, the chosen providers and the customer's compliance policy, and the call runs from memory.

Tamil and English, mixed

Recognition and synthesis are chosen per agent for the language the caller actually speaks, including both in one sentence. Hindi is in beta.

Providers locked per call

Telephony and the voice never change mid-call. Recognition and the language model have fallback chains behind circuit breakers, invisible to the caller.

Tools during the call

Lookup, availability and booking run against your system while the caller is on the line. The agent only promises what a tool has confirmed.

Clean handoff

When a person is needed, the call is transferred with everything said so far attached. If a tool fails, the agent follows your configured fallback and the result says so.

Sevenchecksbeforeanumberisdialled.

Outbound calling in India is regulated, and the people being called did not ask for a machine. So the gate is code, not a policy document. Every dial request passes these checks in order, and a rejection is recorded with its reason:

  1. Is outbound allowed for this customer right now? Suspended or incomplete accounts cannot dial.
  2. Is the telecom registration for commercial calling (TRAI / DLT) verified and current?
  3. Is the number on a do-not-call or suppression list?
  4. Is it inside the calling window the customer set, in their time zone? If not, it waits for the next one.
  5. Are the attempt caps for the day and for the campaign respected?
  6. Is there balance or an included minute to pay for the call?
  7. Is a concurrency slot free? If not, the call queues instead of failing.

Inbound has its own rule: the agent says what it is at the start of the call, and offers a person whenever the caller asks for one.

Agentsareversioned,likecode.

A Kural agent is a configuration: the conversation, the facts it may use, the fields it must collect, the tools it can call, the voice and the languages. Each change is a new version. It is validated, tested in the console on a browser call or an allow-listed number (never billed), approved by the customer, then published. The previous version stays one click away. Live calls finish on the version they started on, because published versions are immutable.

The customer edits the safe knobs — hours, slots, the fee table, who to transfer to. Vektor edits the prompts. That split is what keeps a healthcare agent from drifting into medical advice after a well-meant edit.

Trigger→liveaction→result.

  • Trigger. Your system calls the API with the agent, the number, your own reference id and any context. The request is idempotent.
  • Act. During the call, the agent uses the tools you configured — look up a patient, check a slot, book it — with credentials encrypted per customer. Tool arguments are validated against a schema and are never built from raw caller speech.
  • Result. A signed webhook carries your reference, the outcome, the structured fields and the status of every tool call, with retries for 24 hours. The same record is available by API and in the console, with the recording and transcript attached.

Failure is an outcome, not silence: a tool that times out produces a result that says so, so your system can follow up.

Whatitrunson.

The runtime, control API, admin app and customer console are TypeScript on Node 22, behind Caddy for TLS. Vendor SDKs live only inside adapters; the core of the call loop depends on ports, so swapping a provider is a new adapter that passes the same contract tests.

Wherethedatalives,andwhocanseeit.

Call records, redacted transcripts and recordings are stored in India. Audio and text go to speech and language providers over TLS only for the length of the call. The customer console, the admin app and the API run behind separate domains; the admin app sits behind an identity gate with MFA. Personal data is masked by default in lists, exports are watermarked, and healthcare customers get a stricter tier where revealing a record needs a reason and is logged.

Roles

The customer is the Data Fiduciary; Vektor Labs is the Data Processor. A data-processing agreement and a published sub-processor list are part of onboarding.

Consent

Every call opens with an AI disclosure. Consent is recorded per call and travels with the record.

Data-subject requests

Access, correction and erasure requests have a workflow in the console with a service level, and erasure jobs that are verified rather than assumed.

Breach register

An incident register and a runbook for the 72-hour notice to affected individuals, with a contact matrix per customer.

Retention

Transcripts and recordings expire on the schedule the customer chooses. Retention jobs run on the queue and are logged.

Audit

An immutable audit log. Customers can see every time Vektor staff touched their data.

The company-wide position on encryption, access, backups and the grievance officer is on the security page.

Readit,thentryit.

The demo console is open. Open a sample workspace, place a browser test call, interrupt the agent, and look at the result it hands back. Test calls are never billed and never leave the sandbox.

Put Kural on one real call.

Give us one list, or one number that rings too often. We'll write the call with you, run it on a real line, and show you what came back.

One number, one credit pack, no free plan. Pricing is published.