Assistant
The assistant answers questions about how the application works and how it calculates, from this user manual. It cites the manual sections it used, so that you can check its answer.
Opening the assistant
The Assistant button in the application’s top bar (a robot in a speech bubble) opens a side panel titled Assistant.
- Type your question in the box at the bottom of the panel. Enter sends the question, Shift + Enter starts a new line.
- New conversation starts a blank conversation.
- History lists your conversations, latest first: click one to reopen it, or delete it.
A conversation is private: only the user who held it can see it, within their institution. Your colleagues do not see it.
What the assistant can do
Ask about the application (“How do I reopen a failed guided import?”) or about its methodology (“How is the 12-month NII calculated?”, “What does template J 05.00 contain?”). The assistant answers in the language of your question.
Example questions
These questions show what the assistant can do. The more precise a question (a template, an indicator, a date, a deal reference), the more precise the answer.
Using the application
- “How do I import a situation step by step?”
- “How do I resume a guided import left as a draft?”
- “Where do I see a situation’s import anomalies?”
- “How do I run a cash-flow generation despite import errors?”
- “How do I produce a reporting’s ALCO pack?”
- “What is a client configuration for?”
Understanding the methodology
- “How is EVE calculated?”
- “How is the 12-month NII calculated?”
- “What is the difference between the contractual and the behavioural view?”
- “How is an amortising loan projected?”
- “What does template J 05.00 contain?”
- “How does the supervisory outlier test work?”
- “What does anomaly IMP-003 mean?”
Asking about your figures
These questions need the tools on your figures turned on in your environment; without them, the assistant answers from the manual only.
- “What are my latest reportings?”
- “What is the worst EVE variation at 30/09 and its ratio to Tier 1?”
- “Which FINREP classes explain the EVE drop in the parallel up shock?”
- “What changed since the June closing?”
- “What do we know about deal PEP_2027?”
- “Why is deal PEP_2027 missing?”
- “How many anomalies did the latest situation’s import raise, and which?”
From the screen you are on
The assistant knows which screen you are on (see The screen you ask from): no need to name what you are looking at.
- On a reporting: “Why does EVE drop here?”
- On a situation’s Import Anomalies tab: “What should I fix first?”
- On the situation comparison: “What differs between these situations?”
- On any tab: “What is this tab for?”
Following up
- After an answer about EVE: “And for NII?”
- “Can you detail the second point?”
- “Where is this described in the manual?”
The assistant reads, it does not act: it runs no calculation and changes no data. To “Run the reporting generation”, it can only explain how to do it (see Limits).
How the answer is built
The answer is written by a language model, from excerpts of this manual:
- For each question, the application looks for the 6 sections of the manual that best match it. The search combines the meaning of the question (two different wordings of the same question find the same sections) and its exact words, so that codes such as
J 05.00are found too. - The search runs in the manual of your interface language: the French manual if the application is in French, the English manual for any other language.
- The model also gets the sections around each one: the section that contains it, then its subsections, whole and up to 1,500 characters per section found, so that a formula does not reach it without its definitions.
- The model answers from those sections only, in the language of the question, and cites the sections it used as links.
A follow-up question (“And for EVE?”) is first rewritten by the model into a complete question, from the last 4 messages, and that question is what is searched. If you change the subject, the old subject therefore does not skew the search. If the rewriting fails, the search takes the previous question together with yours, and you still get an answer. To answer, the model sees the last 6 messages of the conversation.
Under each answer, Sources lists the manual sections the search found, without the sections around them. Formulas are shown in mathematical notation, as in the manual.
Questions on your figures
When the environment’s administrator has turned them on (see Configuration), the assistant has tools that read your institution’s figures, read-only and with your rights: it sees only what you see in the application.
| Tool | What it reads |
|---|---|
list_reportings |
Your IRRBB reporting generations, the latest first: situation, evaluation date, status. |
reporting_metrics |
A reporting’s indicators, per currency: EVE, NII (12 months) and MV per scenario, their variations to the baseline, and the supervisory outlier test (worst variation over the six prudential shocks for EVE, over the two parallel shocks for NII, ratio to Tier 1). Behavioural view by default, contractual on request. |
metric_breakdown |
One indicator (EVE, NII, MV, carrying amount, duration) broken down by FINREP class, as in the EBA templates: per class, the level in the baseline and in the scenario asked, and their variation, the largest first; totals apart. A parent class contains its children: classes do not add up. |
compare_reportings |
Two reportings side by side (two closings, say): for each indicator and scenario, one’s value, the other’s and the change, and Tier 1. |
deal_detail |
A deal found by its reference, as the deal screen shows it: product and terms, amounts, rates, dates, counterparty (under a pseudonym, see Counterparties), FINREP classification. When several situations hold a deal with that reference, the assistant asks which one. |
import_anomalies |
The anomalies of a situation’s import: their count per anomaly code, then the first ones with their message. |
The variations, the worst shock and the ratios are computed by the application, following the methodology; the model quotes them as they are and recomputes nothing. It explains a figure with the manual sections that define it.
Examples: “What is the worst EVE variation at 30/09 and its ratio to Tier 1?”, “Which FINREP classes explain the EVE fall in the parallel up shock?”, “What changed since the June closing?”, “Why is deal PEP_2027 missing?”.
For each answer, the application keeps the list of the tools called (tool, arguments, duration, result size, refusal if any): which figures went to the model’s provider is known. An answer may call no more than 20 tools nor come back to the tools more than 6 times; past that, the assistant answers with what it has.
The screen you ask from
The assistant knows which screen you ask your question from. Under the conversation, About: recalls it (for example “About: Reporting”). Click its cross to ask the next question without this context; it comes back as soon as you change screens.
| Screen | What the assistant receives |
|---|---|
| A situation (and the open tab) | The situation: its name and date. |
| A deal | The deal and its situation, and the cash-flow generation shown, if any. |
| A cash-flow generation | The generation and its situation. |
| A reporting | The reporting: its situation, valuation date and ALCO header. |
| The situation comparison | The situations compared (up to 10): their names and dates. |
| A resumed guided import | The draft situation. |
| Every other screen: home, situation list, imports, import files guide, evaluation context, client configurations, classification referentials, ALCO templates, Crédit Logement, notifications, settings, profile, users, contact | The screen only. |
Screens the manual describes steer the search to their page; the situation comparison, notifications, settings, profile, users and contact have none.
- Without tools turned on, only the screen’s name reaches the model. It is used to search first in the manual section that documents that screen: “What is this tab for?” finds the right page without naming it.
- With the tools, the model also receives what the screen shows (the names, dates and identifiers above). It can then answer “Why does EVE drop here?” about that very reporting, without you naming it.
The application checks each identifier against your rights: something you cannot see is never described to the model.
Limits
- Without tools turned on, the assistant answers from the manual only. It then sees neither your situations, nor your simulations, nor your figures, and cannot explain a specific amount in your results.
- When the manual does not cover the question, it says so, rather than making up an answer.
- It can be wrong. Check what matters in the cited sections; the panel reminds you under every exchange.
- The manual it reads may date from the start of the day. The assistant reads the published manual again at midnight, as each working day starts, Monday to Friday: an update reaches it at the next reading, when the application restarts, or when an administrator rebuilds its index (see Administration).
An answer from the assistant is not a methodological reference: when in doubt, the text of the manual prevails.
Giving your opinion on an answer
Under each answer, two thumbs say whether it was useful to you (Helpful answer, Unhelpful answer). Your choice is saved at once; a click on the other thumb changes it, a second click on the same one takes it back. You find it again when you reopen the conversation. It stays attached to the answer, to the manual’s passages it was given and to the conversation, and it is used to improve the assistant and the manual. Your opinion does not change the next answers.
Deleting a conversation also deletes the opinions it carries.
Where your questions go
- Your question and the manual excerpts retrieved for it are sent to the model provider configured for the environment (OpenAI or Anthropic).
- Without tools turned on, no client data is sent: no situation, no deal, no result. With the tools, the figures they return (your reportings’ indicators) go to that provider too: that is why the tools are off by default and turned on environment by environment.
- The name of the screen you ask from is sent with the question; with the tools, what the screen shows too (see The screen you ask from).
- No counterparty is sent under its name: see Counterparties.
- Conversations are stored in the application’s database.
- Questions the manual does not answer are visible to your organisation’s administrators, without your name, for 90 days (see Unanswered questions). Your question appears there as you wrote it: if it names a person or a counterparty, that name is shown.
Counterparties
When a tool reads a deal, its counterparty goes to the provider under a pseudonym: “Counterparty A”, “Counterparty B”… (“Contrepartie A” in a French conversation). Neither the counterparty’s reference nor its name is sent, even when they appear in a column of your own import file.
- The pseudonym stays the same for the whole conversation: “Counterparty A” means the same counterparty from one question to the next.
- Which pseudonym stands for which counterparty is stored with the conversation, in the application’s database. It does not leave the environment.
- In the answers shown, including while they are being written, the pseudonym is replaced by the counterparty’s name (its reference when it has no name).
- A reference shorter than 3 characters is hidden only in the counterparty field: elsewhere it cannot be told from another value of the deal.
- What you type is sent as is. If you name a counterparty in your question, that name is sent.
Error messages
| Message | Meaning |
|---|---|
| “The assistant is not available at the moment.” | The assistant is turned off in this environment, or the manual’s index is not built. |
| “The assistant could not answer. Try again in a moment.” | The model provider did not answer or failed. |
In both cases, your question is put back in the input box: just send it again.
Administration
This section is for the platform’s administrators.
Manual index
The manual’s index is rebuilt every time risk-app starts, then as each working day starts from the published manual (manual-refresh-cron, by default at midnight Paris time, Monday to Friday; public holidays are not told apart). Only the passages whose text changed go back to the vector representation service: as long as the manual does not change, a reading sends it nothing. If a reading fails (manual unreachable, service in error), the assistant carries on with the previous index, the state becomes FAILED, and the next reading tries again. On the integration environment, a failure also sends an email alert to the platform team.
Two calls, restricted to the HERMES_ADMIN role, show it and rebuild it right away:
| Call | Effect |
|---|---|
GET /api/v1/assistant/manual/index |
State of the index (READY, FAILED, DISABLED…) and number of passages per language. |
POST /api/v1/assistant/manual/index |
Rebuilds the index from the published manual. |
Unanswered questions
The Administration > Unanswered questions menu, restricted to the HERMES_ADMIN role, lists the organisation’s questions the manual could not answer: what should be added to it. The matching call is GET /api/v1/assistant/unanswered.
- How a question gets there. When the excerpts do not answer, the model says so with a marker at the end of its answer. The application removes it before display and storage, and marks the question. It is therefore the model’s opinion: it can miss some, or flag some wrongly.
- What is shown. The question and its date, without its author.
- What is limited. Only the current organisation’s questions, and for 90 days (
unanswered-retention); they also go when their author deletes the conversation. The question stays in its author’s conversation after those 90 days. - Instructions in Consul. The marker is requested by the instructions shipped with the application. Instructions put in the Consul key must request it too, or no question is flagged any more.
Configuration
| Key | Role |
|---|---|
application.assistant.enabled |
Turns the assistant on (off by default). |
application.assistant.manual-url |
Address of the published manual the index is built from (https://alm-manual.mladvisory.eu by default). |
application.assistant.manual-refresh-cron |
When to read the published manual again: a Spring cron expression, in Paris time (0 0 0 * * MON-FRI by default, i.e. midnight Monday to Friday); - turns the reading off. |
application.assistant.rewrite-follow-ups |
Has follow-up questions rewritten before the search (on by default): one more call to the model per follow-up. Off, the search takes the previous question together with the follow-up. |
application.assistant.context-chars |
Characters of the sections around each section found that the model gets with it (1,500 by default, whole sections only); 0 sends none. |
application.assistant.unanswered-retention |
How long an unanswered question stays in the administrators’ list (90d by default). |
application.assistant.embedding.url, .name, .api-key |
OpenAI-compatible service that computes the vector representations (search by meaning): address, model, key. |
application.assistant.chat.provider |
Provider of the answering model: anthropic (default) or openai. |
application.assistant.chat.name |
Answering model; claude-opus-5-5 by default with the anthropic provider. |
application.assistant.chat.api-key |
Access key to the provider. |
application.assistant.chat.effort |
How hard the model thinks before answering: low (default), medium or high; anthropic provider only. |
application.assistant.instructions-key |
The Consul key (plain text, config/stress/assistant-instructions by default) holding the instructions given to the model (the prompt), the same for every client. Edited in Consul, they apply within 30 seconds (instructions-refresh), without a restart. Key absent or empty: the default instructions shipped with the application apply. Good practice: tune in Consul to try, then carry the chosen version into the default instructions and empty the key, since Consul keeps no history. |
application.assistant.tools.enabled |
Turns on the tools on your figures (off by default). The figures they read go to the model’s provider. |
application.assistant.tools.max-rounds, .max-calls, .max-result-chars |
How many times the model may come back to the tools for one question (6 by default), the total tool calls per answer (20), and the longest tool result (20,000 characters). |