Krishnapriya Venkatakrishnan

I build AI and voice systems with fintech-grade reliability, where deterministic code, not the model, makes the decisions that matter.

6 years regulated core banking · recent LLM & voice-agent work · Stockholm

Selected work

Two systems, one idea: the model handles the conversation, and deterministic code makes the decisions that carry weight. Both were built to be tested by trying hard to break them.

How the systems are built: a language model proposes, a deterministic core decides, approves, and verifies using fixed testable rules, and only approved output reaches an action or human review. Anything rejected is contained and nothing is recorded.

Debt-Collection Voice Agent

A voice agent that negotiates repayment on an overdue account. Every amount it offers is decided by fixed rules, not by the model.

Problem

Collections calls are heavily regulated. A wrong balance, a discount the company never authorised, or a promise it can’t keep each create real liability, and a model left to its own judgement will produce all three.

What I did

  • Split the system in two: the model runs the conversation, and a separate rule engine decides what counts as an acceptable repayment arrangement. The model can only quote figures the rules give it, so it cannot invent or approve anything on its own.
  • Made the rules weigh every legal repayment option against what the caller says they can afford and choose the best one, rather than follow a fixed script.
  • Built the legal requirements in directly: confirm who you are speaking to before discussing the debt, give the required disclosures, stop when asked, and never threaten or pressure. Every completed call is checked automatically for compliance.

Outcome

  • The agent cannot state an amount it was not given, and nothing that breaks the rules can be recorded even if it misspeaks.
  • It was tested against dozens of difficult callers, including people disputing the debt or asking it to stop.
  • It is live and handling real calls, from both a browser and a phone number.
The Debt-Collection Voice Agent call view: a live transcript with the automated compliance check shown alongside it.
  • Deepgram Voice Agent
  • GPT-4o
  • Python
  • FastAPI
  • PostgreSQL
  • Supabase

Clinician-in-the-Loop Health Visit

Software for a preventive-health visit: an AI-drafted summary before the appointment and a plain-language recap afterwards, with every claim checked before the clinician sees it.

Problem

An AI can draft a genuinely useful summary of a patient’s history. But it should not be trusted to decide whether a figure is accurate, which way a result is trending, or how serious it is.

What I did

  • The model decides what to highlight and writes the summary. A separate check then verifies every statement against the patient’s actual record: the numbers have to match, the trend direction is recalculated, and the risk level comes from the record, not the model.
  • Anything that fails a check is set aside in a clearly marked list with the reason, instead of being shown as if it were fact.
  • The clinician makes every decision, and nothing can be signed off until each item has been reviewed.

Outcome

  • Planted errors, such as an altered number or a reversed trend, are caught every time, with no false alarms on the correct cases.
  • The clinician can always see which claims were verified and which were rejected, and why.
  • It runs on synthetic data only, with no real patient information involved.
The Clinician-in-the-Loop review screen: one finding verified against the record, another rejected and set aside with its reason.
  • Next.js 16
  • React 19
  • TypeScript (strict)
  • Zod
  • TanStack Query

More work

Earlier projects, in brief.

About

For nearly six years I built regulated core-banking software: ledgers, payments, reconciliation. In that world a wrong number isn’t a bug, it’s an incident, and “the system said so” has to hold up to an auditor.

I build AI and voice systems with the same instinct. The model handles language, but the decisions that carry weight run through code that’s fixed and testable, not left to the model. Language models will happily make things up; building this way means that when something goes wrong, it’s contained and I can see it.

Contact

Available for select contract work in AI, voice, and full-stack.

krishnapriyavenkatakrishnan@gmail.com