Bauer Technical Twin Demo¶
The Bauer demonstration covers two engineering-search problems:
- Find similar previous projects and configured designs.
- Find documents, parts, and engineering knowledge.
Drawing review, Dynamics 365 master-data creation, release approval, and supplier-change impact analysis are outside this demonstration.
Demonstration boundary¶
The document corpus contains public Bauer source material. The structured project, part, identifier, and compatibility records are synthetic demonstration data.
| Dataset | Count | Status |
|---|---|---|
| Searchable Bauer source files | 373 | Uploaded and embedded |
| Synthetic historical projects | 12 | Deployed in PostgreSQL |
| Synthetic parts | 75 | Deployed in PostgreSQL |
| Public evidence links | 8 | Deployed in PostgreSQL |
| Terminology aliases | 74 | Deployed in PostgreSQL |
| Regression queries | 19 | Automated |
Synthetic identifiers start with SYN-. They must never be presented as Bauer internal master data or confirmed engineering rules.
Why file search was not sufficient¶
File search retrieves relevant passages and citations, but a document corpus alone does not represent a configured project or part as a structured engineering object. Reliable similarity and compatibility search require explicit fields for medium, pressure, capacity, compressor family, topology, parts, standards, and linked evidence.
The deployed solution combines:
file_searchfor source passages and page-level evidence;- a structured Bauer Twin tool for projects, parts, filters, comparisons, and identifiers.
Document retrieval now has a second private evaluation path,
Bauer Kompressoren - RAG v2 Test. It uses the same 373 public files and Bauer Twin tool but adds
exact, lexical, vector, and table-aware retrieval. The normal demonstration Agent remains on V1
until gold adjudication and the formal comparison pass; V2 must not be presented as promoted.
Structured service¶
The Bauer Twin API runs in Railway and exposes a protected streamable HTTP MCP endpoint plus a protected HTTP search endpoint. Its public /health route reports service status and non-sensitive record counts.
The six tool actions are:
| Action | Result |
|---|---|
search_similar_projects |
Ranked compatible historical-project candidates and exclusions |
compare_projects |
Deterministic field-by-field differences |
search_parts |
Exact, text, vector, and filtered part results |
search_documents |
Structured document lookup |
get_project_details |
One project's fields, parts, and documents |
get_part_details |
One part's compatibility and linked records |
Exact SYN- project/part IDs and DOC- document IDs bypass fuzzy ranking only after applicable hard constraints pass.
Flexible terminology contract¶
The MCP schema keeps actions and numerical parameters strict while accepting open text for business vocabulary. The service resolves known terms through the bauer_twin.terminology_aliases catalogue.
Examples include:
nitrogen,Stickstoff, andN2→nitrogen;breathing airandAtemluft→breathing air;heliumandHeliumgas→helium;boosterandNachverdichter→booster.
Safe record qualifiers such as synthetic nitrogen do not change the engineering medium. Negations, mixed media, and unknown terms are not guessed.
Every structured response has one of three outcomes:
| Status | Meaning | Agent behaviour |
|---|---|---|
matches_found |
Compatible records passed all hard constraints | Explain and rank the returned records |
no_compatible_match |
The terminology is known, but no record satisfies the mandatory combination | Report no match; do not substitute another medium or weaken pressure/topology |
unknown_constraint |
A supplied business term cannot be normalized safely | Report the unknown term and optional suggestions; do not guess |
The Agent may call the Bauer Twin tool no more than twice in one turn, may not repeat identical arguments, and must stop on no_compatible_match or unknown_constraint.
Engineering search rules¶
Project search extracts available requirements and applies hard exclusions before ranking. A candidate is excluded when it conflicts with an explicit:
- medium;
- minimum target pressure;
- compressor family;
- topology.
Compatible candidates are ranked using structured similarity, text relevance, and 1,024-dimensional vectors. Deterministic comparison logic reports matching and differing attributes instead of asking the language model to infer them.
Part search supports:
- exact identifier lookup;
- German and English names and synonyms;
- category and lifecycle fields;
- compatible compressor models and media;
- pressure envelope;
- related synthetic projects;
- related public documents.
Demonstration sequence¶
Similar previous project¶
Find the closest previous nitrogen booster project for 420 bar and approximately
500 l/min. Explain why it matches and show incompatible alternatives that were rejected.
Expected top result: SYN-BK-N2-420-500. The 365-bar nitrogen project may appear only as a hard exclusion.
Fine-difference comparison¶
Compare SYN-BK-N2-420-500 with SYN-BK-N2-365-500 field by field.
Expected behaviour: capacity matches; pressure is a deterministic difference; both records are disclosed as synthetic.
Exact part lookup¶
Find part SYN-P-SNS-PRESSURE-500 and show its related demo projects and evidence documents.
Expected behaviour: the exact identifier ranks first and includes linked records.
Natural-language part and document search¶
Ask for a compatible component without supplying its identifier, then ask the Agent for source evidence. The structured tool should resolve the part; file_search should supply citations from the Bauer corpus.
Safe incompatible-medium rejection¶
Find a previous synthetic helium booster project for 420 bar and approximately
500 l/min. Apply medium, pressure, and topology as mandatory constraints.
Expected behaviour: one structured call returns no_compatible_match; no nitrogen, air, or breathing-air project is presented as compatible.
Acceptance results¶
| Test | Result |
|---|---|
| Deterministic service tests | 24 passed |
| Live structured benchmark | 19/19 passed |
| Hard-filter violations | 0 |
| Result-status violations | 0 |
| German/English family consistency | Passed |
| MCP round trip | Passed |
| PostgreSQL terminology catalogue | 74 aliases loaded |
| Production Agent B12 | English and German returned SYN-BK-N2-420-500 |
| Production Agent B14 | One tool call returned no_compatible_match for helium |
| Exact maximum-pressure file-search question | Passed after context safeguards |
| Private V2 retrieval smoke | Recall@5 0.6167; exact metadata 0.6667; p95 1.519 s; zero authorization violations |
| V2 promotion | Blocked pending gold adjudication and formal end-to-end/holdout evaluation |
Bauer B-DETECTION query under burst load |
Timed out during local-model overload test |
The timeout demonstrates the current single-slot local-model reliability constraint. It does not indicate a structured search error; the corrective options are documented under Models, Context, and Reliability.
Meeting checklist¶
- Open a new conversation with the private Bauer Kompressoren Agent.
- Confirm the Bauer health endpoint reports PostgreSQL mode, 12 projects, 75 parts, and 8 documents.
- Run the 19-query benchmark before the meeting.
- Use a new conversation so previous context cannot influence the answers.
- State at the beginning that structured projects, parts, and relationships are synthetic.
- Demonstrate an exact hit, similar project, hard exclusion, comparison, part lookup, and cited document result.
- Keep a prepared result capture available if the local model is temporarily saturated.
Production work requiring Bauer input¶
Production validation requires Bauer-confirmed examples for:
- project fields and numbering conventions;
- part and master-data fields;
- real repository and PLM/PDM boundaries;
- compatibility and exclusion rules;
- representative historical project sets;
- actual German and English user queries and expected results;
- access, retention, residency, and audit requirements.
Sources¶
D:\02_Code\LibreChat_Setup\docs\bauer-demo-findings.mdD:\02_Code\LibreChat_Setup\docs\bauer-demo-runbook.mdD:\02_Code\LibreChat_Setup\services\bauer-twin-api\app.pyD:\02_Code\LibreChat_Setup\services\bauer-twin-api\bauer_twin\schema.sqlD:\02_Code\LibreChat_Setup\services\bauer-twin-api\bauer_twin\terminology.pyD:\02_Code\LibreChat_Setup\scripts\run-bauer-benchmark.py- Live Railway, MCP, B12, and B14 checks captured on 2026-07-22