Solution — AI Integration
An assistant that answers from your data, and shows where the answer came from
A general chat model does not know your prices, your tolerances, your warranty terms or which of your customers is on which contract. Making it useful inside a company is less about the model than about what you put in front of it, and what you refuse to let it do.
KodDelta builds AI assistants that answer from your own documents and records using retrieval-augmented generation: source text is chunked, indexed, retrieved at question time and cited in the answer. The assistant inherits the asking user's permissions, so it cannot surface a record that person could not open. Typical build: $5,000–12,000 over 2–4 weeks.
What is an enterprise AI assistant?
An enterprise AI assistant is a question-answering layer that runs on your organisation’s own documents and records rather than on general internet knowledge. It retrieves the relevant passages at the moment of the question, answers only from what it retrieved, cites the source it used, and returns nothing the asking user is not already entitled to open.
The market calls the same thing several names. Enterprise AI assistant, enterprise digital assistant and enterprise AI virtual assistant all describe this pattern; the useful distinction is not the label but whether the system is grounded in your data and whether it can show its source. An ungrounded chat window with your logo on it is not an enterprise assistant, however it is marketed.
Enterprise AI assistant vs. a general chatbot
| General chat model | Scripted chatbot | Enterprise AI assistant | |
|---|---|---|---|
| Source of the answer | Training data | Hand-written scripts | Your documents and records |
| Handles an unscripted question | Yes | No | Yes |
| Shows where the answer came from | No | Not applicable | Yes, cited per answer |
| Respects who may see what | No | No | Filtered at retrieval time |
| Behaviour when it does not know | Often invents | Falls through to a human | Says so, offers handover |
| Stays current as documents change | Only at retraining | Only when rewritten | Re-index and it is current |
Where an enterprise digital assistant fits
The pattern earns its cost where a defined body of text is queried repeatedly by many people: product and technical specifications, warranty and contract terms, internal procedures and HR policy, supplier documentation, and resident or tenant handbooks in property operations. A support assistant over a defined document set is the same build as an internal knowledge assistant; only the audience and the permission rules differ.
What it is not suited to: questions whose answer is not written down anywhere, decisions with legal or financial consequence, and any output nobody checks.
The gap between what is asked for and what works
The request usually arrives as “we want an AI that knows our company”. Underneath it there are almost always three concrete problems, and they have different solutions.
- The answer exists but nobody can find it. A technical specification, a warranty condition, a procedure step, a clause in a supplier contract. It is in a PDF somewhere, and the person who knows which PDF is on holiday. This is a retrieval problem, and the one RAG solves well.
- The answer exists in a database and someone has to look it up. Order status, current balance, next service date, stock on hand. Not a document problem at all; the assistant should query the system through its ordinary interface and report the result.
- The input is unstructured and someone has to re-type it. An order arriving as free text in an email, a fault description in a message, a scanned delivery note. Here the model reads and drafts; the system validates and stores.
Being clear about which of the three you have is most of the specification. What to automate before reaching for a model is on business process automation, and a plainer introduction is in what an enterprise AI assistant is.
How retrieval-augmented generation actually works
RAG means the model is never asked to remember your company. It is handed the relevant passages at the moment of the question. Five stages, each of which can be got wrong in a specific way.
-
Ingestion and parsing
Documents are read into plain text with their structure preserved: headings, tables, lists, page numbers. Scanned pages go through OCR. Repeated headers and footers are stripped, because they otherwise dominate the index. Each document keeps its metadata — name, version, date, owner, and the permission tags that decide who may retrieve it. Tables are the usual failure point: a specification table flattened into a run-on sentence produces confident nonsense later.
-
Chunking
Text is split into passages at semantic boundaries — a section, a procedure step, a table with its caption — rather than at a fixed character count, with a small overlap so a sentence spanning a boundary is not lost. Chunks that are too large dilute the match and waste context; chunks that are too small lose the surrounding meaning, so a clause is retrieved without the condition it depends on. This stage is tuned against your actual documents, not chosen from a default.
-
Embedding and indexing
Each passage is converted by an embedding model into a numeric vector that represents its meaning, and stored in a vector index alongside its metadata. Passages about the same subject in different words end up near each other, which is what allows a question phrased in the user's language to find a passage written in the manual's language.
-
Retrieval
At question time the query is embedded and the closest passages are found, combined with an ordinary keyword search. Both are needed: semantic search finds meaning but is unreliable on part numbers, article codes and model designations, where exact matching wins. The combined candidates are re-ranked and the best few are selected. If nothing clears the relevance threshold, that is a valid outcome and the assistant is built to report it.
-
Generation with citation
The model receives the question, the selected passages, and an instruction to answer only from them. The answer names its sources — document, section or page — and links to them, so a user can verify rather than trust. Every answer is logged with the passages that produced it, which is what makes a wrong answer diagnosable rather than a matter of opinion.
There is a sixth stage that gets forgotten: refresh. Documents are revised. If the index is not updated when a procedure changes, and the superseded version is not removed, the assistant will quote the old rule with the same confidence as the new one. Keeping the index current is part of the build, not an afterthought.
What it can do on your data, and what it cannot
The honest boundary matters more here than in most technology, because the failure mode is a fluent wrong answer rather than an error message.
Works well:
- Answering a factual question whose answer is written somewhere in your documents, with the source shown
- Finding the relevant clause, specification or procedure across thousands of pages in seconds
- Summarising a long document or a service history for someone who has to act on it
- Extracting fields from an unstructured document into a draft record for a person to confirm
- Classifying and routing inbound messages, with the reasoning attached
- Drafting a reply, a report section or a document from templated parts and retrieved facts
- Translating between the customer's wording and your internal terminology
Does not work, and we will say so:
- Answering what is not written down. If the rule lives only in a colleague's head, retrieval has nothing to find. The assistant will either say it does not know, or, if built carelessly, guess. The fix is to write the rule down, which is worth doing regardless.
- Reliable arithmetic across many records. Totals, ageing, margins and stock positions should come from a database query, not from a model adding figures it read in prose. We wire the assistant to the query and let it report the result.
- Compensating for data that is wrong. An assistant over a stale price list answers with stale prices, faster and more convincingly than before.
- Judgement that carries consequence. Whether to extend credit, whether a warranty claim is fair, what discount to concede. A model can assemble the evidence; the decision stays with a person who can be accountable for it.
- Guaranteeing a fixed accuracy figure. Anyone quoting a precise accuracy percentage for your data before seeing your documents is guessing. Accuracy is measured against your own question set during the build, and that measurement is what we report.
Controlling hallucination
A language model produces plausible text by construction. Grounding it is engineering, done with several overlapping mechanisms rather than one clever prompt.
Answer only from retrieved context
The model is given the passages and instructed not to use general knowledge. Necessary but not sufficient, which is why the remaining controls exist.
Citation as a requirement
Every factual sentence carries a source reference, so an uncited claim stands out as a defect that can be caught in review or blocked automatically.
An explicit "not found" path
When retrieval returns nothing above the relevance threshold, the assistant says so and offers a handover. Building this path deliberately is what stops the model filling the silence.
Numbers from queries, not from prose
Any figure a user might act on is fetched through a defined query against the system of record. The model presents it; it does not compute it.
A regression question set
Real questions with known correct answers, re-run after every change to prompts, chunking or model version. Without it, an improvement in one area silently breaks another.
Full logging
Question, retrieved passages, answer and user, all stored. When someone reports a wrong answer you can see which passage misled the model, rather than adjusting wording and hoping.
The permission boundary
One rule governs the whole design: a user must not be able to reach through the assistant to anything they could not open directly. Meeting that rule is a matter of where the check happens.
- Permission tags are attached at ingestion. Every document and every passage carries the access classification of its source location, so the index knows who may see what before any question is asked.
- Retrieval is filtered by the asking user. The search runs against the subset that user's roles permit. Passages they may not see are never candidates, so the model is never given them.
- Structured lookups use the user's own identity. Queries against the operational system go through the same authorisation layer as the ordinary screens, with that user's token. A service account holding unrestricted rights would turn the assistant into a way around your access control.
- Instructions are not controls. Telling the model “do not reveal salary data” after handing it the payroll file protects nothing. If the model can see it, treat it as disclosed.
- Everything is logged with the user identity. Who asked what, and what was returned. This is both an audit requirement and the fastest way to detect misuse.
Three data architectures
Where inference happens is a governance decision, taken before the build because it changes the design.
| Architecture | Where the content goes | Trade-off |
|---|---|---|
| Local model, your hardware | Nothing leaves your network; the model and the index run on your servers | Strongest control; needs suitable hardware, and open models are generally weaker than the best commercial ones |
| Commercial API, zero retention | Content is processed by the provider under an agreement not to store or train on it | Best answer quality and no hardware; requires accepting that content transits a third party |
| Masked hybrid | Personal and account identifiers are replaced before the request leaves, and restored in the answer | Keeps identifying data inside while using a commercial model; masking must be tested against your own data formats |
Where records physically live, and why that question is asked before the design rather than after, is covered in where is your data.
Which jobs go to an agent, and which do not
An agent is an assistant allowed to call functions in your systems rather than only produce text. That makes the boundary a safety question rather than a preference.
Give it:
- Reversible actions: creating a draft, a proposal, a suggested classification
- High-volume, low-consequence routing and triage, with the reasoning recorded
- Field extraction into a record that a person confirms before it takes effect
- Read-only lookups the user is entitled to make anyway
- Work whose output is checked by the next step in the process as a matter of course
Do not give it, or only behind a human confirmation:
- Anything irreversible. Releasing a payment, deleting records, cancelling an order, sending a message to a customer under your name.
- Anything that binds you commercially. Committing a price, a discount or a delivery date. Let it prepare the quote; let a person send it.
- Decisions with legal or financial consequence. Credit approval, warranty adjudication, disciplinary or regulatory judgement.
- Work nobody checks. If an error would pass unnoticed into a customer's hands, the process needs a review step before the agent is allowed near it.
- Tasks with no ground truth. If you cannot say afterwards whether the output was right, you cannot measure it, and an unmeasurable agent silently degrades.
A practical way to phase this: run the agent in suggestion mode first, where it proposes and a person accepts, and count how often the suggestion is accepted unchanged. That number, on your own work, is what should decide whether it is ever allowed to act directly. The operational patterns are set out in AI agents for business operations.
How a build starts
-
Collect fifty real questions
Not example questions — the actual ones your staff or customers ask, with the correct answers and where they come from. This set defines the scope, exposes which questions are document questions and which are database questions, and becomes the test the system is measured against.
-
Assess the documents
Volume, format, quality, how often they change, and who is allowed to see what. A week of this usually reveals that a third of the corpus is superseded, which is a finding worth having on its own.
-
Working assistant, 2–4 weeks
Ingestion, index, retrieval, citation and permission filtering over the real corpus, at $5,000–12,000, measured against the question set from step one. Where it sits inside a wider system we are building, module pricing applies instead: $3,000–6,000 for one focused module over 2–4 weeks. The bands are on pricing.
-
Add actions, one at a time
Each function the agent may call is added individually, in suggestion mode first, with its own acceptance measurement before it is allowed to act. This is deliberately slower than enabling everything at once, and it is the reason these systems stay trusted.
The source code is delivered to you, the licence is perpetual with no per-user fee, and maintenance is optional at 12–25% of build cost. Model API usage or server cost is a separate running cost and we tell you what it is before you commit. Systems we have built that this layer sits on include Elevatora SAHA, Elevatora İMALAT, SEMP Group, SmartHukuk and a pharmaceutical import and export process tracking system; Elevatora PROJE is still in development. See cases, and the reporting layer on business intelligence.
Frequently Asked Questions
What is an enterprise AI assistant?
An enterprise AI assistant is a question-answering layer built on an organisation's own documents and records rather than on general internet knowledge. It searches your sources at the moment of the question, answers only from what it retrieved, cites the document and page it used, and returns nothing the asking user could not already open. The distinguishing property is not the chat window but the grounding: an assistant that cannot show its source is not an enterprise assistant.
Is an enterprise digital assistant the same as an enterprise AI virtual assistant?
In practice these are three names for the same pattern. Enterprise AI assistant, enterprise digital assistant and enterprise AI virtual assistant all describe a grounded assistant running on company data. The label tells you nothing useful; two questions do. Does it answer from your own sources, and can it show which source it used? If the answer to either is no, you have a general chat model or a scripted chatbot with different branding.
What does an enterprise AI assistant cost to build?
A working assistant on a defined document set is $5,000-12,000 and reaches production in 2-4 weeks. Wider scope with structured lookups into your ERP or CRM and drafting actions falls in the $8,000-15,000 range. The source code is delivered to you, the licence is perpetual with no per-user fee, and annual maintenance is optional at 12-25% of build cost. Model API usage and server cost are separate running costs, quoted before you commit.
What is retrieval-augmented generation, in plain terms?
Retrieval-augmented generation, or RAG, means the model is not asked to remember your company. Your documents and records are split into passages, indexed, and searched at the moment a question is asked. The few passages that match are handed to the model along with the question and an instruction to answer only from them and to cite the source. The model supplies language and reasoning; your data supplies the facts. That separation is what makes the answer checkable, because every sentence can be traced back to a document and a page.
How do you stop the assistant from inventing an answer?
Four mechanisms together, not one. The model is given only the retrieved passages and instructed to answer from them. Every factual sentence carries a citation, so an uncited claim is visible as a defect. When retrieval finds nothing relevant, the assistant is built to say so and offer a handover rather than to produce plausible text. Numbers come from a direct database query rather than from prose, because a model reading figures out of a paragraph is a bad calculator. On top of that, a fixed set of real questions with known answers is re-run after every change to catch regressions.
Can the assistant show a user something they are not allowed to see?
Not if it is built correctly. The permission filter runs at retrieval time, before the model sees anything: documents carry permission tags from the moment they are ingested, and the search is restricted to what the asking user's role allows. Structured lookups go through the same authorisation layer as the ordinary application screens, using that user's own identity rather than a service account with unrestricted rights. A prompt instruction telling the model to keep something secret is not a control, because the model has already been given the data at that point.
Which tasks should be given to an AI agent and which should not?
Give it work that is reversible, checkable and high volume: classifying and routing inbound messages, extracting fields from a document into a draft record, drafting a reply for review, looking up a factual answer, assembling a document from templated parts. Do not give it irreversible or externally binding actions without a human confirming: sending an external message, releasing a payment, deleting records, committing to a price or a delivery date. Do not give it decisions with legal or financial consequence such as credit approval, and do not give it anything where a wrong answer would go unnoticed because nobody checks the output.
Where does our data go, and can it be kept on our own servers?
There are three architectures and the choice is yours. A local model on your own hardware means no content leaves your network, at the cost of hardware and somewhat lower answer quality. A commercial API under a zero-retention agreement means content is processed but not stored or used for training, which suits most business documents. A masked hybrid strips personal and account identifiers before the request leaves your network and restores them in the answer. We agree the architecture before the build, because it changes the design rather than being a setting toggled at the end.
What does an assistant of this kind cost and how long does it take?
An assistant built on your document set and records is $5,000–12,000 and takes 2–4 weeks, assuming the documents exist in a usable form. Where the AI layer sits on top of an operational system we are also building, a single focused module is $3,000–6,000 over 2–4 weeks and a multi-department system $8,000–15,000 over 4–8 weeks. Running costs are the model API usage or the server, and are separate from the build. Maintenance is optional at 12–25% of build cost.
Send us fifty questions your team actually gets asked.
We come back with which of them are document questions, which are database questions, which cannot be answered from anything you currently hold, and what the build would cost.