Try it on your documents

Case study · Private AI assistant on company data

Fourteen years of invoices. Answered in plain English.

A surgical-instrument repair business priced every quote from memory and a 14-year-old accounting file. We built a private assistant their staff simply ask, and every answer comes with the real invoices behind it.

Client
Jensen Instrument Technologies, Australia
Data
14 years · 208,617 invoice lines
Built
May – Sep 2026
Status
Live on Azure, read-only
The live Pricing Assistant: a staff member asks 'How much is a S/R retractor' and gets the median price, recent invoices and the price range, with past questions listed on the left.

The live system, answering a real question. Hospital names and the client's contact details are blurred under NDA. Swipe to see the full screen.

What changed

Pricing history anyone can ask for.

History searchable14 years

208,617 invoice lines, 20,669 supplier bills and 12,372 items.

Time to an answer≈ 1 minute

From a typed question to a price with its invoices.

Who can answerA few peopleAnyone allowed

No accounting software knowledge needed.

Changes the AI can makeNone

Read-only by design. It can look, never edit.

The problem

Every quote started with "what did we charge last time?"

The business repairs and supplies surgical instruments to hospitals across Australia. Repairs are 81.3% of everything it invoices, so on high-volume, low-value work, consistent pricing is the margin.

The answer lived in one accounting file.

Every repair invoiced to every hospital since 2012 was in there. It's a very good accounting system. It isn't a pricing tool.

Only a few people could find it.

Quoting meant opening the file, finding the customer, scrolling their invoices and reading line items one by one.

Margin was rarely checked.

What an item cost to buy sat elsewhere in the file, so few quotes were checked against cost at all.

Small drift adds up.

The business priced 21,561 invoice lines in 2024 alone. A few dollars off per line is not a rounding error.

How it answers

Plain English in, evidence out.

  1. Staff askIn ordinary words, the way they'd ask a colleague: "How much is a S/R retractor?"
  2. It works out the searchThe AI decides what's being asked and writes a search over the company's own data.
  3. The database does the mathsPrices, ranges and averages are calculated by the database, never guessed by the AI.
  4. An answer with proofThe price in one sentence, the range, and the actual invoices it came from.

The AI can look, never edit. Every search runs read-only, and every number is computed from the invoices, not made up.

A real answer, up close

Not just a number. The invoices behind it.

Close-up of one answer: a sentence with the median price, a table of recent invoices with dates, descriptions, quantities and prices, and the price range.

Hospital names blurred under NDA. Swipe to see the whole answer.

  • The answer firstOne sentence with the typical price and how many past sales it's based on.
  • The evidenceThe most recent invoices for that item: date, job, quantity and price, so staff can check it themselves.
  • The rangeLowest, typical and highest price, so an unusual quote stands out before it goes out.

Before and after

Same data. A different way to reach it.

Before
With the assistant
Answering a price question
Open the accounting file, find the customer, scroll the invoices
Ask in plain English and get the price with its invoices
Who could do it
The few people who knew the file
Anyone given access, with no accounting software knowledge
Evidence behind a quote
Memory, and whichever invoices someone opened
The same search over the same 208,617 lines, every time
Checking margin
Rarely done
Sales matched to what the item cost to buy

How it was built

Private, read-only, and fast.

  • The accounting data is synced into a private database. The AI never reads the whole file: it writes a search, and only that search's results are used to write the answer.
  • Every search the AI writes is checked before it runs, runs read-only, and is stopped if it takes too long.
  • Searches are fast: indexing the item list made product searches 28–64× faster, now 14–18 milliseconds. The slowest search measured is 67 milliseconds over 208,617 lines.
  • One fix raised capacity from 15 to more than 40 conversations at once per server.
  • The data refreshes in the background, in a separate service, so a refresh never interrupts anyone's question.
  • Staff sign in; an admin decides who can use it.

Built on what they already had

Accounting system (synced)PostgreSQLAzureWeb app

The same approach works on your documents: answers only from your own data, with the source shown every time.

Your business

Try it on your own documents.

Tell us a little about your company. If it's a fit, we'll show you your own documents answering your team's questions.

Try it on my documents →

Hospital names and the client's contact details are blurred under NDA. "≈ 1 minute" is the assistant's measured answer time; we haven't timed the old manual lookup, so we don't claim a saving.

Ask your own documents anything.

Try it on my documents →