RAG Tool Curator docs v0.1.0
Practitioner Notes

Limitations & Future Work

What's validated, what isn't, and what would need to change to close each gap. This page is meant to stay honest rather than reassuring.

1. Single-deployment validation only

The curator has been evaluated end-to-end against one deployment — the reference university system. The reusability guide describes how to port it elsewhere, but that hasn't been run against a second real deployment, so generalization currently rests on design reasoning, not a second measured result. The seven internal retrieval mechanisms also haven't been ablated against each other — each component's individual contribution to the 94.8% accuracy score is unknown. Fixing this means running the same eval methodology against a second domain (banking, healthcare) and an ablation pass (removing one mechanism at a time, re-running the suite).

2. Manual evaluation

All 281 reference-deployment evaluations were labeled by hand — consistent in that the same rubric was applied throughout, but slow, and with some judgment involved in partial-credit cases. Replacing this with an automated harness (deterministic checks for expected tool names, plus LLM-as-judge for free-text output) is the highest-value next step, both for iteration speed and for testing synonym or dependency changes without a full manual pass. The bundled curator_eval.py automates the retrieval-scoring half of this already — the free-text output judging half remains manual.

3. Unconfirmed root-cause inference, and no production validation

The mark_attendance/update_attendance confusion explanation in the failure analysis is inferred from tool similarity, not confirmed against real call logs — a reading, not a measurement. The entire reference system runs against an in-memory mock database; none of the engineering here — the curator interface, the eval harness, the disk cache, the guards — has run against real users or production load. "Production-shaped" is accurate; "production-deployed" would not be.

4. Stateless between turns

The curator has no memory across conversation turns. If a model proposes a follow-up tool and the user replies "yes," the curator retrieves on that short reply alone, with no memory of what was just suggested — conversation history sometimes lets the model recover on its own, but this isn't guaranteed. A fix would store the last-suggested tool(s) in session state and force-include them when the next input looks like a short confirmation.

5. Pool crowding and per-role tuning

Every pool-crowding skip in the failure analysis came from the largest-pool roles (faculty/admin) — suggesting top_k and the anchor threshold could be set per-role rather than globally, which the current configuration surface doesn't directly support (it's one global parameter per curator instance, not per role). For extreme-paraphrase queries, a lightweight query-rewriting/normalization step ahead of embedding might help more than trying to hand-anticipate every possible phrasing in the synonym file.

What this means practically

Treat the architecture and the description-refinement finding as the solid parts of this project. Treat the specific percentages as results from one deployment, not universal constants you should expect to reproduce exactly on a different domain without doing the same description-quality and synonym-file work that produced them here.