PawnTeller

How it works

The assistant proposes. Our code decides.

Most AI-over-database products hand the model a connection and hope. PawnTeller puts a deterministic layer between the two, and everything it guarantees lives in that layer rather than in the model's good intentions.

  1. Our code

    Is this answerable at all?

    Your configuration defines what the assistant is allowed to reason about: which tables exist, what your business terms mean, which values a status can take. A question about something undefined is refused here, before a model is called at all.

    This is why PawnTeller does not invent a risk score. Nobody defined one.

  2. The assistant

    Proposes a query

    The model receives your table and column names, your business vocabulary, the question, and the recent conversation. It receives no credential, no hostname, no connection string, and nothing belonging to any other business.

    What comes back is a proposal. Nothing has touched your database yet.

  3. Our code

    Parses and checks it

    The query is parsed as SQL, not matched against patterns — the difference between understanding a statement and hoping a blocklist caught it. Rejected: anything that writes or deletes, any table or column outside your configuration, any join you have not declared, and any construct that could reach sideways into data the question was not about.

    A rejected query is handed back to the assistant with the reason, and it rewrites. That happens invisibly, within the same few seconds.

  4. Our code

    Adds the boundaries

    Your business identifier and the asker's permitted branches are attached to the query here. The model never writes these and cannot remove them, because by this point it has finished.

    If they cannot be applied, the query does not run. No override, no fallback.

  5. Our code

    Runs it against your live database

    Read-only, over a TLS connection with the certificate verified, with a row cap and a timeout. The question, the statement, the asker and the row count go into the audit trail.

  6. The assistant

    Writes the sentence above the table

    It sees the rows that came back and summarises them in a line or two. The full table is shown beneath, so the summary is always checkable against the data it was drawn from.

    If the result was capped, the answer says so rather than presenting a page as a total.

Setting it up

What onboarding involves

The configuration is the product. Getting it right is most of the work, and it is work we do with you rather than hand you.

1 · Connect

A read-only account on your database, restricted to the tables in scope. The credential goes into a secrets vault; we hold a reference to it.

2 · Describe

Which tables, which columns, how they relate, and what your terms mean — what counts as overdue, what an active loan is. This is where accuracy comes from.

3 · Scope

Which column identifies a business, which identifies a branch, and how staff map to branches. These become the filters attached to every query.

4 · Embed

A launcher in the corner of your point-of-sale page, or embedded in the page itself. Your system mints a session for the person signed in.

Your definitions, not ours

“Active loan” means something specific in your business, and possibly something different from the shop down the road. PawnTeller asks you to write that down rather than guessing — and once written, every answer uses it consistently. This is the step that turns a plausible assistant into a correct one.

Design decisions

Why it is built this way

Design decisions and their reasons
Decision Why
The model never writes a security filter If it did, whether the check happened would depend on what the model produced that time. It has to be a property of the code, not of an output.
No setting turns scoping off A switch that disables a safety control is a switch somebody eventually flips — for a demo, for a debugging session, and then forgets.
A real SQL parser, not pattern matching Blocklists catch the phrasings whoever wrote them thought of. A parser understands the statement, including the ones nobody anticipated.
Refuse rather than substitute Answering a question about an undefined term with a related figure produces a number that looks right and is not. Nobody checks those.
The rows are always shown A summary you cannot check is a claim. A summary above the data it came from is an answer.
Read your live database, do not copy it A second copy of customer records is a second thing to secure, and it is stale the moment it is made.

See it on your own questions

Tell us what your counter staff ask most often, and we will show you PawnTeller answering it against a database shaped like yours.