[{"data":1,"prerenderedAt":212},["ShallowReactive",2],{"explorations":3,"exploration-mentions":24},[4,15],{"path":5,"title":6,"description":7,"date":8,"tags":9,"status":13,"icon":14},"\u002Fexplorations\u002Fmentions","Mentions in the teachers' chatbot","Teachers pick learners and subjects from a list while they type, like @file in a coding assistant. What that gives the agents behind the chatbot, and what it does not.","2026-10-23",[10,11,12],"AI","Chatbot","UX","wip","lucide:at-sign",{"path":16,"title":17,"description":18,"date":19,"tags":20,"status":13,"icon":23},"\u002Fexplorations\u002Fmaestro-bench","MAESTRO-bench, comparing AI agents","How a benchmark tool for AI agents went from scripts and CSV files to a loop of dataset, experiment and analysis, grouped in studies.","2026-10-22",[10,21,22],"Benchmark","Workflow","lucide:flask-conical",{"id":25,"title":6,"body":26,"date":8,"description":7,"extension":196,"icon":14,"meta":197,"navigation":198,"path":5,"references":199,"seo":208,"status":13,"stem":209,"tags":210,"__hash__":211},"explorations\u002Fexplorations\u002Fmentions.md",{"type":27,"value":28,"toc":187},"minimark",[29,38,41,46,60,63,80,87,91,94,97,100,121,125,157,161,180,184],[30,31,32,33,37],"p",{},"During the focus groups for the dashboards of Konsolidation (KDo), ten secondary school teachers asked a chatbot 66 questions about their learners. It turns each question into SQL on the attempts and scores. The chatbot is the exploration half of a double approach that Esther Félix and I wrote up together: teachers validate prototypes, then explore with a chatbot ",[34,35],"citation",{"id":36},"saurel2026rjc",".",[30,39,40],{},"Most questions contain a name, and a name typed as a word causes two problems. The roster may hold two Jeans. And the name goes to a hosted model (the agents call the Mistral API) while the learners are minors. The fix, borrowed from coding assistants: the teacher types a trigger, picks the name in a list, and the prompt carries that exact learner or subject.",[42,43,45],"h2",{"id":44},"typing-a-mention","Typing a mention",[30,47,48,52,53,56,57,59],{},[49,50,51],"code",{},"@"," opens the learners and ",[49,54,55],{},"#"," the subjects, like ",[49,58,51],{}," for files in Claude Code. This input follows the rules of the app, with a made-up roster.",[61,62],"explorations-mentions-input",{},[64,65,66,70,73],"ul",{},[67,68,69],"li",{},"A trigger opens a list when it starts the text or follows a space. A space closes it.",[67,71,72],{},"Picking writes the name in the input and remembers the pick on the side.",[67,74,75,76,79],{},"On send, each remembered pick becomes a tag, like ",[49,77,78],{},"\u003Csubject>Pythagoras\u003C\u002Fsubject>",". A name typed by hand is left as plain text.",[30,81,82,83,86],{},"The input above adds a few things the app does not have: arrow keys, accent-insensitive search, and the id in the tag, like ",[49,84,85],{},"\u003Csubject id=\"2\">Pythagoras\u003C\u002Fsubject>",". A name cannot tell two learners apart, an id can.",[42,88,90],{"id":89},"from-question-to-answer","From question to answer",[30,92,93],{},"The same question goes through the chain twice. The bottom row is the chatbot as it is. The top row is what mentions make possible: learners become labels before any model reads them, and the names come back at the end.",[30,95,96],{},"Both traces are written by hand, not recorded runs. The app answers in French, so the texts are translated.",[98,99],"explorations-mentions-pipeline",{},[64,101,102,109,115],{},[67,103,104,108],{},[105,106,107],"strong",{},"Free text can be neither exact nor private."," \"Jean\" fits two learners, and spotting names by matching the roster misses nicknames and typos. Today the names, in the question and in the rows, go to Mistral.",[67,110,111,114],{},[105,112,113],{},"A mention is exactly the name."," Swapping the tag for a label, and back, is a plain replacement. SQL-gen then filters on ids and has nothing to guess.",[67,116,117,120],{},[105,118,119],{},"The last agent cannot catch a wrong Jean."," The Evaluator only rejects off-topic answers, and an answer about Jean Moreau is on topic. The check has to happen while the teacher types.",[42,122,124],{"id":123},"three-ways-to-name-someone","Three ways to name someone",[126,127,129,138,145],"compare",{"caption":128},"The same question, three ways to point at Jean",[130,131,135],"compare-item",{"label":132,"note":133,"verdict":134},"Free text","Fine when the name is unique. Otherwise the model guesses, and the name goes to it as typed.","partial",[30,136,137],{},"The teacher types \"Jean\" and the agents work out which one.",[130,139,142],{"label":140,"note":141,"verdict":134},"Ask back","Safe, but each ambiguity costs a round trip, and the name still goes to the model.",[30,143,144],{},"The chatbot notices two Jeans and asks which one is meant.",[130,146,150],{"label":147,"note":148,"verdict":149},"Mentions","The ambiguity is settled while typing, and the name can be replaced by a label.","works",[30,151,152,153,156],{},"The teacher types ",[49,154,155],{},"@Je"," and picks \"Jean Martin\".",[42,158,160],{"id":159},"what-i-do-not-know-yet","What I do not know yet",[64,162,163,174],{},[67,164,165,168,169,173],{},[105,166,167],{},"Whether it works."," No comparison has run. A fair one sends the same questions with and without mentions through the same agents and checks the SQL, the kind of loop ",[170,171,172],"a",{"href":16},"MAESTRO-bench"," is built for.",[67,175,176,179],{},[105,177,178],{},"Whether the models keep the tags and labels."," SQL-gen reads the question as Clarification rewrote it, and the names only come back if the labels survive. A missing label must fail loudly, not show a wrong name.",[42,181,183],{"id":182},"what-else-to-point-at","What else to point at",[30,185,186],{},"Teachers also ask about an evaluation and a time span, or about a set of learners (\"make needs-based groups from the learners who failed\"). The dashboard already filters by group, subject, tag and number of attempts. A mention is a filter written inside a sentence, so one list of things could feed both.",{"title":188,"searchDepth":189,"depth":189,"links":190},"",2,[191,192,193,194,195],{"id":44,"depth":189,"text":45},{"id":89,"depth":189,"text":90},{"id":123,"depth":189,"text":124},{"id":159,"depth":189,"text":160},{"id":182,"depth":189,"text":183},"md",{},true,[200],{"id":36,"authors":201,"year":204,"title":205,"venue":206,"url":207},[202,203],"Saurel, R.","Félix, E.",2026,"Une double approche pour la co-conception de tableaux de bord d'apprentissage : validation avec des prototypes, exploration avec un chatbot","RJC EIAH 2026","https:\u002F\u002Fhal.science\u002Fhal-05641999",{"title":6,"description":7},"explorations\u002Fmentions",[10,11,12],"T_vE7RUnPlHnBFEImIcNdd21u0B-iS5SAPnDpjJL6bg",1792750681001]