diff --git a/experimental/ai4data_lab/.gitignore b/experimental/ai4data_lab/.gitignore
new file mode 100644
index 0000000..6b1e428
--- /dev/null
+++ b/experimental/ai4data_lab/.gitignore
@@ -0,0 +1,31 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+# Exclude large binary model assets
+public/onnx/*.onnx
+public/wllama/*.wasm
+.venv
+venv
+
diff --git a/experimental/ai4data_lab/.oxlintrc.json b/experimental/ai4data_lab/.oxlintrc.json
new file mode 100644
index 0000000..1255078
--- /dev/null
+++ b/experimental/ai4data_lab/.oxlintrc.json
@@ -0,0 +1,8 @@
+{
+ "$schema": "./node_modules/oxlint/configuration_schema.json",
+ "plugins": ["react", "oxc"],
+ "rules": {
+ "react/rules-of-hooks": "error",
+ "react/only-export-components": ["warn", { "allowConstantExport": true }]
+ }
+}
diff --git a/experimental/ai4data_lab/README.md b/experimental/ai4data_lab/README.md
new file mode 100644
index 0000000..4550402
--- /dev/null
+++ b/experimental/ai4data_lab/README.md
@@ -0,0 +1,131 @@
+# ai4data Lab
+
+ai4data Lab is a fully client-side WebGPU playground that runs large language models, embeddings, and zero-shot entity extraction in the browser. Documents, prompts, and model state never leave the user's machine.
+
+## What runs in the browser
+
+- **Gemma 4 Mobile (WGSL)** for evidence-grounded document chat. Citation IDs travel from the parser through retrieval, prompt, and the evidence map.
+- **Bonsai 1.7B ONNX** as an alternate chat model loaded through Transformers.js.
+- **Xenova/all-MiniLM-L6-v2** dense embeddings with reciprocal rank fusion over lexical candidates.
+- **Anonym-IA/gliner_large-v2.1 ONNX** for zero-shot span extraction on arbitrary text and labels.
+- **LiquidAI/LFM2.5-2.6B-ONNX** research agent driven from a Web Worker, with tool permissions and a compiled artifact.
+
+## Requirements
+
+- Node.js 18 or newer (Vite 8 requires a recent Node).
+- A Chromium-based browser with WebGPU enabled (Chrome 113+, Edge, Brave, Arc). Safari and Firefox need nightly or experimental builds.
+- Roughly 3 GB of free disk for the cached model weights, plus enough GPU memory for the selected model.
+
+## Model assets (download separately)
+
+The repository excludes the large ONNX and WebAssembly assets that Vite serves directly. Download them into the matching paths before running the app:
+
+- `ai4data_lab/public/onnx/gliner_large-v2.1_q4.onnx` (about 900 MB) from `https://huggingface.co/Anonym-IA/gliner_large-v2.1/resolve/main/onnx/model_q4.onnx`
+- `ai4data_lab/public/onnx/gist-embedding-v0.onnx` and `ai4data_lab/public/onnx/splade-sparse.onnx` from the corresponding Hugging Face repos.
+- `ai4data_lab/public/wllama/wllama.wasm` from the `wllama` package's release artifacts, for example `https://unpkg.com/@wllama/wllama@3.5.1/dist/wllama.wasm`.
+
+The browser also streams chat and agent weights from Hugging Face at runtime, so an internet connection is still required on first run.
+
+## Quick start
+
+```bash
+cd ai4data_lab
+npm install
+npm run dev -- --host 0.0.0.0
+```
+
+Vite prints the local URL (default `http://localhost:5173/`). Use `--host 0.0.0.0` when running on a server so the page is reachable from another device.
+
+### Other commands
+
+```bash
+npm run build # production bundle in dist/
+npm run preview # serve the production bundle locally
+npm run lint # oxlint over the source tree
+```
+
+## Project layout
+
+```
+ai4data_lab/
+ index.html # Vite entry, sets