lumnik. / scénarios Tous les scénarios · English

Questionner 40 000 articles avec ses mots et voir le SQL

Objectif Laisser un utilisateur interroger le catalogue avec ses mots, sans apprendre les colonnes ni écrire de SQL.

Deux exports CSV, une entité, une app réduite au chat. La question devient une requête en lecture seule.

manifests/10-products.yaml
apiVersion: connectors.lumnik.io/v1kind: Connectormetadata:  name: pwa-chat-products  connector_type: csv-file  scopes: [pwa-chat]spec:  transport:    kind: local    path: /tmp/lumnik-scenario/pwa_chat/m_product.csv  parser:    has_header: true  after_process: none  mapping:    dataset:      - require-headers:          columns: [m_product_id, m_product_category_id, name, description, isactive]    cell:      - clean:          columns: [name, description]          strip: true          remove-control-chars: true          normalize-unicode: NFC      - strip-invisible: { columns: [name] }      - replace-smart-quotes: { columns: [description] }
manifests/15-product-categories.yaml
apiVersion: connectors.lumnik.io/v1kind: Connectormetadata:  name: pwa-chat-product-categories  connector_type: csv-file  scopes: [pwa-chat]spec:  transport:    kind: local    path: /tmp/lumnik-scenario/pwa_chat/m_product_category.csv  parser:    has_header: true  after_process: none  mapping:    dataset:      - require-headers:          columns: [m_product_category_id, name, description, isactive]    cell:      - clean:          columns: [name, description]          strip: true          remove-control-chars: true          normalize-unicode: NFC      - strip-invisible: { columns: [name] }      - replace-smart-quotes: { columns: [name, description] }      - decode-html-entities: { columns: [name, description] }
manifests/20-product.yaml
kind: Entityname: PwaChatProductlabel: Article du cataloguedescription: "Articles du catalogue, enrichis avec leur catégorie. Une ligne représente un article."match: [product_id]scopes: [pwa-chat]columns:  product_id:    label: "Identifiant de l'article"  category_id:    label: "Identifiant de la catégorie"  category_name:    label: "Catégorie"  category_description:    label: "Description de la catégorie"  reference:    label: "Référence de l'article"  description:    label: "Description de l'article"  active:    label: "Article actif (Y pour oui, N pour non)"sources:  - table: t_pwa_chat_products    map:      m_product_id: product_id      m_product_category_id: category_id      name: reference      description: description      isactive: activejoins:  - table: t_pwa_chat_product_categories    from: category_id    to: m_product_category_id    map:      name: category_name      description: category_description
manifests/30-pwa-chat-app.yaml
apiVersion: apps.lumnik.io/v1kind: Appmetadata:  name: pwa-chatspec:  title: Assistant catalogue  scope: pwa-chat  icon: generic  theme:    accentColor: "#4fd1a5"    backgroundColor: "#f4f1ea"  tabs: [chat]  default: false
$ lm ask --scope pwa-chat --lang fr "Combien d'articles appartiennent à la catégorie Pompes ?"
Il y a 7407 articles qui appartiennent à la catégorie Pompes.
  data as of: 2026-11-03T20:54:10.032192Z (last completed run)

  COUNT
  7407
  1 row returned

  SQL: SELECT COUNT(*) 
FROM "connector"."v_pwachatproduct" 
WHERE "category_name" = 'Pompes'
LIMIT 500

Limites

  • Requêtes analytiques sur l'entité; pas de recherche sémantique dans du texte libre.
  • Dépend d'un modèle joignable; le rejeu échoue sans lui.
  • Données synthétiques.

Catalogue · questions

40 000 articles, et une question simple.

Combien de pompes avons-nous?

Sans connaître les colonnes ni écrire de SQL.

Catalogue synthétique

Le problème

La réponse est dans la base, pas à portée.

  • Les catégories sont dans un autre fichier.
  • Une requête demande quelqu'un qui sait.
  • Une réponse sans SQL ne se vérifie pas.

Rien n'est modifié

Deux exports CSV, tels quels.

  • Une entité joint la catégorie.
  • Une app ne montre que le chat.
  • Aucune application à développer.

Ce qu'il a fallu écrire

tabs: [chat]

Une app réduite au chat.

Le scénario complet tient en 4 fichiers de déclaration, 100 lignes.

La réponse

7 407 articles.

SELECT COUNT(*) FROM "connector"."v_pwachatproduct"
WHERE "category_name" = 'Pompes'

Réponse réelle, rejeu du 3 novembre 2026.

Vérifiable

Le SQL est sous la réponse.

  • Une requête en lecture seule.
  • Sur la vue de l'entité.
  • Le runner échoue si aucun SQL n'est exécuté.

La limite

Des requêtes, pas de recherche sémantique.

  • Le chat compte et filtre l'entité.
  • Il ne lit pas le texte libre au sens propre.
  • Il faut un modèle joignable.

Essayer

Le scénario se rejoue de bout en bout.

CSV, entité, app, question: chaque étape est publiée avec sa sortie.

Ce scénario demande lumnik Pro.

Voir l'offre →