Skip to content
Become a partner
Research · Universal solver

A question in natural language, the right engine to answer it

A manager asks a question the way they would put it to a colleague. The VVL universal solver recognises what kind of problem it is, then hands it over to the specialised engine able to solve it exactly. When its answer rests on assumptions, it returns them with their source and a confidence level.

How it works

One line, four steps

The solver is written in a single line, in its long form or as its alias. Classification is done by Jev when Jev mode is active, otherwise by the language model. If the confidence is too low, below 0.55, no engine is launched: the solver asks for clarification instead of guessing. Otherwise, the question goes to one of eight families of specialists.

resolveVVL
[resolve "Combien font 15% de 240 ?"]
[§§ "Combien font 15% de 240 ?"]          # même chose, forme courte
  1. 01Classify the question
  2. 02Check the confidence
  3. 03Hand over to the specialist
  4. 04Return an approximation
Eight families

The right specialist

Each family has its own engine, chosen to give an exact answer.

01

Calculation

VVL code generated, then executed

“Loan repayment, margin, ratio”

02

Optimisation

Constraint solver

“Schedule eight tasks on three machines”

03

Relational query

Prolog-style logic engine

“Which customers depend on this supplier?”

04

Rule induction

Rule learning

“Which rule sets loyal customers apart?”

05

Fact lookup

Language model and document base

“What does our quality procedure say?”

06

Extraction

Structured extraction, missing fields flagged

“Name, amount and due date of an invoice”

07

Expert system

Expert registered in the session

“Assess a loan application”

08

Compound

Two to four chained sub-tasks

“Extract a headcount, then work out teams”

A complete calculation simply returns its result. When the answer depends on assumptions, it is no longer a mere value: it is an approximation carrying the value, a confidence that depends on the share supplied by the language model, a range, and the list of assumptions with their source.

Business examples

Business questions, verifiable answers

Finance: the monthly repayment of a loan

The finance director asks the question as it is. The solver classifies it as a calculation, has the amortisation formula written, then executes it.

Documented result: 1,449.90 € per month, with the full trace of the calculation.

loanVVL
$r = [§§? "Calcule la mensualité d'un crédit de 250000 EUR sur 20 ans à 3,5% taux fixe."]
$r                 # 1449.90
[resolve:trace "Calcule la mensualité d'un crédit de 250000 EUR sur 20 ans à 3,5% taux fixe."]

Human resources: a two-step question

The question mixes an extraction and a calculation. The solver splits it into sub-tasks, executes them in order and combines the results.

compound questionVVL
$r = [§§? "Extrais le nombre d'employés de 'Acme Corp compte 87 employés', puis calcule combien d'équipes de 5 personnes on peut former."]
$r.value           # 87 employees, so 17 teams of 5

Credit: the question is handed to the expert system

Once an expert system is registered in the session, the solver recognises the questions that fall within its domain and passes them on to it. The decision is made by the expert's rules, not by the language model. Once the expert is built, each question costs only one call to the language model, to extract the data from the application; the inference uses none.

to the expertVVL
[expert "Domaine evaluation risque credit. Dossier client : nom, revenu,
 score_credit (eleve/moyen/faible), anciennete (longue/moyenne/recente),
 decision. ..." "Scoring"]
$r = [§§? "Évalue le dossier de Alice Dubois, revenu 4500, score élevé, ancienneté longue"]
$r.value           # DossierClient [... decision=approuve]
Investment

Not making up what is missing

A holiday cottage project is submitted without the cost of the works or the expected income. In our test, the solver did not make these amounts up: it returned the payback formula, with its unknowns. Explicitly asked to estimate, it does so, and says so: about 22 years, low confidence, 15 listed assumptions.

resolveVVL
$q = [resolve "Grange achetée 320 000 EUR, à rénover en gîte : en combien d'années est-elle rentabilisée ?"]
$q             # <approx: (cout_renovation + 320000)/(-charges_annuelles + revenu_annuel) [exact, 1 hypotheses]>

$e = [resolve "Grange de 280 m2 achetée 320 000 EUR dans le Lot, à rénover en gîte : estime un coût de rénovation réaliste, un tarif et un nombre de nuits, puis donne le nombre d'années pour la rentabiliser."]
$e.confidence  # "low": the answer rests on estimates

Control: check the routing before trusting the answer

Before using an answer, you can ask the solver how it classified the question, or obtain the full trace of the routing and of the generated code.

classify · traceVVL
[resolve:classify "Combien font 15% de 240 ?"]   # {family, sub_kind, confidence, reasoning}
[resolve "Combien font 15% de 240 ?"]            # 36.0
[resolve:trace "Combien font 15% de 240 ?"]      # trace complète au format JSON
Guarantees

What it guarantees, and its limits

  • An ambiguous question is not guessed: below the confidence threshold, the solver asks for clarification.
  • An extraction never fills in a field missing from the text: missing fields are flagged.
  • An uncertain answer carries its assumptions, their source and a confidence level.
  • The solver is not a conversational assistant: it is there to solve questions that call for a specific engine. It always uses at least one call to the language model to classify the question.
Putting it into practice

Apply this work to your processes?

These tools are instructions of the VVL language: our partners implement them for their clients, on the ProSuite platforms.