diff --git a/docs/_config.yml b/docs/_config.yml
index cdd476e..b05d1b0 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -1,4 +1,3 @@
-theme: minima
title: "QQL — Qdrant Query Language"
description: "SQL-like query language and CLI for Qdrant vector database — INSERT, SEARCH, hybrid search, reranking, quantization, and more."
url: "https://pavanjava.github.io/qql"
diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html
new file mode 100644
index 0000000..957f42a
--- /dev/null
+++ b/docs/_layouts/default.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+ {{ page.title }} | QQL Documentation
+
+
+
+
+
+
+
+
+
+ {{ content }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/assets/css/style.css b/docs/assets/css/style.css
new file mode 100644
index 0000000..03cbfc7
--- /dev/null
+++ b/docs/assets/css/style.css
@@ -0,0 +1,303 @@
+/* style.css */
+*, *::before, *::after { box-sizing: border-box; }
+
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
+ margin: 0; padding: 0;
+ background: #0d1117; color: #e6edf3;
+ line-height: 1.6;
+}
+
+.app-container {
+ display: flex;
+ min-height: 100vh;
+}
+
+/* Sidebar */
+.sidebar {
+ width: 260px;
+ background: #161b22;
+ border-right: 1px solid #30363d;
+ display: flex;
+ flex-direction: column;
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ overflow-y: auto;
+}
+
+.sidebar-header {
+ padding: 24px;
+ border-bottom: 1px solid #30363d;
+}
+
+.brand {
+ font-size: 1.8rem;
+ font-weight: 700;
+ color: #f0f6fc;
+ text-decoration: none;
+ display: block;
+ margin-bottom: 4px;
+}
+
+.version {
+ font-size: 0.85rem;
+ color: #8b949e;
+ margin: 0;
+}
+
+.sidebar-nav {
+ padding: 20px 0;
+ flex: 1;
+}
+
+.sidebar-nav ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.sidebar-nav .nav-heading {
+ font-size: 0.75rem;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ color: #8b949e;
+ padding: 0 24px;
+ margin-bottom: 8px;
+ font-weight: 600;
+}
+
+.sidebar-nav a {
+ display: block;
+ padding: 8px 24px;
+ color: #c9d1d9;
+ text-decoration: none;
+ font-size: 0.95rem;
+ transition: background 0.15s, color 0.15s;
+}
+
+.sidebar-nav a:hover {
+ background: #21262d;
+ color: #58a6ff;
+}
+
+.sidebar-nav a.active {
+ background: #23863622;
+ color: #3fb950;
+ border-left: 3px solid #3fb950;
+ padding-left: 21px;
+}
+
+.sidebar-footer {
+ padding: 20px 24px;
+ border-top: 1px solid #30363d;
+ display: flex;
+ gap: 16px;
+}
+
+.sidebar-footer a {
+ color: #8b949e;
+ text-decoration: none;
+ font-size: 0.85rem;
+}
+
+.sidebar-footer a:hover {
+ color: #58a6ff;
+}
+
+/* Main Content */
+.main-content {
+ flex: 1;
+ margin-left: 260px;
+ padding: 48px 48px 40px;
+ min-width: 0;
+ max-width: 1440px;
+}
+
+.content-wrapper {
+ max-width: 1200px;
+}
+
+.content-wrapper h1 {
+ font-size: 2.8rem;
+ color: #f0f6fc;
+ margin-top: 0;
+ margin-bottom: 16px;
+ border-bottom: 1px solid #21262d;
+ padding-bottom: 16px;
+}
+
+.content-wrapper h1 + p {
+ font-size: 1.15rem;
+ color: #8b949e;
+ margin-top: 0;
+ margin-bottom: 8px;
+}
+
+.content-wrapper h1 + p + hr {
+ margin-top: 20px;
+ margin-bottom: 32px;
+ border: none;
+ border-top: 1px solid #21262d;
+}
+
+.content-wrapper h2 {
+ font-size: 1.8rem;
+ color: #f0f6fc;
+ margin-top: 40px;
+ margin-bottom: 16px;
+ border-bottom: 1px solid #21262d;
+ padding-bottom: 8px;
+}
+
+.content-wrapper h3 {
+ font-size: 1.4rem;
+ color: #f0f6fc;
+ margin-top: 32px;
+ margin-bottom: 16px;
+}
+
+.content-wrapper p, .content-wrapper li {
+ font-size: 1rem;
+ color: #c9d1d9;
+}
+
+.content-wrapper a {
+ color: #58a6ff;
+ text-decoration: none;
+}
+
+.content-wrapper a:hover {
+ text-decoration: underline;
+}
+
+/* Code blocks */
+.code-wrapper {
+ position: relative;
+ margin: 16px 0;
+}
+
+.content-wrapper pre {
+ background: #161b22;
+ border: 1px solid #30363d;
+ border-radius: 8px;
+ padding: 20px;
+ overflow-x: auto;
+ font-size: 0.85rem;
+ line-height: 1.5;
+ margin: 0;
+}
+
+/* Copy button */
+.copy-btn {
+ position: absolute;
+ top: 8px;
+ right: 8px;
+ background: #21262d;
+ color: #8b949e;
+ border: 1px solid #30363d;
+ border-radius: 6px;
+ padding: 5px 10px;
+ font-size: 0.75rem;
+ font-weight: 600;
+ cursor: pointer;
+ opacity: 0;
+ transition: opacity 0.2s, background 0.2s, color 0.2s, border-color 0.2s;
+}
+
+.code-wrapper:hover .copy-btn,
+.code-wrapper:focus-within .copy-btn,
+.copy-btn:focus {
+ opacity: 1;
+}
+
+.copy-btn:hover {
+ background: #30363d;
+ color: #c9d1d9;
+}
+
+.copy-btn.copied {
+ background: #238636;
+ color: #fff;
+ border-color: #2ea043;
+ opacity: 1;
+}
+
+.content-wrapper code {
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
+ background: #161b22;
+ padding: 0.2em 0.4em;
+ border-radius: 6px;
+ font-size: 0.9em;
+}
+
+.content-wrapper pre code {
+ background: transparent;
+ padding: 0;
+ border-radius: 0;
+ color: #e6edf3;
+}
+
+/* Syntax highlighting */
+.highlight .c, .highlight .c1, .highlight .cm { color: #8b949e; font-style: italic; }
+.highlight .k, .highlight .kd, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv { color: #ff7b72; }
+.highlight .s, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .se, .highlight .sh, .highlight .si, .highlight .sx, .highlight .sr, .highlight .s1, .highlight .ss { color: #a5d6ff; }
+.highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo { color: #79c0ff; }
+.highlight .nx, .highlight .nb, .highlight .bp, .highlight .nc { color: #d2a8ff; }
+
+/* Tables */
+.content-wrapper table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 24px 0;
+}
+
+.content-wrapper th, .content-wrapper td {
+ border: 1px solid #30363d;
+ padding: 10px 16px;
+ text-align: left;
+}
+
+.content-wrapper th {
+ background: #161b22;
+ font-weight: 600;
+ color: #f0f6fc;
+}
+
+.content-wrapper tr:nth-child(even) {
+ background: #0d1117;
+}
+
+/* Blockquotes */
+.content-wrapper blockquote {
+ border-left: 4px solid #30363d;
+ margin: 0;
+ padding: 0 16px;
+ color: #8b949e;
+}
+
+/* Images */
+.content-wrapper img {
+ max-width: 100%;
+ border-radius: 6px;
+}
+
+/* Responsive */
+@media (max-width: 768px) {
+ .app-container {
+ flex-direction: column;
+ }
+ .sidebar {
+ width: 100%;
+ position: static;
+ border-right: none;
+ border-bottom: 1px solid #30363d;
+ height: auto;
+ overflow-y: visible;
+ }
+ .main-content {
+ margin-left: 0;
+ padding: 24px;
+ }
+}
diff --git a/docs/collections.md b/docs/collections.md
index da40f22..b4e088e 100644
--- a/docs/collections.md
+++ b/docs/collections.md
@@ -1,5 +1,12 @@
+---
+layout: default
+title: "Collections & Quantization"
+---
+
# Managing Collections
+Create, list, inspect, configure, and delete Qdrant collections with optional quantization for memory optimization.
+
---
## SHOW COLLECTIONS — list collections
diff --git a/docs/filters.md b/docs/filters.md
index a4f5961..24e0e66 100644
--- a/docs/filters.md
+++ b/docs/filters.md
@@ -1,3 +1,8 @@
+---
+layout: default
+title: "WHERE Filters"
+---
+
# WHERE Clause Filters
The `WHERE` clause lets you filter on any payload field using SQL-style predicates. All standard comparison, range, membership, null-check, and full-text operators are supported.
diff --git a/docs/getting-started.md b/docs/getting-started.md
index accfc80..bff4473 100644
--- a/docs/getting-started.md
+++ b/docs/getting-started.md
@@ -1,3 +1,8 @@
+---
+layout: default
+title: "Getting Started"
+---
+
# Getting Started with QQL
QQL is a SQL-like query language and CLI for [Qdrant](https://qdrant.tech). Instead of writing Python SDK calls you write natural query statements to insert, search, manage, and delete vector data.
diff --git a/docs/insert.md b/docs/insert.md
index a3f092a..63ed5da 100644
--- a/docs/insert.md
+++ b/docs/insert.md
@@ -1,3 +1,8 @@
+---
+layout: default
+title: "INSERT / INSERT BULK"
+---
+
# INSERT — Adding Documents to Qdrant
QQL provides two insert statements: `INSERT` for single documents and `INSERT BULK` for batch inserts.
diff --git a/docs/programmatic.md b/docs/programmatic.md
index 9771f33..d632a0d 100644
--- a/docs/programmatic.md
+++ b/docs/programmatic.md
@@ -1,3 +1,8 @@
+---
+layout: default
+title: "Programmatic Usage"
+---
+
# Programmatic Usage
QQL can be used as a Python library without the CLI.
diff --git a/docs/reference.md b/docs/reference.md
index 55d61d9..a62437d 100644
--- a/docs/reference.md
+++ b/docs/reference.md
@@ -1,5 +1,12 @@
+---
+layout: default
+title: "Reference"
+---
+
# Reference — Models, Config, Project Structure, Errors
+Default embedding models, configuration parameters, project layout, and common error codes for troubleshooting.
+
---
## Embedding Models
diff --git a/docs/scripts.md b/docs/scripts.md
index b95c18c..1fd512f 100644
--- a/docs/scripts.md
+++ b/docs/scripts.md
@@ -1,3 +1,8 @@
+---
+layout: default
+title: "Scripts: EXECUTE / DUMP"
+---
+
# Script Files — EXECUTE and DUMP
QQL supports reading from and writing to `.qql` script files, making it easy to automate bulk operations, seed databases, and back up collections.
diff --git a/docs/search.md b/docs/search.md
index 8daa2d4..cbd32af 100644
--- a/docs/search.md
+++ b/docs/search.md
@@ -1,5 +1,12 @@
+---
+layout: default
+title: "SEARCH / SELECT / RECOMMEND"
+---
+
# SEARCH, SELECT, SCROLL, RECOMMEND, Hybrid Search & Reranking
+QQL supports semantic (dense), sparse (BM25/SPLADE), and hybrid search with optional reranking, SELECT for point retrieval, SCROLL for pagination, and RECOMMEND for example-driven discovery.
+
---
## SEARCH — find similar points
diff --git a/examples_and_applications/healthcare_conversation_rag/README.md b/examples_and_applications/healthcare_conversation_rag/README.md
new file mode 100644
index 0000000..ed4c8dd
--- /dev/null
+++ b/examples_and_applications/healthcare_conversation_rag/README.md
@@ -0,0 +1,127 @@
+# Healthcare Conversation RAG
+
+A medical RAG (Retrieval-Augmented Generation) application that demonstrates semantic search over doctor-patient conversations using QQL and a local LLM.
+
+## Overview
+
+This application loads a dataset of doctor-patient conversations into Qdrant and provides a natural language search interface via an AI agent. It showcases how to:
+
+- Load medical conversation data from Hugging Face
+- Index it in Qdrant using QQL's bulk INSERT
+- Build a semantic search tool that the agent calls for context
+
+## Prerequisites
+
+- Python 3.12+
+- A running Qdrant instance (local or cloud)
+- [Ollama](https://ollama.com) running locally with the `qwen3.5:latest` model
+- QQL CLI installed
+
+## Installation
+
+```bash
+# Install dependencies
+pip install -e ../.. # install qql from the repo root
+
+# Or install from PyPI
+pip install qql-cli datasets agno ollama openai
+```
+
+## Setup
+
+### 1. Start Qdrant
+
+```bash
+# Via Docker
+docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
+
+# Or use Qdrant Cloud — update the URL/secret in main.py
+```
+
+### 2. Start Ollama
+
+```bash
+ollama serve # starts on localhost:11434 by default
+ollama pull qwen3.5:latest
+```
+
+### 3. Load the data
+
+```bash
+python create_dataset.py
+```
+
+This generates `data_sets/source_data.qql` from the `pavanmantha/doctor_patient_conversation` Hugging Face dataset.
+
+### 4. Run the QQL script to populate Qdrant
+
+```bash
+qql run data_sets/source_data.qql
+```
+
+Or interactively:
+
+```bash
+qql connect --url http://localhost:6333
+qql> EXECUTE data_sets/source_data.qql
+```
+
+## Running the Application
+
+```bash
+python main.py
+```
+
+The agent will launch and you can ask medical questions in natural language. For example:
+
+```text
+hi doctor I am just wondering what does abutment of the nerve root mean in a back issue please explain what treatment is required for annular bulging and tear
+```
+
+The agent will call `search_medical_records` to retrieve relevant conversation context from Qdrant, then generate a response.
+
+## Project Structure
+
+```text
+healthcare_conversation_rag/
+├── main.py # AI agent with search tool
+├── create_dataset.py # Generates .qql file from HuggingFace dataset
+├── data_sets/
+│ ├── source_data.qql # Bulk INSERT script (generated)
+│ └── ground_truth.jsonl # Sample queries for evaluation
+├── pyproject.toml
+└── __init__.py
+```
+
+## How It Works
+
+1. `create_dataset.py` loads a HuggingFace dataset and writes QQL `INSERT BULK` statements
+2. Running that script populates the `doctor_patient_conversation` collection in Qdrant
+3. `main.py` defines `search_medical_records()` — a function that:
+ - Takes a natural language question
+ - Runs a QQL `SEARCH ... SIMILAR TO` query with MMR diversity
+ - Aggregates matching conversation texts into a context string
+4. The Agno agent calls this function as a tool and uses the returned context to answer
+
+## Key Files
+
+| File | Purpose |
+|---|---|
+| `main.py` | Agent + search function — the entry point |
+| `create_dataset.py` | Data pipeline — HuggingFace → `.qql` file |
+| `data_sets/source_data.qql` | Ready-to-run bulk INSERT script |
+| `pyproject.toml` | Dependencies |
+
+## Customizing
+
+**Change the collection name** — update `COLLECTION` in `create_dataset.py` and the query in `main.py`.
+
+**Adjust search params** — modify the `WITH { ... }` block in `main.py:search_medical_records()`:
+
+```python
+query = f"SEARCH doctor_patient_conversation SIMILAR TO '{question}' LIMIT {LIMIT} WITH {{ hnsw_ef: 128, mmr_diversity: 0.5, mmr_candidates: 50}}"
+```
+
+**Use a different model** — change the `Ollama(id=...)` in `main.py`.
+
+**Connect to Qdrant Cloud** — update the connection URL and secret in `main.py:Connection(...)`.
\ No newline at end of file