Naqvix logo
Book a Call
Back to Work
NA

Naqvix AI Systems

Build

Four AI Systems Built to Show Their Working

Artificial Intelligence & Business AutomationGlobalactive
The four AI systems overview — lead qualifier, booking agent, document extractor and review responder, each running the same intake, judgement and handoff pipeline

The Challenge

Most of what gets sold as an AI bot is a prompt with a text box around it. It answers confidently, it cannot explain how it reached an answer, and it will cheerfully do the one thing you never wanted automated — apologise on your behalf to somebody threatening legal action, or pass a misread invoice total into your accounts.

Three failures cause almost all of the damage, and none of them are model quality:

  1. It cannot be audited. A lead is scored 82 and nobody, including the people who built it, can say which answer produced the 82. Sales stop trusting the number, and the system quietly falls out of use.
  2. It does not know its own limits. A refund demand, an allergy, a solicitor's letter — these get the same generated politeness as a compliment about the parking.
  3. It is confidently wrong. An extracted total that is off by two hundred looks exactly like a correct one. A field the system admits it could not read is far cheaper than a number it invented.

We wanted a house pattern for this work rather than a new judgement call on every build.

The Solution

Four systems, one shape. Each takes unstructured input, produces a structured judgement, shows the reasoning next to the answer, and hands over to a person when the stakes outgrow the machine.

Lead Qualifier. Four questions, then a score out of 100 — scored on budget, timeline, authority and service fit. The score is never shown alone: every signal appears beside it with the points it contributed, so a salesperson who disagrees can see exactly which answer moved the number. A perfectly funded, urgent enquiry for something we do not sell scores zero on fit and does not reach a consultant's calendar.

Booking Agent. It resolves availability for the chosen day before it offers a single time. A taken hour renders as taken; a closed day offers nothing at all. The agent structurally cannot promise a slot that is already gone, which is the failure that turns a booking bot into a complaint.

Document Extractor. An invoice becomes structured fields, and the figures are then re-added independently. When subtotal plus tax does not equal the stated total, the system says so and names the discrepancy rather than passing a clean-looking number downstream. Fields it could not read say so plainly instead of guessing.

Review Responder. Sentiment and aspect classification, then a drafted reply — except when the review mentions money, health, or legal action. Those leave automation entirely: nothing is posted, and the review is routed to a person who owns both the reply and the follow-up. Knowing when not to answer is the feature.

Rules first, model second. The scoring, extraction and classification logic is deterministic and covered by assertions, so the same input always produces the same output and any failure can be reproduced. A hosted model slots in behind the same interface where it genuinely adds something. The rules are the floor: with no model reachable, the system degrades to explainable scoring rather than to nothing.

Results

Four working systems on a shared reasoning layer, with a self-check suite of 22 assertions covering every branch that could fail quietly.

The suite paid for itself twice during the build, and both bugs are worth naming because both would have shipped looking correct:

  • The invoice-number pattern used a whitespace class that crossed a line break. On any document beginning with the heading INVOICE, it matched the heading and captured the first word of the next line as the invoice number. It never threw. It just returned the wrong string, every time, plausibly.
  • The vendor pattern was missing its case-insensitive flag, so a document reading "From: Northwind Supplies Ltd" reported the vendor as not found. Because the system is designed to admit what it cannot read, this looked exactly like correct, honest behaviour — which is precisely what made it dangerous. It was only caught by asserting the expected value rather than eyeballing the screen.

Both are now pinned by assertions. That is the argument for this way of building: a model-only pipeline gives you no place to put either of those tests.

The pattern is the deliverable as much as the four systems are. Every one of them can answer three questions a black box cannot: why did you decide that, what could you not read, and when do you stop and fetch a human.

4

Systems on one shared reasoning layer

22

Assertions covering silent-failure branches

2

Silent bugs caught before release

3

Escalation categories that never auto-reply

Deliverables

Lead qualification with a fully itemised, auditable score
Availability-aware booking that cannot offer a taken slot
Invoice and receipt extraction with independent arithmetic verification
Review sentiment and aspect classification with drafted replies
Escalation rules that remove money, health and legal cases from automation
Deterministic rules layer that works with no model reachable
Assertion suite covering every branch that can fail silently

Technologies

Next.jsReactJavaScriptNode.jsOpenAI GPT-4oAnthropic ClaudeOpenRouterOllamaLangChainPythonDockern8n

Project Screenshots

The four AI systems overview — lead qualifier, booking agent, document extractor and review responder, each running the same intake, judgement and handoff pipeline
Lead qualifier scoring an enquiry 95 out of 100 as sales-ready, with the full breakdown: budget band, timeline, authority and service fit, each showing the points it contributed
Booking agent with a confirmed slot and reference code. Taken hours are rendered as unselectable, so no time is ever offered that is already gone
Document extractor reading an invoice into structured fields at full confidence, with the arithmetic independently verified against subtotal and tax
The same extractor refusing to trust a total: every field read correctly, but the integrity check reports the stated total is off by 229.00 against subtotal plus tax
Review responder holding back an escalated review. It mentions illness and a refund, so it is marked not auto-replied and routed to a person instead of receiving a generated apology

Ready to build something similar?

Tell us about your project and we'll show you exactly how we'd approach it.

Start a ProjectSee More Work