Skip to content
Louvre Ops DB

Guided tour

Louvre Ops DB in three videos

Each video follows one workflow from start to finish, with the step shown on screen and as captions: the ER diagram itself, the museum's questions run in your browser, and asking in English with your own key. A Playwright script recorded them and checks every step on the way, so the same run reproduces the same journeys.

Walkthrough 1 of 3 · the landing page

The ERD

The 2020 entity-relationship design, rebuilt from the original MySQL Workbench file: switch between Chen and Crow's-foot notation, read the 2020 assumption behind each relationship, open a table's SQL, compare the redraw with the 2020 export and see what the refined schema changed.

Setup: The landing page in the light theme at 1280 × 800. No sign-in and no key; the diagrams are drawn from coursework/1118472.mwb and the original Chen layout.Open the MP4

Steps (transcript)

  1. 1The landing page opens on the ERD: the 2020 physical model in Crow's-foot notation, at its Workbench positions
  2. 2Switch to Chen's notation: the 2020 conceptual model, redrawn where it was drawn in Axure
  3. 3Hover a Chen relationship: who takes part, and the 2020 assumption behind it
  4. 4Back to Crow's foot: hover a relationship label for its cardinality in words and its assumption
  5. 5Select the Ticket table: its columns, keys and relationships
  6. 6Further down the panel: the SQL that creates it, from Workbench's forward engineering
  7. 7Invoices is one of three tables MySQL refuses to create, and the panel shows MySQL's error
  8. 8Side by side: the original 2020 Workbench export next to the interactive redraw
  9. 9The refined 2026 schema next to the 2020 design as submitted
  10. 10As designed against refined: what changed, table by table, and the finding behind each change
Try it yourself

Walkthrough 2 of 3 · /playground

Run the museum

The SQL playground runs SQLite in your browser on five years of synthetic museum activity: the saved business questions, the refined schema's rules refusing bad data, and the 2020 design rebuilt from the same five years.

Setup: The SQL playground (sql.js in a Web Worker) on the refined demo database, then on the 2020 design. The data come from the seeded generator (seed 20200403); queries run in the browser and nothing is sent to a server.Open the MP4

Steps (transcript)

  1. 1The SQL playground: SQLite, compiled to WebAssembly, loads the demo database in your browser
  2. 2Saved query 1: tickets sold by payment method, run in the browser
  3. 3The same result as a chart
  4. 4Saved query 5: the usual order of wings, which the 2020 design cannot answer
  5. 5Places left in each exhibition slot, from the slot_availability view
  6. 6Rules in action: a trigger refuses to overbook a full slot, and the run is rolled back
  7. 7Switch to the 2020 design: the same five years replayed into the tables as submitted
  8. 8Everything in Wings: keyed by the wing's name, it kept 3 of 19,545 wing visits
Try it yourself

Walkthrough 3 of 3 · /ask

Ask in English

Optional text-to-SQL with your own key: the bring-your-own-key settings, a clearly labelled mocked model reply that passes the SQL validator and runs read-only in your browser, the human decision and the audit log, then the evaluation harness and its grader.

Setup: No real key and no provider call. A placeholder is typed into AI settings, and the browser's request to the Anthropic API is answered by the recording script with a fixed reply (mocked AI response for illustration). Everything after the reply is the site's own code: the zod check, the SQL validator, the read-only sandbox, the audit log and the grader.Open the MP4

Mocked AI response for illustration. Steps 5, 6, 7, 8 show a fixed reply that the recording script returned in place of the provider; no model was called and no real key was used. The site has no AI budget and publishes no accuracy figures: with your own key, the evaluation harness measures a real model.

Steps (transcript)

  1. 1Ask the database needs your own API key; nothing else on the site does
  2. 2AI settings: Anthropic (the default) or OpenAI, kept in this tab unless you choose to remember it
  3. 3A placeholder key for the recording: a real key goes only to the provider, straight from your browser
  4. 4Ask in English: "Which entrance do visitors who arrive by Metro use most?"
  5. 5The model's query, labelled AI-generated, with its explanation and assumptionsMocked AI response for illustration
  6. 6The validator allows one read-only SELECT on documented tables, and it runs in a read-only sandboxMocked AI response for illustration
  7. 7You decide: accept, edit or reject. The decision is recordedMocked AI response for illustration
  8. 8The audit log in this browser: every call without the key, exportable as JSON or CSVMocked AI response for illustration
  9. 9The evaluation harness: 22 questions with hand-written gold SQL, scored with Wilson intervals
  10. 10Grade your own SQL with no key: validated, run and scored exactly like a model's query
Try it yourself

Screenshots

Every key feature at a glance

Captured by the same script at 1440 × 900 (the landing page in light and dark mode) and on a 390 px phone. Select one to enlarge it; the arrow keys step through the set.

Desktop · 1440 × 900

Mobile · 390 × 844

How these were made

pnpm showcase runs web/e2e/showcase.spec.ts on the system Chrome: it plays each journey at a human pace with an on-screen caption and cursor, asserts what it shows (the notation switch, the assumption behind a relationship, a table's SQL and MySQL's error, the saved queries' results, the rows the 2020 design kept, the validator's verdict and the grader's score) and records it at 1280 × 800. ffmpeg then encodes the H.264 videos on this page and the GIFs in the README. The captions are the same text as the on-screen steps.

The recordings were made on a local production build of this site with the committed, synthetic demo data. No real API key was entered and no AI provider was called: the third video types a placeholder into AI settings and answers the browser's request with a fixed reply, labelled on screen as a mocked AI response for illustration.