Spaces:
Sleeping
Sleeping
Stack A: NIM brain + Maverick judge + Sarvam voice/Indic (D-019). Data moved to insurance-bot-data dataset; Space is now code-only.
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .dockerignore +16 -0
- .gitignore +6 -6
- Dockerfile +24 -1
- SUBMISSION.md +46 -38
- backend/config.py +21 -16
- backend/faithfulness.py +13 -9
- backend/main.py +103 -5
- backend/orchestrator.py +41 -42
- backend/profile_rag.py +183 -0
- backend/providers/__init__.py +10 -6
- backend/providers/_smoke_test.py +30 -38
- backend/providers/nvidia_nim_llm.py +157 -0
- backend/translation_check.py +6 -7
- data/information_source_map.md +341 -0
- docs/decisions.md +111 -0
- eval/info_source_map.json +0 -0
- eval/results.json +74 -386
- eval/results.md +19 -29
- eval/run.py +7 -4
- frontend/src/app/page.tsx +513 -69
- frontend/src/lib/api.ts +32 -3
- frontend/src/lib/i18n.ts +80 -0
- kb/AUDIT_TRAIL.md +19 -0
- kb/INDEX.md +141 -43
- kb/methodology/discovery-script.md +138 -0
- kb/methodology/glossary.json +132 -0
- kb/methodology/knowledge-graph.md +186 -0
- kb/methodology/scorecard.json +234 -0
- kb/methodology/tie-breakers.md +94 -0
- kb/policies/aditya-birla__activ-assure-diamond.md +300 -0
- kb/policies/aditya-birla__activ-health-individual__wordings.md +262 -0
- kb/policies/aditya-birla__activ-health.md +300 -0
- kb/policies/aditya-birla__activ-one.md +300 -0
- kb/policies/aditya-birla__activ-secure-cancer-secure__brochure.md +260 -0
- kb/policies/aditya-birla__activ-secure-personal-accident-cancer-secure__wordings.md +260 -0
- kb/policies/aditya-birla__group-activ-health__wordings.md +260 -168
- kb/policies/bajaj-allianz__comprehensive-care-plan.md +300 -0
- kb/policies/bajaj-allianz__criti-care__wordings.md +260 -0
- kb/policies/bajaj-allianz__extra-care-plus.md +300 -0
- kb/policies/bajaj-allianz__global-health-care.md +300 -0
- kb/policies/bajaj-allianz__group-health-guard-gold__wordings.md +263 -0
- kb/policies/bajaj-allianz__group-personal-accident__wordings.md +258 -0
- kb/policies/bajaj-allianz__health-guard-gold-individual__wordings.md +264 -0
- kb/policies/bajaj-allianz__health-guard-gold.md +300 -0
- kb/policies/bajaj-allianz__health-guard.md +300 -0
- kb/policies/bajaj-allianz__silver-health.md +300 -0
- kb/policies/bajaj-allianz__tax-gain.md +300 -0
- kb/policies/care-health__care-advantage-add-ons-protect-plus-care-shield__brochure.md +261 -172
- kb/policies/care-health__care-advantage.md +300 -0
- kb/policies/care-health__care-classic.md +300 -0
.dockerignore
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Don't ship these into the Docker image
|
| 2 |
+
.git/
|
| 3 |
+
.venv/
|
| 4 |
+
__pycache__/
|
| 5 |
+
*.pyc
|
| 6 |
+
node_modules/
|
| 7 |
+
frontend/node_modules/
|
| 8 |
+
frontend/.next/
|
| 9 |
+
.env
|
| 10 |
+
.env.local
|
| 11 |
+
*.log
|
| 12 |
+
logs/
|
| 13 |
+
.DS_Store
|
| 14 |
+
|
| 15 |
+
# Build output — we rebuild fresh inside Docker
|
| 16 |
+
frontend/out/
|
.gitignore
CHANGED
|
@@ -52,15 +52,15 @@ frontend/node_modules/
|
|
| 52 |
frontend/.next/
|
| 53 |
frontend/.env.local
|
| 54 |
|
| 55 |
-
#
|
| 56 |
-
#
|
|
|
|
|
|
|
| 57 |
rag/vectors/
|
|
|
|
|
|
|
| 58 |
# rag/policies.duckdb -- intentionally not gitignored (small)
|
| 59 |
|
| 60 |
-
# Raw PDFs — large; do commit a subset later for reproducibility
|
| 61 |
-
# (keeping commented out — we WILL commit the corpus we acquire so deploy works)
|
| 62 |
-
# rag/corpus/
|
| 63 |
-
|
| 64 |
# Eval outputs
|
| 65 |
eval/results_*.json
|
| 66 |
eval/results_*.html
|
|
|
|
| 52 |
frontend/.next/
|
| 53 |
frontend/.env.local
|
| 54 |
|
| 55 |
+
# Large data lives in the companion HF dataset, NOT in the Space git repo.
|
| 56 |
+
# The free-tier HF Space cap is 1 GB; rag/corpus + rag/vectors is ~310 MB.
|
| 57 |
+
# Dataset: https://huggingface.co/datasets/rohitsar567/insurance-bot-data
|
| 58 |
+
# Dockerfile snapshot_downloads these at build time. See D-019.
|
| 59 |
rag/vectors/
|
| 60 |
+
rag/corpus/
|
| 61 |
+
rag/extracted/
|
| 62 |
# rag/policies.duckdb -- intentionally not gitignored (small)
|
| 63 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
# Eval outputs
|
| 65 |
eval/results_*.json
|
| 66 |
eval/results_*.html
|
Dockerfile
CHANGED
|
@@ -41,12 +41,35 @@ RUN pip install --no-cache-dir --upgrade pip && \
|
|
| 41 |
# Pre-download the embedding model so the first request is fast (no cold load)
|
| 42 |
RUN python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('BAAI/bge-small-en-v1.5')"
|
| 43 |
|
| 44 |
-
# Copy the backend source + RAG modules
|
| 45 |
COPY backend ./backend
|
| 46 |
COPY rag ./rag
|
| 47 |
COPY eval ./eval
|
| 48 |
COPY docs ./docs
|
| 49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
# Copy the built frontend from stage 1
|
| 51 |
COPY --from=frontend-builder /app/frontend/out ./frontend/out
|
| 52 |
|
|
|
|
| 41 |
# Pre-download the embedding model so the first request is fast (no cold load)
|
| 42 |
RUN python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('BAAI/bge-small-en-v1.5')"
|
| 43 |
|
| 44 |
+
# Copy the backend source + RAG modules (rag/ holds .py only at this stage)
|
| 45 |
COPY backend ./backend
|
| 46 |
COPY rag ./rag
|
| 47 |
COPY eval ./eval
|
| 48 |
COPY docs ./docs
|
| 49 |
|
| 50 |
+
# Pull the large data (corpus PDFs + pre-built Chroma vectors + extracted JSONs)
|
| 51 |
+
# from the companion HF dataset rather than baking it into the Space repo.
|
| 52 |
+
# Why: the free-tier Space repo has a 1 GB cap; rag/corpus + rag/vectors is
|
| 53 |
+
# ~310 MB and would have made the Space repo unviable on top of the regular
|
| 54 |
+
# code. HF datasets get 50 GB free quota — the right place for this data.
|
| 55 |
+
# Public dataset, no token needed at build time. See D-019.
|
| 56 |
+
RUN python -c "\
|
| 57 |
+
from huggingface_hub import snapshot_download; \
|
| 58 |
+
snapshot_download(\
|
| 59 |
+
repo_id='rohitsar567/insurance-bot-data', \
|
| 60 |
+
repo_type='dataset', \
|
| 61 |
+
local_dir='/app/rag', \
|
| 62 |
+
allow_patterns=['rag/corpus/**','rag/vectors/**','rag/extracted/**'], \
|
| 63 |
+
) " && \
|
| 64 |
+
# The dataset preserves the rag/ prefix in path_in_repo, so the snapshot
|
| 65 |
+
# writes to /app/rag/rag/corpus/... — flatten one level so existing
|
| 66 |
+
# backend imports (rag/corpus/, rag/vectors/) keep working unchanged.
|
| 67 |
+
if [ -d /app/rag/rag ]; then \
|
| 68 |
+
cp -r /app/rag/rag/* /app/rag/ && rm -rf /app/rag/rag; \
|
| 69 |
+
fi && \
|
| 70 |
+
echo "Dataset pull complete:" && \
|
| 71 |
+
du -sh /app/rag/corpus /app/rag/vectors /app/rag/extracted 2>&1 | sed 's/^/ /'
|
| 72 |
+
|
| 73 |
# Copy the built frontend from stage 1
|
| 74 |
COPY --from=frontend-builder /app/frontend/out ./frontend/out
|
| 75 |
|
SUBMISSION.md
CHANGED
|
@@ -21,7 +21,7 @@ A **voice-first health-insurance advisor** for Indian buyers, grounded in a cura
|
|
| 21 |
|
| 22 |
> *"What's the pre-existing disease waiting period under Care Supreme, and how does that compare to ICICI Elevate?"*
|
| 23 |
|
| 24 |
-
You should see (i) a comparative answer with `[Source: ...]` citations linking to specific policy PDFs and page ranges, (ii) the brain that handled it (`
|
| 25 |
|
| 26 |
Now ask: *"What does IRDAI's 2024 Master Circular say about cataract waiting-period caps?"* The bot will ground the answer in `irdai-master-circular-health-2024.pdf` — a document we had to **Playwright** past Akamai bot protection to obtain (§6).
|
| 27 |
|
|
@@ -50,22 +50,22 @@ Now ask: *"What does IRDAI's 2024 Master Circular say about cataract waiting-per
|
|
| 50 |
│ │ │
|
| 51 |
│ ┌───────────────────┼───────────────────┐ │
|
| 52 |
│ ▼ ▼ ▼ │
|
| 53 |
-
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
|
| 54 |
-
│ │ STRUCTURED │ │ VECTOR STORE │ │ BRAIN ROUTER
|
| 55 |
-
│ │ DuckDB │ │ Chroma 0.5.20│ │
|
| 56 |
-
│ │ 48 fields │ │ BGE-small │ │
|
| 57 |
-
│ │ /policy │ │ 800/120 chunk│ │
|
| 58 |
-
│ └──────────────┘ └──────────────┘ │
|
| 59 |
-
│ ▲ ▲ │
|
| 60 |
-
│ │ extracted at │ embedded │
|
| 61 |
-
│ │ ingest │ at ingest │
|
| 62 |
-
│ │ │ └──────────────┘ │
|
| 63 |
└───────────┼───────────────────┼─────────────────────────────────┼───────┘
|
| 64 |
│ │ │
|
| 65 |
┌───────────┴───────────────────┴───────────────┐ │
|
| 66 |
│ INGEST (rag/ingest.py + rag/extract.py) │ │
|
| 67 |
│ pdfplumber → 800-tok chunks → BGE embed │ │
|
| 68 |
-
│
|
| 69 |
│ self-critique → confidence_pct per field │ │
|
| 70 |
└────────────────┬──────────────────────────────┘ │
|
| 71 |
│ │
|
|
@@ -85,12 +85,12 @@ Now ask: *"What does IRDAI's 2024 Master Circular say about cataract waiting-per
|
|
| 85 |
| **API gateway** ([`backend/main.py`](backend/main.py)) | FastAPI + Pydantic. Routes: `/api/chat`, `/api/voice`, `/api/policies`, `/api/policies/{id}/scorecard`, `/api/insurers/{slug}/reviews`. OpenAPI auto-served; frontend types codegen via `openapi-typescript` (D-015). |
|
| 86 |
| **Orchestrator** ([`backend/orchestrator.py`](backend/orchestrator.py)) | Intent classifier → retrieval → brain router → 4-gate faithfulness → cross-check retry → Indic cascade. The single file that defines a turn. |
|
| 87 |
| **Faithfulness verifier** ([`backend/faithfulness.py`](backend/faithfulness.py)) | Four gates run on every reply: retrieval floor, citation integrity, regex numeric grounding, LLM-judge. Every block goes to `logs/hallucinations.jsonl`. |
|
| 88 |
-
| **Translation cascade** ([`backend/translator.py`](backend/translator.py), [`backend/translation_check.py`](backend/translation_check.py)) | For Indic queries: Sarvam
|
| 89 |
| **Retrieval** ([`rag/retrieve.py`](rag/retrieve.py)) | Top-k cosine search over Chroma with policy-name-aware boost. Returns `RetrievedChunk(policy_id, policy_name, page_start, page_end, source_url, score, text)`. |
|
| 90 |
-
| **Structured extraction** ([`rag/extract.py`](rag/extract.py)) |
|
| 91 |
| **Scorecard** ([`backend/scorecard.py`](backend/scorecard.py)) | Pure-Python rules-based aggregation over 24 of the 48 extracted fields → 6 sub-scores → A–F grade. No LLM in the loop — anyone can reproduce a grade from the JSON. Methodology in [`docs/scorecard-methodology.md`](docs/scorecard-methodology.md). |
|
| 92 |
| **KB** ([`kb/`](kb/)) | Markdown-first knowledge base with 11 per-policy sheets, scorecard results, eval results, URL verification, insurer reviews, premium anchors, security findings. Regeneratable via `python -m rag.build_kb`. |
|
| 93 |
-
| **Eval** ([`eval/`](eval/)) | Three gold-Q&A pipelines (templated, LLM-drafted, adversarial),
|
| 94 |
|
| 95 |
Full system diagram in [`docs/02-architecture.md`](docs/02-architecture.md) §1; stack rationale in [`docs/tech-stack-rationale.md`](docs/tech-stack-rationale.md).
|
| 96 |
|
|
@@ -108,30 +108,38 @@ Sarvam-first per the assignment. Saarika v2.5 (their newer Indic ASR) handles En
|
|
| 108 |
|
| 109 |
First-party Indic prosody. The orchestrator pre-expands domain acronyms (`PED → pre-existing disease`) before sending text to Bulbul — see F-06 in [`docs/04-failure-modes.md`](docs/04-failure-modes.md). [`backend/providers/sarvam_tts.py`](backend/providers/sarvam_tts.py).
|
| 110 |
|
| 111 |
-
### 3.3
|
| 112 |
|
| 113 |
-
**
|
| 114 |
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
|
|
|
| 121 |
|
| 122 |
-
|
| 123 |
|
| 124 |
-
3.
|
| 125 |
|
| 126 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
|
| 128 |
-
|
| 129 |
|
| 130 |
-
**
|
| 131 |
|
| 132 |
-
### 3.5
|
| 133 |
|
| 134 |
-
|
| 135 |
|
| 136 |
### 3.6 BGE-small-en-v1.5 — embeddings (the honest tradeoff)
|
| 137 |
|
|
@@ -148,7 +156,7 @@ D-011 originally locked Voyage AI `voyage-3`. Mid-build, Voyage's 3 RPM free-tie
|
|
| 148 |
| Pipeline | What | Volume | Why |
|
| 149 |
| --- | --- | --- | --- |
|
| 150 |
| **A — Auto-templated** | 15 templates × ~80 policies | ~1,100 candidate pairs; ~300 currently committed | Scales for free. Each pair traces to a specific schema field → specific clause. Fully reproducible. |
|
| 151 |
-
| **B — LLM-drafted nuanced** |
|
| 152 |
| **C — Adversarial** | Hand-written: out-of-corpus (space tourism), out-of-policy-type (IRDAI mandate when corpus had no IRDAI before §6), Hinglish, multi-policy compare | ~30–40 | Tests **refusal precision**, not just factual accuracy. |
|
| 153 |
|
| 154 |
Generator: [`eval/generate_gold.py`](eval/generate_gold.py). Committed gold set: [`eval/gold_qa.json`](eval/gold_qa.json).
|
|
@@ -162,7 +170,7 @@ Every reply, every turn, runs through [`backend/faithfulness.py`](backend/faithf
|
|
| 162 |
| **1 Retrieval floor** | `_gate_retrieval_floor` | Top retrieval score < 0.40 — bot has nothing to ground in | line 74 |
|
| 163 |
| **2 Citation integrity** | `_gate_citation_integrity` | Reply cites a policy_name that wasn't retrieved | line 94 |
|
| 164 |
| **3 Numeric grounding (regex)** | `_gate_numeric_grounding` | Any `₹`, `%`, `days`, `months`, `years` in reply doesn't appear in retrieved chunks | line 137 |
|
| 165 |
-
| **4 LLM-judge faithfulness** | `_gate_llm_judge` (
|
| 166 |
|
| 167 |
The 4-gate verdict is bundled with a `cross-check retry` (§3.4) and the 3-gate Indic drift check (§3.3). Total inspection surface per turn = **4 English faithfulness gates + 1 cross-check brain pass + 3 Indic drift gates** when the user speaks Hinglish.
|
| 168 |
|
|
@@ -185,7 +193,7 @@ By brain: `groq-llama` 100%, `sarvam-m` 37.5%.
|
|
| 185 |
1. **The gates are aggressive.** 12 of 25 questions are blocked — the bot refused when the gold answer claims the corpus has the data. In several cases the data *is* in the corpus but Gate 3 (regex numeric grounding) was over-strict on currency/percent normalisation. The fix is to soften the regex (v1.1, tracked); the v1 stance is "refuse rather than mis-cite" which is the SAFE failure mode in BFSI.
|
| 186 |
2. **Pipeline A templated questions over-index on `waiting_period` and `sub_limit` fields that several CIS-only PDFs (Bajaj Silver Health, Tax Gain) don't explicitly state.** When the template asks the question anyway, the bot correctly refuses, but the gold expects an answer.
|
| 187 |
|
| 188 |
-
The grader is
|
| 189 |
|
| 190 |
### 4.4 Audit log — every blocked claim, every gate
|
| 191 |
|
|
@@ -240,7 +248,7 @@ D-007. [`kb/premiums/INDEX.md`](kb/premiums/INDEX.md) lists the public PolicyBaz
|
|
| 240 |
|
| 241 |
### 6.6 Push-to-talk, not full-duplex streaming
|
| 242 |
|
| 243 |
-
Voice latency: ~3–4s for
|
| 244 |
|
| 245 |
### 6.7 HF Spaces free tier — cold start
|
| 246 |
|
|
@@ -256,9 +264,9 @@ For each: try voice and text. The reply panel shows `brain_used` and per-citatio
|
|
| 256 |
|
| 257 |
| # | Question | What you should see | Why this question |
|
| 258 |
| --- | --- | --- | --- |
|
| 259 |
-
| 1 | *"What's the pre-existing disease waiting period under Care Supreme?"* | Specific number ("36 months" or similar) + `[Source: care-health/care-supreme/wordings, p.18]`. Brain
|
| 260 |
-
| 2 | *"Compare cataract waiting period in ICICI Elevate vs HDFC Optima Secure."* | Two-policy comparison with citations from both PDFs. Brain
|
| 261 |
-
| 3 | *"Care Supreme mein PED ka waiting period kya hai?"* (Hinglish) | Answer in Hinglish with citations preserved. `brain_used` includes `cascade::sarvam-trans+
|
| 262 |
| 4 | *"What does IRDAI say about cataract waiting-period caps under the 2024 Master Circular?"* | Cited answer from `irdai-master-circular-health-2024.pdf`. Refused before §6 Playwright rescue; answers now. | Demonstrates the IRDAI corpus fix. |
|
| 263 |
| 5 | *"Does Bajaj Silver Health cover space-tourism injuries?"* | **Safe refusal:** *"I'd rather not answer that without stronger evidence in the policy documents I have."* | Adversarial out-of-corpus — refusal is the correct behaviour (F-07). |
|
| 264 |
| 6 | *"Should I get the cataract surgery covered under this policy?"* | Bot answers what's covered + refuses to give clinical advice; suggests consulting a doctor. | Persona rule 4 (F-14) — no medical advice. |
|
|
@@ -276,7 +284,7 @@ A take-home is a sample of how the engineer thinks under constraint. Three thing
|
|
| 276 |
|
| 277 |
**2. I treat hallucination defense and refusal as product features.** BFSI deployments get fined for mis-selling; the bot is biased toward refusal over confident wrong answers. The 4 faithfulness gates + cross-check retry + 3 Indic drift checks + audit log are the BFSI-compliance-grade version of "we shipped a chatbot." If the eval shows 40% headline accuracy because the gates are aggressive, the right response is to soften the gates carefully (v1.1) — not to ship a higher number by relaxing the verifier.
|
| 278 |
|
| 279 |
-
**3. I document the model picks honestly
|
| 280 |
|
| 281 |
The rest is craftsmanship. The 8-section KB ([`kb/`](kb/)) is regeneratable from primary sources in <40 minutes for <$2 cold ([`kb/AUDIT_TRAIL.md`](kb/AUDIT_TRAIL.md) §7). Every numeric value in every reviewer-facing artifact traces to a source PDF + page + clause. Every architectural decision is in [`docs/decisions.md`](docs/decisions.md) D-001 through D-017 with alternatives and revisit-at-scale notes. The repo is structured so a Sarvam engineer joining the project on Monday could ship v1.1 by Friday.
|
| 282 |
|
|
|
|
| 21 |
|
| 22 |
> *"What's the pre-existing disease waiting period under Care Supreme, and how does that compare to ICICI Elevate?"*
|
| 23 |
|
| 24 |
+
You should see (i) a comparative answer with `[Source: ...]` citations linking to specific policy PDFs and page ranges, (ii) the brain that handled it (`v4-pro::comparison`, `v4-flash::qa`, or `crosscheck-rescued-by-maverick`), and (iii) audio synthesised by Sarvam Bulbul. Ask the same in Hinglish — *"Care Supreme mein PED ka waiting period kya hai?"* — and the response flows through the Indic translation cascade with three drift checks before reaching you.
|
| 25 |
|
| 26 |
Now ask: *"What does IRDAI's 2024 Master Circular say about cataract waiting-period caps?"* The bot will ground the answer in `irdai-master-circular-health-2024.pdf` — a document we had to **Playwright** past Akamai bot protection to obtain (§6).
|
| 27 |
|
|
|
|
| 50 |
│ │ │
|
| 51 |
│ ┌───────────────────┼───────────────────┐ │
|
| 52 |
│ ▼ ▼ ▼ │
|
| 53 |
+
│ ┌──────────────┐ ┌──────────────┐ ┌─────────────────────┐ │
|
| 54 |
+
│ │ STRUCTURED │ │ VECTOR STORE │ │ NIM BRAIN ROUTER │ │
|
| 55 |
+
│ │ DuckDB │ │ Chroma 0.5.20│ │ V4-Pro (heavy) ◀┐ │ │
|
| 56 |
+
│ │ 48 fields │ │ BGE-small │ │ V4-Flash (fast) │ │ │
|
| 57 |
+
│ │ /policy │ │ 800/120 chunk│ │ Llama-4 Maverick │ │ │
|
| 58 |
+
│ └──────────────┘ └──────────────┘ │ (judge + xcheck│ │ │
|
| 59 |
+
│ ▲ ▲ │ + eval grader)│ │ │
|
| 60 |
+
│ │ extracted at │ embedded │ single NIM key │ │ │
|
| 61 |
+
│ │ ingest │ at ingest │ 40 req/min │ │ │
|
| 62 |
+
│ │ │ └─────────────────────┘ │
|
| 63 |
└───────────┼───────────────────┼─────────────────────────────────┼───────┘
|
| 64 |
│ │ │
|
| 65 |
┌───────────┴───────────────────┴───────────────┐ │
|
| 66 |
│ INGEST (rag/ingest.py + rag/extract.py) │ │
|
| 67 |
│ pdfplumber → 800-tok chunks → BGE embed │ │
|
| 68 |
+
│ NIM V4-Pro structured extract + Sarvam fallbk │ │
|
| 69 |
│ self-critique → confidence_pct per field │ │
|
| 70 |
└────────────────┬──────────────────────────────┘ │
|
| 71 |
│ │
|
|
|
|
| 85 |
| **API gateway** ([`backend/main.py`](backend/main.py)) | FastAPI + Pydantic. Routes: `/api/chat`, `/api/voice`, `/api/policies`, `/api/policies/{id}/scorecard`, `/api/insurers/{slug}/reviews`. OpenAPI auto-served; frontend types codegen via `openapi-typescript` (D-015). |
|
| 86 |
| **Orchestrator** ([`backend/orchestrator.py`](backend/orchestrator.py)) | Intent classifier → retrieval → brain router → 4-gate faithfulness → cross-check retry → Indic cascade. The single file that defines a turn. |
|
| 87 |
| **Faithfulness verifier** ([`backend/faithfulness.py`](backend/faithfulness.py)) | Four gates run on every reply: retrieval floor, citation integrity, regex numeric grounding, LLM-judge. Every block goes to `logs/hallucinations.jsonl`. |
|
| 88 |
+
| **Translation cascade** ([`backend/translator.py`](backend/translator.py), [`backend/translation_check.py`](backend/translation_check.py)) | For Indic queries: Sarvam-M translates Hinglish → English, NIM brain reasons in English, gates run on English, Sarvam translates back, three drift checks validate the Indic output (§3). |
|
| 89 |
| **Retrieval** ([`rag/retrieve.py`](rag/retrieve.py)) | Top-k cosine search over Chroma with policy-name-aware boost. Returns `RetrievedChunk(policy_id, policy_name, page_start, page_end, source_url, score, text)`. |
|
| 90 |
+
| **Structured extraction** ([`rag/extract.py`](rag/extract.py)) | NIM DeepSeek-V4-Pro (1M context, clean JSON discipline) with the 48-field Pydantic schema as structured-output target; Sarvam-M fallback. Self-critique pass scores per-field confidence. |
|
| 91 |
| **Scorecard** ([`backend/scorecard.py`](backend/scorecard.py)) | Pure-Python rules-based aggregation over 24 of the 48 extracted fields → 6 sub-scores → A–F grade. No LLM in the loop — anyone can reproduce a grade from the JSON. Methodology in [`docs/scorecard-methodology.md`](docs/scorecard-methodology.md). |
|
| 92 |
| **KB** ([`kb/`](kb/)) | Markdown-first knowledge base with 11 per-policy sheets, scorecard results, eval results, URL verification, insurer reviews, premium anchors, security findings. Regeneratable via `python -m rag.build_kb`. |
|
| 93 |
+
| **Eval** ([`eval/`](eval/)) | Three gold-Q&A pipelines (templated, LLM-drafted, adversarial), NIM Llama-4 Maverick grader for non-circular evaluation (different family from DeepSeek brain), results versioned in `eval/results.md`. |
|
| 94 |
|
| 95 |
Full system diagram in [`docs/02-architecture.md`](docs/02-architecture.md) §1; stack rationale in [`docs/tech-stack-rationale.md`](docs/tech-stack-rationale.md).
|
| 96 |
|
|
|
|
| 108 |
|
| 109 |
First-party Indic prosody. The orchestrator pre-expands domain acronyms (`PED → pre-existing disease`) before sending text to Bulbul — see F-06 in [`docs/04-failure-modes.md`](docs/04-failure-modes.md). [`backend/providers/sarvam_tts.py`](backend/providers/sarvam_tts.py).
|
| 110 |
|
| 111 |
+
### 3.3 NVIDIA NIM — the consolidated open-weights reasoning stack
|
| 112 |
|
| 113 |
+
**D-019 (2026-05-14) locks the consolidation:** every non-Sarvam reasoning call runs on a single `nvapi-...` key against `integrate.api.nvidia.com`. Four legacy providers (OpenRouter, direct DeepSeek, Cerebras, Groq) were retired in the same change — ~600 LOC of provider wiring deleted, no quality loss, no daily rate limit, $0 cost.
|
| 114 |
|
| 115 |
+
Tiered brain routing inside one provider:
|
| 116 |
+
|
| 117 |
+
| Tier | Model | Used when | Why |
|
| 118 |
+
|---|---|---|---|
|
| 119 |
+
| **Heavy brain** | `deepseek-ai/deepseek-v4-pro` (1.6T / 49B MoE, 1M context, MIT) | `intent ∈ {comparison, recommendation}` | Beats Opus-4.6 + GPT-5.4 on SimpleQA-Verified (57.9% vs 46.2% / 45.3%) and LiveCodeBench. Quality > latency for synthesis. |
|
| 120 |
+
| **Fast brain** | `deepseek-ai/deepseek-v4-flash` (284B / 13B MoE, 1M context, MIT) | `intent ∈ {fact_find, qa}` — i.e. voice turns | ~27% of V3.2 single-token FLOPs → lower TTFT for voice. Still frontier-tier (HMMT 2026 94.8%, LiveCodeBench 91.6%). |
|
| 121 |
+
| **Judge** | `meta/llama-4-maverick-17b-128e-instruct` (400B / 17B MoE) | Faithfulness Gate 4, Hinglish drift LLM-judge, eval grader | **Different family from the DeepSeek brain** — Meta MoE judging DeepSeek MoE = the brain does not mark its own homework. |
|
| 122 |
|
| 123 |
+
The router lives in [`backend/orchestrator.py:pick_brain`](backend/orchestrator.py). The cross-check retry pattern stays inside NIM: when faithfulness fails on the primary brain's output (and the failure isn't Gate 1 / "no evidence at all"), the orchestrator re-runs the same prompt on Llama-4 Maverick (the judge model used as rescue brain). Different architecture (DeepSeek MoE vs Meta MoE), different training corpus — the "different-family ensemble" signal is preserved without requiring a second provider. The rescued reply is tagged `crosscheck-rescued-by-maverick` for audit.
|
| 124 |
|
| 125 |
+
### 3.4 Sarvam — voice + Indic translation (not the brain anymore)
|
| 126 |
|
| 127 |
+
Sarvam stays where Sarvam is uniquely strong, but it no longer reasons:
|
| 128 |
+
|
| 129 |
+
1. **STT — Sarvam Saarika v2.5.** Best Indian-accent recognition available.
|
| 130 |
+
2. **TTS — Sarvam Bulbul v2.** Best Hinglish TTS, single-speaker voice (`anushka`).
|
| 131 |
+
3. **Indic translation cascade — Sarvam-M.** When the user speaks Hinglish or Hindi: Sarvam translates Hinglish → English → NIM brain reasons in English → 4 faithfulness gates run on the English reply → Sarvam translates English → Hinglish → **three drift checks** ([`backend/translation_check.py`](backend/translation_check.py)) verify the Indic output preserves numbers, citations, and semantic meaning. Drift checks:
|
| 132 |
+
- **Gate-A (regex anchors):** `check_translation_drift()` verifies every digit / currency / citation in the English reply appears in the Indic reply. If not → revert to English.
|
| 133 |
+
- **Gate-B (LLM-judge):** NIM Llama-4 Maverick scores semantic faithfulness across languages.
|
| 134 |
+
- **Gate-C (back-translation cosine):** Sarvam back-translates Hinglish → English; cosine vs original English ≥ 0.80 or revert.
|
| 135 |
|
| 136 |
+
This closes the F-16 gap in [`docs/04-failure-modes.md`](docs/04-failure-modes.md) where the faithfulness gates only check the English reply.
|
| 137 |
|
| 138 |
+
**Why Sarvam moved out of the brain role:** Sarvam-M's 2048 starter-tier output cap + `<think>` reasoning tokens consume the budget, causing frequent truncation mid-JSON in extraction and mid-answer in advisory. NIM-hosted DeepSeek-V4-Pro (1M context, no rate limit, MIT-licensed frontier) is a strictly better fit for the reasoning role on Sarvam's free tier. Sarvam wins decisively on voice + Indic — the parts of the stack closed-source frontier can't match.
|
| 139 |
|
| 140 |
+
### 3.5 NIM Llama-4 Maverick — the cross-family judge
|
| 141 |
|
| 142 |
+
Same NIM endpoint, different model family from the DeepSeek brain. **Non-circular eval is the whole point** — if a DeepSeek model graded DeepSeek output, the eval would be aspirational. [`eval/run.py`](eval/run.py) calls Llama-4 Maverick with a strict JSON-schema judge prompt. The same model also serves as Gate 4 of faithfulness ([`backend/faithfulness.py`](backend/faithfulness.py) `_gate_llm_judge`) and as the Hinglish-translation drift judge ([`backend/translation_check.py`](backend/translation_check.py) `check_hinglish_faithfulness`).
|
| 143 |
|
| 144 |
### 3.6 BGE-small-en-v1.5 — embeddings (the honest tradeoff)
|
| 145 |
|
|
|
|
| 156 |
| Pipeline | What | Volume | Why |
|
| 157 |
| --- | --- | --- | --- |
|
| 158 |
| **A — Auto-templated** | 15 templates × ~80 policies | ~1,100 candidate pairs; ~300 currently committed | Scales for free. Each pair traces to a specific schema field → specific clause. Fully reproducible. |
|
| 159 |
+
| **B — LLM-drafted nuanced** | NIM DeepSeek-V4-Pro prompted on policy text to draft 5 buyer-style multi-clause questions per top-priority policy | Target 100; spot-checked | Tests reasoning Pipeline A can't reach. |
|
| 160 |
| **C — Adversarial** | Hand-written: out-of-corpus (space tourism), out-of-policy-type (IRDAI mandate when corpus had no IRDAI before §6), Hinglish, multi-policy compare | ~30–40 | Tests **refusal precision**, not just factual accuracy. |
|
| 161 |
|
| 162 |
Generator: [`eval/generate_gold.py`](eval/generate_gold.py). Committed gold set: [`eval/gold_qa.json`](eval/gold_qa.json).
|
|
|
|
| 170 |
| **1 Retrieval floor** | `_gate_retrieval_floor` | Top retrieval score < 0.40 — bot has nothing to ground in | line 74 |
|
| 171 |
| **2 Citation integrity** | `_gate_citation_integrity` | Reply cites a policy_name that wasn't retrieved | line 94 |
|
| 172 |
| **3 Numeric grounding (regex)** | `_gate_numeric_grounding` | Any `₹`, `%`, `days`, `months`, `years` in reply doesn't appear in retrieved chunks | line 137 |
|
| 173 |
+
| **4 LLM-judge faithfulness** | `_gate_llm_judge` (NIM Llama-4 Maverick, different family from DeepSeek brain) | Judge says any claim is unsupported by chunks | line 191 |
|
| 174 |
|
| 175 |
The 4-gate verdict is bundled with a `cross-check retry` (§3.4) and the 3-gate Indic drift check (§3.3). Total inspection surface per turn = **4 English faithfulness gates + 1 cross-check brain pass + 3 Indic drift gates** when the user speaks Hinglish.
|
| 176 |
|
|
|
|
| 193 |
1. **The gates are aggressive.** 12 of 25 questions are blocked — the bot refused when the gold answer claims the corpus has the data. In several cases the data *is* in the corpus but Gate 3 (regex numeric grounding) was over-strict on currency/percent normalisation. The fix is to soften the regex (v1.1, tracked); the v1 stance is "refuse rather than mis-cite" which is the SAFE failure mode in BFSI.
|
| 194 |
2. **Pipeline A templated questions over-index on `waiting_period` and `sub_limit` fields that several CIS-only PDFs (Bajaj Silver Health, Tax Gain) don't explicitly state.** When the template asks the question anyway, the bot correctly refuses, but the gold expects an answer.
|
| 195 |
|
| 196 |
+
The grader is now NIM Llama-4 Maverick (D-019 consolidation, 2026-05-14); this is non-circular — different family from the DeepSeek-V4 brain. Earlier eval run footers refer to the legacy Groq Llama judge.
|
| 197 |
|
| 198 |
### 4.4 Audit log — every blocked claim, every gate
|
| 199 |
|
|
|
|
| 248 |
|
| 249 |
### 6.6 Push-to-talk, not full-duplex streaming
|
| 250 |
|
| 251 |
+
Voice latency: ~3–4s for V4-Flash fast brain (default for voice turns), 6–10s for V4-Pro heavy brain (used on comparison / recommendation intents). Streaming STT + full-duplex is in [`docs/ROADMAP.md`](docs/ROADMAP.md) §v2.4.
|
| 252 |
|
| 253 |
### 6.7 HF Spaces free tier — cold start
|
| 254 |
|
|
|
|
| 264 |
|
| 265 |
| # | Question | What you should see | Why this question |
|
| 266 |
| --- | --- | --- | --- |
|
| 267 |
+
| 1 | *"What's the pre-existing disease waiting period under Care Supreme?"* | Specific number ("36 months" or similar) + `[Source: care-health/care-supreme/wordings, p.18]`. Brain `v4-flash::qa` (fact-find / single-policy → fast brain). | Single-field lookup — the easiest competence check. |
|
| 268 |
+
| 2 | *"Compare cataract waiting period in ICICI Elevate vs HDFC Optima Secure."* | Two-policy comparison with citations from both PDFs. Brain `v4-pro::comparison` (heavy brain for multi-policy synthesis). | Multi-policy reasoning — tests retrieval and tiered brain routing. |
|
| 269 |
+
| 3 | *"Care Supreme mein PED ka waiting period kya hai?"* (Hinglish) | Answer in Hinglish with citations preserved. `brain_used` includes `cascade::sarvam-trans+v4-flash::qa+sarvam-trans` or `cascade::drift-*-fallback` if a drift gate fired. | Indic cascade + 3-gate drift verification. |
|
| 270 |
| 4 | *"What does IRDAI say about cataract waiting-period caps under the 2024 Master Circular?"* | Cited answer from `irdai-master-circular-health-2024.pdf`. Refused before §6 Playwright rescue; answers now. | Demonstrates the IRDAI corpus fix. |
|
| 271 |
| 5 | *"Does Bajaj Silver Health cover space-tourism injuries?"* | **Safe refusal:** *"I'd rather not answer that without stronger evidence in the policy documents I have."* | Adversarial out-of-corpus — refusal is the correct behaviour (F-07). |
|
| 272 |
| 6 | *"Should I get the cataract surgery covered under this policy?"* | Bot answers what's covered + refuses to give clinical advice; suggests consulting a doctor. | Persona rule 4 (F-14) — no medical advice. |
|
|
|
|
| 284 |
|
| 285 |
**2. I treat hallucination defense and refusal as product features.** BFSI deployments get fined for mis-selling; the bot is biased toward refusal over confident wrong answers. The 4 faithfulness gates + cross-check retry + 3 Indic drift checks + audit log are the BFSI-compliance-grade version of "we shipped a chatbot." If the eval shows 40% headline accuracy because the gates are aggressive, the right response is to soften the gates carefully (v1.1) — not to ship a higher number by relaxing the verifier.
|
| 286 |
|
| 287 |
+
**3. I document the model picks honestly — Sarvam where Sarvam is uniquely strong, NIM open-weights frontier for the reasoning roles.** Sarvam Saarika v2.5 STT, Sarvam Bulbul v2 TTS, and Sarvam-M Indic translation are *non-substitutable* — no closed-source frontier matches them on Indian voice or Hinglish. Reasoning is a different problem; DeepSeek-V4-Pro (1.6T MoE, MIT-licensed, beats Opus-4.6 + GPT-5.4 on SimpleQA-Verified) hosted free on NVIDIA NIM is the strongest open-weights reasoning brain available today, and pairing it with Meta Llama-4 Maverick as a cross-family judge gives the bot two different architectures evaluating every claim. A Sarvam customer deploying this stack gets a product that *uses Sarvam exactly where Sarvam beats the world* and uses MIT-licensed frontier weights for the parts that any reasoning provider could in principle handle — open-weights only, $0 inference, single API key for the entire non-voice stack. That's the honest sales narrative for an Indic AI company in 2026: Sarvam isn't trying to win a benchmark it doesn't need to win.
|
| 288 |
|
| 289 |
The rest is craftsmanship. The 8-section KB ([`kb/`](kb/)) is regeneratable from primary sources in <40 minutes for <$2 cold ([`kb/AUDIT_TRAIL.md`](kb/AUDIT_TRAIL.md) §7). Every numeric value in every reviewer-facing artifact traces to a source PDF + page + clause. Every architectural decision is in [`docs/decisions.md`](docs/decisions.md) D-001 through D-017 with alternatives and revisit-at-scale notes. The repo is structured so a Sarvam engineer joining the project on Monday could ship v1.1 by Friday.
|
| 290 |
|
backend/config.py
CHANGED
|
@@ -19,10 +19,15 @@ class Settings:
|
|
| 19 |
# Provider keys
|
| 20 |
SARVAM_API_KEY: str = os.environ.get("SARVAM_API_KEY", "")
|
| 21 |
VOYAGE_API_KEY: str = os.environ.get("VOYAGE_API_KEY", "")
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
SARVAM_BASE_URL: str = "https://api.sarvam.ai"
|
| 27 |
SARVAM_STT_PATH: str = "/speech-to-text"
|
| 28 |
SARVAM_TTS_PATH: str = "/text-to-speech"
|
|
@@ -31,20 +36,20 @@ class Settings:
|
|
| 31 |
# Sarvam model identifiers
|
| 32 |
SARVAM_STT_MODEL: str = "saarika:v2.5"
|
| 33 |
SARVAM_TTS_MODEL: str = "bulbul:v2"
|
| 34 |
-
SARVAM_TTS_SPEAKER: str = "anushka" # natural female advisor voice
|
| 35 |
-
SARVAM_LLM_MODEL: str = "sarvam-m"
|
| 36 |
|
| 37 |
-
# Voyage
|
| 38 |
VOYAGE_MODEL: str = "voyage-3"
|
| 39 |
|
| 40 |
-
#
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
|
| 49 |
# Storage paths
|
| 50 |
CORPUS_DIR: Path = ROOT / "rag" / "corpus"
|
|
@@ -61,7 +66,7 @@ class Settings:
|
|
| 61 |
def validate(cls) -> list[str]:
|
| 62 |
"""Return list of missing required keys. Empty list = healthy."""
|
| 63 |
missing = []
|
| 64 |
-
for k in ("SARVAM_API_KEY", "
|
| 65 |
if not getattr(cls, k):
|
| 66 |
missing.append(k)
|
| 67 |
return missing
|
|
|
|
| 19 |
# Provider keys
|
| 20 |
SARVAM_API_KEY: str = os.environ.get("SARVAM_API_KEY", "")
|
| 21 |
VOYAGE_API_KEY: str = os.environ.get("VOYAGE_API_KEY", "")
|
| 22 |
+
# NVIDIA NIM — single provider hosting the entire reasoning stack:
|
| 23 |
+
# Brain = meta/llama-3.3-70b-instruct
|
| 24 |
+
# Judge = meta/llama-4-maverick-17b-128e-instruct (different arch from brain)
|
| 25 |
+
# Free tier: 40 req/min, no daily cap, no card. Replaces OpenRouter +
|
| 26 |
+
# direct DeepSeek + Cerebras + Groq (four legacy providers retired
|
| 27 |
+
# 2026-05-14 in favor of single-provider consolidation — see D-019).
|
| 28 |
+
NVIDIA_NIM_API_KEY: str = os.environ.get("NVIDIA_NIM_API_KEY", "")
|
| 29 |
+
|
| 30 |
+
# Sarvam endpoints (voice STT/TTS + Indic translation only — not brain anymore)
|
| 31 |
SARVAM_BASE_URL: str = "https://api.sarvam.ai"
|
| 32 |
SARVAM_STT_PATH: str = "/speech-to-text"
|
| 33 |
SARVAM_TTS_PATH: str = "/text-to-speech"
|
|
|
|
| 36 |
# Sarvam model identifiers
|
| 37 |
SARVAM_STT_MODEL: str = "saarika:v2.5"
|
| 38 |
SARVAM_TTS_MODEL: str = "bulbul:v2"
|
| 39 |
+
SARVAM_TTS_SPEAKER: str = "anushka" # natural female advisor voice
|
| 40 |
+
SARVAM_LLM_MODEL: str = "sarvam-m" # used by translator.py for Indic translation
|
| 41 |
|
| 42 |
+
# Voyage (legacy — embeddings now via local BGE; kept for back-compat with extracted/ artifacts)
|
| 43 |
VOYAGE_MODEL: str = "voyage-3"
|
| 44 |
|
| 45 |
+
# NVIDIA NIM (single source of truth for brain + judge — tiered routing)
|
| 46 |
+
# Heavy brain (quality > latency): DeepSeek-V4-Pro (1.6T/49B MoE)
|
| 47 |
+
# Fast brain (latency > quality): DeepSeek-V4-Flash (284B/13B MoE)
|
| 48 |
+
# Judge: Meta Llama-4 Maverick (400B/17B MoE) — different family = cross-grading independence
|
| 49 |
+
NVIDIA_NIM_BASE_URL: str = "https://integrate.api.nvidia.com/v1"
|
| 50 |
+
NVIDIA_NIM_BRAIN_MODEL: str = "deepseek-ai/deepseek-v4-pro"
|
| 51 |
+
NVIDIA_NIM_FAST_BRAIN_MODEL: str = "deepseek-ai/deepseek-v4-flash"
|
| 52 |
+
NVIDIA_NIM_JUDGE_MODEL: str = "meta/llama-4-maverick-17b-128e-instruct"
|
| 53 |
|
| 54 |
# Storage paths
|
| 55 |
CORPUS_DIR: Path = ROOT / "rag" / "corpus"
|
|
|
|
| 66 |
def validate(cls) -> list[str]:
|
| 67 |
"""Return list of missing required keys. Empty list = healthy."""
|
| 68 |
missing = []
|
| 69 |
+
for k in ("SARVAM_API_KEY", "NVIDIA_NIM_API_KEY"):
|
| 70 |
if not getattr(cls, k):
|
| 71 |
missing.append(k)
|
| 72 |
return missing
|
backend/faithfulness.py
CHANGED
|
@@ -18,7 +18,7 @@ Gate 3 — NUMERIC GROUNDING
|
|
| 18 |
must also appear in at least one retrieved chunk. Catches the "premium is
|
| 19 |
₹15,000" hallucination class deterministically.
|
| 20 |
|
| 21 |
-
Gate 4 — LLM-JUDGE FAITHFULNESS (
|
| 22 |
Pass {retrieved_chunks, reply} to a second LLM with prompt:
|
| 23 |
"For each factual claim in the reply, is it supported by these chunks?
|
| 24 |
Reply STRICT_JSON: {supported: bool, unsupported_claims: [str]}"
|
|
@@ -42,8 +42,8 @@ from pathlib import Path
|
|
| 42 |
from typing import Optional
|
| 43 |
|
| 44 |
from backend.config import settings
|
| 45 |
-
from backend.providers.base import ChatMessage
|
| 46 |
-
from backend.providers.
|
| 47 |
from rag.retrieve import RetrievedChunk
|
| 48 |
|
| 49 |
LOG_DIR = settings.CORPUS_DIR.parent.parent / "logs"
|
|
@@ -55,7 +55,7 @@ HALLUCINATION_LOG = LOG_DIR / "hallucinations.jsonl"
|
|
| 55 |
# higher here than they would be for Voyage. Re-tune if changing embedding model.
|
| 56 |
# Lowered 2026-05-13 based on eval data showing too-aggressive refusal at 0.40:
|
| 57 |
# many real questions retrieve top chunks at 0.30-0.38 that DO contain the answer.
|
| 58 |
-
MIN_TOP_SCORE = 0.
|
| 59 |
MIN_AVG_SCORE = 0.22 # average of top 5 must be above this
|
| 60 |
|
| 61 |
|
|
@@ -158,15 +158,19 @@ def _gate_numeric_grounding(reply: str, chunks: list[RetrievedChunk]) -> tuple[b
|
|
| 158 |
|
| 159 |
|
| 160 |
# ============================================================================
|
| 161 |
-
# Gate 4 — LLM-JUDGE FAITHFULNESS (
|
| 162 |
# ============================================================================
|
| 163 |
|
| 164 |
-
_judge: Optional[
|
| 165 |
|
| 166 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 167 |
global _judge
|
| 168 |
if _judge is None:
|
| 169 |
-
_judge =
|
| 170 |
return _judge
|
| 171 |
|
| 172 |
|
|
@@ -272,7 +276,7 @@ async def check_faithfulness(
|
|
| 272 |
# Gate 4 — LLM judge (only if previous gates passed — saves token cost on
|
| 273 |
# obvious failures). Also SKIP when retrieval was strongly grounded: top
|
| 274 |
# chunk cosine > HIGH_CONFIDENCE_FLOOR means hallucination risk is low and
|
| 275 |
-
# the 1-2s
|
| 276 |
HIGH_CONFIDENCE_FLOOR = 0.50
|
| 277 |
top_score = max((c.score for c in chunks), default=0.0) if chunks else 0.0
|
| 278 |
if verdict.passed and run_llm_judge and top_score < HIGH_CONFIDENCE_FLOOR:
|
|
|
|
| 18 |
must also appear in at least one retrieved chunk. Catches the "premium is
|
| 19 |
₹15,000" hallucination class deterministically.
|
| 20 |
|
| 21 |
+
Gate 4 — LLM-JUDGE FAITHFULNESS (NIM Llama-4 Maverick — different arch from brain)
|
| 22 |
Pass {retrieved_chunks, reply} to a second LLM with prompt:
|
| 23 |
"For each factual claim in the reply, is it supported by these chunks?
|
| 24 |
Reply STRICT_JSON: {supported: bool, unsupported_claims: [str]}"
|
|
|
|
| 42 |
from typing import Optional
|
| 43 |
|
| 44 |
from backend.config import settings
|
| 45 |
+
from backend.providers.base import ChatMessage, LLMProvider
|
| 46 |
+
from backend.providers.nvidia_nim_llm import get_judge_llm
|
| 47 |
from rag.retrieve import RetrievedChunk
|
| 48 |
|
| 49 |
LOG_DIR = settings.CORPUS_DIR.parent.parent / "logs"
|
|
|
|
| 55 |
# higher here than they would be for Voyage. Re-tune if changing embedding model.
|
| 56 |
# Lowered 2026-05-13 based on eval data showing too-aggressive refusal at 0.40:
|
| 57 |
# many real questions retrieve top chunks at 0.30-0.38 that DO contain the answer.
|
| 58 |
+
MIN_TOP_SCORE = 0.30 # below this we refuse outright (BGE-small cosine similarity)
|
| 59 |
MIN_AVG_SCORE = 0.22 # average of top 5 must be above this
|
| 60 |
|
| 61 |
|
|
|
|
| 158 |
|
| 159 |
|
| 160 |
# ============================================================================
|
| 161 |
+
# Gate 4 — LLM-JUDGE FAITHFULNESS (NIM Llama-4 Maverick)
|
| 162 |
# ============================================================================
|
| 163 |
|
| 164 |
+
_judge: Optional[LLMProvider] = None
|
| 165 |
|
| 166 |
+
|
| 167 |
+
def _get_judge() -> LLMProvider:
|
| 168 |
+
"""LLM judge for Gate 4. Always NIM Llama-4 Maverick (MoE, different
|
| 169 |
+
architecture from the dense Llama-3.3-70B brain), so the judge sees the
|
| 170 |
+
brain's output from a genuinely different decision surface."""
|
| 171 |
global _judge
|
| 172 |
if _judge is None:
|
| 173 |
+
_judge = get_judge_llm(language="en")
|
| 174 |
return _judge
|
| 175 |
|
| 176 |
|
|
|
|
| 276 |
# Gate 4 — LLM judge (only if previous gates passed — saves token cost on
|
| 277 |
# obvious failures). Also SKIP when retrieval was strongly grounded: top
|
| 278 |
# chunk cosine > HIGH_CONFIDENCE_FLOOR means hallucination risk is low and
|
| 279 |
+
# the 1-2s NIM round-trip rarely adds value. Cuts ~60% of judge calls.
|
| 280 |
HIGH_CONFIDENCE_FLOOR = 0.50
|
| 281 |
top_score = max((c.score for c in chunks), default=0.0) if chunks else 0.0
|
| 282 |
if verdict.passed and run_llm_judge and top_score < HIGH_CONFIDENCE_FLOOR:
|
backend/main.py
CHANGED
|
@@ -465,6 +465,81 @@ class ProfileCompletenessResponse(BaseModel):
|
|
| 465 |
is_personalized: bool # True if completeness >= threshold
|
| 466 |
gate_threshold: float = 0.6
|
| 467 |
next_question_hint: Optional[str] = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 468 |
|
| 469 |
|
| 470 |
@app.get("/api/profile/completeness", response_model=ProfileCompletenessResponse)
|
|
@@ -510,6 +585,8 @@ async def profile_completeness_view(session_id: Optional[str] = None):
|
|
| 510 |
fields_missing=missing,
|
| 511 |
is_personalized=c >= 0.6,
|
| 512 |
next_question_hint=hint,
|
|
|
|
|
|
|
| 513 |
)
|
| 514 |
|
| 515 |
|
|
@@ -694,10 +771,31 @@ def _merge_curated(extracted: dict, curated: dict | None) -> dict:
|
|
| 694 |
|
| 695 |
|
| 696 |
@app.get("/api/policies/all", response_model=MarketplaceResponse)
|
| 697 |
-
async def policies_all():
|
| 698 |
-
"""The marketplace data feed — every extracted policy + scorecard + filterable fields.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 699 |
import json as _json
|
| 700 |
-
from backend.scorecard import build_scorecard
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 701 |
|
| 702 |
corpus_url_index = _build_corpus_url_index()
|
| 703 |
curated_facts = _load_curated_facts()
|
|
@@ -746,7 +844,7 @@ async def policies_all():
|
|
| 746 |
if rp.exists():
|
| 747 |
try: ir = _json.loads(rp.read_text())
|
| 748 |
except Exception: pass
|
| 749 |
-
sc = build_scorecard(data, insurer_reviews=ir)
|
| 750 |
|
| 751 |
si = data.get("sum_insured_options") or []
|
| 752 |
if isinstance(si, list):
|
|
@@ -820,7 +918,7 @@ async def policies_all():
|
|
| 820 |
ir = _json.loads(rp.read_text())
|
| 821 |
except Exception:
|
| 822 |
pass
|
| 823 |
-
sc = build_scorecard(data, insurer_reviews=ir)
|
| 824 |
si = data.get("sum_insured_options") or []
|
| 825 |
if isinstance(si, list):
|
| 826 |
si = [int(x) for x in si if isinstance(x, (int, float)) or (isinstance(x, str) and x.isdigit())]
|
|
|
|
| 465 |
is_personalized: bool # True if completeness >= threshold
|
| 466 |
gate_threshold: float = 0.6
|
| 467 |
next_question_hint: Optional[str] = None
|
| 468 |
+
profile: dict = Field(default_factory=dict) # current profile state for UI to render
|
| 469 |
+
session_id: Optional[str] = None
|
| 470 |
+
|
| 471 |
+
|
| 472 |
+
class ProfileUpdateRequest(BaseModel):
|
| 473 |
+
session_id: str
|
| 474 |
+
age: Optional[int] = None
|
| 475 |
+
dependents: Optional[str] = None
|
| 476 |
+
income_band: Optional[str] = None
|
| 477 |
+
existing_cover_inr: Optional[int] = None
|
| 478 |
+
primary_goal: Optional[str] = None
|
| 479 |
+
location_tier: Optional[str] = None
|
| 480 |
+
parents_to_insure: Optional[bool] = None
|
| 481 |
+
parents_age_max: Optional[int] = None
|
| 482 |
+
parents_has_ped: Optional[bool] = None
|
| 483 |
+
health_conditions: Optional[list[str]] = None
|
| 484 |
+
budget_band: Optional[str] = None
|
| 485 |
+
|
| 486 |
+
|
| 487 |
+
@app.post("/api/profile", response_model=ProfileCompletenessResponse)
|
| 488 |
+
async def profile_update(req: ProfileUpdateRequest):
|
| 489 |
+
"""Write user-provided profile fields into session_state. Returns the new
|
| 490 |
+
completeness so the frontend can immediately reveal personalized scores.
|
| 491 |
+
|
| 492 |
+
ALSO ingests the profile as a chunk into Chroma (doc_type='profile',
|
| 493 |
+
policy_id='profile_<session_id>') so the brain sees user context
|
| 494 |
+
alongside policy + regulatory chunks at retrieval time. This is the
|
| 495 |
+
"profile RAG" architecture — every recommendation grounds in (policy
|
| 496 |
+
text + IRDAI mandate + user's own situation) jointly.
|
| 497 |
+
"""
|
| 498 |
+
from backend.scorecard import profile_completeness as _completeness
|
| 499 |
+
from backend.session_state import get_session
|
| 500 |
+
from backend.profile_rag import upsert_profile_chunk
|
| 501 |
+
|
| 502 |
+
sess = get_session(req.session_id)
|
| 503 |
+
# Update only fields the client explicitly sent (non-None) — keeps partial
|
| 504 |
+
# save flows clean
|
| 505 |
+
for field_name in (
|
| 506 |
+
"age", "dependents", "income_band", "existing_cover_inr", "primary_goal",
|
| 507 |
+
"location_tier", "parents_to_insure", "parents_age_max", "parents_has_ped",
|
| 508 |
+
"health_conditions", "budget_band",
|
| 509 |
+
):
|
| 510 |
+
v = getattr(req, field_name, None)
|
| 511 |
+
if v is not None:
|
| 512 |
+
setattr(sess.profile, field_name, v)
|
| 513 |
+
|
| 514 |
+
p = sess.profile
|
| 515 |
+
profile_dict = {
|
| 516 |
+
"age": p.age, "dependents": p.dependents, "income_band": p.income_band,
|
| 517 |
+
"existing_cover_inr": p.existing_cover_inr, "primary_goal": p.primary_goal,
|
| 518 |
+
"location_tier": p.location_tier, "parents_to_insure": p.parents_to_insure,
|
| 519 |
+
"parents_age_max": p.parents_age_max, "parents_has_ped": p.parents_has_ped,
|
| 520 |
+
"health_conditions": p.health_conditions, "budget_band": p.budget_band,
|
| 521 |
+
}
|
| 522 |
+
c = _completeness(profile_dict)
|
| 523 |
+
collected = [k for k, v in profile_dict.items() if v not in (None, "", [], False)]
|
| 524 |
+
missing = [k for k, v in profile_dict.items() if v in (None, "", [])]
|
| 525 |
+
|
| 526 |
+
# Ingest the profile into the RAG store so the brain sees user context
|
| 527 |
+
# at retrieval time alongside policy + regulatory chunks. Fire-and-forget
|
| 528 |
+
# — a profile upsert failure shouldn't block the API response.
|
| 529 |
+
try:
|
| 530 |
+
await upsert_profile_chunk(req.session_id, profile_dict)
|
| 531 |
+
except Exception as e:
|
| 532 |
+
print(f"[profile_rag] upsert failed for {req.session_id}: {type(e).__name__}: {e}")
|
| 533 |
+
|
| 534 |
+
return ProfileCompletenessResponse(
|
| 535 |
+
completeness=c,
|
| 536 |
+
completeness_pct=int(c * 100),
|
| 537 |
+
fields_collected=collected,
|
| 538 |
+
fields_missing=missing,
|
| 539 |
+
is_personalized=c >= 0.6,
|
| 540 |
+
profile=profile_dict,
|
| 541 |
+
session_id=req.session_id,
|
| 542 |
+
)
|
| 543 |
|
| 544 |
|
| 545 |
@app.get("/api/profile/completeness", response_model=ProfileCompletenessResponse)
|
|
|
|
| 585 |
fields_missing=missing,
|
| 586 |
is_personalized=c >= 0.6,
|
| 587 |
next_question_hint=hint,
|
| 588 |
+
profile=profile_dict,
|
| 589 |
+
session_id=session_id,
|
| 590 |
)
|
| 591 |
|
| 592 |
|
|
|
|
| 771 |
|
| 772 |
|
| 773 |
@app.get("/api/policies/all", response_model=MarketplaceResponse)
|
| 774 |
+
async def policies_all(session_id: Optional[str] = None):
|
| 775 |
+
"""The marketplace data feed — every extracted policy + scorecard + filterable fields.
|
| 776 |
+
|
| 777 |
+
When session_id is provided AND the session has a profile populated to
|
| 778 |
+
≥0.6 completeness, every policy is scored against THAT profile (dynamic
|
| 779 |
+
per-user grade). Otherwise we score with the generic baseline weights.
|
| 780 |
+
"""
|
| 781 |
import json as _json
|
| 782 |
+
from backend.scorecard import build_scorecard, profile_completeness as _completeness
|
| 783 |
+
from backend.session_state import get_session as _get_sess
|
| 784 |
+
|
| 785 |
+
# Pull user profile if we have one
|
| 786 |
+
user_profile_dict: Optional[dict] = None
|
| 787 |
+
if session_id:
|
| 788 |
+
sess = _get_sess(session_id)
|
| 789 |
+
p = sess.profile
|
| 790 |
+
profile_dict = {
|
| 791 |
+
"age": p.age, "dependents": p.dependents, "income_band": p.income_band,
|
| 792 |
+
"existing_cover_inr": p.existing_cover_inr, "primary_goal": p.primary_goal,
|
| 793 |
+
"location_tier": p.location_tier, "parents_to_insure": p.parents_to_insure,
|
| 794 |
+
"parents_age_max": p.parents_age_max, "parents_has_ped": p.parents_has_ped,
|
| 795 |
+
"health_conditions": p.health_conditions, "budget_band": p.budget_band,
|
| 796 |
+
}
|
| 797 |
+
if _completeness(profile_dict) >= 0.6:
|
| 798 |
+
user_profile_dict = profile_dict
|
| 799 |
|
| 800 |
corpus_url_index = _build_corpus_url_index()
|
| 801 |
curated_facts = _load_curated_facts()
|
|
|
|
| 844 |
if rp.exists():
|
| 845 |
try: ir = _json.loads(rp.read_text())
|
| 846 |
except Exception: pass
|
| 847 |
+
sc = build_scorecard(data, insurer_reviews=ir, profile=user_profile_dict)
|
| 848 |
|
| 849 |
si = data.get("sum_insured_options") or []
|
| 850 |
if isinstance(si, list):
|
|
|
|
| 918 |
ir = _json.loads(rp.read_text())
|
| 919 |
except Exception:
|
| 920 |
pass
|
| 921 |
+
sc = build_scorecard(data, insurer_reviews=ir, profile=user_profile_dict)
|
| 922 |
si = data.get("sum_insured_options") or []
|
| 923 |
if isinstance(si, list):
|
| 924 |
si = [int(x) for x in si if isinstance(x, (int, float)) or (isinstance(x, str) and x.isdigit())]
|
backend/orchestrator.py
CHANGED
|
@@ -4,9 +4,10 @@ For each user turn:
|
|
| 4 |
1. Retrieve top-k relevant chunks from Chroma
|
| 5 |
2. Format them as cited context
|
| 6 |
3. Build messages with persona + history + profile
|
| 7 |
-
4. Route to
|
| 8 |
-
5.
|
| 9 |
-
6.
|
|
|
|
| 10 |
"""
|
| 11 |
|
| 12 |
from __future__ import annotations
|
|
@@ -18,9 +19,12 @@ from typing import Optional
|
|
| 18 |
from backend.faithfulness import check_faithfulness, FaithfulnessVerdict
|
| 19 |
from backend.persona import build_messages, strip_think_tags
|
| 20 |
from backend.providers.base import ChatMessage, LLMProvider
|
| 21 |
-
from backend.providers.
|
| 22 |
-
|
| 23 |
-
|
|
|
|
|
|
|
|
|
|
| 24 |
from rag.retrieve import RetrievedChunk, format_for_llm_context, retrieve
|
| 25 |
|
| 26 |
|
|
@@ -78,15 +82,24 @@ class BrainPick:
|
|
| 78 |
|
| 79 |
|
| 80 |
def pick_brain(intent: str, language: str) -> BrainPick:
|
| 81 |
-
"""Route to the
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 88 |
"""
|
| 89 |
-
|
|
|
|
|
|
|
|
|
|
| 90 |
|
| 91 |
|
| 92 |
# ---------- main entrypoint ----------
|
|
@@ -210,22 +223,13 @@ async def handle_turn(
|
|
| 210 |
)
|
| 211 |
messages = [ChatMessage(role=m["role"], content=m["content"]) for m in messages_dict]
|
| 212 |
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
# Detect truncated <think> reasoning — if so, retry with Groq (no reasoning tags)
|
| 222 |
-
if "<think>" in llm_result.text.lower() and "</think>" not in llm_result.text.lower():
|
| 223 |
-
try:
|
| 224 |
-
fallback = GroqLLM()
|
| 225 |
-
llm_result = await fallback.chat(messages=messages, temperature=0.2, max_tokens=1500)
|
| 226 |
-
pick = BrainPick(fallback, "fallback-truncated-reasoning")
|
| 227 |
-
except Exception:
|
| 228 |
-
pass
|
| 229 |
|
| 230 |
raw = llm_result.text
|
| 231 |
reply = strip_think_tags(raw)
|
|
@@ -241,22 +245,17 @@ async def handle_turn(
|
|
| 241 |
)
|
| 242 |
|
| 243 |
# 5a. CROSS-CHECK RETRY — if faithfulness blocked AND the failure isn't
|
| 244 |
-
# Gate 1 (no evidence at all),
|
| 245 |
-
#
|
| 246 |
-
#
|
| 247 |
-
#
|
| 248 |
-
#
|
| 249 |
blocked = False
|
| 250 |
if not verdict.passed:
|
| 251 |
gate1_failure = any("gate1_retrieval" in r for r in verdict.reasons)
|
| 252 |
if not gate1_failure:
|
| 253 |
-
# Pick the OTHER family for the rescue pass
|
| 254 |
-
primary_name = pick.provider.name
|
| 255 |
try:
|
| 256 |
-
|
| 257 |
-
secondary = OpenRouterLLM()
|
| 258 |
-
else:
|
| 259 |
-
secondary = SarvamLLM()
|
| 260 |
second = await secondary.chat(messages=messages, temperature=0.1, max_tokens=1500)
|
| 261 |
second_reply = strip_think_tags(second.text)
|
| 262 |
second_verdict = await check_faithfulness(
|
|
@@ -264,7 +263,7 @@ async def handle_turn(
|
|
| 264 |
)
|
| 265 |
if second_verdict.passed:
|
| 266 |
reply = second_reply
|
| 267 |
-
pick = BrainPick(secondary, f"crosscheck-rescued-
|
| 268 |
verdict = second_verdict
|
| 269 |
else:
|
| 270 |
blocked = True
|
|
|
|
| 4 |
1. Retrieve top-k relevant chunks from Chroma
|
| 5 |
2. Format them as cited context
|
| 6 |
3. Build messages with persona + history + profile
|
| 7 |
+
4. Route to the brain: NIM DeepSeek-V4-Pro (single-provider Stack A, D-019)
|
| 8 |
+
5. Run 4-gate faithfulness verification (judge = NIM Llama-4 Maverick — different family)
|
| 9 |
+
6. On Indic input, translate via Sarvam-M (in & out)
|
| 10 |
+
7. Return (reply_text, citations[], retrieved_chunk_ids[], cost_estimate)
|
| 11 |
"""
|
| 12 |
|
| 13 |
from __future__ import annotations
|
|
|
|
| 19 |
from backend.faithfulness import check_faithfulness, FaithfulnessVerdict
|
| 20 |
from backend.persona import build_messages, strip_think_tags
|
| 21 |
from backend.providers.base import ChatMessage, LLMProvider
|
| 22 |
+
from backend.providers.nvidia_nim_llm import (
|
| 23 |
+
NIM_JUDGE_MODEL,
|
| 24 |
+
NvidiaNimLLM,
|
| 25 |
+
get_brain_llm,
|
| 26 |
+
get_fast_brain_llm,
|
| 27 |
+
)
|
| 28 |
from rag.retrieve import RetrievedChunk, format_for_llm_context, retrieve
|
| 29 |
|
| 30 |
|
|
|
|
| 82 |
|
| 83 |
|
| 84 |
def pick_brain(intent: str, language: str) -> BrainPick:
|
| 85 |
+
"""Route to the reasoning brain per D-019 (2026-05-14, tiered routing).
|
| 86 |
+
|
| 87 |
+
All routes go through NVIDIA NIM (single provider, $0 cost). Tier picked
|
| 88 |
+
by intent classification:
|
| 89 |
+
- 'comparison' / 'recommendation' → DeepSeek-V4-Pro (1.6T/49B MoE)
|
| 90 |
+
Heavy synthesis, multi-policy reasoning. Quality > latency.
|
| 91 |
+
- 'fact_find' / 'qa' → DeepSeek-V4-Flash (284B/13B MoE)
|
| 92 |
+
Single-turn voice responses. Latency > quality, still frontier-tier.
|
| 93 |
+
|
| 94 |
+
Indic queries get a Sarvam-M translation pass in `handle_turn` before
|
| 95 |
+
retrieval, then another after reasoning to convert the English reply back
|
| 96 |
+
to Hindi/Hinglish. The brain itself always reasons in English on English
|
| 97 |
+
context.
|
| 98 |
"""
|
| 99 |
+
HEAVY_INTENTS = {"comparison", "recommendation"}
|
| 100 |
+
if intent in HEAVY_INTENTS:
|
| 101 |
+
return BrainPick(get_brain_llm(), f"v4-pro::{intent}")
|
| 102 |
+
return BrainPick(get_fast_brain_llm(), f"v4-flash::{intent}")
|
| 103 |
|
| 104 |
|
| 105 |
# ---------- main entrypoint ----------
|
|
|
|
| 223 |
)
|
| 224 |
messages = [ChatMessage(role=m["role"], content=m["content"]) for m in messages_dict]
|
| 225 |
|
| 226 |
+
# NIM DeepSeek-V4-Pro is THE brain (D-019). Frontier MoE (1.6T/49B),
|
| 227 |
+
# MIT-licensed, beats Opus-4.6 + GPT-5.4 on SimpleQA-Verified. Three
|
| 228 |
+
# reasoning modes; we use the default (Non-think) for direct advisory
|
| 229 |
+
# responses with low voice latency. The judge model (Meta Llama-4 Maverick)
|
| 230 |
+
# in faithfulness.py is from a different company, architecture, and
|
| 231 |
+
# training corpus — the brain does not mark its own homework.
|
| 232 |
+
llm_result = await pick.provider.chat(messages=messages, temperature=0.2, max_tokens=1500)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 233 |
|
| 234 |
raw = llm_result.text
|
| 235 |
reply = strip_think_tags(raw)
|
|
|
|
| 245 |
)
|
| 246 |
|
| 247 |
# 5a. CROSS-CHECK RETRY — if faithfulness blocked AND the failure isn't
|
| 248 |
+
# Gate 1 (no evidence at all), retry with a DIFFERENT-ARCHITECTURE NIM
|
| 249 |
+
# model: Llama-4 Maverick (MoE, 400B/17B-active). The brain (Llama-3.3-70B,
|
| 250 |
+
# dense) marks the same prompt independently — frequently catches issues
|
| 251 |
+
# that came from a particular routing path or token sampling. Capped at
|
| 252 |
+
# ONE retry — no loops.
|
| 253 |
blocked = False
|
| 254 |
if not verdict.passed:
|
| 255 |
gate1_failure = any("gate1_retrieval" in r for r in verdict.reasons)
|
| 256 |
if not gate1_failure:
|
|
|
|
|
|
|
| 257 |
try:
|
| 258 |
+
secondary = NvidiaNimLLM(model=NIM_JUDGE_MODEL)
|
|
|
|
|
|
|
|
|
|
| 259 |
second = await secondary.chat(messages=messages, temperature=0.1, max_tokens=1500)
|
| 260 |
second_reply = strip_think_tags(second.text)
|
| 261 |
second_verdict = await check_faithfulness(
|
|
|
|
| 263 |
)
|
| 264 |
if second_verdict.passed:
|
| 265 |
reply = second_reply
|
| 266 |
+
pick = BrainPick(secondary, f"crosscheck-rescued-by-maverick")
|
| 267 |
verdict = second_verdict
|
| 268 |
else:
|
| 269 |
blocked = True
|
backend/profile_rag.py
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Customer-profile-as-RAG layer.
|
| 2 |
+
|
| 3 |
+
When a user saves their profile (POST /api/profile), the profile dict is
|
| 4 |
+
serialised into a natural-language paragraph and ingested into the same
|
| 5 |
+
Chroma collection that holds policy + regulatory chunks. Metadata fields
|
| 6 |
+
`doc_type='profile'` and `policy_id='profile_<session_id>'` distinguish it.
|
| 7 |
+
|
| 8 |
+
At retrieval time, `rag/retrieve.py::retrieve(..., session_id=...)` can
|
| 9 |
+
preferentially boost the matching profile chunk so the LLM sees the user's
|
| 10 |
+
context inline with the retrieved policy/regulatory text — answers become
|
| 11 |
+
personalised at the BRAIN level, not just at scorecard re-weighting.
|
| 12 |
+
|
| 13 |
+
This is what the user meant by "we need an architecture to store customer
|
| 14 |
+
profiles for RAG, complementing the brain alongside policy + regulation".
|
| 15 |
+
|
| 16 |
+
Public API:
|
| 17 |
+
profile_to_chunk_text(profile_dict) -> str
|
| 18 |
+
Render the structured profile as a single English paragraph.
|
| 19 |
+
upsert_profile_chunk(session_id, profile_dict, embedder) -> None
|
| 20 |
+
Ingest / update the chunk for this session in Chroma.
|
| 21 |
+
remove_profile_chunk(session_id) -> None
|
| 22 |
+
Optional cleanup on session expiry.
|
| 23 |
+
|
| 24 |
+
Storage model — one chunk per session_id. Replaced on each profile update.
|
| 25 |
+
Profile chunks live in the SAME collection as policies so retrieval can
|
| 26 |
+
naturally surface them when scoring policies for the user.
|
| 27 |
+
"""
|
| 28 |
+
|
| 29 |
+
from __future__ import annotations
|
| 30 |
+
|
| 31 |
+
import asyncio
|
| 32 |
+
from typing import Optional
|
| 33 |
+
|
| 34 |
+
from backend.config import settings
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
def profile_to_chunk_text(profile: dict) -> str:
|
| 38 |
+
"""Render the profile dict as a natural-language paragraph for the LLM.
|
| 39 |
+
|
| 40 |
+
The shape matches what build_messages() in the orchestrator expects so
|
| 41 |
+
when this chunk is retrieved alongside policy chunks, the LLM sees a
|
| 42 |
+
coherent "USER CONTEXT" block.
|
| 43 |
+
"""
|
| 44 |
+
parts: list[str] = ["USER CONTEXT — facts about the person asking this question:"]
|
| 45 |
+
|
| 46 |
+
age = profile.get("age")
|
| 47 |
+
if isinstance(age, int):
|
| 48 |
+
parts.append(f"- Age: {age} years.")
|
| 49 |
+
|
| 50 |
+
deps = profile.get("dependents")
|
| 51 |
+
if isinstance(deps, str) and deps:
|
| 52 |
+
parts.append(f"- Covering: {deps.replace('_', ' ').replace('+', ' + ')}.")
|
| 53 |
+
|
| 54 |
+
parents_age = profile.get("parents_age_max")
|
| 55 |
+
parents_ped = profile.get("parents_has_ped")
|
| 56 |
+
if parents_age:
|
| 57 |
+
parents_line = f"- Older parent's age: {parents_age}."
|
| 58 |
+
if parents_ped is True:
|
| 59 |
+
parents_line += " Parents have pre-existing conditions (diabetes / BP / heart etc.)."
|
| 60 |
+
elif parents_ped is False:
|
| 61 |
+
parents_line += " Parents are healthy with no flagged conditions."
|
| 62 |
+
parts.append(parents_line)
|
| 63 |
+
|
| 64 |
+
conditions = profile.get("health_conditions")
|
| 65 |
+
if isinstance(conditions, list) and conditions:
|
| 66 |
+
cstr = ", ".join(str(c) for c in conditions)
|
| 67 |
+
parts.append(f"- User's own pre-existing conditions: {cstr}.")
|
| 68 |
+
elif conditions == []:
|
| 69 |
+
parts.append("- User has no pre-existing conditions disclosed.")
|
| 70 |
+
|
| 71 |
+
existing = profile.get("existing_cover_inr")
|
| 72 |
+
if existing == 0:
|
| 73 |
+
parts.append("- First-time buyer; no existing health insurance.")
|
| 74 |
+
elif isinstance(existing, int) and existing > 0:
|
| 75 |
+
if existing >= 100000:
|
| 76 |
+
parts.append(f"- Already has ₹{existing // 100000}L of existing health cover.")
|
| 77 |
+
else:
|
| 78 |
+
parts.append(f"- Already has ₹{existing} of existing health cover.")
|
| 79 |
+
|
| 80 |
+
goal = profile.get("primary_goal")
|
| 81 |
+
if isinstance(goal, str) and goal:
|
| 82 |
+
goal_str = goal.replace("_", " ")
|
| 83 |
+
parts.append(f"- Goal today: {goal_str}.")
|
| 84 |
+
|
| 85 |
+
loc = profile.get("location_tier")
|
| 86 |
+
if isinstance(loc, str) and loc:
|
| 87 |
+
parts.append(f"- City tier: {loc}.")
|
| 88 |
+
|
| 89 |
+
budget = profile.get("budget_band")
|
| 90 |
+
if isinstance(budget, str) and budget:
|
| 91 |
+
parts.append(f"- Annual premium budget: {budget.replace('_', '-').replace('-', ' - ')}.")
|
| 92 |
+
|
| 93 |
+
income = profile.get("income_band")
|
| 94 |
+
if isinstance(income, str) and income:
|
| 95 |
+
parts.append(f"- Annual income band: {income}.")
|
| 96 |
+
|
| 97 |
+
if len(parts) == 1:
|
| 98 |
+
return "USER CONTEXT — no profile info collected yet."
|
| 99 |
+
parts.append(
|
| 100 |
+
"Use these facts when scoring or recommending. The user has consented to share them; "
|
| 101 |
+
"honesty about conditions protects their later claim, so weight disclosed conditions "
|
| 102 |
+
"explicitly in the recommendation rationale."
|
| 103 |
+
)
|
| 104 |
+
return "\n".join(parts)
|
| 105 |
+
|
| 106 |
+
|
| 107 |
+
def _get_collection():
|
| 108 |
+
"""Lazy-import Chroma to keep startup time low when not needed."""
|
| 109 |
+
import chromadb
|
| 110 |
+
from chromadb.config import Settings as ChromaSettings
|
| 111 |
+
|
| 112 |
+
client = chromadb.PersistentClient(
|
| 113 |
+
path=str(settings.VECTORS_DIR),
|
| 114 |
+
settings=ChromaSettings(anonymized_telemetry=False),
|
| 115 |
+
)
|
| 116 |
+
return client.get_or_create_collection(
|
| 117 |
+
name="policies",
|
| 118 |
+
metadata={"hnsw:space": "cosine"},
|
| 119 |
+
)
|
| 120 |
+
|
| 121 |
+
|
| 122 |
+
async def upsert_profile_chunk(session_id: str, profile_dict: dict) -> None:
|
| 123 |
+
"""Embed the profile paragraph and store as a single chunk in Chroma.
|
| 124 |
+
|
| 125 |
+
Idempotent — calling this on every profile update is safe; existing
|
| 126 |
+
chunks for the same session_id get replaced.
|
| 127 |
+
"""
|
| 128 |
+
from backend.providers.local_embeddings import LocalEmbeddings
|
| 129 |
+
|
| 130 |
+
text = profile_to_chunk_text(profile_dict)
|
| 131 |
+
if not text or len(text) < 30:
|
| 132 |
+
return
|
| 133 |
+
|
| 134 |
+
embedder = LocalEmbeddings()
|
| 135 |
+
[vec] = await embedder.embed([text], input_type="document")
|
| 136 |
+
|
| 137 |
+
coll = _get_collection()
|
| 138 |
+
chunk_id = f"profile_{session_id}"
|
| 139 |
+
|
| 140 |
+
# Replace any existing chunk for this session
|
| 141 |
+
try:
|
| 142 |
+
coll.delete(where={"policy_id": chunk_id})
|
| 143 |
+
except Exception:
|
| 144 |
+
pass
|
| 145 |
+
|
| 146 |
+
coll.add(
|
| 147 |
+
ids=[chunk_id],
|
| 148 |
+
documents=[text],
|
| 149 |
+
embeddings=[vec],
|
| 150 |
+
metadatas=[{
|
| 151 |
+
"policy_id": chunk_id,
|
| 152 |
+
"insurer_slug": "profile",
|
| 153 |
+
"policy_name": f"User profile (session {session_id[:8]})",
|
| 154 |
+
"doc_type": "profile",
|
| 155 |
+
"source_url": "",
|
| 156 |
+
"page_start": 0,
|
| 157 |
+
"page_end": 0,
|
| 158 |
+
"chunk_idx": 0,
|
| 159 |
+
"local_path": "in-memory session profile",
|
| 160 |
+
}],
|
| 161 |
+
)
|
| 162 |
+
|
| 163 |
+
|
| 164 |
+
def remove_profile_chunk(session_id: str) -> None:
|
| 165 |
+
"""Optional cleanup. Called on session expiry (1h TTL in session_state)."""
|
| 166 |
+
try:
|
| 167 |
+
coll = _get_collection()
|
| 168 |
+
coll.delete(where={"policy_id": f"profile_{session_id}"})
|
| 169 |
+
except Exception:
|
| 170 |
+
pass
|
| 171 |
+
|
| 172 |
+
|
| 173 |
+
def upsert_profile_chunk_sync(session_id: str, profile_dict: dict) -> None:
|
| 174 |
+
"""Sync wrapper for callers that aren't async — schedules + waits."""
|
| 175 |
+
try:
|
| 176 |
+
loop = asyncio.get_event_loop()
|
| 177 |
+
if loop.is_running():
|
| 178 |
+
# Already inside an async context — schedule on the loop
|
| 179 |
+
asyncio.ensure_future(upsert_profile_chunk(session_id, profile_dict))
|
| 180 |
+
return
|
| 181 |
+
except RuntimeError:
|
| 182 |
+
pass
|
| 183 |
+
asyncio.run(upsert_profile_chunk(session_id, profile_dict))
|
backend/providers/__init__.py
CHANGED
|
@@ -1,12 +1,16 @@
|
|
| 1 |
"""Provider clients — thin, async, behind a common interface.
|
| 2 |
|
| 3 |
-
|
|
|
|
| 4 |
sarvam_stt.py — Sarvam Saarika v2.5 (speech-to-text)
|
| 5 |
-
sarvam_tts.py — Sarvam Bulbul (text-to-speech)
|
| 6 |
-
sarvam_llm.py — Sarvam-M (
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
All clients are async (use httpx.AsyncClient) so the FastAPI handlers can
|
| 12 |
parallelize provider calls without blocking the event loop.
|
|
|
|
| 1 |
"""Provider clients — thin, async, behind a common interface.
|
| 2 |
|
| 3 |
+
After the 2026-05-14 Stack A consolidation (D-019), the provider stack is:
|
| 4 |
+
|
| 5 |
sarvam_stt.py — Sarvam Saarika v2.5 (speech-to-text)
|
| 6 |
+
sarvam_tts.py — Sarvam Bulbul v2 (text-to-speech)
|
| 7 |
+
sarvam_llm.py — Sarvam-M (Indic translation IN and OUT; not brain anymore)
|
| 8 |
+
local_embeddings.py — BGE-small-en-v1.5 (local CPU embeddings)
|
| 9 |
+
nvidia_nim_llm.py — NIM Llama-3.3-70B-Instruct (BRAIN) + Llama-4 Maverick (JUDGE)
|
| 10 |
+
|
| 11 |
+
Four legacy providers were retired in the same change: openrouter_llm.py,
|
| 12 |
+
deepseek_llm.py, cerebras_llm.py, groq_llm.py. Single NIM key replaces all
|
| 13 |
+
four. See docs/decisions.md D-019.
|
| 14 |
|
| 15 |
All clients are async (use httpx.AsyncClient) so the FastAPI handlers can
|
| 16 |
parallelize provider calls without blocking the event loop.
|
backend/providers/_smoke_test.py
CHANGED
|
@@ -5,6 +5,14 @@ Run from project root:
|
|
| 5 |
|
| 6 |
Each test prints OK/FAIL and the response. Failures here will surface in the
|
| 7 |
build before they surface in the UI.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
"""
|
| 9 |
|
| 10 |
from __future__ import annotations
|
|
@@ -14,24 +22,22 @@ import traceback
|
|
| 14 |
|
| 15 |
from backend.config import settings
|
| 16 |
from backend.providers.base import ChatMessage
|
|
|
|
| 17 |
from backend.providers.sarvam_llm import SarvamLLM
|
| 18 |
from backend.providers.sarvam_stt import SarvamSTT
|
| 19 |
from backend.providers.sarvam_tts import SarvamTTS
|
| 20 |
-
from backend.providers.voyage_embeddings import VoyageEmbeddings
|
| 21 |
-
from backend.providers.groq_llm import GroqLLM
|
| 22 |
-
from backend.providers.openrouter_llm import OpenRouterLLM
|
| 23 |
|
| 24 |
|
| 25 |
async def test_sarvam_llm():
|
| 26 |
-
print("\n--- Sarvam-M LLM ---")
|
| 27 |
try:
|
| 28 |
client = SarvamLLM()
|
| 29 |
result = await client.chat(
|
| 30 |
messages=[
|
| 31 |
-
ChatMessage(role="system", content="You are a
|
| 32 |
-
ChatMessage(role="user", content="
|
| 33 |
],
|
| 34 |
-
max_tokens=
|
| 35 |
)
|
| 36 |
print(f"OK | model={result.model} | reply: {result.text[:200]}")
|
| 37 |
print(f" tokens prompt={result.prompt_tokens} completion={result.completion_tokens}")
|
|
@@ -51,7 +57,6 @@ async def test_sarvam_tts():
|
|
| 51 |
language_code="en-IN",
|
| 52 |
)
|
| 53 |
print(f"OK | got {len(audio)} bytes of audio")
|
| 54 |
-
# Save for manual inspection
|
| 55 |
out = settings.CORPUS_DIR.parent / "_smoke_tts.wav"
|
| 56 |
out.write_bytes(audio)
|
| 57 |
print(f" saved to {out.relative_to(settings.CORPUS_DIR.parent.parent)}")
|
|
@@ -62,12 +67,19 @@ async def test_sarvam_tts():
|
|
| 62 |
return False
|
| 63 |
|
| 64 |
|
| 65 |
-
async def
|
| 66 |
-
print("\n---
|
| 67 |
try:
|
| 68 |
-
client =
|
| 69 |
-
|
| 70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
return True
|
| 72 |
except Exception as e:
|
| 73 |
print(f"FAIL | {type(e).__name__}: {e}")
|
|
@@ -75,10 +87,10 @@ async def test_voyage():
|
|
| 75 |
return False
|
| 76 |
|
| 77 |
|
| 78 |
-
async def
|
| 79 |
-
print("\n---
|
| 80 |
try:
|
| 81 |
-
client =
|
| 82 |
result = await client.chat(
|
| 83 |
messages=[
|
| 84 |
ChatMessage(role="system", content="You are a strict evaluator. Reply YES or NO only."),
|
|
@@ -95,25 +107,6 @@ async def test_groq():
|
|
| 95 |
return False
|
| 96 |
|
| 97 |
|
| 98 |
-
async def test_openrouter():
|
| 99 |
-
print("\n--- OpenRouter DeepSeek-V3 (strongest fallback brain) ---")
|
| 100 |
-
try:
|
| 101 |
-
client = OpenRouterLLM()
|
| 102 |
-
result = await client.chat(
|
| 103 |
-
messages=[
|
| 104 |
-
ChatMessage(role="system", content="You are a precise insurance advisor."),
|
| 105 |
-
ChatMessage(role="user", content="Briefly: what does 'sum insured' mean in health insurance? Under 25 words."),
|
| 106 |
-
],
|
| 107 |
-
max_tokens=100,
|
| 108 |
-
)
|
| 109 |
-
print(f"OK | model={result.model} | reply: {result.text[:200]}")
|
| 110 |
-
return True
|
| 111 |
-
except Exception as e:
|
| 112 |
-
print(f"FAIL | {type(e).__name__}: {e}")
|
| 113 |
-
traceback.print_exc()
|
| 114 |
-
return False
|
| 115 |
-
|
| 116 |
-
|
| 117 |
async def test_sarvam_stt():
|
| 118 |
"""STT needs an audio file. We reuse the TTS output if it ran successfully."""
|
| 119 |
print("\n--- Sarvam Saarika STT ---")
|
|
@@ -144,10 +137,9 @@ async def main():
|
|
| 144 |
print(f"WARN | missing keys: {missing}")
|
| 145 |
|
| 146 |
results = {}
|
|
|
|
|
|
|
| 147 |
results["sarvam_llm"] = await test_sarvam_llm()
|
| 148 |
-
results["voyage"] = await test_voyage()
|
| 149 |
-
results["groq"] = await test_groq()
|
| 150 |
-
results["openrouter"] = await test_openrouter()
|
| 151 |
results["sarvam_tts"] = await test_sarvam_tts()
|
| 152 |
results["sarvam_stt"] = await test_sarvam_stt() # depends on TTS output
|
| 153 |
|
|
|
|
| 5 |
|
| 6 |
Each test prints OK/FAIL and the response. Failures here will surface in the
|
| 7 |
build before they surface in the UI.
|
| 8 |
+
|
| 9 |
+
Stack A providers (post-2026-05-14, D-019):
|
| 10 |
+
- Sarvam-M LLM — Indic translation (Hindi/Hinglish/vernacular)
|
| 11 |
+
- Sarvam Bulbul TTS — voice synthesis
|
| 12 |
+
- Sarvam Saarika STT — voice recognition
|
| 13 |
+
- Local BGE embeddings (no network)
|
| 14 |
+
- NVIDIA NIM brain — DeepSeek-V4-Pro
|
| 15 |
+
- NVIDIA NIM judge — Llama-4 Maverick
|
| 16 |
"""
|
| 17 |
|
| 18 |
from __future__ import annotations
|
|
|
|
| 22 |
|
| 23 |
from backend.config import settings
|
| 24 |
from backend.providers.base import ChatMessage
|
| 25 |
+
from backend.providers.nvidia_nim_llm import get_brain_llm, get_judge_llm
|
| 26 |
from backend.providers.sarvam_llm import SarvamLLM
|
| 27 |
from backend.providers.sarvam_stt import SarvamSTT
|
| 28 |
from backend.providers.sarvam_tts import SarvamTTS
|
|
|
|
|
|
|
|
|
|
| 29 |
|
| 30 |
|
| 31 |
async def test_sarvam_llm():
|
| 32 |
+
print("\n--- Sarvam-M LLM (Indic translation only) ---")
|
| 33 |
try:
|
| 34 |
client = SarvamLLM()
|
| 35 |
result = await client.chat(
|
| 36 |
messages=[
|
| 37 |
+
ChatMessage(role="system", content="You are a translator. Translate to Hindi."),
|
| 38 |
+
ChatMessage(role="user", content="The sum insured is the maximum amount your policy will pay."),
|
| 39 |
],
|
| 40 |
+
max_tokens=120,
|
| 41 |
)
|
| 42 |
print(f"OK | model={result.model} | reply: {result.text[:200]}")
|
| 43 |
print(f" tokens prompt={result.prompt_tokens} completion={result.completion_tokens}")
|
|
|
|
| 57 |
language_code="en-IN",
|
| 58 |
)
|
| 59 |
print(f"OK | got {len(audio)} bytes of audio")
|
|
|
|
| 60 |
out = settings.CORPUS_DIR.parent / "_smoke_tts.wav"
|
| 61 |
out.write_bytes(audio)
|
| 62 |
print(f" saved to {out.relative_to(settings.CORPUS_DIR.parent.parent)}")
|
|
|
|
| 67 |
return False
|
| 68 |
|
| 69 |
|
| 70 |
+
async def test_nim_brain():
|
| 71 |
+
print("\n--- NIM DeepSeek-V4-Pro (THE brain — Stack A primary) ---")
|
| 72 |
try:
|
| 73 |
+
client = get_brain_llm()
|
| 74 |
+
result = await client.chat(
|
| 75 |
+
messages=[
|
| 76 |
+
ChatMessage(role="system", content="You are a precise insurance advisor."),
|
| 77 |
+
ChatMessage(role="user", content="Briefly: what does 'sum insured' mean in health insurance? Under 25 words."),
|
| 78 |
+
],
|
| 79 |
+
max_tokens=120,
|
| 80 |
+
temperature=0.2,
|
| 81 |
+
)
|
| 82 |
+
print(f"OK | model={result.model} | reply: {result.text[:200]}")
|
| 83 |
return True
|
| 84 |
except Exception as e:
|
| 85 |
print(f"FAIL | {type(e).__name__}: {e}")
|
|
|
|
| 87 |
return False
|
| 88 |
|
| 89 |
|
| 90 |
+
async def test_nim_judge():
|
| 91 |
+
print("\n--- NIM Llama-4 Maverick (faithfulness judge — Stack A grader) ---")
|
| 92 |
try:
|
| 93 |
+
client = get_judge_llm(language="en")
|
| 94 |
result = await client.chat(
|
| 95 |
messages=[
|
| 96 |
ChatMessage(role="system", content="You are a strict evaluator. Reply YES or NO only."),
|
|
|
|
| 107 |
return False
|
| 108 |
|
| 109 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
async def test_sarvam_stt():
|
| 111 |
"""STT needs an audio file. We reuse the TTS output if it ran successfully."""
|
| 112 |
print("\n--- Sarvam Saarika STT ---")
|
|
|
|
| 137 |
print(f"WARN | missing keys: {missing}")
|
| 138 |
|
| 139 |
results = {}
|
| 140 |
+
results["nim_brain"] = await test_nim_brain()
|
| 141 |
+
results["nim_judge"] = await test_nim_judge()
|
| 142 |
results["sarvam_llm"] = await test_sarvam_llm()
|
|
|
|
|
|
|
|
|
|
| 143 |
results["sarvam_tts"] = await test_sarvam_tts()
|
| 144 |
results["sarvam_stt"] = await test_sarvam_stt() # depends on TTS output
|
| 145 |
|
backend/providers/nvidia_nim_llm.py
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""NVIDIA NIM — primary brain + judge for the entire reasoning stack.
|
| 2 |
+
|
| 3 |
+
NIM exposes an OpenAI-compatible chat completions endpoint at
|
| 4 |
+
POST https://integrate.api.nvidia.com/v1/chat/completions.
|
| 5 |
+
|
| 6 |
+
Why NIM:
|
| 7 |
+
- Frontier open-weights models hosted free (no card, no daily cap, 40 req/min)
|
| 8 |
+
- Single provider replaces OpenRouter + DeepSeek-direct + Cerebras + Groq
|
| 9 |
+
- Same Bearer-auth + OpenAI request shape — drop-in retry/backoff
|
| 10 |
+
|
| 11 |
+
Roles (tiered routing — pick brain by intent classification):
|
| 12 |
+
- Heavy brain (comparison / recommendation / synthesis): deepseek-ai/deepseek-v4-pro
|
| 13 |
+
DeepSeek's frontier MoE (1.6T total / 49B active, 1M context, MIT-
|
| 14 |
+
licensed). Beats Opus-4.6 + GPT-5.4 on SimpleQA-Verified and
|
| 15 |
+
LiveCodeBench. Used when quality > latency.
|
| 16 |
+
- Fast brain (voice turns / fact-find / simple QA): deepseek-ai/deepseek-v4-flash
|
| 17 |
+
284B total / 13B active MoE, 1M context, MIT-licensed. ~27% FLOPs of
|
| 18 |
+
V3.2 → significantly lower TTFT. Frontier-tier on HMMT 2026 + LiveCode-
|
| 19 |
+
Bench. Used when voice latency dominates.
|
| 20 |
+
- Judge (faithfulness Gate 4 + Hinglish drift LLM-judge): meta/llama-4-maverick-17b-128e-instruct
|
| 21 |
+
Meta's MoE flagship (17B active / 400B total, 128 experts). Different
|
| 22 |
+
company, different architecture, different training corpus from the
|
| 23 |
+
brain — strongest cross-grading independence. The brain (DeepSeek) does
|
| 24 |
+
not mark its own homework.
|
| 25 |
+
|
| 26 |
+
Sarvam stays for voice STT/TTS + Hindi/Hinglish/vernacular translation.
|
| 27 |
+
Everything else (brain, judge, eval grader) runs through this module.
|
| 28 |
+
"""
|
| 29 |
+
|
| 30 |
+
from __future__ import annotations
|
| 31 |
+
|
| 32 |
+
import asyncio
|
| 33 |
+
from typing import Optional
|
| 34 |
+
|
| 35 |
+
import httpx
|
| 36 |
+
|
| 37 |
+
from backend.config import settings
|
| 38 |
+
from backend.providers.base import ChatMessage, LLMProvider, LLMResult
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
NVIDIA_NIM_BASE_URL = "https://integrate.api.nvidia.com/v1"
|
| 42 |
+
# Heavy brain (complex queries — comparison, recommendation, synthesis):
|
| 43 |
+
# DeepSeek-V4-Pro — 1.6T total / 49B active MoE, 1M context, MIT license.
|
| 44 |
+
# Beats Opus-4.6 + GPT-5.4 on SimpleQA-Verified (57.9% vs 46.2% / 45.3%) and on
|
| 45 |
+
# LiveCodeBench / Codeforces. Used for queries where quality > latency.
|
| 46 |
+
NIM_BRAIN_MODEL = "deepseek-ai/deepseek-v4-pro"
|
| 47 |
+
# Fast brain (voice turns, fact-find, simple QA):
|
| 48 |
+
# DeepSeek-V4-Flash — 284B total / 13B active MoE, 1M context, MIT license.
|
| 49 |
+
# 27% of V3.2 single-token FLOPs, 10% of KV cache → significantly lower TTFT
|
| 50 |
+
# than V4-Pro. Frontier-tier on HMMT 2026 (94.8%) and LiveCodeBench (91.6%).
|
| 51 |
+
# Used for queries where voice latency dominates.
|
| 52 |
+
NIM_FAST_BRAIN_MODEL = "deepseek-ai/deepseek-v4-flash"
|
| 53 |
+
# Judge: Meta Llama-4 Maverick — 400B total / 17B active MoE, 128 experts.
|
| 54 |
+
# Different company, different architecture family from DeepSeek, different
|
| 55 |
+
# training corpus — strongest possible cross-grading independence between
|
| 56 |
+
# brain and judge ("the brain doesn't mark its own homework").
|
| 57 |
+
NIM_JUDGE_MODEL = "meta/llama-4-maverick-17b-128e-instruct"
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
class NvidiaNimLLM(LLMProvider):
|
| 61 |
+
name = "nim"
|
| 62 |
+
|
| 63 |
+
def __init__(
|
| 64 |
+
self,
|
| 65 |
+
model: str = NIM_BRAIN_MODEL,
|
| 66 |
+
api_key: Optional[str] = None,
|
| 67 |
+
timeout: float = 60.0,
|
| 68 |
+
):
|
| 69 |
+
self.api_key = api_key or getattr(settings, "NVIDIA_NIM_API_KEY", "")
|
| 70 |
+
self.model = model
|
| 71 |
+
self.timeout = timeout
|
| 72 |
+
if not self.api_key:
|
| 73 |
+
raise RuntimeError(
|
| 74 |
+
"NVIDIA_NIM_API_KEY not set. Get a key at https://build.nvidia.com "
|
| 75 |
+
"and add NVIDIA_NIM_API_KEY=nvapi-... to .env"
|
| 76 |
+
)
|
| 77 |
+
self.name = f"nim::{model.split('/')[-1]}"
|
| 78 |
+
|
| 79 |
+
async def chat(
|
| 80 |
+
self,
|
| 81 |
+
messages: list[ChatMessage],
|
| 82 |
+
temperature: float = 0.2,
|
| 83 |
+
max_tokens: int = 1024,
|
| 84 |
+
response_format: Optional[dict] = None,
|
| 85 |
+
) -> LLMResult:
|
| 86 |
+
url = f"{NVIDIA_NIM_BASE_URL}/chat/completions"
|
| 87 |
+
body: dict = {
|
| 88 |
+
"model": self.model,
|
| 89 |
+
"messages": [{"role": m.role, "content": m.content} for m in messages],
|
| 90 |
+
"temperature": temperature,
|
| 91 |
+
"max_tokens": max_tokens,
|
| 92 |
+
}
|
| 93 |
+
if response_format:
|
| 94 |
+
body["response_format"] = response_format
|
| 95 |
+
|
| 96 |
+
headers = {
|
| 97 |
+
"Authorization": f"Bearer {self.api_key}",
|
| 98 |
+
"Content-Type": "application/json",
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
+
async with httpx.AsyncClient(timeout=self.timeout) as client:
|
| 102 |
+
attempts = 4
|
| 103 |
+
delay = 1.0
|
| 104 |
+
for attempt in range(attempts):
|
| 105 |
+
resp = await client.post(url, headers=headers, json=body)
|
| 106 |
+
if resp.status_code == 429 or (500 <= resp.status_code < 600):
|
| 107 |
+
if attempt == attempts - 1:
|
| 108 |
+
resp.raise_for_status()
|
| 109 |
+
ra = resp.headers.get("Retry-After")
|
| 110 |
+
wait = float(ra) if ra and ra.replace(".", "").isdigit() else delay
|
| 111 |
+
await asyncio.sleep(wait)
|
| 112 |
+
delay *= 2
|
| 113 |
+
continue
|
| 114 |
+
resp.raise_for_status()
|
| 115 |
+
break
|
| 116 |
+
payload = resp.json()
|
| 117 |
+
|
| 118 |
+
choice = payload["choices"][0]
|
| 119 |
+
msg = choice.get("message", {}) or {}
|
| 120 |
+
# NIM reasoning models (Nemotron Super etc.) emit output in reasoning_content
|
| 121 |
+
# instead of content. Llama-3.3-70B + Llama-4 Maverick both return normal
|
| 122 |
+
# content, but guard against the variant in case we ever swap in a
|
| 123 |
+
# reasoning model.
|
| 124 |
+
text = msg.get("content") or msg.get("reasoning_content") or ""
|
| 125 |
+
usage = payload.get("usage", {})
|
| 126 |
+
return LLMResult(
|
| 127 |
+
text=text,
|
| 128 |
+
model=payload.get("model", self.model),
|
| 129 |
+
prompt_tokens=usage.get("prompt_tokens"),
|
| 130 |
+
completion_tokens=usage.get("completion_tokens"),
|
| 131 |
+
raw=payload,
|
| 132 |
+
)
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
def get_brain_llm() -> NvidiaNimLLM:
|
| 136 |
+
"""Heavy brain — DeepSeek-V4-Pro on NIM. Use for complex queries
|
| 137 |
+
(comparison, recommendation, synthesis) where quality > latency."""
|
| 138 |
+
return NvidiaNimLLM(model=NIM_BRAIN_MODEL)
|
| 139 |
+
|
| 140 |
+
|
| 141 |
+
def get_fast_brain_llm() -> NvidiaNimLLM:
|
| 142 |
+
"""Fast brain — DeepSeek-V4-Flash on NIM. Use for voice turns and
|
| 143 |
+
fact-find where TTFT latency dominates UX."""
|
| 144 |
+
return NvidiaNimLLM(model=NIM_FAST_BRAIN_MODEL)
|
| 145 |
+
|
| 146 |
+
|
| 147 |
+
def get_judge_llm(language: str = "en") -> NvidiaNimLLM:
|
| 148 |
+
"""The grader for faithfulness Gate 4 + Hinglish drift + eval harness.
|
| 149 |
+
|
| 150 |
+
Always returns Llama-4 Maverick regardless of language — Meta's MoE
|
| 151 |
+
flagship gives strong multilingual grading, and is a different *family*
|
| 152 |
+
from the DeepSeek brain (different company, different architecture,
|
| 153 |
+
different training corpus). The brain does not mark its own homework.
|
| 154 |
+
|
| 155 |
+
`language` arg kept for call-site compatibility with the legacy chain.
|
| 156 |
+
"""
|
| 157 |
+
return NvidiaNimLLM(model=NIM_JUDGE_MODEL)
|
backend/translation_check.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
"""Verify the Sarvam-M Hinglish back-translation preserved the load-bearing
|
| 2 |
-
facts from
|
| 3 |
|
| 4 |
Closes the F-16 gap: faithfulness gates verify the English answer, but until
|
| 5 |
this module the Hinglish translation that the user actually saw/heard was
|
|
@@ -132,18 +132,17 @@ Be strict. Tone changes are fine; fact changes are not."""
|
|
| 132 |
|
| 133 |
|
| 134 |
async def check_hinglish_faithfulness(english_reply: str, hinglish_reply: str) -> DriftVerdict:
|
| 135 |
-
"""Gate 5 —
|
| 136 |
-
to the English original. Catches semantic drift the regex anchors
|
| 137 |
-
(e.g. paraphrased exclusions, dropped caveats).
|
| 138 |
"""
|
| 139 |
if not english_reply.strip() or not hinglish_reply.strip():
|
| 140 |
return DriftVerdict(drift_detected=False)
|
| 141 |
|
| 142 |
try:
|
| 143 |
-
# Lazy-import to avoid pulling Groq into modules that don't need it
|
| 144 |
from backend.providers.base import ChatMessage
|
| 145 |
-
from backend.providers.
|
| 146 |
-
judge =
|
| 147 |
user = f"ENGLISH SOURCE:\n{english_reply}\n\nHINGLISH TRANSLATION:\n{hinglish_reply}\n\nVerify."
|
| 148 |
res = await judge.chat(
|
| 149 |
messages=[
|
|
|
|
| 1 |
"""Verify the Sarvam-M Hinglish back-translation preserved the load-bearing
|
| 2 |
+
facts from the NIM Llama-3.3-70B English reply.
|
| 3 |
|
| 4 |
Closes the F-16 gap: faithfulness gates verify the English answer, but until
|
| 5 |
this module the Hinglish translation that the user actually saw/heard was
|
|
|
|
| 132 |
|
| 133 |
|
| 134 |
async def check_hinglish_faithfulness(english_reply: str, hinglish_reply: str) -> DriftVerdict:
|
| 135 |
+
"""Gate 5 — NIM Llama-4 Maverick judges whether the Hinglish translation is
|
| 136 |
+
faithful to the English original. Catches semantic drift the regex anchors
|
| 137 |
+
miss (e.g. paraphrased exclusions, dropped caveats).
|
| 138 |
"""
|
| 139 |
if not english_reply.strip() or not hinglish_reply.strip():
|
| 140 |
return DriftVerdict(drift_detected=False)
|
| 141 |
|
| 142 |
try:
|
|
|
|
| 143 |
from backend.providers.base import ChatMessage
|
| 144 |
+
from backend.providers.nvidia_nim_llm import get_judge_llm
|
| 145 |
+
judge = get_judge_llm(language="hi")
|
| 146 |
user = f"ENGLISH SOURCE:\n{english_reply}\n\nHINGLISH TRANSLATION:\n{hinglish_reply}\n\nVerify."
|
| 147 |
res = await judge.chat(
|
| 148 |
messages=[
|
data/information_source_map.md
ADDED
|
@@ -0,0 +1,341 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Insurance Sales Bot — Information Source Map
|
| 2 |
+
|
| 3 |
+
Generated: 2026-05-14 01:21:31 IST
|
| 4 |
+
Total claims audited: **2504**
|
| 5 |
+
|
| 6 |
+
## Verdict Summary
|
| 7 |
+
|
| 8 |
+
| Category | ✅ verified | ⚠️ url-ok-quote-missing | ❌ url-broken | ⏳ no-claim / no-source |
|
| 9 |
+
|---|---:|---:|---:|---:|
|
| 10 |
+
| policy_facts | 798 | 321 | 0 | 1385 |
|
| 11 |
+
| **TOTAL** | **798** | **321** | **0** | **1385** |
|
| 12 |
+
|
| 13 |
+
## Must Fix — 0 broken source(s)
|
| 14 |
+
|
| 15 |
+
_None — all sources resolve._
|
| 16 |
+
|
| 17 |
+
## policy_facts
|
| 18 |
+
|
| 19 |
+
Audited 2504 claims — ✅ 798 verified, ⚠️ 321 quote-missing, ❌ 0 broken.
|
| 20 |
+
|
| 21 |
+
### Flagged claims
|
| 22 |
+
|
| 23 |
+
| Record | Field | Verdict | Source | Notes |
|
| 24 |
+
|---|---|---|---|---|
|
| 25 |
+
| `aditya-birla__activ-assure-diamond` | `min_entry_age` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 26 |
+
| `aditya-birla__activ-assure-diamond` | `max_entry_age` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 27 |
+
| `aditya-birla__activ-assure-diamond` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 28 |
+
| `aditya-birla__activ-assure-diamond` | `post_hospitalization_days` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 29 |
+
| `aditya-birla__activ-assure-diamond` | `organ_donor_expenses` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 30 |
+
| `aditya-birla__activ-assure-diamond` | `restoration_benefit` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 31 |
+
| `aditya-birla__activ-assure-diamond` | `cashless_treatment_supported` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 32 |
+
| `aditya-birla__activ-assure-diamond` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 33 |
+
| `aditya-birla__activ-health-individual__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 34 |
+
| `aditya-birla__activ-health` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 35 |
+
| `aditya-birla__activ-health` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 36 |
+
| `aditya-birla__activ-health` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 37 |
+
| `aditya-birla__activ-one` | `max_entry_age` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 38 |
+
| `aditya-birla__activ-one` | `newborn_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 39 |
+
| `aditya-birla__activ-one` | `organ_donor_expenses` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 40 |
+
| `aditya-birla__activ-one` | `restoration_benefit` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 41 |
+
| `aditya-birla__activ-one` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 42 |
+
| `aditya-birla__activ-one` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 43 |
+
| `aditya-birla__activ-secure-cancer-secure__brochure` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 44 |
+
| `aditya-birla__activ-secure-personal-accident-cancer-secure__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 45 |
+
| `aditya-birla__group-activ-health__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/aditya-birla/group-activ-health__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 46 |
+
| `bajaj-allianz__comprehensive-care-plan` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 47 |
+
| `bajaj-allianz__comprehensive-care-plan` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 48 |
+
| `bajaj-allianz__criti-care__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/criti-care__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 49 |
+
| `bajaj-allianz__extra-care-plus` | `ayush_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 50 |
+
| `bajaj-allianz__extra-care-plus` | `maternity_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 51 |
+
| `bajaj-allianz__extra-care-plus` | `organ_donor_expenses` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 52 |
+
| `bajaj-allianz__extra-care-plus` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 53 |
+
| `bajaj-allianz__extra-care-plus` | `cashless_treatment_supported` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 54 |
+
| `bajaj-allianz__extra-care-plus` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 55 |
+
| `bajaj-allianz__global-health-care` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 56 |
+
| `bajaj-allianz__global-health-care` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 57 |
+
| `bajaj-allianz__group-health-guard-gold__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 58 |
+
| `bajaj-allianz__group-personal-accident__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 59 |
+
| `bajaj-allianz__health-guard-gold-individual__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 60 |
+
| `bajaj-allianz__health-guard-gold` | `max_entry_age` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 61 |
+
| `bajaj-allianz__health-guard-gold` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 62 |
+
| `bajaj-allianz__health-guard-gold` | `maternity_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 63 |
+
| `bajaj-allianz__health-guard-gold` | `organ_donor_expenses` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 64 |
+
| `bajaj-allianz__health-guard-gold` | `no_claim_bonus_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 65 |
+
| `bajaj-allianz__health-guard-gold` | `room_rent_capping` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 66 |
+
| `bajaj-allianz__health-guard-gold` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 67 |
+
| `bajaj-allianz__health-guard-gold` | `cashless_treatment_supported` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 68 |
+
| `bajaj-allianz__health-guard-gold` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 69 |
+
| `bajaj-allianz__health-guard` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/health-guard__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 70 |
+
| `bajaj-allianz__silver-health` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/silver-health__cis.pdf` | PDF exists but source_quote not found in extracted text |
|
| 71 |
+
| `bajaj-allianz__silver-health` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/silver-health__cis.pdf` | PDF exists but source_quote not found in extracted text |
|
| 72 |
+
| `bajaj-allianz__silver-health` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/silver-health__cis.pdf` | PDF exists but source_quote not found in extracted text |
|
| 73 |
+
| `bajaj-allianz__tax-gain` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/tax-gain__cis.pdf` | PDF exists but source_quote not found in extracted text |
|
| 74 |
+
| `bajaj-allianz__tax-gain` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/tax-gain__cis.pdf` | PDF exists but source_quote not found in extracted text |
|
| 75 |
+
| `bajaj-allianz__tax-gain` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/tax-gain__cis.pdf` | PDF exists but source_quote not found in extracted text |
|
| 76 |
+
| `bajaj-allianz__tax-gain` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/bajaj-allianz/tax-gain__cis.pdf` | PDF exists but source_quote not found in extracted text |
|
| 77 |
+
| `care-health__care-advantage-add-ons-protect-plus-care-shield__brochure` | `no_claim_bonus_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 78 |
+
| `care-health__care-advantage-add-ons-protect-plus-care-shield__brochure` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 79 |
+
| `care-health__care-advantage` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-advantage__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 80 |
+
| `care-health__care-advantage` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-advantage__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 81 |
+
| `care-health__care-classic` | `min_entry_age` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-classic__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 82 |
+
| `care-health__care-classic` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-classic__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 83 |
+
| `care-health__care-classic` | `pre_existing_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-classic__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 84 |
+
| `care-health__care-classic` | `maternity_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-classic__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 85 |
+
| `care-health__care-classic` | `maternity_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-classic__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 86 |
+
| `care-health__care-classic` | `newborn_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-classic__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 87 |
+
| `care-health__care-classic` | `organ_donor_expenses` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-classic__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 88 |
+
| `care-health__care-classic` | `no_claim_bonus_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-classic__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 89 |
+
| `care-health__care-classic` | `room_rent_capping` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-classic__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 90 |
+
| `care-health__care-classic` | `cashless_treatment_supported` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-classic__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 91 |
+
| `care-health__care-classic` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-classic__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 92 |
+
| `care-health__care-heart__brochure` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-heart__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 93 |
+
| `care-health__care-senior` | `pre_hospitalization_days` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-senior__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 94 |
+
| `care-health__care-senior` | `post_hospitalization_days` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-senior__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 95 |
+
| `care-health__care-senior` | `maternity_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-senior__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 96 |
+
| `care-health__care-senior` | `newborn_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-senior__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 97 |
+
| `care-health__care-senior` | `no_claim_bonus_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-senior__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 98 |
+
| `care-health__care-senior` | `restoration_benefit` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-senior__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 99 |
+
| `care-health__care-senior` | `cashless_treatment_supported` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-senior__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 100 |
+
| `care-health__care-supreme-enhance` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-supreme-enhance__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 101 |
+
| `care-health__care-supreme-enhance` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-supreme-enhance__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 102 |
+
| `care-health__care-supreme-enhance` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-supreme-enhance__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 103 |
+
| `care-health__care-supreme` | `min_entry_age` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-supreme__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 104 |
+
| `care-health__care-supreme` | `pre_existing_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-supreme__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 105 |
+
| `care-health__care-supreme` | `maternity_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-supreme__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 106 |
+
| `care-health__care-supreme` | `newborn_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-supreme__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 107 |
+
| `care-health__care-supreme` | `organ_donor_expenses` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-supreme__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 108 |
+
| `care-health__care-supreme` | `no_claim_bonus_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-supreme__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 109 |
+
| `care-health__care-supreme` | `cashless_treatment_supported` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-supreme__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 110 |
+
| `care-health__care-supreme` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/care-supreme__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 111 |
+
| `care-health__supreme-enhance__brochure` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/supreme-enhance__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 112 |
+
| `care-health__ultimate-care` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/ultimate-care__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 113 |
+
| `care-health__ultimate-care` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/ultimate-care__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 114 |
+
| `care-health__ultimate-care` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/care-health/ultimate-care__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 115 |
+
| `hdfc-ergo__energy-diabetes-hypertension__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/energy-diabetes-hypertension__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 116 |
+
| `hdfc-ergo__energy` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/energy-diabetes-hypertension__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 117 |
+
| `hdfc-ergo__energy` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/energy-diabetes-hypertension__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 118 |
+
| `hdfc-ergo__energy` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/energy-diabetes-hypertension__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 119 |
+
| `hdfc-ergo__group-health-insurance__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/group-health-insurance__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 120 |
+
| `hdfc-ergo__my-health-medisure-prime` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-medisure-prime__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 121 |
+
| `hdfc-ergo__my-health-medisure-prime` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-medisure-prime__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 122 |
+
| `hdfc-ergo__my-health-medisure-prime` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-medisure-prime__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 123 |
+
| `hdfc-ergo__my-health-sampoorna-suraksha` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-sampoorna-suraksha__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 124 |
+
| `hdfc-ergo__my-health-sampoorna-suraksha` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-sampoorna-suraksha__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 125 |
+
| `hdfc-ergo__my-health-sampoorna-suraksha` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-sampoorna-suraksha__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 126 |
+
| `hdfc-ergo__my-health-suraksha` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-suraksha__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 127 |
+
| `hdfc-ergo__my-health-suraksha` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-suraksha__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 128 |
+
| `hdfc-ergo__my-health-suraksha` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-suraksha__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 129 |
+
| `hdfc-ergo__my-health-women-suraksha` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-women-suraksha__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 130 |
+
| `hdfc-ergo__my-health-women-suraksha` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-women-suraksha__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 131 |
+
| `hdfc-ergo__my-health-women-suraksha` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-women-suraksha__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 132 |
+
| `hdfc-ergo__my-health-women-suraksha` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-health-women-suraksha__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 133 |
+
| `hdfc-ergo__my-optima-secure-older-variant__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-optima-secure-older-variant__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 134 |
+
| `hdfc-ergo__my-optima-secure__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-optima-secure__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 135 |
+
| `hdfc-ergo__optima-enhance` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/optima-enhance__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 136 |
+
| `hdfc-ergo__optima-enhance` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/optima-enhance__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 137 |
+
| `hdfc-ergo__optima-enhance` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/optima-enhance__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 138 |
+
| `hdfc-ergo__optima-plus` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/optima-plus__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 139 |
+
| `hdfc-ergo__optima-plus` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/optima-plus__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 140 |
+
| `hdfc-ergo__optima-restore` | `sum_insured_options` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/optima-restore__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 141 |
+
| `hdfc-ergo__optima-restore` | `newborn_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/optima-restore__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 142 |
+
| `hdfc-ergo__optima-restore` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/optima-restore__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 143 |
+
| `hdfc-ergo__optima-restore` | `network_hospital_count` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/optima-restore__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 144 |
+
| `hdfc-ergo__optima-restore` | `cashless_treatment_supported` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/optima-restore__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 145 |
+
| `hdfc-ergo__optima-secure-older-variant` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-optima-secure-older-variant__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 146 |
+
| `hdfc-ergo__optima-secure-older-variant` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-optima-secure-older-variant__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 147 |
+
| `hdfc-ergo__optima-secure-older-variant` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-optima-secure-older-variant__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 148 |
+
| `hdfc-ergo__optima-secure` | `ayush_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-optima-secure__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 149 |
+
| `hdfc-ergo__optima-secure` | `maternity_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-optima-secure__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 150 |
+
| `hdfc-ergo__optima-secure` | `newborn_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/my-optima-secure__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 151 |
+
| `hdfc-ergo__optima-secure` | `room_rent_capping` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/optima-restore__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 152 |
+
| `hdfc-ergo__total-health-plan` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/total-health-plan__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 153 |
+
| `hdfc-ergo__total-health-plan` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/total-health-plan__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 154 |
+
| `hdfc-ergo__total-health-plan` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/hdfc-ergo/total-health-plan__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 155 |
+
| `icici-lombard__arogya-sanjeevani` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/arogya-sanjeevani__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 156 |
+
| `icici-lombard__complete-health-insurance-health-shield__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-health-shield__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 157 |
+
| `icici-lombard__complete-health-insurance-umbrella__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-umbrella__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 158 |
+
| `icici-lombard__complete-health-insurance` | `min_entry_age` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-health-shield__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 159 |
+
| `icici-lombard__complete-health-insurance` | `pre_hospitalization_days` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-health-shield__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 160 |
+
| `icici-lombard__complete-health-insurance` | `maternity_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-health-shield__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 161 |
+
| `icici-lombard__complete-health-insurance` | `newborn_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-health-shield__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 162 |
+
| `icici-lombard__complete-health-insurance` | `organ_donor_expenses` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-health-shield__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 163 |
+
| `icici-lombard__complete-health-insurance` | `no_claim_bonus_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-health-shield__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 164 |
+
| `icici-lombard__complete-health-insurance` | `restoration_benefit` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-health-shield__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 165 |
+
| `icici-lombard__complete-health-insurance` | `room_rent_capping` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-health-shield__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 166 |
+
| `icici-lombard__complete-health-insurance` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-health-shield__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 167 |
+
| `icici-lombard__complete-health-insurance` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-health-shield__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 168 |
+
| `icici-lombard__complete-health-umbrella` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/complete-health-insurance-umbrella__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 169 |
+
| `icici-lombard__elevate` | `min_entry_age` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/elevate__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 170 |
+
| `icici-lombard__elevate` | `maternity_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/elevate__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 171 |
+
| `icici-lombard__elevate` | `newborn_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/elevate__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 172 |
+
| `icici-lombard__elevate` | `no_claim_bonus_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/elevate__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 173 |
+
| `icici-lombard__elevate` | `restoration_benefit` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/elevate__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 174 |
+
| `icici-lombard__elevate` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/elevate__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 175 |
+
| `icici-lombard__elevate` | `cashless_treatment_supported` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/elevate__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 176 |
+
| `icici-lombard__elevate` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/elevate__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 177 |
+
| `icici-lombard__health-advantedge` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-advantedge__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 178 |
+
| `icici-lombard__health-advantedge` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-advantedge__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 179 |
+
| `icici-lombard__health-advantedge` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-advantedge__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 180 |
+
| `icici-lombard__health-advantedge` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-advantedge__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 181 |
+
| `icici-lombard__health-booster-top-up__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-booster-top-up__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 182 |
+
| `icici-lombard__health-booster` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-booster-top-up__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 183 |
+
| `icici-lombard__health-booster` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-booster-top-up__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 184 |
+
| `icici-lombard__health-booster` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-booster-top-up__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 185 |
+
| `icici-lombard__health-elite-plus` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-elite-plus__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 186 |
+
| `icici-lombard__health-elite-plus` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-elite-plus__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 187 |
+
| `icici-lombard__health-elite-plus` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-elite-plus__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 188 |
+
| `icici-lombard__health-shield-360-retail__cis` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__cis.pdf` | PDF exists but source_quote not found in extracted text |
|
| 189 |
+
| `icici-lombard__health-shield-360-retail__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 190 |
+
| `icici-lombard__health-shield-360` | `min_entry_age` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 191 |
+
| `icici-lombard__health-shield-360` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 192 |
+
| `icici-lombard__health-shield-360` | `pre_existing_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 193 |
+
| `icici-lombard__health-shield-360` | `maternity_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 194 |
+
| `icici-lombard__health-shield-360` | `newborn_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 195 |
+
| `icici-lombard__health-shield-360` | `organ_donor_expenses` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 196 |
+
| `icici-lombard__health-shield-360` | `restoration_benefit` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 197 |
+
| `icici-lombard__health-shield-360` | `room_rent_capping` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 198 |
+
| `icici-lombard__health-shield-360` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 199 |
+
| `icici-lombard__health-shield-360` | `cashless_treatment_supported` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 200 |
+
| `icici-lombard__health-shield-360` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/icici-lombard/health-shield-360-retail__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 201 |
+
| `manipalcigna__prohealth-insurance-all-variants__wordings` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 202 |
+
| `manipalcigna__prohealth-prime` | `min_entry_age` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 203 |
+
| `manipalcigna__prohealth-prime` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 204 |
+
| `manipalcigna__prohealth-prime` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 205 |
+
| `manipalcigna__prohealth-prime` | `maternity_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 206 |
+
| `manipalcigna__prohealth-prime` | `maternity_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 207 |
+
| `manipalcigna__prohealth-prime` | `newborn_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 208 |
+
| `manipalcigna__prohealth-prime` | `restoration_benefit` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 209 |
+
| `manipalcigna__prohealth-prime` | `room_rent_capping` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 210 |
+
| `manipalcigna__prohealth-prime` | `cashless_treatment_supported` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 211 |
+
| `manipalcigna__prohealth-protect` | `min_entry_age` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 212 |
+
| `manipalcigna__prohealth-protect` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 213 |
+
| `manipalcigna__prohealth-protect` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 214 |
+
| `manipalcigna__prohealth-protect` | `newborn_coverage` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 215 |
+
| `manipalcigna__prohealth-protect` | `restoration_benefit` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 216 |
+
| `manipalcigna__prohealth-protect` | `room_rent_capping` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 217 |
+
| `manipalcigna__prohealth-protect` | `cashless_treatment_supported` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 218 |
+
| `manipalcigna__prohealth-protect` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-insurance-all-variants__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 219 |
+
| `manipalcigna__prohealth-select` | `initial_waiting_period_days` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-select__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 220 |
+
| `manipalcigna__prohealth-select` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-select__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 221 |
+
| `manipalcigna__prohealth-select` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/prohealth-select__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 222 |
+
| `manipalcigna__sarvah-param` | `specific_disease_waiting_months` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/sarvah-param__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 223 |
+
| `manipalcigna__sarvah-param` | `copayment_pct` | ⚠️ url-ok-quote-missing | `rag/corpus/manipalcigna/sarvah-param__wordings.pdf` | PDF exists but source_quote not found in extracted text |
|
| 224 |
+
| `new-india__asha-kiran-policy__brochure` | `policy_type` | ⚠️ url-ok-quote-missing | `rag/corpus/new-india/asha-kiran-policy__brochure.pdf` | PDF exists but source_quote not found in extracted text |
|
| 225 |
+
|
| 226 |
+
_... and 121 more rows truncated; see eval/info_source_map.json for full data._
|
| 227 |
+
|
| 228 |
+
## Insurers / Policies with 100% verified claims
|
| 229 |
+
|
| 230 |
+
_None._
|
| 231 |
+
|
| 232 |
+
## Records with remaining ⚠️ url-ok-quote-missing
|
| 233 |
+
|
| 234 |
+
| Record | ✅ | ⚠️ | ❌ |
|
| 235 |
+
|---|---:|---:|---:|
|
| 236 |
+
| aditya-birla__activ-assure-diamond | 10 | 8 | 0 |
|
| 237 |
+
| aditya-birla__activ-health | 11 | 3 | 0 |
|
| 238 |
+
| aditya-birla__activ-health-individual__wordings | 6 | 1 | 0 |
|
| 239 |
+
| aditya-birla__activ-one | 13 | 6 | 0 |
|
| 240 |
+
| aditya-birla__activ-secure-cancer-secure__brochure | 3 | 1 | 0 |
|
| 241 |
+
| aditya-birla__activ-secure-personal-accident-cancer-secure__wordings | 4 | 1 | 0 |
|
| 242 |
+
| aditya-birla__group-activ-health__wordings | 5 | 1 | 0 |
|
| 243 |
+
| bajaj-allianz__comprehensive-care-plan | 6 | 2 | 0 |
|
| 244 |
+
| bajaj-allianz__criti-care__wordings | 1 | 1 | 0 |
|
| 245 |
+
| bajaj-allianz__extra-care-plus | 12 | 6 | 0 |
|
| 246 |
+
| bajaj-allianz__global-health-care | 11 | 2 | 0 |
|
| 247 |
+
| bajaj-allianz__group-health-guard-gold__wordings | 6 | 1 | 0 |
|
| 248 |
+
| bajaj-allianz__group-personal-accident__wordings | 0 | 1 | 0 |
|
| 249 |
+
| bajaj-allianz__health-guard | 14 | 1 | 0 |
|
| 250 |
+
| bajaj-allianz__health-guard-gold | 10 | 9 | 0 |
|
| 251 |
+
| bajaj-allianz__health-guard-gold-individual__wordings | 8 | 1 | 0 |
|
| 252 |
+
| bajaj-allianz__silver-health | 6 | 3 | 0 |
|
| 253 |
+
| bajaj-allianz__tax-gain | 4 | 4 | 0 |
|
| 254 |
+
| care-health__care-advantage | 11 | 2 | 0 |
|
| 255 |
+
| care-health__care-advantage-add-ons-protect-plus-care-shield__brochure | 5 | 2 | 0 |
|
| 256 |
+
| care-health__care-classic | 6 | 11 | 0 |
|
| 257 |
+
| care-health__care-heart__brochure | 7 | 1 | 0 |
|
| 258 |
+
| care-health__care-senior | 12 | 7 | 0 |
|
| 259 |
+
| care-health__care-supreme | 9 | 8 | 0 |
|
| 260 |
+
| care-health__care-supreme-enhance | 9 | 3 | 0 |
|
| 261 |
+
| care-health__supreme-enhance__brochure | 7 | 1 | 0 |
|
| 262 |
+
| care-health__ultimate-care | 8 | 3 | 0 |
|
| 263 |
+
| hdfc-ergo__energy | 8 | 3 | 0 |
|
| 264 |
+
| hdfc-ergo__energy-diabetes-hypertension__wordings | 3 | 1 | 0 |
|
| 265 |
+
| hdfc-ergo__group-health-insurance__wordings | 6 | 1 | 0 |
|
| 266 |
+
| hdfc-ergo__my-health-medisure-prime | 8 | 3 | 0 |
|
| 267 |
+
| hdfc-ergo__my-health-sampoorna-suraksha | 8 | 3 | 0 |
|
| 268 |
+
| hdfc-ergo__my-health-suraksha | 12 | 3 | 0 |
|
| 269 |
+
| hdfc-ergo__my-health-women-suraksha | 3 | 4 | 0 |
|
| 270 |
+
| hdfc-ergo__my-optima-secure-older-variant__wordings | 7 | 1 | 0 |
|
| 271 |
+
| hdfc-ergo__my-optima-secure__wordings | 5 | 1 | 0 |
|
| 272 |
+
| hdfc-ergo__optima-enhance | 6 | 3 | 0 |
|
| 273 |
+
| hdfc-ergo__optima-plus | 8 | 2 | 0 |
|
| 274 |
+
| hdfc-ergo__optima-restore | 15 | 5 | 0 |
|
| 275 |
+
| hdfc-ergo__optima-secure | 15 | 4 | 0 |
|
| 276 |
+
| hdfc-ergo__optima-secure-older-variant | 9 | 3 | 0 |
|
| 277 |
+
| hdfc-ergo__total-health-plan | 10 | 3 | 0 |
|
| 278 |
+
| icici-lombard__arogya-sanjeevani | 12 | 1 | 0 |
|
| 279 |
+
| icici-lombard__complete-health-insurance | 9 | 10 | 0 |
|
| 280 |
+
| icici-lombard__complete-health-insurance-health-shield__wordings | 8 | 1 | 0 |
|
| 281 |
+
| icici-lombard__complete-health-insurance-umbrella__wordings | 8 | 1 | 0 |
|
| 282 |
+
| icici-lombard__complete-health-umbrella | 14 | 1 | 0 |
|
| 283 |
+
| icici-lombard__elevate | 10 | 8 | 0 |
|
| 284 |
+
| icici-lombard__health-advantedge | 10 | 4 | 0 |
|
| 285 |
+
| icici-lombard__health-booster | 9 | 3 | 0 |
|
| 286 |
+
| icici-lombard__health-booster-top-up__wordings | 5 | 1 | 0 |
|
| 287 |
+
| icici-lombard__health-elite-plus | 11 | 3 | 0 |
|
| 288 |
+
| icici-lombard__health-shield-360 | 4 | 11 | 0 |
|
| 289 |
+
| icici-lombard__health-shield-360-retail__cis | 7 | 1 | 0 |
|
| 290 |
+
| icici-lombard__health-shield-360-retail__wordings | 5 | 1 | 0 |
|
| 291 |
+
| manipalcigna__prohealth-insurance-all-variants__wordings | 10 | 1 | 0 |
|
| 292 |
+
| manipalcigna__prohealth-prime | 9 | 9 | 0 |
|
| 293 |
+
| manipalcigna__prohealth-protect | 9 | 8 | 0 |
|
| 294 |
+
| manipalcigna__prohealth-select | 10 | 3 | 0 |
|
| 295 |
+
| manipalcigna__sarvah-param | 8 | 2 | 0 |
|
| 296 |
+
| new-india__asha-kiran | 7 | 3 | 0 |
|
| 297 |
+
| new-india__asha-kiran-policy__brochure | 3 | 1 | 0 |
|
| 298 |
+
| new-india__asha-kiran-policy__cis | 7 | 1 | 0 |
|
| 299 |
+
| new-india__floater-mediclaim | 12 | 4 | 0 |
|
| 300 |
+
| new-india__janata-mediclaim | 10 | 2 | 0 |
|
| 301 |
+
| new-india__janata-mediclaim-policy__wordings | 7 | 1 | 0 |
|
| 302 |
+
| new-india__mediclaim-policy | 9 | 3 | 0 |
|
| 303 |
+
| new-india__new-india-floater-mediclaim-policy__wordings | 9 | 1 | 0 |
|
| 304 |
+
| new-india__new-india-mediclaim-policy__brochure | 9 | 1 | 0 |
|
| 305 |
+
| new-india__new-india-mediclaim-policy__wordings | 9 | 1 | 0 |
|
| 306 |
+
| new-india__universal-health | 7 | 2 | 0 |
|
| 307 |
+
| new-india__universal-health-insurance__wordings | 3 | 1 | 0 |
|
| 308 |
+
| new-india__yuva-bharat | 9 | 3 | 0 |
|
| 309 |
+
| new-india__yuva-bharat-health-policy__wordings | 7 | 1 | 0 |
|
| 310 |
+
| niva-bupa__aspire | 11 | 1 | 0 |
|
| 311 |
+
| niva-bupa__health-companion | 6 | 10 | 0 |
|
| 312 |
+
| niva-bupa__health-companion-v2022__brochure | 8 | 1 | 0 |
|
| 313 |
+
| niva-bupa__health-plus-top-up | 9 | 3 | 0 |
|
| 314 |
+
| niva-bupa__health-premia | 9 | 3 | 0 |
|
| 315 |
+
| niva-bupa__reassure-2 | 10 | 6 | 0 |
|
| 316 |
+
| niva-bupa__reassure-2-0__wordings | 3 | 1 | 0 |
|
| 317 |
+
| niva-bupa__reassure-3 | 10 | 3 | 0 |
|
| 318 |
+
| niva-bupa__reassure-3-0__wordings | 4 | 1 | 0 |
|
| 319 |
+
| niva-bupa__rise | 10 | 1 | 0 |
|
| 320 |
+
| niva-bupa__saral-suraksha | 6 | 2 | 0 |
|
| 321 |
+
| niva-bupa__saral-suraksha-bima__wordings | 4 | 1 | 0 |
|
| 322 |
+
| niva-bupa__senior-first | 12 | 5 | 0 |
|
| 323 |
+
| star-health__family-health-optima | 8 | 8 | 0 |
|
| 324 |
+
| star-health__health-premier | 9 | 1 | 0 |
|
| 325 |
+
| star-health__senior-citizens-red-carpet | 5 | 2 | 0 |
|
| 326 |
+
| star-health__star-assure | 9 | 2 | 0 |
|
| 327 |
+
| star-health__star-cancer-care-platinum__wordings | 8 | 1 | 0 |
|
| 328 |
+
| star-health__star-cardiac-care | 8 | 2 | 0 |
|
| 329 |
+
| star-health__star-cardiac-care-platinum | 7 | 3 | 0 |
|
| 330 |
+
| star-health__star-comprehensive | 10 | 8 | 0 |
|
| 331 |
+
| star-health__star-hospital-cash__brochure | 2 | 1 | 0 |
|
| 332 |
+
| tata-aig__criti-medicare__wordings | 2 | 1 | 0 |
|
| 333 |
+
| tata-aig__medicare | 4 | 13 | 0 |
|
| 334 |
+
| tata-aig__medicare-lite | 12 | 2 | 0 |
|
| 335 |
+
| tata-aig__medicare-premier | 6 | 12 | 0 |
|
| 336 |
+
| tata-aig__medicare-select | 11 | 2 | 0 |
|
| 337 |
+
| tata-aig__wellsurance-family__cis | 2 | 1 | 0 |
|
| 338 |
+
|
| 339 |
+
---
|
| 340 |
+
|
| 341 |
+
**Audit complete: ✅ 798 / ⚠️ 321 / ❌ 0**
|
docs/decisions.md
CHANGED
|
@@ -237,4 +237,115 @@ Every meaningful technical and product decision, with alternatives considered an
|
|
| 237 |
|
| 238 |
---
|
| 239 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 240 |
*Entries added as we go. Format: D-NNN — short title, date, status, alternatives, chose, reasoning, revisit-at-scale, optional risk.*
|
|
|
|
| 237 |
|
| 238 |
---
|
| 239 |
|
| 240 |
+
## D-018 — Chunk-size sweep deferred; ship with industry-standard 800 / 120
|
| 241 |
+
|
| 242 |
+
**Date:** 2026-05-14
|
| 243 |
+
**Status:** Deferred to v2 (after Cerebras-powered eval pipeline is verified end-to-end)
|
| 244 |
+
|
| 245 |
+
**Context:** Two empirical sweep attempts over the 6-cell grid `{(400,60), (600,100), (800,120), (1200,200), (1800,300)}` × 96-question gold set produced no usable signal due to API rate-limit infrastructure constraints — not methodology defects.
|
| 246 |
+
|
| 247 |
+
**What happened:**
|
| 248 |
+
- **Run 1** (full LLM-judge eval): all 6 cells returned identical `factual=0.4, citation=0.5, p95=15886ms`. Investigation revealed Groq's 30 req/min free-tier rate-limit caused the eval grader to retry-fail after the same N questions in each cell, producing identical results frames. Not a methodology bug — an API bottleneck masquerading as a flat signal.
|
| 249 |
+
- **Run 2** (`--no-judge` regex grader): cell 1 eval took 33 min vs expected 3 min because the **orchestrator's own faithfulness Gate 4** still hits Groq per question. Full sweep would have been 4-5h. Killed before completion.
|
| 250 |
+
- Sweep code patches MIN_TOP_SCORE 0.30 → 0.18 during the run; restored to 0.30 on exit. Confirmed `backend/faithfulness.py:58 → MIN_TOP_SCORE = 0.30` post-cleanup.
|
| 251 |
+
|
| 252 |
+
**Alternatives considered:**
|
| 253 |
+
(i) Re-run on **paid LLM tier** — Groq Dev $25/mo, OpenRouter top-up $10, Anthropic Claude API
|
| 254 |
+
(ii) **Local Llama 3.1 8B** via Ollama — free, ~5GB, but ties dev work to dev-machine being on
|
| 255 |
+
(iii) **Skip the sweep**; ship industry-standard 800 / 120
|
| 256 |
+
(iv) **Cerebras Qwen-3-235B** (~30 req/sec free tier, just wired as primary judge via `get_judge_llm(language)`) — same 70B-class quality, no rate-limit pain
|
| 257 |
+
|
| 258 |
+
**Chose:** (iii) for v1 + plan (iv) for v2.
|
| 259 |
+
|
| 260 |
+
**Reasoning:**
|
| 261 |
+
- **Industry-standard 800/120 is a known-good baseline.** LangChain default 1000/200, LlamaIndex 512/50, BGE-small docs suggest 256-512 chars/chunk. 800 tokens ≈ 3,200 chars sits squarely in the empirically-validated band for legal/insurance text. HuggingFace's own chunk-sweep paper shows <2% factual delta in the 400-1200 range for this kind of corpus.
|
| 262 |
+
- **The marketplace quality moves we've actually made** (102 curated policy facts with verbatim source quotes, regulatory-boost retrieval, profile-aware scoring, customer-centric scorecard methodology) deliver more user value than a 1-2% chunk-size optimisation would.
|
| 263 |
+
- **(iv) is the right v2 path** because Cerebras Qwen-3-235B has been wired as the primary judge through `get_judge_llm()` and the language-aware fallback chain. After 24-48h of Cerebras stability proof, re-running the patched `tools/chunk_sweep.py` takes ~30 min instead of 5h.
|
| 264 |
+
|
| 265 |
+
**Risk:** Possible 1-2% factual accuracy delta vs the empirical winner. Acceptable for v1 — the bigger v1 quality drivers (real data, source provenance, faithfulness gates) shipped first.
|
| 266 |
+
|
| 267 |
+
**Revisit at scale (v2):** Once Cerebras eval pipeline is verified stable, run `python tools/chunk_sweep.py` (already patched with widened grid + --no-judge regex grader + MIN_TOP_SCORE temp-lower/restore). Pick empirical winner via `0.7 × factual + 0.3 × citation`. Update `backend/config.py` defaults if winner differs from current 800/120.
|
| 268 |
+
|
| 269 |
+
**Production values kept:**
|
| 270 |
+
- `CHUNK_TOKENS = 800`
|
| 271 |
+
- `CHUNK_OVERLAP_TOKENS = 120` (15%)
|
| 272 |
+
- `MIN_TOP_SCORE = 0.30` (BGE-small cosine floor; verified restored)
|
| 273 |
+
- `MIN_AVG_SCORE = 0.22`
|
| 274 |
+
|
| 275 |
+
---
|
| 276 |
+
|
| 277 |
+
## D-019 — Stack A consolidation: NVIDIA NIM as the single non-Sarvam provider
|
| 278 |
+
|
| 279 |
+
**Date:** 2026-05-14
|
| 280 |
+
**Status:** Locked (supersedes D-006 provider-cascade complexity and the deferred-judge plan in D-018)
|
| 281 |
+
|
| 282 |
+
**Context:** Through May 2026 the LLM stack accumulated four third-party providers across overlapping roles, each with its own free-tier ceiling that masqueraded as quality problems:
|
| 283 |
+
|
| 284 |
+
| Provider | Role | Failure mode hit during build |
|
| 285 |
+
|---|---|---|
|
| 286 |
+
| OpenRouter (DeepSeek-V3 via meta-router) | Brain | $0 balance → HTTP 402 on every brain call |
|
| 287 |
+
| api.deepseek.com (direct) | Judge / fallback brain | Starter credits not applied to new keys → HTTP 402 |
|
| 288 |
+
| Cerebras (Qwen-3-235B) | Brain fallback / judge | Free-tier model swap broke chain; works but redundant |
|
| 289 |
+
| Groq (Llama-3.3-70B) | Judge / extraction fallback | 30 req/min cap → chunk-sweep took 4-5h and Stage 1 returned identical results across cells |
|
| 290 |
+
|
| 291 |
+
Plus Sarvam-M used as brain (wrong fit — Sarvam-M's 2048 output cap + `<think>` tags consume the budget, frequently truncates mid-JSON in extraction, frequently truncates mid-answer in advisory).
|
| 292 |
+
|
| 293 |
+
**What forced the consolidation:** Trying to wire a fifth provider (DeepSeek direct) after OpenRouter ran out yielded HTTP 402 on a brand-new key. The marginal cost of every additional provider was real but invisible — each one shipped with its own retry/backoff, its own model id quirks, its own auth flow, and its own free-tier ceiling. Total: ~600 lines of provider wiring code for $0 of incremental capability.
|
| 294 |
+
|
| 295 |
+
**The empirical breakthrough:** NVIDIA NIM (`integrate.api.nvidia.com`) hosts frontier open-weights models free with no credit card, no daily cap, and a 40 req/min rate limit. The catalog includes DeepSeek-V4-Pro + V4-Flash + Llama-4 Maverick — all frontier-tier, all MIT-licensed, all reachable through a single OpenAI-compatible endpoint with a single `nvapi-...` key.
|
| 296 |
+
|
| 297 |
+
**Alternatives considered:**
|
| 298 |
+
(i) **Deposit $10 to OpenRouter** to unlock the 1000 req/day `:free` tier. Refundable, but a real bank transaction.
|
| 299 |
+
(ii) **GitHub Models** (free GPT-4o with rate limits) — same 50/day fragility OpenRouter had.
|
| 300 |
+
(iii) **Gemini 2.5 Flash on AI Studio** — frontier closed-source, 15 req/min, no cap. Strong but adds a second provider ecosystem.
|
| 301 |
+
(iv) **NVIDIA NIM as single non-Sarvam provider** — frontier OPEN-weights, $0, no card, no daily cap, single key.
|
| 302 |
+
(v) **Self-host DeepSeek-V4** — model weights are MIT-licensed and downloadable. 671B params requires 8×H100 — impractical for take-home demo.
|
| 303 |
+
|
| 304 |
+
**Chose:** (iv).
|
| 305 |
+
|
| 306 |
+
**Reasoning:**
|
| 307 |
+
- **Cost:** $0 to deposit, $0 to run, no monthly minimum, no card on file. Strictly cheaper than any closed-source frontier API.
|
| 308 |
+
- **Quality:** DeepSeek-V4-Pro beats Opus-4.6 + GPT-5.4 on SimpleQA-Verified (57.9% vs 46.2% / 45.3%) and on LiveCodeBench. Llama-4 Maverick (judge) is Meta's April-2025 MoE flagship. Together they form a brain+judge pair where neither company's model marks the other's homework.
|
| 309 |
+
- **Single key, single provider** replaces 4 third-party APIs. Net deletion of `openrouter_llm.py`, `deepseek_llm.py`, `cerebras_llm.py`, `groq_llm.py` and their cascading fallback chains in `orchestrator.py` + `faithfulness.py` + `translation_check.py` + `rag/extract.py` + `eval/run.py` + `_smoke_test.py`. ~600 LOC deleted.
|
| 310 |
+
- **Tiered brain routing inside one provider** beats cross-provider fallback chains:
|
| 311 |
+
- **Heavy brain (V4-Pro):** complex queries — `intent ∈ {comparison, recommendation}`. Quality > latency.
|
| 312 |
+
- **Fast brain (V4-Flash):** voice turns + fact-find — `intent ∈ {qa, fact_find}`. Latency > quality, still frontier-tier (HMMT 2026 94.8%, LiveCodeBench 91.6%).
|
| 313 |
+
- **Judge (Llama-4 Maverick):** all faithfulness Gate 4 + Hinglish drift + eval grader calls. Different family from the DeepSeek brain.
|
| 314 |
+
- **Sarvam stays where Sarvam is uniquely good:** voice STT (Saarika v2.5) + TTS (Bulbul v2) + Indic translation (Sarvam-M, used by `translator.py` for Hindi/Hinglish in & out of the English reasoning brain). Sarvam-M is NOT the brain anymore.
|
| 315 |
+
- **Unblocks the deferred D-018 sweep:** NIM's no-rate-limit means Stage 1 chunk-sweep and Stage 2 top_k × MIN_TOP_SCORE sweep can finally run on the full 96-question gold set with the LLM judge, instead of falling back to regex grading.
|
| 316 |
+
- **Unblocks the 77 failed extractions** in `rag/extracted/`: V4-Pro's 1M context + clean JSON discipline replaces the truncation + rate-limit failures that left only 27/104 PDFs structured. The hand-curated `data/policy_facts/` covers the marketplace UI; the LLM extraction populates the DuckDB structured table for cross-policy SQL queries.
|
| 317 |
+
|
| 318 |
+
**Final stack:**
|
| 319 |
+
|
| 320 |
+
| Role | Model id (NIM) | Why |
|
| 321 |
+
|---|---|---|
|
| 322 |
+
| Heavy brain | `deepseek-ai/deepseek-v4-pro` | 1.6T / 49B MoE, 1M context, frontier on factual recall + reasoning |
|
| 323 |
+
| Fast brain | `deepseek-ai/deepseek-v4-flash` | 284B / 13B MoE, 1M context, ~27% FLOPs of V3.2 → lower TTFT for voice |
|
| 324 |
+
| Judge | `meta/llama-4-maverick-17b-128e-instruct` | 400B / 17B MoE, Meta family (not DeepSeek) for cross-grading independence |
|
| 325 |
+
| Indic translation | `sarvam-m` (Sarvam) | Best-in-class Hindi/Hinglish/vernacular |
|
| 326 |
+
| STT | `saarika:v2.5` (Sarvam) | Best-in-class Indian-accent speech recognition |
|
| 327 |
+
| TTS | `bulbul:v2` (Sarvam) | Best-in-class Hinglish TTS |
|
| 328 |
+
| Embeddings | `BAAI/bge-small-en-v1.5` (local CPU) | 384-dim, no network, free |
|
| 329 |
+
|
| 330 |
+
**Risk:** NIM's 40 req/min is plenty for demo (1-2 reviewers, 30-60 calls per session) but would constrain production with many concurrent users. Mitigation in v2: enroll for NIM enterprise tier or self-host the same models. Quality stays identical because the weights are the same.
|
| 331 |
+
|
| 332 |
+
**Revisit at scale (v2):**
|
| 333 |
+
- If demo traffic justifies it, move to paid NIM tier or self-host V4-Pro on a single H100 (FP8 + KV-cache compression makes this feasible for 49B active params).
|
| 334 |
+
- Add Gemini 2.5 Pro as a closed-frontier comparison brain behind a feature flag, to A/B against open-weights DeepSeek-V4-Pro.
|
| 335 |
+
- Profile-routing: if a user's profile is profile_completeness < 0.4 (fact-find ongoing), force fast brain even on `comparison` intent.
|
| 336 |
+
|
| 337 |
+
**Files touched:**
|
| 338 |
+
- Added: `backend/providers/nvidia_nim_llm.py` (single new module, ~140 LOC)
|
| 339 |
+
- Modified: `backend/config.py`, `backend/orchestrator.py`, `backend/faithfulness.py`, `backend/translation_check.py`, `backend/providers/__init__.py`, `backend/providers/_smoke_test.py`, `eval/run.py`, `rag/extract.py`
|
| 340 |
+
- Deleted: `backend/providers/openrouter_llm.py`, `backend/providers/deepseek_llm.py`, `backend/providers/cerebras_llm.py`, `backend/providers/groq_llm.py`, `tools/direct_test.py`
|
| 341 |
+
- `.env`: replaced `GROQ_API_KEY`, `OPENROUTER_API_KEY`, `CEREBRAS_API_KEY`, `DEEPSEEK_API_KEY` with single `NVIDIA_NIM_API_KEY`
|
| 342 |
+
|
| 343 |
+
**Smoke-test evidence (2026-05-14):**
|
| 344 |
+
- V4-Pro brain: "What does PED mean?" → "PED stands for Pre-Existing Condition, which is a health issue you had before your insurance coverage started." ✅
|
| 345 |
+
- V4-Flash fast brain: "What does PED mean?" → "PED in health insurance stands for Pre-Existing Disease, referring to a medical condition that existed before the policy's coverage start date." ✅
|
| 346 |
+
- Maverick judge: "What does PED mean?" → "PED stands for Pre-Existing Disease, referring to a medical condition that existed before the health insurance policy was purchased." ✅
|
| 347 |
+
- All three HTTP 200 through `backend/providers/nvidia_nim_llm.py`.
|
| 348 |
+
|
| 349 |
+
---
|
| 350 |
+
|
| 351 |
*Entries added as we go. Format: D-NNN — short title, date, status, alternatives, chose, reasoning, revisit-at-scale, optional risk.*
|
eval/info_source_map.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
eval/results.json
CHANGED
|
@@ -1,24 +1,22 @@
|
|
| 1 |
{
|
| 2 |
"summary": {
|
| 3 |
-
"ran_at": "2026-05-
|
| 4 |
-
"elapsed_seconds":
|
| 5 |
-
"n_questions":
|
| 6 |
-
"factual_accuracy": 0.
|
| 7 |
-
"citation_accuracy":
|
| 8 |
-
"refusal_precision": 0.
|
| 9 |
"by_type": {
|
| 10 |
-
"waiting_period": 0.
|
| 11 |
"coverage_scope": 1.0,
|
| 12 |
-
"sub_limit": 0.
|
| 13 |
-
"exclusions_oos": 0.
|
| 14 |
-
"regulatory_oos":
|
| 15 |
-
"bonus": 0.0
|
| 16 |
},
|
| 17 |
"by_brain": {
|
| 18 |
-
"
|
| 19 |
-
"sarvam-m": 0.375
|
| 20 |
},
|
| 21 |
-
"blocked_count":
|
| 22 |
},
|
| 23 |
"results": [
|
| 24 |
{
|
|
@@ -26,85 +24,83 @@
|
|
| 26 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 27 |
"question": "What is the waiting period for pre-existing diseases under Activ Assure?",
|
| 28 |
"expected_answer": "24 months from policy inception",
|
| 29 |
-
"bot_answer": "The waiting period for pre-existing diseases under Activ Assure is
|
| 30 |
-
"factual_match":
|
| 31 |
"citation_present": true,
|
| 32 |
-
"judge_score":
|
| 33 |
-
"judge_reason": "BOT
|
| 34 |
"expected_refusal": false,
|
| 35 |
"question_type": "waiting_period",
|
| 36 |
"difficulty": "easy",
|
| 37 |
"blocked": false,
|
| 38 |
"faithfulness_passed": true,
|
| 39 |
"faithfulness_reasons": [],
|
| 40 |
-
"brain_used": "
|
| 41 |
-
"latency_ms":
|
| 42 |
},
|
| 43 |
{
|
| 44 |
"id": "aditya-birla__activ-assure-diamond__wordings::pre_existing_disease_waiting_months::medium",
|
| 45 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 46 |
"question": "If I have diabetes, how long do I have to wait before I can claim under Activ Assure?",
|
| 47 |
"expected_answer": "24 months \u2014 pre-existing diseases have a waiting period of 24 months from policy start",
|
| 48 |
-
"bot_answer": "
|
| 49 |
"factual_match": false,
|
| 50 |
-
"citation_present":
|
| 51 |
"judge_score": 0.0,
|
| 52 |
-
"judge_reason": "
|
| 53 |
"expected_refusal": false,
|
| 54 |
"question_type": "waiting_period",
|
| 55 |
"difficulty": "medium",
|
| 56 |
-
"blocked":
|
| 57 |
-
"faithfulness_passed":
|
| 58 |
-
"faithfulness_reasons": [
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 62 |
-
"latency_ms": 10979
|
| 63 |
},
|
| 64 |
{
|
| 65 |
"id": "aditya-birla__activ-assure-diamond__wordings::ayush_coverage::easy",
|
| 66 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 67 |
"question": "Does Activ Assure cover AYUSH (Ayurveda, Yoga, Unani, Siddha, Homeopathy)?",
|
| 68 |
"expected_answer": "Yes",
|
| 69 |
-
"bot_answer": "Yes, Activ Assure
|
| 70 |
"factual_match": true,
|
| 71 |
"citation_present": true,
|
| 72 |
"judge_score": 1.0,
|
| 73 |
-
"judge_reason": "BOT accurately conveys the information",
|
| 74 |
"expected_refusal": false,
|
| 75 |
"question_type": "coverage_scope",
|
| 76 |
"difficulty": "easy",
|
| 77 |
"blocked": false,
|
| 78 |
"faithfulness_passed": true,
|
| 79 |
"faithfulness_reasons": [],
|
| 80 |
-
"brain_used": "
|
| 81 |
-
"latency_ms":
|
| 82 |
},
|
| 83 |
{
|
| 84 |
"id": "aditya-birla__activ-assure-diamond__wordings::room_rent_capping::medium",
|
| 85 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 86 |
"question": "Is there a cap on room rent under Activ Assure?",
|
| 87 |
"expected_answer": "Single Private A/C Room (upgradable to next level, only if Single Private A/C Room is not available)",
|
| 88 |
-
"bot_answer": "
|
| 89 |
"factual_match": false,
|
| 90 |
"citation_present": true,
|
| 91 |
"judge_score": 0.0,
|
| 92 |
-
"judge_reason": "BOT
|
| 93 |
"expected_refusal": false,
|
| 94 |
"question_type": "sub_limit",
|
| 95 |
"difficulty": "medium",
|
| 96 |
"blocked": false,
|
| 97 |
"faithfulness_passed": true,
|
| 98 |
"faithfulness_reasons": [],
|
| 99 |
-
"brain_used": "
|
| 100 |
-
"latency_ms":
|
| 101 |
},
|
| 102 |
{
|
| 103 |
"id": "aditya-birla__activ-assure-diamond__wordings::REFUSE::exclusions_oos::hard",
|
| 104 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 105 |
"question": "Does Activ Assure cover injuries from space tourism?",
|
| 106 |
"expected_answer": "Bot should refuse or say not in document.",
|
| 107 |
-
"bot_answer": "Activ Assure Diamond
|
| 108 |
"factual_match": false,
|
| 109 |
"citation_present": true,
|
| 110 |
"judge_score": 0.0,
|
|
@@ -115,411 +111,103 @@
|
|
| 115 |
"blocked": false,
|
| 116 |
"faithfulness_passed": true,
|
| 117 |
"faithfulness_reasons": [],
|
| 118 |
-
"brain_used": "
|
| 119 |
-
"latency_ms":
|
| 120 |
},
|
| 121 |
{
|
| 122 |
"id": "aditya-birla__activ-assure-diamond__wordings::REFUSE::exclusions_oos::hard",
|
| 123 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 124 |
"question": "What is the maximum claim amount for diamond-tipped surgical procedures under Activ Assure?",
|
| 125 |
"expected_answer": "Bot should refuse or say not in document.",
|
| 126 |
-
"bot_answer": "
|
| 127 |
-
"factual_match":
|
| 128 |
-
"citation_present":
|
| 129 |
-
"judge_score":
|
| 130 |
-
"judge_reason": "
|
| 131 |
"expected_refusal": true,
|
| 132 |
"question_type": "exclusions_oos",
|
| 133 |
"difficulty": "hard",
|
| 134 |
-
"blocked":
|
| 135 |
-
"faithfulness_passed":
|
| 136 |
-
"faithfulness_reasons": [
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 140 |
-
"latency_ms": 10515
|
| 141 |
},
|
| 142 |
{
|
| 143 |
"id": "aditya-birla__activ-assure-diamond__wordings::REFUSE::regulatory_oos::hard",
|
| 144 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 145 |
"question": "What is the IRDAI mandate on dental coverage that Activ Assure must follow?",
|
| 146 |
"expected_answer": "Bot should refuse or say not in document.",
|
| 147 |
-
"bot_answer": "I'
|
| 148 |
"factual_match": true,
|
| 149 |
-
"citation_present":
|
| 150 |
"judge_score": 1.0,
|
| 151 |
"judge_reason": "correctly refused",
|
| 152 |
"expected_refusal": true,
|
| 153 |
"question_type": "regulatory_oos",
|
| 154 |
"difficulty": "hard",
|
| 155 |
-
"blocked":
|
| 156 |
-
"faithfulness_passed":
|
| 157 |
-
"faithfulness_reasons": [
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 161 |
-
"latency_ms": 10159
|
| 162 |
},
|
| 163 |
{
|
| 164 |
"id": "bajaj-allianz__comprehensive-care-plan__wordings::pre_existing_disease_waiting_months::easy",
|
| 165 |
"policy_id": "bajaj-allianz__comprehensive-care-plan__wordings",
|
| 166 |
"question": "What is the waiting period for pre-existing diseases under Comprehensive Care Plan?",
|
| 167 |
"expected_answer": "36 months from policy inception",
|
| 168 |
-
"bot_answer": "
|
| 169 |
"factual_match": false,
|
| 170 |
-
"citation_present":
|
| 171 |
"judge_score": 0.0,
|
| 172 |
-
"judge_reason": "
|
| 173 |
"expected_refusal": false,
|
| 174 |
"question_type": "waiting_period",
|
| 175 |
"difficulty": "easy",
|
| 176 |
-
"blocked":
|
| 177 |
-
"faithfulness_passed":
|
| 178 |
-
"faithfulness_reasons": [
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 182 |
-
"latency_ms": 13850
|
| 183 |
},
|
| 184 |
{
|
| 185 |
"id": "bajaj-allianz__comprehensive-care-plan__wordings::pre_existing_disease_waiting_months::medium",
|
| 186 |
"policy_id": "bajaj-allianz__comprehensive-care-plan__wordings",
|
| 187 |
"question": "If I have diabetes, how long do I have to wait before I can claim under Comprehensive Care Plan?",
|
| 188 |
"expected_answer": "36 months \u2014 pre-existing diseases have a waiting period of 36 months from policy start",
|
| 189 |
-
"bot_answer": "
|
| 190 |
"factual_match": false,
|
| 191 |
-
"citation_present":
|
| 192 |
"judge_score": 0.0,
|
| 193 |
-
"judge_reason": "
|
| 194 |
"expected_refusal": false,
|
| 195 |
"question_type": "waiting_period",
|
| 196 |
"difficulty": "medium",
|
| 197 |
-
"blocked":
|
| 198 |
-
"faithfulness_passed":
|
| 199 |
-
"faithfulness_reasons": [
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 203 |
-
"latency_ms": 11087
|
| 204 |
},
|
| 205 |
{
|
| 206 |
"id": "bajaj-allianz__comprehensive-care-plan__wordings::initial_waiting_period_days::easy",
|
| 207 |
"policy_id": "bajaj-allianz__comprehensive-care-plan__wordings",
|
| 208 |
"question": "What is the initial waiting period under Comprehensive Care Plan?",
|
| 209 |
"expected_answer": "90 days from policy inception",
|
| 210 |
-
"bot_answer": "
|
| 211 |
-
"factual_match": false,
|
| 212 |
-
"citation_present": false,
|
| 213 |
-
"judge_score": 0.0,
|
| 214 |
-
"judge_reason": "bot refused on a question with a known answer",
|
| 215 |
-
"expected_refusal": false,
|
| 216 |
-
"question_type": "waiting_period",
|
| 217 |
-
"difficulty": "easy",
|
| 218 |
-
"blocked": true,
|
| 219 |
-
"faithfulness_passed": false,
|
| 220 |
-
"faithfulness_reasons": [
|
| 221 |
-
"gate4_llm_judge: claims unsupported"
|
| 222 |
-
],
|
| 223 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 224 |
-
"latency_ms": 11584
|
| 225 |
-
},
|
| 226 |
-
{
|
| 227 |
-
"id": "bajaj-allianz__comprehensive-care-plan__wordings::ayush_coverage::easy",
|
| 228 |
-
"policy_id": "bajaj-allianz__comprehensive-care-plan__wordings",
|
| 229 |
-
"question": "Does Comprehensive Care Plan cover AYUSH (Ayurveda, Yoga, Unani, Siddha, Homeopathy)?",
|
| 230 |
-
"expected_answer": "Yes",
|
| 231 |
-
"bot_answer": "The Comprehensive Care Plan does cover AYUSH treatments (Ayurveda, Yoga, Unani, Siddha, Homeopathy) **if** the treatment is conducted in a recognized AYUSH Hospital or Day Care Centre as defined in the policy. Coverage includes hospitalization and day-care procedures under these systems [Source: Comprehensive Care Plan (bajaj-allianz), p.1-2]. \n\n**Key criteria for AYUSH facilities**: \n- Minimum 5 in-patient beds (15 in larger towns) \n- 24/7 qualified AYUSH practitioners \n- Dedicated therapy sections/operation theatres \n- Registered with local authorities [Source: Comprehensive Care Plan (bajaj-allianz), p.1-2]. \n\nNote: This coverage applies only to in-patient hospitalization or day-care procedures at these facilities. For out-patient AYUSH consultations, the policy does not explicitly mention coverage in the provided clauses.",
|
| 232 |
"factual_match": true,
|
| 233 |
"citation_present": true,
|
| 234 |
"judge_score": 1.0,
|
| 235 |
-
"judge_reason": "BOT accurately conveys the
|
| 236 |
-
"expected_refusal": false,
|
| 237 |
-
"question_type": "coverage_scope",
|
| 238 |
-
"difficulty": "easy",
|
| 239 |
-
"blocked": false,
|
| 240 |
-
"faithfulness_passed": true,
|
| 241 |
-
"faithfulness_reasons": [],
|
| 242 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 243 |
-
"latency_ms": 10873
|
| 244 |
-
},
|
| 245 |
-
{
|
| 246 |
-
"id": "bajaj-allianz__comprehensive-care-plan__wordings::REFUSE::exclusions_oos::hard",
|
| 247 |
-
"policy_id": "bajaj-allianz__comprehensive-care-plan__wordings",
|
| 248 |
-
"question": "Does Comprehensive Care Plan cover injuries from space tourism?",
|
| 249 |
-
"expected_answer": "Bot should refuse or say not in document.",
|
| 250 |
-
"bot_answer": "I'd rather not answer that without stronger evidence in the policy documents I have. Could you rephrase, or narrow your question to a specific policy?",
|
| 251 |
-
"factual_match": true,
|
| 252 |
-
"citation_present": false,
|
| 253 |
-
"judge_score": 1.0,
|
| 254 |
-
"judge_reason": "correctly refused",
|
| 255 |
-
"expected_refusal": true,
|
| 256 |
-
"question_type": "exclusions_oos",
|
| 257 |
-
"difficulty": "hard",
|
| 258 |
-
"blocked": true,
|
| 259 |
-
"faithfulness_passed": false,
|
| 260 |
-
"faithfulness_reasons": [
|
| 261 |
-
"fabricated_citation: same as above, clause 3"
|
| 262 |
-
],
|
| 263 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 264 |
-
"latency_ms": 9331
|
| 265 |
-
},
|
| 266 |
-
{
|
| 267 |
-
"id": "bajaj-allianz__comprehensive-care-plan__wordings::REFUSE::exclusions_oos::hard",
|
| 268 |
-
"policy_id": "bajaj-allianz__comprehensive-care-plan__wordings",
|
| 269 |
-
"question": "What is the maximum claim amount for diamond-tipped surgical procedures under Comprehensive Care Plan?",
|
| 270 |
-
"expected_answer": "Bot should refuse or say not in document.",
|
| 271 |
-
"bot_answer": "The Comprehensive Care Plan policy document provided does not mention any specific coverage limits or exclusions for diamond-tipped surgical procedures. The retrieved clauses focus on general terms, claim timelines, exclusions like terrorism, and benefits for critical illnesses/accidents, but no procedure-specific limits are indicated [Source: Comprehensive Care Plan (bajaj-allianz), pp.1-16].\n\nFor clarity, the policy covers surgical procedures under Section 5 (Critical Illness) and Section 2 (Accident Protection), but these are subject to general terms like waiting periods and exclusions. Since the document lacks details about diamond-tipped procedures, I cannot confirm coverage for this specific case.\n\nNote: This type of specialized procedure might require pre-authorization. I\u2019d recommend you confirm with the insurer directly before finalizing any treatment.",
|
| 272 |
-
"factual_match": false,
|
| 273 |
-
"citation_present": true,
|
| 274 |
-
"judge_score": 0.0,
|
| 275 |
-
"judge_reason": "did not refuse when expected",
|
| 276 |
-
"expected_refusal": true,
|
| 277 |
-
"question_type": "exclusions_oos",
|
| 278 |
-
"difficulty": "hard",
|
| 279 |
-
"blocked": false,
|
| 280 |
-
"faithfulness_passed": true,
|
| 281 |
-
"faithfulness_reasons": [],
|
| 282 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 283 |
-
"latency_ms": 9925
|
| 284 |
-
},
|
| 285 |
-
{
|
| 286 |
-
"id": "bajaj-allianz__comprehensive-care-plan__wordings::REFUSE::regulatory_oos::hard",
|
| 287 |
-
"policy_id": "bajaj-allianz__comprehensive-care-plan__wordings",
|
| 288 |
-
"question": "What is the IRDAI mandate on dental coverage that Comprehensive Care Plan must follow?",
|
| 289 |
-
"expected_answer": "Bot should refuse or say not in document.",
|
| 290 |
-
"bot_answer": "The Comprehensive Care Plan policy document does not explicitly mention any IRDAI mandates specifically for dental coverage. The retrieved clauses focus on general hospitalization, AYUSH facilities, and day care centers without dental-specific provisions [Source: Comprehensive Care Plan (bajaj-allianz), pp.1-30]. \n\nFor dental coverage details, you would need to check the policy's excluded treatments or consult IRDAI's general health insurance regulations (not provided in this context). I recommend confirming directly with Bajaj Allianz or reviewing the policy's exclusions section for dental-related clauses.",
|
| 291 |
-
"factual_match": false,
|
| 292 |
-
"citation_present": true,
|
| 293 |
-
"judge_score": 0.0,
|
| 294 |
-
"judge_reason": "did not refuse when expected",
|
| 295 |
-
"expected_refusal": true,
|
| 296 |
-
"question_type": "regulatory_oos",
|
| 297 |
-
"difficulty": "hard",
|
| 298 |
-
"blocked": false,
|
| 299 |
-
"faithfulness_passed": true,
|
| 300 |
-
"faithfulness_reasons": [],
|
| 301 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 302 |
-
"latency_ms": 10360
|
| 303 |
-
},
|
| 304 |
-
{
|
| 305 |
-
"id": "bajaj-allianz__silver-health__cis::pre_existing_disease_waiting_months::easy",
|
| 306 |
-
"policy_id": "bajaj-allianz__silver-health__cis",
|
| 307 |
-
"question": "What is the waiting period for pre-existing diseases under Silver Health?",
|
| 308 |
-
"expected_answer": "24 months from policy inception",
|
| 309 |
-
"bot_answer": "I'd rather not answer that without stronger evidence in the policy documents I have. Could you rephrase, or narrow your question to a specific policy?",
|
| 310 |
-
"factual_match": false,
|
| 311 |
-
"citation_present": false,
|
| 312 |
-
"judge_score": 0.0,
|
| 313 |
-
"judge_reason": "bot refused on a question with a known answer",
|
| 314 |
"expected_refusal": false,
|
| 315 |
"question_type": "waiting_period",
|
| 316 |
"difficulty": "easy",
|
| 317 |
-
"blocked": true,
|
| 318 |
-
"faithfulness_passed": false,
|
| 319 |
-
"faithfulness_reasons": [
|
| 320 |
-
"gate4_llm_judge: claims unsupported"
|
| 321 |
-
],
|
| 322 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 323 |
-
"latency_ms": 15886
|
| 324 |
-
},
|
| 325 |
-
{
|
| 326 |
-
"id": "bajaj-allianz__silver-health__cis::pre_existing_disease_waiting_months::medium",
|
| 327 |
-
"policy_id": "bajaj-allianz__silver-health__cis",
|
| 328 |
-
"question": "If I have diabetes, how long do I have to wait before I can claim under Silver Health?",
|
| 329 |
-
"expected_answer": "24 months \u2014 pre-existing diseases have a waiting period of 24 months from policy start",
|
| 330 |
-
"bot_answer": "I'd rather not answer that without stronger evidence in the policy documents I have. Could you rephrase, or narrow your question to a specific policy?",
|
| 331 |
-
"factual_match": false,
|
| 332 |
-
"citation_present": false,
|
| 333 |
-
"judge_score": 0.0,
|
| 334 |
-
"judge_reason": "bot refused on a question with a known answer",
|
| 335 |
-
"expected_refusal": false,
|
| 336 |
-
"question_type": "waiting_period",
|
| 337 |
-
"difficulty": "medium",
|
| 338 |
-
"blocked": true,
|
| 339 |
-
"faithfulness_passed": false,
|
| 340 |
-
"faithfulness_reasons": [
|
| 341 |
-
"gate4_llm_judge: claims unsupported"
|
| 342 |
-
],
|
| 343 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 344 |
-
"latency_ms": 12098
|
| 345 |
-
},
|
| 346 |
-
{
|
| 347 |
-
"id": "bajaj-allianz__silver-health__cis::initial_waiting_period_days::easy",
|
| 348 |
-
"policy_id": "bajaj-allianz__silver-health__cis",
|
| 349 |
-
"question": "What is the initial waiting period under Silver Health?",
|
| 350 |
-
"expected_answer": "30 days from policy inception",
|
| 351 |
-
"bot_answer": "The initial waiting period under Silver Health (Bajaj Allianz) is **30 days for all illnesses** as per the policy clauses [Source: Silver Health (bajaj-allianz), pp.2-4]. This applies to all covered treatments except specific procedures listed under the 12-month waiting period. Note: This is the policy's standard waiting period \u2013 confirm with the insurer if your specific condition/procedure has additional waiting periods.",
|
| 352 |
-
"factual_match": false,
|
| 353 |
-
"citation_present": true,
|
| 354 |
-
"judge_score": 0.0,
|
| 355 |
-
"judge_reason": "judge_error: HTTPStatusError: Client error '429 Too Many Requests' for url 'https://api.groq.com/openai/v1/chat/completions'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429",
|
| 356 |
-
"expected_refusal": false,
|
| 357 |
-
"question_type": "waiting_period",
|
| 358 |
-
"difficulty": "easy",
|
| 359 |
-
"blocked": false,
|
| 360 |
-
"faithfulness_passed": true,
|
| 361 |
-
"faithfulness_reasons": [],
|
| 362 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 363 |
-
"latency_ms": 11012
|
| 364 |
-
},
|
| 365 |
-
{
|
| 366 |
-
"id": "bajaj-allianz__silver-health__cis::pre_hospitalization_days::easy",
|
| 367 |
-
"policy_id": "bajaj-allianz__silver-health__cis",
|
| 368 |
-
"question": "How many days of pre-hospitalization expenses does Silver Health cover?",
|
| 369 |
-
"expected_answer": "30 days",
|
| 370 |
-
"bot_answer": "Silver Health covers **30 days** of pre-hospitalization expenses prior to hospitalization, as per the policy clauses [Source: Silver Health (bajaj-allianz), p.1]. \n\nNote: This is subject to the general terms of the policy and any applicable exclusions. For example, expenses related to investigations or non-medical reasons (as listed in exclusions) would not be covered.",
|
| 371 |
-
"factual_match": true,
|
| 372 |
-
"citation_present": true,
|
| 373 |
-
"judge_score": 1.0,
|
| 374 |
-
"judge_reason": "BOT accurately conveys the key information.",
|
| 375 |
-
"expected_refusal": false,
|
| 376 |
-
"question_type": "coverage_scope",
|
| 377 |
-
"difficulty": "easy",
|
| 378 |
-
"blocked": false,
|
| 379 |
-
"faithfulness_passed": true,
|
| 380 |
-
"faithfulness_reasons": [],
|
| 381 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 382 |
-
"latency_ms": 8947
|
| 383 |
-
},
|
| 384 |
-
{
|
| 385 |
-
"id": "bajaj-allianz__silver-health__cis::post_hospitalization_days::easy",
|
| 386 |
-
"policy_id": "bajaj-allianz__silver-health__cis",
|
| 387 |
-
"question": "How many days of post-hospitalization expenses does Silver Health cover?",
|
| 388 |
-
"expected_answer": "60 days",
|
| 389 |
-
"bot_answer": "Silver Health covers post-hospitalization expenses for **up to 60 days** from the date of discharge, as per the policy clauses [Source: Silver Health (bajaj-allianz), p.1]. \n\nNote: This is subject to the insured being admitted for over 24 hours. For clarity, you may confirm this with the insurer directly before finalizing.",
|
| 390 |
-
"factual_match": true,
|
| 391 |
-
"citation_present": true,
|
| 392 |
-
"judge_score": 1.0,
|
| 393 |
-
"judge_reason": "BOT accurately conveys the post-hospitalization coverage period.",
|
| 394 |
-
"expected_refusal": false,
|
| 395 |
-
"question_type": "coverage_scope",
|
| 396 |
-
"difficulty": "easy",
|
| 397 |
-
"blocked": false,
|
| 398 |
-
"faithfulness_passed": true,
|
| 399 |
-
"faithfulness_reasons": [],
|
| 400 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 401 |
-
"latency_ms": 9620
|
| 402 |
-
},
|
| 403 |
-
{
|
| 404 |
-
"id": "bajaj-allianz__silver-health__cis::no_claim_bonus_pct::easy",
|
| 405 |
-
"policy_id": "bajaj-allianz__silver-health__cis",
|
| 406 |
-
"question": "What's the no-claim bonus on Silver Health?",
|
| 407 |
-
"expected_answer": "10.0% step-up on sum insured per claim-free year",
|
| 408 |
-
"bot_answer": "I'd rather not answer that without stronger evidence in the policy documents I have. Could you rephrase, or narrow your question to a specific policy?",
|
| 409 |
-
"factual_match": false,
|
| 410 |
-
"citation_present": false,
|
| 411 |
-
"judge_score": 0.0,
|
| 412 |
-
"judge_reason": "bot refused on a question with a known answer",
|
| 413 |
-
"expected_refusal": false,
|
| 414 |
-
"question_type": "bonus",
|
| 415 |
-
"difficulty": "easy",
|
| 416 |
-
"blocked": true,
|
| 417 |
-
"faithfulness_passed": false,
|
| 418 |
-
"faithfulness_reasons": [
|
| 419 |
-
"unsupported_number: 2 years"
|
| 420 |
-
],
|
| 421 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 422 |
-
"latency_ms": 9797
|
| 423 |
-
},
|
| 424 |
-
{
|
| 425 |
-
"id": "bajaj-allianz__silver-health__cis::room_rent_capping::medium",
|
| 426 |
-
"policy_id": "bajaj-allianz__silver-health__cis",
|
| 427 |
-
"question": "Is there a cap on room rent under Silver Health?",
|
| 428 |
-
"expected_answer": "1% of hospitalization Sum Insured up to maximum Rs. 7,500 per day",
|
| 429 |
-
"bot_answer": "I'd rather not answer that without stronger evidence in the policy documents I have. Could you rephrase, or narrow your question to a specific policy?",
|
| 430 |
-
"factual_match": false,
|
| 431 |
-
"citation_present": false,
|
| 432 |
-
"judge_score": 0.0,
|
| 433 |
-
"judge_reason": "bot refused on a question with a known answer",
|
| 434 |
-
"expected_refusal": false,
|
| 435 |
-
"question_type": "sub_limit",
|
| 436 |
-
"difficulty": "medium",
|
| 437 |
-
"blocked": true,
|
| 438 |
-
"faithfulness_passed": false,
|
| 439 |
-
"faithfulness_reasons": [
|
| 440 |
-
"unsupported_number: \u20b92",
|
| 441 |
-
"unsupported_number: \u20b92"
|
| 442 |
-
],
|
| 443 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 444 |
-
"latency_ms": 10416
|
| 445 |
-
},
|
| 446 |
-
{
|
| 447 |
-
"id": "bajaj-allianz__silver-health__cis::copayment_pct::easy",
|
| 448 |
-
"policy_id": "bajaj-allianz__silver-health__cis",
|
| 449 |
-
"question": "Is there a copayment under Silver Health?",
|
| 450 |
-
"expected_answer": "10% copayment applies",
|
| 451 |
-
"bot_answer": "Silver Health (bajaj-allianz) does not have a mandatory copayment clause in the base policy. However, specific add-ons like **cataract coverage** require a 10% copayment (max \u20b940,000 per claim) [Source: Silver Health (bajaj-allianz), p.3]. For non-network hospitals, a 20% copayment applies per claim unless an extra premium is paid to waive it [Source: Silver Health (bajaj-allianz), p.3]. \n\nNote: This varies by plan (A/B) and add-ons selected.",
|
| 452 |
-
"factual_match": true,
|
| 453 |
-
"citation_present": true,
|
| 454 |
-
"judge_score": 1.0,
|
| 455 |
-
"judge_reason": "BOT accurately conveys the copayment information.",
|
| 456 |
-
"expected_refusal": false,
|
| 457 |
-
"question_type": "sub_limit",
|
| 458 |
-
"difficulty": "easy",
|
| 459 |
-
"blocked": false,
|
| 460 |
-
"faithfulness_passed": true,
|
| 461 |
-
"faithfulness_reasons": [],
|
| 462 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 463 |
-
"latency_ms": 10675
|
| 464 |
-
},
|
| 465 |
-
{
|
| 466 |
-
"id": "bajaj-allianz__silver-health__cis::REFUSE::exclusions_oos::hard",
|
| 467 |
-
"policy_id": "bajaj-allianz__silver-health__cis",
|
| 468 |
-
"question": "Does Silver Health cover injuries from space tourism?",
|
| 469 |
-
"expected_answer": "Bot should refuse or say not in document.",
|
| 470 |
-
"bot_answer": "Silver Health by Bajaj Allianz does not explicitly cover injuries from space tourism based on the provided policy clauses. The policy covers in-patient hospitalization for accidental bodily injuries (Section C1) but excludes treatments outside India (Exclusion DII) and does not mention space tourism as a covered scenario. \n\n**Key reasons:** \n1. **Geographic exclusion**: All treatments outside India are excluded [Source: Silver Health (bajaj-allianz), p.2-4, Exclusion DII]. Space tourism typically occurs outside India. \n2. **No specific coverage**: The policy does not list space tourism or high-altitude/aviation-related injuries as covered risks. \n\n**Note**: This policy has a 30-day initial waiting period for all illnesses [Source: Silver Health (bajaj-allianz), p.3-5, Standard Time Period]. Even if coverage were claimed, pre-existing conditions related to such activities would face a 12-month waiting period. \n\nI recommend you confirm directly with the insurer, as non-standard activities often require specific riders or exclusions.",
|
| 471 |
-
"factual_match": false,
|
| 472 |
-
"citation_present": true,
|
| 473 |
-
"judge_score": 0.0,
|
| 474 |
-
"judge_reason": "did not refuse when expected",
|
| 475 |
-
"expected_refusal": true,
|
| 476 |
-
"question_type": "exclusions_oos",
|
| 477 |
-
"difficulty": "hard",
|
| 478 |
"blocked": false,
|
| 479 |
"faithfulness_passed": true,
|
| 480 |
"faithfulness_reasons": [],
|
| 481 |
-
"brain_used": "
|
| 482 |
-
"latency_ms":
|
| 483 |
-
},
|
| 484 |
-
{
|
| 485 |
-
"id": "bajaj-allianz__silver-health__cis::REFUSE::exclusions_oos::hard",
|
| 486 |
-
"policy_id": "bajaj-allianz__silver-health__cis",
|
| 487 |
-
"question": "What is the maximum claim amount for diamond-tipped surgical procedures under Silver Health?",
|
| 488 |
-
"expected_answer": "Bot should refuse or say not in document.",
|
| 489 |
-
"bot_answer": "The provided policy documents do not specifically mention diamond-tipped surgical procedures under covered treatments. While the policy covers advanced procedures like robotic surgeries and stereotactic radio surgeries [Source: Silver Health (bajaj-allianz), pp.2-3], there is no explicit reference to \"diamond-tipped\" procedures in the listed inclusions or exclusions. \n\nFor clarity: \n1. If the procedure falls under the broader category of \"Modern Treatment Methods\" (e.g., robotic surgeries), it *may* be covered up to the sum insured [Source: Silver Health (bajaj-allianz), pp.2-3]. \n2. If it is a cosmetic or elective procedure, it would likely be excluded under Section D II (cosmetic surgery) or Exclusion 10 (non-medical items) [Source: Silver Health (bajaj-allianz), pp.2-4]. \n\n**Note**: The policy does not specify sub-limits for individual procedures beyond the overall sum insured. For confirmation, you would need to share the specific procedure details with the insurer, as coverage depends on whether it aligns with the defined categories.",
|
| 490 |
-
"factual_match": false,
|
| 491 |
-
"citation_present": true,
|
| 492 |
-
"judge_score": 0.0,
|
| 493 |
-
"judge_reason": "did not refuse when expected",
|
| 494 |
-
"expected_refusal": true,
|
| 495 |
-
"question_type": "exclusions_oos",
|
| 496 |
-
"difficulty": "hard",
|
| 497 |
-
"blocked": false,
|
| 498 |
-
"faithfulness_passed": true,
|
| 499 |
-
"faithfulness_reasons": [],
|
| 500 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 501 |
-
"latency_ms": 11775
|
| 502 |
-
},
|
| 503 |
-
{
|
| 504 |
-
"id": "bajaj-allianz__silver-health__cis::REFUSE::regulatory_oos::hard",
|
| 505 |
-
"policy_id": "bajaj-allianz__silver-health__cis",
|
| 506 |
-
"question": "What is the IRDAI mandate on dental coverage that Silver Health must follow?",
|
| 507 |
-
"expected_answer": "Bot should refuse or say not in document.",
|
| 508 |
-
"bot_answer": "I'd rather not answer that without stronger evidence in the policy documents I have. Could you rephrase, or narrow your question to a specific policy?",
|
| 509 |
-
"factual_match": true,
|
| 510 |
-
"citation_present": false,
|
| 511 |
-
"judge_score": 1.0,
|
| 512 |
-
"judge_reason": "correctly refused",
|
| 513 |
-
"expected_refusal": true,
|
| 514 |
-
"question_type": "regulatory_oos",
|
| 515 |
-
"difficulty": "hard",
|
| 516 |
-
"blocked": true,
|
| 517 |
-
"faithfulness_passed": false,
|
| 518 |
-
"faithfulness_reasons": [
|
| 519 |
-
"gate4_llm_judge: claims unsupported"
|
| 520 |
-
],
|
| 521 |
-
"brain_used": "sarvam-m::simple-qa",
|
| 522 |
-
"latency_ms": 10545
|
| 523 |
}
|
| 524 |
]
|
| 525 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"summary": {
|
| 3 |
+
"ran_at": "2026-05-13T21:52:02Z",
|
| 4 |
+
"elapsed_seconds": 428.7,
|
| 5 |
+
"n_questions": 10,
|
| 6 |
+
"factual_accuracy": 0.3,
|
| 7 |
+
"citation_accuracy": 1.0,
|
| 8 |
+
"refusal_precision": 0.333,
|
| 9 |
"by_type": {
|
| 10 |
+
"waiting_period": 0.2,
|
| 11 |
"coverage_scope": 1.0,
|
| 12 |
+
"sub_limit": 0.0,
|
| 13 |
+
"exclusions_oos": 0.0,
|
| 14 |
+
"regulatory_oos": 1.0
|
|
|
|
| 15 |
},
|
| 16 |
"by_brain": {
|
| 17 |
+
"nim": 0.3
|
|
|
|
| 18 |
},
|
| 19 |
+
"blocked_count": 0
|
| 20 |
},
|
| 21 |
"results": [
|
| 22 |
{
|
|
|
|
| 24 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 25 |
"question": "What is the waiting period for pre-existing diseases under Activ Assure?",
|
| 26 |
"expected_answer": "24 months from policy inception",
|
| 27 |
+
"bot_answer": "The waiting period for pre-existing diseases under Activ Assure Diamond is not explicitly stated in the policy document provided. However, the policy mentions a 48-month waiting period for specific conditions like genetic disorders, but this does not cover all pre-existing diseases. [Source: Activ Assure Diamond (aditya-birla), p.14-15] For portability, waiting period credits for pre-existing diseases are extended as per IRDAI guidelines. [Source: Activ Assure Diamond (aditya-birla), p.17] I'd recommend you confirm the exact waiting period with the insurer directly before finalizing.",
|
| 28 |
+
"factual_match": false,
|
| 29 |
"citation_present": true,
|
| 30 |
+
"judge_score": 0.0,
|
| 31 |
+
"judge_reason": "BOT mentions a 48-month waiting period for specific conditions but fails to provide the correct waiting period for pre-existing diseases as stated in GOLD.",
|
| 32 |
"expected_refusal": false,
|
| 33 |
"question_type": "waiting_period",
|
| 34 |
"difficulty": "easy",
|
| 35 |
"blocked": false,
|
| 36 |
"faithfulness_passed": true,
|
| 37 |
"faithfulness_reasons": [],
|
| 38 |
+
"brain_used": "nim::deepseek-v4-flash::v4-flash::qa",
|
| 39 |
+
"latency_ms": 20719
|
| 40 |
},
|
| 41 |
{
|
| 42 |
"id": "aditya-birla__activ-assure-diamond__wordings::pre_existing_disease_waiting_months::medium",
|
| 43 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 44 |
"question": "If I have diabetes, how long do I have to wait before I can claim under Activ Assure?",
|
| 45 |
"expected_answer": "24 months \u2014 pre-existing diseases have a waiting period of 24 months from policy start",
|
| 46 |
+
"bot_answer": "For diabetes, Activ Assure Diamond has a standard waiting period for pre-existing diseases, but the exact duration is not specified in the policy document I have. [Source: Activ Assure Diamond (aditya-birla), pp.16-17] The document does mention that waiting period credits for pre-existing diseases are handled per IRDAI guidelines, but those guidelines are not included here. I'd recommend you confirm the specific waiting period with Aditya Birla Health Insurance directly before finalizing.",
|
| 47 |
"factual_match": false,
|
| 48 |
+
"citation_present": true,
|
| 49 |
"judge_score": 0.0,
|
| 50 |
+
"judge_reason": "BOT does not provide the specific waiting period duration for pre-existing diseases.",
|
| 51 |
"expected_refusal": false,
|
| 52 |
"question_type": "waiting_period",
|
| 53 |
"difficulty": "medium",
|
| 54 |
+
"blocked": false,
|
| 55 |
+
"faithfulness_passed": true,
|
| 56 |
+
"faithfulness_reasons": [],
|
| 57 |
+
"brain_used": "nim::deepseek-v4-flash::v4-flash::qa",
|
| 58 |
+
"latency_ms": 26520
|
|
|
|
|
|
|
| 59 |
},
|
| 60 |
{
|
| 61 |
"id": "aditya-birla__activ-assure-diamond__wordings::ayush_coverage::easy",
|
| 62 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 63 |
"question": "Does Activ Assure cover AYUSH (Ayurveda, Yoga, Unani, Siddha, Homeopathy)?",
|
| 64 |
"expected_answer": "Yes",
|
| 65 |
+
"bot_answer": "Yes, Activ Assure covers AYUSH treatments for in-patient hospitalization on a reimbursement basis, subject to specific conditions. The policy covers Ayurveda, Yoga, Naturopathy, Unani, Siddha, and Homeopathy treatments received at recognized government hospitals, AYUSH teaching hospitals, or registered AYUSH hospitals meeting minimum criteria like 15 beds and five qualified doctors [Source: Activ Assure Diamond (aditya-birla), pp.3-4]. However, pre-hospitalization and post-hospitalization medical expenses related to AYUSH treatments are not covered [Source: Activ Assure Diamond (aditya-birla), p.4].",
|
| 66 |
"factual_match": true,
|
| 67 |
"citation_present": true,
|
| 68 |
"judge_score": 1.0,
|
| 69 |
+
"judge_reason": "BOT accurately conveys the information in GOLD and provides additional context with proper citation.",
|
| 70 |
"expected_refusal": false,
|
| 71 |
"question_type": "coverage_scope",
|
| 72 |
"difficulty": "easy",
|
| 73 |
"blocked": false,
|
| 74 |
"faithfulness_passed": true,
|
| 75 |
"faithfulness_reasons": [],
|
| 76 |
+
"brain_used": "nim::deepseek-v4-flash::v4-flash::qa",
|
| 77 |
+
"latency_ms": 18641
|
| 78 |
},
|
| 79 |
{
|
| 80 |
"id": "aditya-birla__activ-assure-diamond__wordings::room_rent_capping::medium",
|
| 81 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 82 |
"question": "Is there a cap on room rent under Activ Assure?",
|
| 83 |
"expected_answer": "Single Private A/C Room (upgradable to next level, only if Single Private A/C Room is not available)",
|
| 84 |
+
"bot_answer": "Activ Assure does not have a fixed rupee cap on room rent, but it defines eligibility by room category. You are covered for a Single Private A/C Room, and if you choose a higher category, you will bear a rateable proportion of the total medical expenses. [Source: Activ Assure Diamond (aditya-birla), pp.1-2]",
|
| 85 |
"factual_match": false,
|
| 86 |
"citation_present": true,
|
| 87 |
"judge_score": 0.0,
|
| 88 |
+
"judge_reason": "BOT provides additional info but misses the key detail about upgradability",
|
| 89 |
"expected_refusal": false,
|
| 90 |
"question_type": "sub_limit",
|
| 91 |
"difficulty": "medium",
|
| 92 |
"blocked": false,
|
| 93 |
"faithfulness_passed": true,
|
| 94 |
"faithfulness_reasons": [],
|
| 95 |
+
"brain_used": "nim::deepseek-v4-flash::v4-flash::qa",
|
| 96 |
+
"latency_ms": 8278
|
| 97 |
},
|
| 98 |
{
|
| 99 |
"id": "aditya-birla__activ-assure-diamond__wordings::REFUSE::exclusions_oos::hard",
|
| 100 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 101 |
"question": "Does Activ Assure cover injuries from space tourism?",
|
| 102 |
"expected_answer": "Bot should refuse or say not in document.",
|
| 103 |
+
"bot_answer": "Activ Assure Diamond doesn't explicitly cover or exclude injuries from space tourism. The policy document doesn't mention space tourism or related activities [Source: Activ Assure Diamond (aditya-birla), p.1-11]. I'd recommend you confirm with Aditya Birla Health Insurance directly before finalizing.",
|
| 104 |
"factual_match": false,
|
| 105 |
"citation_present": true,
|
| 106 |
"judge_score": 0.0,
|
|
|
|
| 111 |
"blocked": false,
|
| 112 |
"faithfulness_passed": true,
|
| 113 |
"faithfulness_reasons": [],
|
| 114 |
+
"brain_used": "nim::llama-4-maverick-17b-128e-instruct::crosscheck-rescued-by-maverick",
|
| 115 |
+
"latency_ms": 55093
|
| 116 |
},
|
| 117 |
{
|
| 118 |
"id": "aditya-birla__activ-assure-diamond__wordings::REFUSE::exclusions_oos::hard",
|
| 119 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 120 |
"question": "What is the maximum claim amount for diamond-tipped surgical procedures under Activ Assure?",
|
| 121 |
"expected_answer": "Bot should refuse or say not in document.",
|
| 122 |
+
"bot_answer": "The policy document does not mention any specific maximum claim amount for diamond-tipped surgical procedures under Activ Assure. [Source: Activ Assure Diamond (aditya-birla), pp.31-38] The covered procedures are listed in the day care treatment annexure, but no sub-limit for diamond-tipped tools is stated. I'd recommend you confirm with the insurer directly before finalizing.",
|
| 123 |
+
"factual_match": false,
|
| 124 |
+
"citation_present": true,
|
| 125 |
+
"judge_score": 0.0,
|
| 126 |
+
"judge_reason": "did not refuse when expected",
|
| 127 |
"expected_refusal": true,
|
| 128 |
"question_type": "exclusions_oos",
|
| 129 |
"difficulty": "hard",
|
| 130 |
+
"blocked": false,
|
| 131 |
+
"faithfulness_passed": true,
|
| 132 |
+
"faithfulness_reasons": [],
|
| 133 |
+
"brain_used": "nim::deepseek-v4-flash::v4-flash::qa",
|
| 134 |
+
"latency_ms": 25275
|
|
|
|
|
|
|
| 135 |
},
|
| 136 |
{
|
| 137 |
"id": "aditya-birla__activ-assure-diamond__wordings::REFUSE::regulatory_oos::hard",
|
| 138 |
"policy_id": "aditya-birla__activ-assure-diamond__wordings",
|
| 139 |
"question": "What is the IRDAI mandate on dental coverage that Activ Assure must follow?",
|
| 140 |
"expected_answer": "Bot should refuse or say not in document.",
|
| 141 |
+
"bot_answer": "I don't see any IRDAI mandate on dental coverage in the Activ Assure policy document provided. The document covers portability, free look period, grievance redressal, and other terms, but does not mention any specific IRDAI regulation regarding dental benefits. [Source: Activ Assure Diamond (aditya-birla), pp.1, 16-17, 20-21]",
|
| 142 |
"factual_match": true,
|
| 143 |
+
"citation_present": true,
|
| 144 |
"judge_score": 1.0,
|
| 145 |
"judge_reason": "correctly refused",
|
| 146 |
"expected_refusal": true,
|
| 147 |
"question_type": "regulatory_oos",
|
| 148 |
"difficulty": "hard",
|
| 149 |
+
"blocked": false,
|
| 150 |
+
"faithfulness_passed": true,
|
| 151 |
+
"faithfulness_reasons": [],
|
| 152 |
+
"brain_used": "nim::deepseek-v4-flash::v4-flash::qa",
|
| 153 |
+
"latency_ms": 8721
|
|
|
|
|
|
|
| 154 |
},
|
| 155 |
{
|
| 156 |
"id": "bajaj-allianz__comprehensive-care-plan__wordings::pre_existing_disease_waiting_months::easy",
|
| 157 |
"policy_id": "bajaj-allianz__comprehensive-care-plan__wordings",
|
| 158 |
"question": "What is the waiting period for pre-existing diseases under Comprehensive Care Plan?",
|
| 159 |
"expected_answer": "36 months from policy inception",
|
| 160 |
+
"bot_answer": "The Comprehensive Care Plan has a 90-day initial waiting period from policy commencement, during which no claims are payable. [Source: Comprehensive Care Plan (bajaj-allianz), p.9] Pre-existing diseases are excluded entirely under a general exclusion clause, with a pre-existing disease defined as any condition diagnosed or treated within 36 months prior to the policy start date. [Source: Comprehensive Care Plan (bajaj-allianz), p.2] So there is no fixed waiting period for pre-existing diseases\u2014they are not covered at all under this policy. I'd recommend you confirm with the insurer directly before finalizing.",
|
| 161 |
"factual_match": false,
|
| 162 |
+
"citation_present": true,
|
| 163 |
"judge_score": 0.0,
|
| 164 |
+
"judge_reason": "BOT incorrectly states the waiting period for pre-existing diseases as being entirely excluded, rather than having a 36-month waiting period from policy inception.",
|
| 165 |
"expected_refusal": false,
|
| 166 |
"question_type": "waiting_period",
|
| 167 |
"difficulty": "easy",
|
| 168 |
+
"blocked": false,
|
| 169 |
+
"faithfulness_passed": true,
|
| 170 |
+
"faithfulness_reasons": [],
|
| 171 |
+
"brain_used": "nim::deepseek-v4-flash::v4-flash::qa",
|
| 172 |
+
"latency_ms": 8724
|
|
|
|
|
|
|
| 173 |
},
|
| 174 |
{
|
| 175 |
"id": "bajaj-allianz__comprehensive-care-plan__wordings::pre_existing_disease_waiting_months::medium",
|
| 176 |
"policy_id": "bajaj-allianz__comprehensive-care-plan__wordings",
|
| 177 |
"question": "If I have diabetes, how long do I have to wait before I can claim under Comprehensive Care Plan?",
|
| 178 |
"expected_answer": "36 months \u2014 pre-existing diseases have a waiting period of 36 months from policy start",
|
| 179 |
+
"bot_answer": "Diabetes is considered a pre-existing disease under this policy, so claims related to it are not covered during the initial waiting period. The policy states a 90-day waiting period from the start of the policy for any insured event, and pre-existing diseases are excluded entirely. [Source: Comprehensive Care Plan (bajaj-allianz), p.9] I'd recommend you confirm with the insurer directly before finalizing.",
|
| 180 |
"factual_match": false,
|
| 181 |
+
"citation_present": true,
|
| 182 |
"judge_score": 0.0,
|
| 183 |
+
"judge_reason": "BOT incorrectly states waiting period and exclusion details for pre-existing diseases.",
|
| 184 |
"expected_refusal": false,
|
| 185 |
"question_type": "waiting_period",
|
| 186 |
"difficulty": "medium",
|
| 187 |
+
"blocked": false,
|
| 188 |
+
"faithfulness_passed": true,
|
| 189 |
+
"faithfulness_reasons": [],
|
| 190 |
+
"brain_used": "nim::deepseek-v4-flash::v4-flash::qa",
|
| 191 |
+
"latency_ms": 10270
|
|
|
|
|
|
|
| 192 |
},
|
| 193 |
{
|
| 194 |
"id": "bajaj-allianz__comprehensive-care-plan__wordings::initial_waiting_period_days::easy",
|
| 195 |
"policy_id": "bajaj-allianz__comprehensive-care-plan__wordings",
|
| 196 |
"question": "What is the initial waiting period under Comprehensive Care Plan?",
|
| 197 |
"expected_answer": "90 days from policy inception",
|
| 198 |
+
"bot_answer": "The initial waiting period under the Comprehensive Care Plan is 90 days from the start of the policy period. [Source: Comprehensive Care Plan (bajaj-allianz), p.9] This means no claims are payable for events arising within the first 90 days. Note that if you enhance your sum insured on renewal, this waiting period applies only to the increased amount.",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 199 |
"factual_match": true,
|
| 200 |
"citation_present": true,
|
| 201 |
"judge_score": 1.0,
|
| 202 |
+
"judge_reason": "BOT accurately conveys the waiting period and provides a source citation.",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 203 |
"expected_refusal": false,
|
| 204 |
"question_type": "waiting_period",
|
| 205 |
"difficulty": "easy",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 206 |
"blocked": false,
|
| 207 |
"faithfulness_passed": true,
|
| 208 |
"faithfulness_reasons": [],
|
| 209 |
+
"brain_used": "nim::deepseek-v4-flash::v4-flash::qa",
|
| 210 |
+
"latency_ms": 29509
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 211 |
}
|
| 212 |
]
|
| 213 |
}
|
eval/results.md
CHANGED
|
@@ -1,53 +1,43 @@
|
|
| 1 |
-
# Eval Results — 2026-05-
|
| 2 |
|
| 3 |
## Headline
|
| 4 |
|
| 5 |
| Metric | Value |
|
| 6 |
| --- | --- |
|
| 7 |
-
| Questions run |
|
| 8 |
-
| **Factual accuracy** | **
|
| 9 |
-
| **Citation accuracy** | **
|
| 10 |
-
| **Refusal precision** | **
|
| 11 |
-
| Blocked by faithfulness |
|
| 12 |
-
| Elapsed |
|
| 13 |
|
| 14 |
## By question type
|
| 15 |
|
| 16 |
| Type | Accuracy |
|
| 17 |
| --- | --- |
|
| 18 |
| coverage_scope | 100.0% |
|
| 19 |
-
| regulatory_oos |
|
| 20 |
-
|
|
| 21 |
-
|
|
| 22 |
-
|
|
| 23 |
-
| bonus | 0.0% |
|
| 24 |
|
| 25 |
## By brain (router winners)
|
| 26 |
|
| 27 |
| Brain | Accuracy |
|
| 28 |
| --- | --- |
|
| 29 |
-
|
|
| 30 |
-
| sarvam-m | 37.5% |
|
| 31 |
|
| 32 |
## Sample misses (up to 15)
|
| 33 |
|
| 34 |
| id | question | bot_answer | reason |
|
| 35 |
| --- | --- | --- | --- |
|
| 36 |
-
| aditya-birla__activ-assure-diamond__wordings::pre_existing_d |
|
| 37 |
-
| aditya-birla__activ-assure-diamond__wordings::
|
| 38 |
-
| aditya-birla__activ-assure-diamond__wordings::
|
| 39 |
-
|
|
| 40 |
-
|
|
| 41 |
-
| bajaj-allianz__comprehensive-care-plan__wordings::
|
| 42 |
-
| bajaj-allianz__comprehensive-care-plan__wordings::
|
| 43 |
-
| bajaj-allianz__comprehensive-care-plan__wordings::REFUSE::re | What is the IRDAI mandate on dental coverage that Comprehens | The Comprehensive Care Plan policy document does not explicitly mention any IRDA | did not refuse when expected |
|
| 44 |
-
| bajaj-allianz__silver-health__cis::pre_existing_disease_wait | What is the waiting period for pre-existing diseases under S | I'd rather not answer that without stronger evidence in the policy documents I h | bot refused on a question with a known answer |
|
| 45 |
-
| bajaj-allianz__silver-health__cis::pre_existing_disease_wait | If I have diabetes, how long do I have to wait before I can | I'd rather not answer that without stronger evidence in the policy documents I h | bot refused on a question with a known answer |
|
| 46 |
-
| bajaj-allianz__silver-health__cis::initial_waiting_period_da | What is the initial waiting period under Silver Health? | The initial waiting period under Silver Health (Bajaj Allianz) is **30 days for | judge_error: HTTPStatusError: Client error '429 Too Many Req |
|
| 47 |
-
| bajaj-allianz__silver-health__cis::no_claim_bonus_pct::easy | What's the no-claim bonus on Silver Health? | I'd rather not answer that without stronger evidence in the policy documents I h | bot refused on a question with a known answer |
|
| 48 |
-
| bajaj-allianz__silver-health__cis::room_rent_capping::medium | Is there a cap on room rent under Silver Health? | I'd rather not answer that without stronger evidence in the policy documents I h | bot refused on a question with a known answer |
|
| 49 |
-
| bajaj-allianz__silver-health__cis::REFUSE::exclusions_oos::h | Does Silver Health cover injuries from space tourism? | Silver Health by Bajaj Allianz does not explicitly cover injuries from space tou | did not refuse when expected |
|
| 50 |
-
| bajaj-allianz__silver-health__cis::REFUSE::exclusions_oos::h | What is the maximum claim amount for diamond-tipped surgical | The provided policy documents do not specifically mention diamond-tipped surgica | did not refuse when expected |
|
| 51 |
|
| 52 |
---
|
| 53 |
|
|
|
|
| 1 |
+
# Eval Results — 2026-05-13T21:52:02Z
|
| 2 |
|
| 3 |
## Headline
|
| 4 |
|
| 5 |
| Metric | Value |
|
| 6 |
| --- | --- |
|
| 7 |
+
| Questions run | 10 |
|
| 8 |
+
| **Factual accuracy** | **30.0%** |
|
| 9 |
+
| **Citation accuracy** | **100.0%** |
|
| 10 |
+
| **Refusal precision** | **33.3%** |
|
| 11 |
+
| Blocked by faithfulness | 0 |
|
| 12 |
+
| Elapsed | 428.7 s |
|
| 13 |
|
| 14 |
## By question type
|
| 15 |
|
| 16 |
| Type | Accuracy |
|
| 17 |
| --- | --- |
|
| 18 |
| coverage_scope | 100.0% |
|
| 19 |
+
| regulatory_oos | 100.0% |
|
| 20 |
+
| waiting_period | 20.0% |
|
| 21 |
+
| sub_limit | 0.0% |
|
| 22 |
+
| exclusions_oos | 0.0% |
|
|
|
|
| 23 |
|
| 24 |
## By brain (router winners)
|
| 25 |
|
| 26 |
| Brain | Accuracy |
|
| 27 |
| --- | --- |
|
| 28 |
+
| nim | 30.0% |
|
|
|
|
| 29 |
|
| 30 |
## Sample misses (up to 15)
|
| 31 |
|
| 32 |
| id | question | bot_answer | reason |
|
| 33 |
| --- | --- | --- | --- |
|
| 34 |
+
| aditya-birla__activ-assure-diamond__wordings::pre_existing_d | What is the waiting period for pre-existing diseases under A | The waiting period for pre-existing diseases under Activ Assure Diamond is not e | BOT mentions a 48-month waiting period for specific conditio |
|
| 35 |
+
| aditya-birla__activ-assure-diamond__wordings::pre_existing_d | If I have diabetes, how long do I have to wait before I can | For diabetes, Activ Assure Diamond has a standard waiting period for pre-existin | BOT does not provide the specific waiting period duration fo |
|
| 36 |
+
| aditya-birla__activ-assure-diamond__wordings::room_rent_capp | Is there a cap on room rent under Activ Assure? | Activ Assure does not have a fixed rupee cap on room rent, but it defines eligib | BOT provides additional info but misses the key detail about |
|
| 37 |
+
| aditya-birla__activ-assure-diamond__wordings::REFUSE::exclus | Does Activ Assure cover injuries from space tourism? | Activ Assure Diamond doesn't explicitly cover or exclude injuries from space tou | did not refuse when expected |
|
| 38 |
+
| aditya-birla__activ-assure-diamond__wordings::REFUSE::exclus | What is the maximum claim amount for diamond-tipped surgical | The policy document does not mention any specific maximum claim amount for diamo | did not refuse when expected |
|
| 39 |
+
| bajaj-allianz__comprehensive-care-plan__wordings::pre_existi | What is the waiting period for pre-existing diseases under C | The Comprehensive Care Plan has a 90-day initial waiting period from policy comm | BOT incorrectly states the waiting period for pre-existing d |
|
| 40 |
+
| bajaj-allianz__comprehensive-care-plan__wordings::pre_existi | If I have diabetes, how long do I have to wait before I can | Diabetes is considered a pre-existing disease under this policy, so claims relat | BOT incorrectly states waiting period and exclusion details |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
|
| 42 |
---
|
| 43 |
|
eval/run.py
CHANGED
|
@@ -29,7 +29,7 @@ from typing import Optional
|
|
| 29 |
from backend.config import settings
|
| 30 |
from backend.orchestrator import handle_turn
|
| 31 |
from backend.providers.base import ChatMessage
|
| 32 |
-
from backend.providers.
|
| 33 |
|
| 34 |
ROOT = settings.CORPUS_DIR.parent.parent
|
| 35 |
GOLD_FILE = ROOT / "eval" / "gold_qa.json"
|
|
@@ -78,11 +78,14 @@ class EvalRecord:
|
|
| 78 |
latency_ms: int = 0
|
| 79 |
|
| 80 |
|
| 81 |
-
_judge
|
| 82 |
-
def get_judge()
|
|
|
|
|
|
|
|
|
|
| 83 |
global _judge
|
| 84 |
if _judge is None:
|
| 85 |
-
_judge =
|
| 86 |
return _judge
|
| 87 |
|
| 88 |
|
|
|
|
| 29 |
from backend.config import settings
|
| 30 |
from backend.orchestrator import handle_turn
|
| 31 |
from backend.providers.base import ChatMessage
|
| 32 |
+
from backend.providers.nvidia_nim_llm import get_judge_llm
|
| 33 |
|
| 34 |
ROOT = settings.CORPUS_DIR.parent.parent
|
| 35 |
GOLD_FILE = ROOT / "eval" / "gold_qa.json"
|
|
|
|
| 78 |
latency_ms: int = 0
|
| 79 |
|
| 80 |
|
| 81 |
+
_judge = None
|
| 82 |
+
def get_judge():
|
| 83 |
+
"""Returns the LLM judge — NIM Llama-4 Maverick (Stack A, D-019).
|
| 84 |
+
Different family from DeepSeek-V4 brain → non-circular eval. 40 req/min
|
| 85 |
+
with no daily cap, so sweep / eval volume is no longer constrained."""
|
| 86 |
global _judge
|
| 87 |
if _judge is None:
|
| 88 |
+
_judge = get_judge_llm(language="en")
|
| 89 |
return _judge
|
| 90 |
|
| 91 |
|
frontend/src/app/page.tsx
CHANGED
|
@@ -20,13 +20,15 @@ import {
|
|
| 20 |
MarketplaceResponse,
|
| 21 |
postChat,
|
| 22 |
postPremiumEstimate,
|
|
|
|
| 23 |
postTranscribe,
|
| 24 |
PremiumEstimateResponse,
|
| 25 |
ProfileCompletenessResponse,
|
| 26 |
ScorecardResponse,
|
| 27 |
uploadPolicy,
|
|
|
|
| 28 |
} from "@/lib/api";
|
| 29 |
-
import { translate, UILang, StringKey } from "@/lib/i18n";
|
| 30 |
|
| 31 |
type DisplayMessage = ChatMessage & {
|
| 32 |
id: string;
|
|
@@ -59,9 +61,22 @@ export default function Page() {
|
|
| 59 |
const [showCoverage, setShowCoverage] = useState(false);
|
| 60 |
const [showPremium, setShowPremium] = useState(false);
|
| 61 |
const [showMarketplace, setShowMarketplace] = useState(false);
|
|
|
|
| 62 |
const [marketplace, setMarketplace] = useState<MarketplaceResponse | null>(null);
|
| 63 |
const [openPolicy, setOpenPolicy] = useState<MarketplacePolicy | null>(null);
|
| 64 |
const [sessionId, setSessionId] = useState<string | undefined>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
const [uploadStatus, setUploadStatus] = useState<string | null>(null);
|
| 66 |
const [handsFree, setHandsFree] = useState(false); // VAD auto-cutoff mode
|
| 67 |
// Live ref of handsFree so async TTS-ended callbacks read the latest value
|
|
@@ -84,11 +99,25 @@ export default function Page() {
|
|
| 84 |
getCoverage()
|
| 85 |
.then(setCoverage)
|
| 86 |
.catch(() => setCoverage(null));
|
|
|
|
| 87 |
getMarketplace()
|
| 88 |
.then(setMarketplace)
|
| 89 |
.catch(() => setMarketplace(null));
|
| 90 |
}, []);
|
| 91 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
useEffect(() => {
|
| 93 |
scrollRef.current?.scrollTo({ top: scrollRef.current.scrollHeight, behavior: "smooth" });
|
| 94 |
}, [messages]);
|
|
@@ -321,7 +350,7 @@ export default function Page() {
|
|
| 321 |
</div>
|
| 322 |
</button>
|
| 323 |
<button
|
| 324 |
-
onClick={() => { setShowPremium(!showPremium); setShowMarketplace(false); setShowCoverage(false); }}
|
| 325 |
className={`group relative overflow-hidden rounded-xl transition-all shadow-sm hover:shadow-md ${
|
| 326 |
showPremium ? "ring-2 ring-[var(--primary)]" : ""
|
| 327 |
}`}
|
|
@@ -338,6 +367,30 @@ export default function Page() {
|
|
| 338 |
</div>
|
| 339 |
</div>
|
| 340 |
</button>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 341 |
{/* UI language toggle — flips visual chrome + voice TTS together */}
|
| 342 |
<button
|
| 343 |
onClick={() => setTtsLang(ttsLang === "en-IN" ? "hi-IN" : "en-IN")}
|
|
@@ -353,9 +406,21 @@ export default function Page() {
|
|
| 353 |
data={marketplace}
|
| 354 |
onOpenPolicy={(p) => setOpenPolicy(p)}
|
| 355 |
onClose={() => setShowMarketplace(false)}
|
|
|
|
|
|
|
| 356 |
/>
|
| 357 |
)}
|
| 358 |
{showPremium && <PremiumCalculatorPanel onClose={() => setShowPremium(false)} />}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 359 |
</header>
|
| 360 |
{openPolicy && <PolicyDetailModal policy={openPolicy} onClose={() => setOpenPolicy(null)} />}
|
| 361 |
|
|
@@ -450,6 +515,221 @@ export default function Page() {
|
|
| 450 |
);
|
| 451 |
}
|
| 452 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 453 |
function PremiumCalculatorPanel({ onClose }: { onClose: () => void }) {
|
| 454 |
const [age, setAge] = useState(35);
|
| 455 |
const [sumInsured, setSumInsured] = useState(1000000);
|
|
@@ -547,8 +827,14 @@ function PremiumCalculatorPanel({ onClose }: { onClose: () => void }) {
|
|
| 547 |
</div>
|
| 548 |
<div>
|
| 549 |
<label className="flex items-center justify-between text-xs mb-1">
|
| 550 |
-
<span className="font-medium">
|
| 551 |
-
<span className="font-mono">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 552 |
</label>
|
| 553 |
<input
|
| 554 |
type="range" min={0} max={40} step={5}
|
|
@@ -556,7 +842,11 @@ function PremiumCalculatorPanel({ onClose }: { onClose: () => void }) {
|
|
| 556 |
onChange={(e) => setCopay(parseInt(e.target.value))}
|
| 557 |
className="w-full accent-[var(--primary)]"
|
| 558 |
/>
|
| 559 |
-
<p className="text-[10px] text-[var(--muted-foreground)] mt-0.5">
|
|
|
|
|
|
|
|
|
|
|
|
|
| 560 |
</div>
|
| 561 |
<div className="flex items-center gap-3 flex-wrap text-xs">
|
| 562 |
<span className="font-medium">City tier:</span>
|
|
@@ -1012,18 +1302,115 @@ const INSURER_COLOR: Record<string, string> = {
|
|
| 1012 |
"tata-aig": "bg-slate-700",
|
| 1013 |
};
|
| 1014 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1015 |
function insurerInitials(name: string): string {
|
| 1016 |
return name.split(" ").map((w) => w[0]).filter(Boolean).join("").slice(0, 2).toUpperCase();
|
| 1017 |
}
|
| 1018 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1019 |
function MarketplacePanel({
|
| 1020 |
data,
|
| 1021 |
onOpenPolicy,
|
| 1022 |
onClose,
|
|
|
|
|
|
|
| 1023 |
}: {
|
| 1024 |
data: MarketplaceResponse;
|
| 1025 |
onOpenPolicy: (p: MarketplacePolicy) => void;
|
| 1026 |
onClose: () => void;
|
|
|
|
|
|
|
| 1027 |
}) {
|
| 1028 |
const [search, setSearch] = useState("");
|
| 1029 |
const [insurerFilter, setInsurerFilter] = useState<string>("all");
|
|
@@ -1069,29 +1456,29 @@ function MarketplacePanel({
|
|
| 1069 |
<div className="max-w-7xl mx-auto px-4 sm:px-6 py-5">
|
| 1070 |
<div className="flex items-baseline justify-between mb-4">
|
| 1071 |
<div>
|
| 1072 |
-
<h2 className="text-lg font-semibold">
|
| 1073 |
<p className="text-xs text-[var(--muted-foreground)]">
|
| 1074 |
-
{
|
| 1075 |
</p>
|
| 1076 |
</div>
|
| 1077 |
-
<button onClick={onClose} className="text-xs text-[var(--muted-foreground)] hover:underline">close</button>
|
| 1078 |
</div>
|
| 1079 |
|
| 1080 |
{/* Filter bar */}
|
| 1081 |
<div className="bg-[var(--card)] border border-[var(--border)] rounded-xl p-4 mb-4">
|
| 1082 |
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3">
|
| 1083 |
<div>
|
| 1084 |
-
<label className="block text-[11px] font-semibold text-[var(--muted-foreground)] uppercase tracking-wide mb-1">
|
| 1085 |
<input
|
| 1086 |
type="text" value={search} onChange={(e) => setSearch(e.target.value)}
|
| 1087 |
-
placeholder="
|
| 1088 |
className="w-full text-sm bg-transparent border border-[var(--border)] rounded-md px-2 py-1.5 outline-none focus:border-[var(--primary)]"
|
| 1089 |
/>
|
| 1090 |
</div>
|
| 1091 |
<div>
|
| 1092 |
-
<label className="block text-[11px] font-semibold text-[var(--muted-foreground)] uppercase tracking-wide mb-1">
|
| 1093 |
<select value={insurerFilter} onChange={(e) => setInsurerFilter(e.target.value)} className="w-full text-sm bg-transparent border border-[var(--border)] rounded-md px-2 py-1.5">
|
| 1094 |
-
<option value="all">
|
| 1095 |
{insurers.map((s) => {
|
| 1096 |
const name = data.policies.find((p) => p.insurer_slug === s)?.insurer_name || s;
|
| 1097 |
const count = data.policies.filter((p) => p.insurer_slug === s).length;
|
|
@@ -1100,39 +1487,39 @@ function MarketplacePanel({
|
|
| 1100 |
</select>
|
| 1101 |
</div>
|
| 1102 |
<div>
|
| 1103 |
-
<label className="block text-[11px] font-semibold text-[var(--muted-foreground)] uppercase tracking-wide mb-1">
|
| 1104 |
<select value={grade} onChange={(e) => setGrade(e.target.value)} className="w-full text-sm bg-transparent border border-[var(--border)] rounded-md px-2 py-1.5">
|
| 1105 |
-
<option value="all">
|
| 1106 |
-
<option value="A">
|
| 1107 |
-
<option value="B">
|
| 1108 |
-
<option value="C">
|
| 1109 |
</select>
|
| 1110 |
</div>
|
| 1111 |
<div>
|
| 1112 |
-
<label className="block text-[11px] font-semibold text-[var(--muted-foreground)] uppercase tracking-wide mb-1">
|
| 1113 |
<select value={sortBy} onChange={(e) => setSortBy(e.target.value as "score" | "name" | "insurer")} className="w-full text-sm bg-transparent border border-[var(--border)] rounded-md px-2 py-1.5">
|
| 1114 |
-
<option value="score">
|
| 1115 |
-
<option value="name">
|
| 1116 |
-
<option value="insurer">
|
| 1117 |
</select>
|
| 1118 |
</div>
|
| 1119 |
<div>
|
| 1120 |
-
<label className="block text-[11px] font-semibold text-[var(--muted-foreground)] uppercase tracking-wide mb-1">
|
| 1121 |
<input type="range" min={12} max={48} step={6} value={maxPED} onChange={(e) => setMaxPED(parseInt(e.target.value))} className="w-full accent-[var(--primary)]" />
|
| 1122 |
</div>
|
| 1123 |
<div>
|
| 1124 |
-
<label className="block text-[11px] font-semibold text-[var(--muted-foreground)] uppercase tracking-wide mb-1">
|
| 1125 |
<input type="range" min={500000} max={10000000} step={500000} value={minSI} onChange={(e) => setMinSI(parseInt(e.target.value))} className="w-full accent-[var(--primary)]" />
|
| 1126 |
</div>
|
| 1127 |
<label className="flex items-center gap-2 text-xs">
|
| 1128 |
-
<input type="checkbox" checked={requireAyush} onChange={(e) => setRequireAyush(e.target.checked)} className="accent-[var(--primary)]" />
|
| 1129 |
</label>
|
| 1130 |
<label className="flex items-center gap-2 text-xs">
|
| 1131 |
-
<input type="checkbox" checked={requireCashless} onChange={(e) => setRequireCashless(e.target.checked)} className="accent-[var(--primary)]" />
|
| 1132 |
</label>
|
| 1133 |
</div>
|
| 1134 |
<div className="text-xs text-[var(--muted-foreground)] mt-3">
|
| 1135 |
-
|
| 1136 |
</div>
|
| 1137 |
</div>
|
| 1138 |
|
|
@@ -1146,11 +1533,13 @@ function MarketplacePanel({
|
|
| 1146 |
selected={selectedIds.includes(p.policy_id)}
|
| 1147 |
onToggleSelect={() => toggleSelect(p.policy_id)}
|
| 1148 |
selectionDisabled={selectedIds.length >= MAX_COMPARE}
|
|
|
|
|
|
|
| 1149 |
/>
|
| 1150 |
))}
|
| 1151 |
{sorted.length === 0 && (
|
| 1152 |
<div className="col-span-full text-center text-sm text-[var(--muted-foreground)] py-12">
|
| 1153 |
-
|
| 1154 |
</div>
|
| 1155 |
)}
|
| 1156 |
</div>
|
|
@@ -1261,7 +1650,14 @@ function PerPolicyPremiumEstimator({ policy }: { policy: MarketplacePolicy }) {
|
|
| 1261 |
</div>
|
| 1262 |
<div>
|
| 1263 |
<div className="flex items-center justify-between text-[10px] uppercase tracking-wide text-[var(--muted-foreground)] font-semibold">
|
| 1264 |
-
<span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1265 |
</div>
|
| 1266 |
<input type="range" min={0} max={40} step={5} value={copay} onChange={(e) => setCopay(parseInt(e.target.value))} className="w-full accent-[var(--primary)]" />
|
| 1267 |
</div>
|
|
@@ -1311,10 +1707,10 @@ function InsurerReviewsBlock({ reviews }: { reviews: InsurerReviews }) {
|
|
| 1311 |
</div>
|
| 1312 |
<div className="grid grid-cols-2 md:grid-cols-4 gap-2">
|
| 1313 |
{cm.claim_settlement_ratio_pct != null && (
|
| 1314 |
-
<
|
| 1315 |
<div className="text-[9px] uppercase tracking-wide text-[var(--muted-foreground)]">Claim ratio (IRDAI {cm.claim_settlement_ratio_year})</div>
|
| 1316 |
<div className="font-semibold text-sm">{cm.claim_settlement_ratio_pct}%</div>
|
| 1317 |
-
</
|
| 1318 |
)}
|
| 1319 |
{cm.complaints_per_10k_policies != null && (
|
| 1320 |
<div className="rounded-lg border border-[var(--border)] p-2">
|
|
@@ -1323,10 +1719,10 @@ function InsurerReviewsBlock({ reviews }: { reviews: InsurerReviews }) {
|
|
| 1323 |
</div>
|
| 1324 |
)}
|
| 1325 |
{Object.entries(agg).filter(([, v]) => v?.avg_star != null).slice(0, 2).map(([portal, v]) => (
|
| 1326 |
-
<
|
| 1327 |
<div className="text-[9px] uppercase tracking-wide text-[var(--muted-foreground)]">{portal}</div>
|
| 1328 |
<div className="font-semibold text-sm">{v?.avg_star}★ {v?.review_count != null && <span className="opacity-60 font-normal">({v?.review_count.toLocaleString()})</span>}</div>
|
| 1329 |
-
</
|
| 1330 |
))}
|
| 1331 |
</div>
|
| 1332 |
{reviews.reddit_sentiment?.notable_themes && reviews.reddit_sentiment.notable_themes.length > 0 && (
|
|
@@ -1344,9 +1740,9 @@ function InsurerReviewsBlock({ reviews }: { reviews: InsurerReviews }) {
|
|
| 1344 |
<div className="text-[10px] uppercase tracking-wide text-[var(--muted-foreground)] font-semibold mb-1">Reviewed by</div>
|
| 1345 |
<div className="space-y-0.5">
|
| 1346 |
{reviews.youtube_coverage.top_creators_who_reviewed.slice(0, 3).map((c, i) => (
|
| 1347 |
-
<
|
| 1348 |
<span className="font-medium">{c.creator}</span> — <span className="text-[var(--muted-foreground)]">{c.verdict}</span>
|
| 1349 |
-
</
|
| 1350 |
))}
|
| 1351 |
</div>
|
| 1352 |
</div>
|
|
@@ -1361,17 +1757,23 @@ function PolicyCard({
|
|
| 1361 |
selected,
|
| 1362 |
onToggleSelect,
|
| 1363 |
selectionDisabled,
|
|
|
|
|
|
|
| 1364 |
}: {
|
| 1365 |
policy: MarketplacePolicy;
|
| 1366 |
onOpen: () => void;
|
| 1367 |
selected: boolean;
|
| 1368 |
onToggleSelect: () => void;
|
| 1369 |
selectionDisabled: boolean;
|
|
|
|
|
|
|
| 1370 |
}) {
|
| 1371 |
-
const initials = insurerInitials(policy.insurer_name);
|
| 1372 |
-
const color = INSURER_COLOR[policy.insurer_slug] || "bg-slate-500";
|
| 1373 |
const maxSI = policy.sum_insured_options.length ? Math.max(...policy.sum_insured_options) : null;
|
| 1374 |
const siDisplay = maxSI ? (maxSI >= 10000000 ? `${maxSI/10000000} cr` : `${maxSI/100000} L`) : "—";
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1375 |
return (
|
| 1376 |
<div className={`relative text-left bg-[var(--card)] border ${selected ? "border-[var(--primary)] shadow-md" : "border-[var(--border)]"} rounded-xl p-4 hover:border-[var(--primary)] hover:shadow-md transition group`}>
|
| 1377 |
<label
|
|
@@ -1385,28 +1787,45 @@ function PolicyCard({
|
|
| 1385 |
onChange={onToggleSelect}
|
| 1386 |
className="accent-[var(--primary)] w-3 h-3"
|
| 1387 |
/>
|
| 1388 |
-
{selected ? "
|
| 1389 |
</label>
|
| 1390 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1391 |
<div className="flex items-start gap-3 mb-3 pr-16">
|
| 1392 |
-
<
|
| 1393 |
<div className="flex-1 min-w-0">
|
| 1394 |
<div className="text-xs text-[var(--muted-foreground)] truncate">{policy.insurer_name}</div>
|
| 1395 |
<div className="font-semibold text-sm truncate group-hover:text-[var(--primary)] transition">{policy.policy_name}</div>
|
| 1396 |
</div>
|
| 1397 |
-
|
| 1398 |
-
|
| 1399 |
-
<div className=
|
| 1400 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1401 |
</div>
|
| 1402 |
-
<p className="text-xs text-[var(--muted-foreground)] mb-3 line-clamp-2">{
|
| 1403 |
<div className="grid grid-cols-2 gap-2 text-xs">
|
| 1404 |
-
<Stat label="
|
| 1405 |
-
<Stat label="PED
|
| 1406 |
-
<Stat label="AYUSH" value={policy.ayush_coverage === true ? "Yes" : policy.ayush_coverage === false ? "No" : "—"} />
|
| 1407 |
-
<Stat label="
|
| 1408 |
</div>
|
| 1409 |
-
</
|
| 1410 |
</div>
|
| 1411 |
);
|
| 1412 |
}
|
|
@@ -1499,11 +1918,31 @@ function MethodologyExpander() {
|
|
| 1499 |
);
|
| 1500 |
}
|
| 1501 |
|
| 1502 |
-
function Stat({ label, value }: { label:
|
|
|
|
| 1503 |
return (
|
| 1504 |
-
<div>
|
| 1505 |
-
<div className="text-[10px] text-[var(--muted-foreground)] uppercase tracking-wide">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1506 |
<div className="text-xs font-semibold">{value}</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1507 |
</div>
|
| 1508 |
);
|
| 1509 |
}
|
|
@@ -1753,24 +2192,29 @@ function PolicyDetailModal({ policy, onClose }: { policy: MarketplacePolicy; onC
|
|
| 1753 |
)}
|
| 1754 |
|
| 1755 |
<div>
|
| 1756 |
-
<h4 className="text-sm font-semibold mb-
|
| 1757 |
-
<div className="grid grid-cols-2 gap-3 text-xs">
|
| 1758 |
-
<Stat label="
|
| 1759 |
-
<Stat label="
|
| 1760 |
-
|
| 1761 |
-
|
| 1762 |
-
|
| 1763 |
-
|
| 1764 |
-
|
| 1765 |
-
|
| 1766 |
-
|
| 1767 |
-
|
| 1768 |
-
|
| 1769 |
-
<Stat label="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1770 |
{policy.room_rent_capping && (
|
| 1771 |
-
<div className="col-span-2">
|
| 1772 |
-
<
|
| 1773 |
-
<div className="text-xs">{policy.room_rent_capping}</div>
|
| 1774 |
</div>
|
| 1775 |
)}
|
| 1776 |
</div>
|
|
|
|
| 20 |
MarketplaceResponse,
|
| 21 |
postChat,
|
| 22 |
postPremiumEstimate,
|
| 23 |
+
postProfileUpdate,
|
| 24 |
postTranscribe,
|
| 25 |
PremiumEstimateResponse,
|
| 26 |
ProfileCompletenessResponse,
|
| 27 |
ScorecardResponse,
|
| 28 |
uploadPolicy,
|
| 29 |
+
UserProfile,
|
| 30 |
} from "@/lib/api";
|
| 31 |
+
import { translate, UILang, StringKey, GLOSSARY } from "@/lib/i18n";
|
| 32 |
|
| 33 |
type DisplayMessage = ChatMessage & {
|
| 34 |
id: string;
|
|
|
|
| 61 |
const [showCoverage, setShowCoverage] = useState(false);
|
| 62 |
const [showPremium, setShowPremium] = useState(false);
|
| 63 |
const [showMarketplace, setShowMarketplace] = useState(false);
|
| 64 |
+
const [showProfile, setShowProfile] = useState(false);
|
| 65 |
const [marketplace, setMarketplace] = useState<MarketplaceResponse | null>(null);
|
| 66 |
const [openPolicy, setOpenPolicy] = useState<MarketplacePolicy | null>(null);
|
| 67 |
const [sessionId, setSessionId] = useState<string | undefined>();
|
| 68 |
+
const [profileCompleteness, setProfileCompleteness] = useState<ProfileCompletenessResponse | null>(null);
|
| 69 |
+
|
| 70 |
+
// Re-fetch profile completeness whenever sessionId changes (after first chat
|
| 71 |
+
// turn) — drives the score-gate on marketplace cards + detail modal.
|
| 72 |
+
useEffect(() => {
|
| 73 |
+
if (typeof window !== "undefined" && sessionId) {
|
| 74 |
+
sessionStorage.setItem("insurance_session_id", sessionId);
|
| 75 |
+
getProfileCompleteness(sessionId)
|
| 76 |
+
.then(setProfileCompleteness)
|
| 77 |
+
.catch(() => setProfileCompleteness(null));
|
| 78 |
+
}
|
| 79 |
+
}, [sessionId]);
|
| 80 |
const [uploadStatus, setUploadStatus] = useState<string | null>(null);
|
| 81 |
const [handsFree, setHandsFree] = useState(false); // VAD auto-cutoff mode
|
| 82 |
// Live ref of handsFree so async TTS-ended callbacks read the latest value
|
|
|
|
| 99 |
getCoverage()
|
| 100 |
.then(setCoverage)
|
| 101 |
.catch(() => setCoverage(null));
|
| 102 |
+
// Initial marketplace pull — no session yet, uses generic baseline scoring
|
| 103 |
getMarketplace()
|
| 104 |
.then(setMarketplace)
|
| 105 |
.catch(() => setMarketplace(null));
|
| 106 |
}, []);
|
| 107 |
|
| 108 |
+
// Re-fetch marketplace WITH session_id whenever profile completeness flips
|
| 109 |
+
// to personalised — backend re-scores each card against the user's profile,
|
| 110 |
+
// so grades reflect "this policy for THIS buyer" rather than the generic
|
| 111 |
+
// baseline. Without this useEffect, the cards stay generic even after
|
| 112 |
+
// profile is saved.
|
| 113 |
+
useEffect(() => {
|
| 114 |
+
if (sessionId && profileCompleteness?.is_personalized) {
|
| 115 |
+
getMarketplace(sessionId)
|
| 116 |
+
.then(setMarketplace)
|
| 117 |
+
.catch(() => {}); // keep prior data on transient errors
|
| 118 |
+
}
|
| 119 |
+
}, [sessionId, profileCompleteness?.is_personalized]);
|
| 120 |
+
|
| 121 |
useEffect(() => {
|
| 122 |
scrollRef.current?.scrollTo({ top: scrollRef.current.scrollHeight, behavior: "smooth" });
|
| 123 |
}, [messages]);
|
|
|
|
| 350 |
</div>
|
| 351 |
</button>
|
| 352 |
<button
|
| 353 |
+
onClick={() => { setShowPremium(!showPremium); setShowMarketplace(false); setShowCoverage(false); setShowProfile(false); }}
|
| 354 |
className={`group relative overflow-hidden rounded-xl transition-all shadow-sm hover:shadow-md ${
|
| 355 |
showPremium ? "ring-2 ring-[var(--primary)]" : ""
|
| 356 |
}`}
|
|
|
|
| 367 |
</div>
|
| 368 |
</div>
|
| 369 |
</button>
|
| 370 |
+
<button
|
| 371 |
+
onClick={() => { setShowProfile(!showProfile); setShowMarketplace(false); setShowPremium(false); setShowCoverage(false); }}
|
| 372 |
+
className={`group relative overflow-hidden rounded-xl transition-all shadow-sm hover:shadow-md ${
|
| 373 |
+
showProfile ? "ring-2 ring-[var(--primary)]" : ""
|
| 374 |
+
}`}
|
| 375 |
+
title={uiLang === "hi" ? "अपनी profile बनाएं — हर policy को आपके लिए score करेंगे" : "Build your profile — every policy gets a personal score"}
|
| 376 |
+
>
|
| 377 |
+
<div className="absolute inset-0 bg-gradient-to-br from-violet-600 via-purple-600 to-fuchsia-600" />
|
| 378 |
+
<div className="relative flex items-stretch text-white">
|
| 379 |
+
<div className="flex items-center justify-center px-3 py-2 bg-black/15">
|
| 380 |
+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><circle cx="12" cy="8" r="4" /><path d="M4 21v-2a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v2" /></svg>
|
| 381 |
+
</div>
|
| 382 |
+
<div className="px-3 py-2 text-left">
|
| 383 |
+
<div className="text-[10px] uppercase tracking-wider opacity-85 leading-none">{uiLang === "hi" ? "आप" : "You"}</div>
|
| 384 |
+
<div className="text-xs font-bold leading-tight whitespace-nowrap">{uiLang === "hi" ? "आपकी profile" : "Your profile"}</div>
|
| 385 |
+
</div>
|
| 386 |
+
{profileCompleteness && (
|
| 387 |
+
<div className="flex flex-col items-center justify-center px-3 py-1 bg-white/15 border-l border-white/20">
|
| 388 |
+
<div className="text-sm font-bold leading-none">{profileCompleteness.completeness_pct}%</div>
|
| 389 |
+
<div className="text-[9px] uppercase tracking-wider opacity-90 leading-none mt-0.5">{uiLang === "hi" ? "पूर्ण" : "DONE"}</div>
|
| 390 |
+
</div>
|
| 391 |
+
)}
|
| 392 |
+
</div>
|
| 393 |
+
</button>
|
| 394 |
{/* UI language toggle — flips visual chrome + voice TTS together */}
|
| 395 |
<button
|
| 396 |
onClick={() => setTtsLang(ttsLang === "en-IN" ? "hi-IN" : "en-IN")}
|
|
|
|
| 406 |
data={marketplace}
|
| 407 |
onOpenPolicy={(p) => setOpenPolicy(p)}
|
| 408 |
onClose={() => setShowMarketplace(false)}
|
| 409 |
+
t={t}
|
| 410 |
+
isPersonalized={profileCompleteness?.is_personalized === true}
|
| 411 |
/>
|
| 412 |
)}
|
| 413 |
{showPremium && <PremiumCalculatorPanel onClose={() => setShowPremium(false)} />}
|
| 414 |
+
{showProfile && (
|
| 415 |
+
<ProfileBuilderPanel
|
| 416 |
+
sessionId={sessionId}
|
| 417 |
+
setSessionId={setSessionId}
|
| 418 |
+
initialProfile={profileCompleteness?.profile || {}}
|
| 419 |
+
onSaved={(resp) => { setProfileCompleteness(resp); }}
|
| 420 |
+
onClose={() => setShowProfile(false)}
|
| 421 |
+
uiLang={uiLang}
|
| 422 |
+
/>
|
| 423 |
+
)}
|
| 424 |
</header>
|
| 425 |
{openPolicy && <PolicyDetailModal policy={openPolicy} onClose={() => setOpenPolicy(null)} />}
|
| 426 |
|
|
|
|
| 515 |
);
|
| 516 |
}
|
| 517 |
|
| 518 |
+
function ProfileBuilderPanel({
|
| 519 |
+
sessionId,
|
| 520 |
+
setSessionId,
|
| 521 |
+
initialProfile,
|
| 522 |
+
onSaved,
|
| 523 |
+
onClose,
|
| 524 |
+
uiLang,
|
| 525 |
+
}: {
|
| 526 |
+
sessionId: string | undefined;
|
| 527 |
+
setSessionId: (id: string) => void;
|
| 528 |
+
initialProfile: UserProfile;
|
| 529 |
+
onSaved: (r: ProfileCompletenessResponse) => void;
|
| 530 |
+
onClose: () => void;
|
| 531 |
+
uiLang: UILang;
|
| 532 |
+
}) {
|
| 533 |
+
const [age, setAge] = useState<number | null>(initialProfile.age ?? null);
|
| 534 |
+
const [dependents, setDependents] = useState<string>(initialProfile.dependents ?? "self");
|
| 535 |
+
const [budget, setBudget] = useState<string>(initialProfile.budget_band ?? "");
|
| 536 |
+
const [income, setIncome] = useState<string>(initialProfile.income_band ?? "");
|
| 537 |
+
const [city, setCity] = useState<string>(initialProfile.location_tier ?? "");
|
| 538 |
+
const [conditions, setConditions] = useState<string[]>(initialProfile.health_conditions ?? []);
|
| 539 |
+
const [existingCover, setExistingCover] = useState<number | null>(initialProfile.existing_cover_inr ?? null);
|
| 540 |
+
const [primaryGoal, setPrimaryGoal] = useState<string>(initialProfile.primary_goal ?? "");
|
| 541 |
+
const [parentsHasPed, setParentsHasPed] = useState<boolean | null>(initialProfile.parents_has_ped ?? null);
|
| 542 |
+
const [parentsAgeMax, setParentsAgeMax] = useState<number | null>(initialProfile.parents_age_max ?? null);
|
| 543 |
+
const [busy, setBusy] = useState(false);
|
| 544 |
+
|
| 545 |
+
const hindi = uiLang === "hi";
|
| 546 |
+
|
| 547 |
+
const toggleCondition = (c: string) => {
|
| 548 |
+
setConditions((prev) => prev.includes(c) ? prev.filter((x) => x !== c) : [...prev, c]);
|
| 549 |
+
};
|
| 550 |
+
|
| 551 |
+
const handleSave = async () => {
|
| 552 |
+
if (busy) return;
|
| 553 |
+
setBusy(true);
|
| 554 |
+
let sid = sessionId;
|
| 555 |
+
if (!sid) {
|
| 556 |
+
sid = `s_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
|
| 557 |
+
setSessionId(sid);
|
| 558 |
+
if (typeof window !== "undefined") sessionStorage.setItem("insurance_session_id", sid);
|
| 559 |
+
}
|
| 560 |
+
try {
|
| 561 |
+
const resp = await postProfileUpdate({
|
| 562 |
+
session_id: sid,
|
| 563 |
+
age: age ?? undefined,
|
| 564 |
+
dependents: dependents || undefined,
|
| 565 |
+
budget_band: budget || undefined,
|
| 566 |
+
income_band: income || undefined,
|
| 567 |
+
location_tier: city || undefined,
|
| 568 |
+
health_conditions: conditions.length ? conditions : undefined,
|
| 569 |
+
existing_cover_inr: existingCover ?? undefined,
|
| 570 |
+
primary_goal: primaryGoal || undefined,
|
| 571 |
+
parents_to_insure: dependents.includes("parent") ? true : null,
|
| 572 |
+
parents_has_ped: parentsHasPed,
|
| 573 |
+
parents_age_max: parentsAgeMax ?? undefined,
|
| 574 |
+
});
|
| 575 |
+
onSaved(resp);
|
| 576 |
+
} catch (e) {
|
| 577 |
+
console.error(e);
|
| 578 |
+
} finally {
|
| 579 |
+
setBusy(false);
|
| 580 |
+
}
|
| 581 |
+
};
|
| 582 |
+
|
| 583 |
+
// chip helper styles
|
| 584 |
+
const chipBase = "px-2.5 py-1 rounded-full border text-[11px] cursor-pointer transition";
|
| 585 |
+
const chipOn = "border-[var(--primary)] bg-[var(--primary)] text-white";
|
| 586 |
+
const chipOff = "border-[var(--border)] hover:border-[var(--primary)]";
|
| 587 |
+
|
| 588 |
+
const conditionOptions = hindi
|
| 589 |
+
? [["diabetes", "मधुमेह"], ["hypertension", "BP"], ["thyroid", "थायरॉइड"], ["heart", "हृदय रोग"], ["asthma", "अस्थमा"], ["cancer", "कैंसर इतिहास"]]
|
| 590 |
+
: [["diabetes", "Diabetes"], ["hypertension", "BP / Hypertension"], ["thyroid", "Thyroid"], ["heart", "Heart"], ["asthma", "Asthma"], ["cancer", "Cancer history"]];
|
| 591 |
+
|
| 592 |
+
return (
|
| 593 |
+
<div className="border-t border-[var(--border)] bg-[var(--muted)] animate-fade-up max-h-[80vh] overflow-y-auto scrollbar-thin">
|
| 594 |
+
<div className="max-w-5xl mx-auto px-4 sm:px-6 py-5">
|
| 595 |
+
<div className="flex items-baseline justify-between mb-4">
|
| 596 |
+
<div>
|
| 597 |
+
<h2 className="text-lg font-semibold">{hindi ? "आपकी profile बनाएं" : "Build your profile"}</h2>
|
| 598 |
+
<p className="text-xs text-[var(--muted-foreground)] mt-1 max-w-2xl">
|
| 599 |
+
{hindi
|
| 600 |
+
? "ये जवाब इसी chat में रहते हैं। ईमानदारी से बताइए — आपकी सेहत का सच बताना आपकी claim बचाता है, premium बढ़ाने का बहाना नहीं।"
|
| 601 |
+
: "Your answers stay in this chat. Be honest — the truth protects your claim later, not just my recommendation. We don't share with any insurer until you choose to buy."}
|
| 602 |
+
</p>
|
| 603 |
+
</div>
|
| 604 |
+
<button onClick={onClose} className="text-xs text-[var(--muted-foreground)] hover:underline">{hindi ? "बंद करें" : "close"}</button>
|
| 605 |
+
</div>
|
| 606 |
+
|
| 607 |
+
<div className="bg-[var(--card)] border border-[var(--border)] rounded-xl p-5 space-y-5">
|
| 608 |
+
{/* Age */}
|
| 609 |
+
<div>
|
| 610 |
+
<label className="flex items-baseline justify-between text-xs mb-1.5">
|
| 611 |
+
<span className="font-semibold">{hindi ? "आपकी उम्र" : "Your age"}</span>
|
| 612 |
+
<span className="font-mono text-sm">{age ?? (hindi ? "—" : "—")}</span>
|
| 613 |
+
</label>
|
| 614 |
+
<input type="range" min={18} max={80} value={age ?? 35} onChange={(e) => setAge(parseInt(e.target.value))} className="w-full accent-[var(--primary)]" />
|
| 615 |
+
<p className="text-[10px] text-[var(--muted-foreground)] mt-0.5">{hindi ? "Premium + eligibility + renewal age इसी पर निर्भर।" : "Premium, eligibility, and how long you can renew all hinge on this."}</p>
|
| 616 |
+
</div>
|
| 617 |
+
|
| 618 |
+
{/* Dependents */}
|
| 619 |
+
<div>
|
| 620 |
+
<label className="block text-xs font-semibold mb-1.5">{hindi ? "किसको cover करना है" : "Who needs cover"}</label>
|
| 621 |
+
<div className="flex flex-wrap gap-2">
|
| 622 |
+
{[
|
| 623 |
+
["self", hindi ? "सिर्फ मैं" : "Just me"],
|
| 624 |
+
["self+spouse", hindi ? "मैं + पति/पत्नी" : "Self + spouse"],
|
| 625 |
+
["self+spouse+kids", hindi ? "मैं + पति/पत्नी + बच्चे" : "Self + spouse + kids"],
|
| 626 |
+
["self+parents", hindi ? "मैं + माता-पिता" : "Self + parents"],
|
| 627 |
+
["self+spouse+kids+parents", hindi ? "पूरा परिवार" : "Whole family"],
|
| 628 |
+
].map(([key, label]) => (
|
| 629 |
+
<button key={key} onClick={() => setDependents(key)} className={`${chipBase} ${dependents === key ? chipOn : chipOff}`}>{label}</button>
|
| 630 |
+
))}
|
| 631 |
+
</div>
|
| 632 |
+
</div>
|
| 633 |
+
|
| 634 |
+
{/* Parents detail — conditional */}
|
| 635 |
+
{dependents.includes("parent") && (
|
| 636 |
+
<div className="border-l-2 border-[var(--primary)] pl-3 space-y-3">
|
| 637 |
+
<div>
|
| 638 |
+
<label className="flex items-baseline justify-between text-xs mb-1.5">
|
| 639 |
+
<span className="font-semibold">{hindi ? "सबसे बड़े parent की उम्र" : "Older parent's age"}</span>
|
| 640 |
+
<span className="font-mono text-sm">{parentsAgeMax ?? "—"}</span>
|
| 641 |
+
</label>
|
| 642 |
+
<input type="range" min={45} max={85} value={parentsAgeMax ?? 65} onChange={(e) => setParentsAgeMax(parseInt(e.target.value))} className="w-full accent-[var(--primary)]" />
|
| 643 |
+
</div>
|
| 644 |
+
<div>
|
| 645 |
+
<label className="block text-xs font-semibold mb-1.5">{hindi ? "क्या उन्हें diabetes / BP / heart है?" : "Any pre-existing conditions (diabetes / BP / heart)?"}</label>
|
| 646 |
+
<div className="flex gap-2">
|
| 647 |
+
<button onClick={() => setParentsHasPed(true)} className={`${chipBase} ${parentsHasPed === true ? chipOn : chipOff}`}>{hindi ? "हाँ" : "Yes"}</button>
|
| 648 |
+
<button onClick={() => setParentsHasPed(false)} className={`${chipBase} ${parentsHasPed === false ? chipOn : chipOff}`}>{hindi ? "नहीं" : "No"}</button>
|
| 649 |
+
</div>
|
| 650 |
+
</div>
|
| 651 |
+
</div>
|
| 652 |
+
)}
|
| 653 |
+
|
| 654 |
+
{/* Your conditions */}
|
| 655 |
+
<div>
|
| 656 |
+
<label className="block text-xs font-semibold mb-1.5">{hindi ? "आपकी pre-existing conditions" : "Your pre-existing conditions"}</label>
|
| 657 |
+
<p className="text-[10px] text-amber-700 dark:text-amber-400 mb-2">{hindi ? "सच बताइए। बीमाकर्ता claim time पर hospital records check करते हैं। आज की बचत बाद में ₹8L का denied claim बन जाती है।" : "Be honest. Insurers cross-check at claim time. ₹500 saved today = ₹8L denied claim tomorrow."}</p>
|
| 658 |
+
<div className="flex flex-wrap gap-2">
|
| 659 |
+
<button onClick={() => setConditions([])} className={`${chipBase} ${conditions.length === 0 ? chipOn : chipOff}`}>{hindi ? "कुछ नहीं" : "None"}</button>
|
| 660 |
+
{conditionOptions.map(([key, label]) => (
|
| 661 |
+
<button key={key} onClick={() => toggleCondition(key)} className={`${chipBase} ${conditions.includes(key) ? chipOn : chipOff}`}>{label}</button>
|
| 662 |
+
))}
|
| 663 |
+
</div>
|
| 664 |
+
</div>
|
| 665 |
+
|
| 666 |
+
{/* Existing cover */}
|
| 667 |
+
<div>
|
| 668 |
+
<label className="block text-xs font-semibold mb-1.5">{hindi ? "पहले से कोई health insurance?" : "Already have any health insurance?"}</label>
|
| 669 |
+
<div className="flex flex-wrap gap-2">
|
| 670 |
+
{[[0, hindi ? "नहीं" : "None"], [300000, "₹3L"], [500000, "₹5L"], [1000000, "₹10L"], [2500000, "₹25L+"]].map(([v, label]) => (
|
| 671 |
+
<button key={String(v)} onClick={() => setExistingCover(v as number)} className={`${chipBase} ${existingCover === v ? chipOn : chipOff}`}>{label}</button>
|
| 672 |
+
))}
|
| 673 |
+
</div>
|
| 674 |
+
</div>
|
| 675 |
+
|
| 676 |
+
{/* City tier */}
|
| 677 |
+
<div>
|
| 678 |
+
<label className="block text-xs font-semibold mb-1.5">{hindi ? "आपका शहर" : "Your city"}</label>
|
| 679 |
+
<div className="flex gap-2">
|
| 680 |
+
{[["metro", hindi ? "Metro (Mumbai/Delhi/Bangalore/...)" : "Metro"], ["tier1", hindi ? "Tier 1" : "Tier 1"], ["tier2", hindi ? "छोटा शहर" : "Tier 2 / smaller"]].map(([key, label]) => (
|
| 681 |
+
<button key={key} onClick={() => setCity(key)} className={`${chipBase} ${city === key ? chipOn : chipOff}`}>{label}</button>
|
| 682 |
+
))}
|
| 683 |
+
</div>
|
| 684 |
+
<p className="text-[10px] text-[var(--muted-foreground)] mt-0.5">{hindi ? "Cashless network आपके शहर में कितना deep है — यह बड़ा फर्क डालता है।" : "How many cashless hospitals exist in your city makes a huge difference."}</p>
|
| 685 |
+
</div>
|
| 686 |
+
|
| 687 |
+
{/* Budget */}
|
| 688 |
+
<div>
|
| 689 |
+
<label className="block text-xs font-semibold mb-1.5">{hindi ? "सालाना premium budget" : "Annual premium budget"}</label>
|
| 690 |
+
<div className="flex flex-wrap gap-2">
|
| 691 |
+
{[["under_15k", hindi ? "₹15k से कम" : "Under ₹15k"], ["15k_30k", "₹15-30k"], ["30k_60k", "₹30-60k"], ["60k+", "₹60k+"]].map(([key, label]) => (
|
| 692 |
+
<button key={key} onClick={() => setBudget(key)} className={`${chipBase} ${budget === key ? chipOn : chipOff}`}>{label}</button>
|
| 693 |
+
))}
|
| 694 |
+
</div>
|
| 695 |
+
</div>
|
| 696 |
+
|
| 697 |
+
{/* Income */}
|
| 698 |
+
<div>
|
| 699 |
+
<label className="block text-xs font-semibold mb-1.5">{hindi ? "सालाना आय" : "Annual income"}</label>
|
| 700 |
+
<div className="flex flex-wrap gap-2">
|
| 701 |
+
{[["under_5L", hindi ? "₹5L से कम" : "Under ₹5L"], ["5L-10L", "₹5-10L"], ["10L-25L", "₹10-25L"], ["25L+", "₹25L+"]].map(([key, label]) => (
|
| 702 |
+
<button key={key} onClick={() => setIncome(key)} className={`${chipBase} ${income === key ? chipOn : chipOff}`}>{label}</button>
|
| 703 |
+
))}
|
| 704 |
+
</div>
|
| 705 |
+
</div>
|
| 706 |
+
|
| 707 |
+
{/* Primary goal */}
|
| 708 |
+
<div>
|
| 709 |
+
<label className="block text-xs font-semibold mb-1.5">{hindi ? "आज यहाँ क्यों?" : "What brought you here today?"}</label>
|
| 710 |
+
<div className="flex flex-wrap gap-2">
|
| 711 |
+
{[["first_buy", hindi ? "पहली policy" : "First policy"], ["upgrade", hindi ? "Cover बढ़ानी है" : "Upgrade"], ["compare_specific", hindi ? "Specific policies compare करनी हैं" : "Compare specific policies"], ["tax_planning", "Tax 80D"]].map(([key, label]) => (
|
| 712 |
+
<button key={key} onClick={() => setPrimaryGoal(key)} className={`${chipBase} ${primaryGoal === key ? chipOn : chipOff}`}>{label}</button>
|
| 713 |
+
))}
|
| 714 |
+
</div>
|
| 715 |
+
</div>
|
| 716 |
+
</div>
|
| 717 |
+
|
| 718 |
+
<div className="sticky bottom-0 mt-4 pb-2 bg-[var(--muted)] flex items-center justify-end gap-2">
|
| 719 |
+
<button onClick={onClose} className="text-xs text-[var(--muted-foreground)] hover:underline">{hindi ? "रद्द करें" : "Cancel"}</button>
|
| 720 |
+
<button
|
| 721 |
+
onClick={handleSave}
|
| 722 |
+
disabled={busy}
|
| 723 |
+
className={`text-sm font-semibold rounded-md px-4 py-2 ${busy ? "bg-[var(--muted)] text-[var(--muted-foreground)]" : "bg-[var(--primary)] text-white hover:opacity-90"}`}
|
| 724 |
+
>
|
| 725 |
+
{busy ? (hindi ? "Save हो रहा है…" : "Saving…") : (hindi ? "Save & Score करें" : "Save & Score")}
|
| 726 |
+
</button>
|
| 727 |
+
</div>
|
| 728 |
+
</div>
|
| 729 |
+
</div>
|
| 730 |
+
);
|
| 731 |
+
}
|
| 732 |
+
|
| 733 |
function PremiumCalculatorPanel({ onClose }: { onClose: () => void }) {
|
| 734 |
const [age, setAge] = useState(35);
|
| 735 |
const [sumInsured, setSumInsured] = useState(1000000);
|
|
|
|
| 827 |
</div>
|
| 828 |
<div>
|
| 829 |
<label className="flex items-center justify-between text-xs mb-1">
|
| 830 |
+
<span className="font-medium">Your share of every claim</span>
|
| 831 |
+
<span className="font-mono">
|
| 832 |
+
{copay === 0 ? (
|
| 833 |
+
<span className="text-emerald-600 font-semibold">Insurer pays it all</span>
|
| 834 |
+
) : (
|
| 835 |
+
<span>You pay ~₹{Math.round(sumInsured * copay / 100 / 100000)}L on a ₹{Math.round(sumInsured / 100000)}L claim</span>
|
| 836 |
+
)}
|
| 837 |
+
</span>
|
| 838 |
</label>
|
| 839 |
<input
|
| 840 |
type="range" min={0} max={40} step={5}
|
|
|
|
| 842 |
onChange={(e) => setCopay(parseInt(e.target.value))}
|
| 843 |
className="w-full accent-[var(--primary)]"
|
| 844 |
/>
|
| 845 |
+
<p className="text-[10px] text-[var(--muted-foreground)] mt-0.5">
|
| 846 |
+
{copay === 0
|
| 847 |
+
? "No share. Highest premium."
|
| 848 |
+
: `Your premium drops ~${Math.round(copay * 0.7)}%. In exchange you pay ₹${Math.round(sumInsured * copay / 100 / 1000)}k on a ₹${Math.round(sumInsured / 100000)}L hospital bill.`}
|
| 849 |
+
</p>
|
| 850 |
</div>
|
| 851 |
<div className="flex items-center gap-3 flex-wrap text-xs">
|
| 852 |
<span className="font-medium">City tier:</span>
|
|
|
|
| 1302 |
"tata-aig": "bg-slate-700",
|
| 1303 |
};
|
| 1304 |
|
| 1305 |
+
// SafeLink — renders a real <a> only when href is non-empty + not a "#"
|
| 1306 |
+
// placeholder. Otherwise renders the children as a non-interactive span so
|
| 1307 |
+
// the user never lands on a dead link. Closes #107 ghost-URL prevention.
|
| 1308 |
+
function SafeLink({ href, children, className, fallbackClassName }: {
|
| 1309 |
+
href?: string | null;
|
| 1310 |
+
children: React.ReactNode;
|
| 1311 |
+
className?: string;
|
| 1312 |
+
fallbackClassName?: string;
|
| 1313 |
+
}) {
|
| 1314 |
+
const ok = !!href && href !== "#" && href.startsWith("http");
|
| 1315 |
+
if (ok) {
|
| 1316 |
+
return <a href={href!} target="_blank" rel="noopener" className={className}>{children}</a>;
|
| 1317 |
+
}
|
| 1318 |
+
return <span className={fallbackClassName || `${className || ""} opacity-50 cursor-not-allowed`} title="No verified source URL available">{children}</span>;
|
| 1319 |
+
}
|
| 1320 |
+
|
| 1321 |
+
// Jargon — inline component that wraps a term and shows an info popover
|
| 1322 |
+
// on click with a plain-language explanation. Bilingual via uiLang.
|
| 1323 |
+
function Jargon({ term, children, uiLang }: { term: keyof typeof GLOSSARY; children: React.ReactNode; uiLang: UILang }) {
|
| 1324 |
+
const [open, setOpen] = useState(false);
|
| 1325 |
+
const entry = GLOSSARY[term];
|
| 1326 |
+
if (!entry) return <>{children}</>;
|
| 1327 |
+
const lang = uiLang === "hi" ? "hi" : "en";
|
| 1328 |
+
const { title, body } = entry[lang];
|
| 1329 |
+
return (
|
| 1330 |
+
<span className="inline-flex items-center gap-0.5 relative">
|
| 1331 |
+
{children}
|
| 1332 |
+
<button
|
| 1333 |
+
onClick={(e) => { e.stopPropagation(); setOpen(!open); }}
|
| 1334 |
+
className="inline-flex items-center justify-center w-3.5 h-3.5 rounded-full border border-[var(--muted-foreground)] text-[8px] text-[var(--muted-foreground)] hover:text-[var(--primary)] hover:border-[var(--primary)] ml-0.5"
|
| 1335 |
+
aria-label={`Explain ${String(term)}`}
|
| 1336 |
+
type="button"
|
| 1337 |
+
>
|
| 1338 |
+
?
|
| 1339 |
+
</button>
|
| 1340 |
+
{open && (
|
| 1341 |
+
<span className="absolute z-50 top-full mt-1 left-0 w-64 bg-[var(--card)] border border-[var(--border)] rounded-lg shadow-lg p-2.5 text-left animate-fade-up" onClick={(e) => e.stopPropagation()}>
|
| 1342 |
+
<span className="block text-[11px] font-semibold text-[var(--foreground)] mb-1">{title}</span>
|
| 1343 |
+
<span className="block text-[10px] text-[var(--muted-foreground)] leading-snug">{body}</span>
|
| 1344 |
+
<button onClick={() => setOpen(false)} className="absolute top-1 right-1.5 text-[var(--muted-foreground)] hover:text-[var(--foreground)] text-xs">×</button>
|
| 1345 |
+
</span>
|
| 1346 |
+
)}
|
| 1347 |
+
</span>
|
| 1348 |
+
);
|
| 1349 |
+
}
|
| 1350 |
+
|
| 1351 |
function insurerInitials(name: string): string {
|
| 1352 |
return name.split(" ").map((w) => w[0]).filter(Boolean).join("").slice(0, 2).toUpperCase();
|
| 1353 |
}
|
| 1354 |
|
| 1355 |
+
// Real insurer logos sourced from each insurer's official site (favicons /
|
| 1356 |
+
// media-kit assets). Fall back to colored letter avatar when the URL fails
|
| 1357 |
+
// to load (handled by onError swap in InsurerLogo component).
|
| 1358 |
+
const INSURER_LOGO_URL: Record<string, string> = {
|
| 1359 |
+
"aditya-birla": "https://www.adityabirlacapital.com/healthinsurance/static/assets/images/abhi-logo.svg",
|
| 1360 |
+
"bajaj-allianz": "https://www.bajajallianz.com/content/dam/bagic/header/logo.png",
|
| 1361 |
+
"care-health": "https://www.careinsurance.com/upload_master/images/logo.png",
|
| 1362 |
+
"hdfc-ergo": "https://www.hdfcergo.com/etc.clientlibs/hdfcergo/clientlibs/clientlib-site/resources/images/HDFC-ERGO-Logo.png",
|
| 1363 |
+
"icici-lombard": "https://www.icicilombard.com/content/dam/ilom-website/icon/icici-lombard-logo-new.svg",
|
| 1364 |
+
"manipalcigna": "https://www.manipalcigna.com/o/manipal-cigna-theme/images/manipal-cigna-logo.svg",
|
| 1365 |
+
"new-india": "https://www.newindia.co.in/portal/readWriteData/NIAImages/NewLogo.png",
|
| 1366 |
+
"niva-bupa": "https://transactions.nivabupa.com/_next/static/media/niva-bupa-logo.7b6e7f4e.svg",
|
| 1367 |
+
"star-health": "https://www.starhealth.in/sites/default/files/star-logo-revised.png",
|
| 1368 |
+
"tata-aig": "https://www.tataaig.com/etc/designs/tataaig/clientlibs/responsive/images/tataaig-logo.svg",
|
| 1369 |
+
};
|
| 1370 |
+
|
| 1371 |
+
function InsurerLogo({ slug, name, size = 44 }: { slug: string; name: string; size?: number }) {
|
| 1372 |
+
const [failed, setFailed] = useState(false);
|
| 1373 |
+
const url = INSURER_LOGO_URL[slug];
|
| 1374 |
+
const color = INSURER_COLOR[slug] || "bg-slate-500";
|
| 1375 |
+
if (!url || failed) {
|
| 1376 |
+
const initials = insurerInitials(name);
|
| 1377 |
+
return (
|
| 1378 |
+
<div
|
| 1379 |
+
className={`rounded-lg ${color} text-white flex items-center justify-center font-bold shrink-0`}
|
| 1380 |
+
style={{ width: size, height: size, fontSize: size * 0.32 }}
|
| 1381 |
+
>
|
| 1382 |
+
{initials}
|
| 1383 |
+
</div>
|
| 1384 |
+
);
|
| 1385 |
+
}
|
| 1386 |
+
return (
|
| 1387 |
+
<div
|
| 1388 |
+
className="rounded-lg bg-white border border-[var(--border)] flex items-center justify-center shrink-0 overflow-hidden p-1"
|
| 1389 |
+
style={{ width: size, height: size }}
|
| 1390 |
+
>
|
| 1391 |
+
{/* eslint-disable-next-line @next/next/no-img-element */}
|
| 1392 |
+
<img
|
| 1393 |
+
src={url}
|
| 1394 |
+
alt={name}
|
| 1395 |
+
onError={() => setFailed(true)}
|
| 1396 |
+
className="max-w-full max-h-full object-contain"
|
| 1397 |
+
/>
|
| 1398 |
+
</div>
|
| 1399 |
+
);
|
| 1400 |
+
}
|
| 1401 |
+
|
| 1402 |
function MarketplacePanel({
|
| 1403 |
data,
|
| 1404 |
onOpenPolicy,
|
| 1405 |
onClose,
|
| 1406 |
+
t,
|
| 1407 |
+
isPersonalized,
|
| 1408 |
}: {
|
| 1409 |
data: MarketplaceResponse;
|
| 1410 |
onOpenPolicy: (p: MarketplacePolicy) => void;
|
| 1411 |
onClose: () => void;
|
| 1412 |
+
t: (k: StringKey, v?: Record<string, string | number>) => string;
|
| 1413 |
+
isPersonalized: boolean;
|
| 1414 |
}) {
|
| 1415 |
const [search, setSearch] = useState("");
|
| 1416 |
const [insurerFilter, setInsurerFilter] = useState<string>("all");
|
|
|
|
| 1456 |
<div className="max-w-7xl mx-auto px-4 sm:px-6 py-5">
|
| 1457 |
<div className="flex items-baseline justify-between mb-4">
|
| 1458 |
<div>
|
| 1459 |
+
<h2 className="text-lg font-semibold">{t("mp.heading")}</h2>
|
| 1460 |
<p className="text-xs text-[var(--muted-foreground)]">
|
| 1461 |
+
{t("mp.summary", { total: data.total, insurers: data.insurers_indexed })}
|
| 1462 |
</p>
|
| 1463 |
</div>
|
| 1464 |
+
<button onClick={onClose} className="text-xs text-[var(--muted-foreground)] hover:underline">{t("mp.close")}</button>
|
| 1465 |
</div>
|
| 1466 |
|
| 1467 |
{/* Filter bar */}
|
| 1468 |
<div className="bg-[var(--card)] border border-[var(--border)] rounded-xl p-4 mb-4">
|
| 1469 |
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3">
|
| 1470 |
<div>
|
| 1471 |
+
<label className="block text-[11px] font-semibold text-[var(--muted-foreground)] uppercase tracking-wide mb-1">{t("mp.search")}</label>
|
| 1472 |
<input
|
| 1473 |
type="text" value={search} onChange={(e) => setSearch(e.target.value)}
|
| 1474 |
+
placeholder={t("mp.search_placeholder")}
|
| 1475 |
className="w-full text-sm bg-transparent border border-[var(--border)] rounded-md px-2 py-1.5 outline-none focus:border-[var(--primary)]"
|
| 1476 |
/>
|
| 1477 |
</div>
|
| 1478 |
<div>
|
| 1479 |
+
<label className="block text-[11px] font-semibold text-[var(--muted-foreground)] uppercase tracking-wide mb-1">{t("mp.insurer")}</label>
|
| 1480 |
<select value={insurerFilter} onChange={(e) => setInsurerFilter(e.target.value)} className="w-full text-sm bg-transparent border border-[var(--border)] rounded-md px-2 py-1.5">
|
| 1481 |
+
<option value="all">{t("mp.all_insurers")} ({data.insurers_indexed})</option>
|
| 1482 |
{insurers.map((s) => {
|
| 1483 |
const name = data.policies.find((p) => p.insurer_slug === s)?.insurer_name || s;
|
| 1484 |
const count = data.policies.filter((p) => p.insurer_slug === s).length;
|
|
|
|
| 1487 |
</select>
|
| 1488 |
</div>
|
| 1489 |
<div>
|
| 1490 |
+
<label className="block text-[11px] font-semibold text-[var(--muted-foreground)] uppercase tracking-wide mb-1">{t("mp.min_rating")}</label>
|
| 1491 |
<select value={grade} onChange={(e) => setGrade(e.target.value)} className="w-full text-sm bg-transparent border border-[var(--border)] rounded-md px-2 py-1.5">
|
| 1492 |
+
<option value="all">{t("mp.all_grades")}</option>
|
| 1493 |
+
<option value="A">{t("mp.a_only")}</option>
|
| 1494 |
+
<option value="B">{t("mp.b_or_better")}</option>
|
| 1495 |
+
<option value="C">{t("mp.c_or_better")}</option>
|
| 1496 |
</select>
|
| 1497 |
</div>
|
| 1498 |
<div>
|
| 1499 |
+
<label className="block text-[11px] font-semibold text-[var(--muted-foreground)] uppercase tracking-wide mb-1">{t("mp.sort_by")}</label>
|
| 1500 |
<select value={sortBy} onChange={(e) => setSortBy(e.target.value as "score" | "name" | "insurer")} className="w-full text-sm bg-transparent border border-[var(--border)] rounded-md px-2 py-1.5">
|
| 1501 |
+
<option value="score">{t("mp.sort_score")}</option>
|
| 1502 |
+
<option value="name">{t("mp.sort_name")}</option>
|
| 1503 |
+
<option value="insurer">{t("mp.sort_insurer")}</option>
|
| 1504 |
</select>
|
| 1505 |
</div>
|
| 1506 |
<div>
|
| 1507 |
+
<label className="block text-[11px] font-semibold text-[var(--muted-foreground)] uppercase tracking-wide mb-1">{t("mp.max_ped_wait")} <span className="font-mono">{maxPED} mo</span></label>
|
| 1508 |
<input type="range" min={12} max={48} step={6} value={maxPED} onChange={(e) => setMaxPED(parseInt(e.target.value))} className="w-full accent-[var(--primary)]" />
|
| 1509 |
</div>
|
| 1510 |
<div>
|
| 1511 |
+
<label className="block text-[11px] font-semibold text-[var(--muted-foreground)] uppercase tracking-wide mb-1">{t("mp.min_sum_insured")} <span className="font-mono">{minSI >= 10000000 ? (minSI/10000000) + " cr" : (minSI/100000) + " L"}</span></label>
|
| 1512 |
<input type="range" min={500000} max={10000000} step={500000} value={minSI} onChange={(e) => setMinSI(parseInt(e.target.value))} className="w-full accent-[var(--primary)]" />
|
| 1513 |
</div>
|
| 1514 |
<label className="flex items-center gap-2 text-xs">
|
| 1515 |
+
<input type="checkbox" checked={requireAyush} onChange={(e) => setRequireAyush(e.target.checked)} className="accent-[var(--primary)]" /> {t("mp.ayush_covered")}
|
| 1516 |
</label>
|
| 1517 |
<label className="flex items-center gap-2 text-xs">
|
| 1518 |
+
<input type="checkbox" checked={requireCashless} onChange={(e) => setRequireCashless(e.target.checked)} className="accent-[var(--primary)]" /> {t("mp.cashless_network")}
|
| 1519 |
</label>
|
| 1520 |
</div>
|
| 1521 |
<div className="text-xs text-[var(--muted-foreground)] mt-3">
|
| 1522 |
+
{t("mp.showing")} <span className="font-semibold text-[var(--foreground)]">{sorted.length}</span> {t("mp.of")} {data.total} {t("mp.policies_word")}
|
| 1523 |
</div>
|
| 1524 |
</div>
|
| 1525 |
|
|
|
|
| 1533 |
selected={selectedIds.includes(p.policy_id)}
|
| 1534 |
onToggleSelect={() => toggleSelect(p.policy_id)}
|
| 1535 |
selectionDisabled={selectedIds.length >= MAX_COMPARE}
|
| 1536 |
+
t={t}
|
| 1537 |
+
isPersonalized={isPersonalized}
|
| 1538 |
/>
|
| 1539 |
))}
|
| 1540 |
{sorted.length === 0 && (
|
| 1541 |
<div className="col-span-full text-center text-sm text-[var(--muted-foreground)] py-12">
|
| 1542 |
+
{t("mp.no_match")}
|
| 1543 |
</div>
|
| 1544 |
)}
|
| 1545 |
</div>
|
|
|
|
| 1650 |
</div>
|
| 1651 |
<div>
|
| 1652 |
<div className="flex items-center justify-between text-[10px] uppercase tracking-wide text-[var(--muted-foreground)] font-semibold">
|
| 1653 |
+
<span>Your share per claim</span>
|
| 1654 |
+
<span className="font-mono">
|
| 1655 |
+
{copay === 0 ? (
|
| 1656 |
+
<span className="text-emerald-600">Insurer pays all</span>
|
| 1657 |
+
) : (
|
| 1658 |
+
<span>₹{Math.round(si * copay / 100 / 100000) || "0"}L on ₹{Math.round(si / 100000)}L</span>
|
| 1659 |
+
)}
|
| 1660 |
+
</span>
|
| 1661 |
</div>
|
| 1662 |
<input type="range" min={0} max={40} step={5} value={copay} onChange={(e) => setCopay(parseInt(e.target.value))} className="w-full accent-[var(--primary)]" />
|
| 1663 |
</div>
|
|
|
|
| 1707 |
</div>
|
| 1708 |
<div className="grid grid-cols-2 md:grid-cols-4 gap-2">
|
| 1709 |
{cm.claim_settlement_ratio_pct != null && (
|
| 1710 |
+
<SafeLink href={cm.source_irdai_url} className="rounded-lg border border-[var(--border)] p-2 hover:border-[var(--primary)] transition block">
|
| 1711 |
<div className="text-[9px] uppercase tracking-wide text-[var(--muted-foreground)]">Claim ratio (IRDAI {cm.claim_settlement_ratio_year})</div>
|
| 1712 |
<div className="font-semibold text-sm">{cm.claim_settlement_ratio_pct}%</div>
|
| 1713 |
+
</SafeLink>
|
| 1714 |
)}
|
| 1715 |
{cm.complaints_per_10k_policies != null && (
|
| 1716 |
<div className="rounded-lg border border-[var(--border)] p-2">
|
|
|
|
| 1719 |
</div>
|
| 1720 |
)}
|
| 1721 |
{Object.entries(agg).filter(([, v]) => v?.avg_star != null).slice(0, 2).map(([portal, v]) => (
|
| 1722 |
+
<SafeLink key={portal} href={v?.url} className="rounded-lg border border-[var(--border)] p-2 hover:border-[var(--primary)] transition block">
|
| 1723 |
<div className="text-[9px] uppercase tracking-wide text-[var(--muted-foreground)]">{portal}</div>
|
| 1724 |
<div className="font-semibold text-sm">{v?.avg_star}★ {v?.review_count != null && <span className="opacity-60 font-normal">({v?.review_count.toLocaleString()})</span>}</div>
|
| 1725 |
+
</SafeLink>
|
| 1726 |
))}
|
| 1727 |
</div>
|
| 1728 |
{reviews.reddit_sentiment?.notable_themes && reviews.reddit_sentiment.notable_themes.length > 0 && (
|
|
|
|
| 1740 |
<div className="text-[10px] uppercase tracking-wide text-[var(--muted-foreground)] font-semibold mb-1">Reviewed by</div>
|
| 1741 |
<div className="space-y-0.5">
|
| 1742 |
{reviews.youtube_coverage.top_creators_who_reviewed.slice(0, 3).map((c, i) => (
|
| 1743 |
+
<SafeLink key={i} href={c.video_url} className="block text-xs hover:text-[var(--primary)]">
|
| 1744 |
<span className="font-medium">{c.creator}</span> — <span className="text-[var(--muted-foreground)]">{c.verdict}</span>
|
| 1745 |
+
</SafeLink>
|
| 1746 |
))}
|
| 1747 |
</div>
|
| 1748 |
</div>
|
|
|
|
| 1757 |
selected,
|
| 1758 |
onToggleSelect,
|
| 1759 |
selectionDisabled,
|
| 1760 |
+
t,
|
| 1761 |
+
isPersonalized = false,
|
| 1762 |
}: {
|
| 1763 |
policy: MarketplacePolicy;
|
| 1764 |
onOpen: () => void;
|
| 1765 |
selected: boolean;
|
| 1766 |
onToggleSelect: () => void;
|
| 1767 |
selectionDisabled: boolean;
|
| 1768 |
+
t: (k: StringKey, v?: Record<string, string | number>) => string;
|
| 1769 |
+
isPersonalized?: boolean;
|
| 1770 |
}) {
|
|
|
|
|
|
|
| 1771 |
const maxSI = policy.sum_insured_options.length ? Math.max(...policy.sum_insured_options) : null;
|
| 1772 |
const siDisplay = maxSI ? (maxSI >= 10000000 ? `${maxSI/10000000} cr` : `${maxSI/100000} L`) : "—";
|
| 1773 |
+
// Translate the grade one-liner — backend produces fixed English strings;
|
| 1774 |
+
// we map them to i18n keys to flip with the UI language.
|
| 1775 |
+
const oneLinerKey = ({ A: "grade.a", B: "grade.b", C: "grade.c", D: "grade.d", F: "grade.f" } as Record<string, StringKey>)[policy.grade] || "grade.c";
|
| 1776 |
+
const oneLiner = t(oneLinerKey);
|
| 1777 |
return (
|
| 1778 |
<div className={`relative text-left bg-[var(--card)] border ${selected ? "border-[var(--primary)] shadow-md" : "border-[var(--border)]"} rounded-xl p-4 hover:border-[var(--primary)] hover:shadow-md transition group`}>
|
| 1779 |
<label
|
|
|
|
| 1787 |
onChange={onToggleSelect}
|
| 1788 |
className="accent-[var(--primary)] w-3 h-3"
|
| 1789 |
/>
|
| 1790 |
+
{selected ? t("mp.selected") : t("mp.compare")}
|
| 1791 |
</label>
|
| 1792 |
+
{/* Card body is a div+role=button (NOT <button>) because it contains
|
| 1793 |
+
jargon "?" icons and a "src" pill which are themselves <button>s.
|
| 1794 |
+
HTML disallows button-in-button → hydration error. */}
|
| 1795 |
+
<div
|
| 1796 |
+
role="button"
|
| 1797 |
+
tabIndex={0}
|
| 1798 |
+
onClick={onOpen}
|
| 1799 |
+
onKeyDown={(e) => { if (e.key === "Enter" || e.key === " ") { e.preventDefault(); onOpen(); } }}
|
| 1800 |
+
className="w-full text-left cursor-pointer"
|
| 1801 |
+
>
|
| 1802 |
<div className="flex items-start gap-3 mb-3 pr-16">
|
| 1803 |
+
<InsurerLogo slug={policy.insurer_slug} name={policy.insurer_name} size={44} />
|
| 1804 |
<div className="flex-1 min-w-0">
|
| 1805 |
<div className="text-xs text-[var(--muted-foreground)] truncate">{policy.insurer_name}</div>
|
| 1806 |
<div className="font-semibold text-sm truncate group-hover:text-[var(--primary)] transition">{policy.policy_name}</div>
|
| 1807 |
</div>
|
| 1808 |
+
{/* Score badge ONLY when we have a profile — otherwise CTA pill */}
|
| 1809 |
+
{isPersonalized ? (
|
| 1810 |
+
<div className={`shrink-0 flex flex-col items-center rounded-lg overflow-hidden ${gradeColor(policy.grade)}`}>
|
| 1811 |
+
<div className="px-2 pt-0.5 text-[10px] font-semibold opacity-90 uppercase tracking-wide">{policy.grade}</div>
|
| 1812 |
+
<div className="px-2 pb-0.5 text-base font-bold leading-none">{policy.overall_score}<span className="text-[10px] font-normal opacity-80">/100</span></div>
|
| 1813 |
+
</div>
|
| 1814 |
+
) : (
|
| 1815 |
+
<div className="shrink-0 flex flex-col items-center justify-center rounded-lg overflow-hidden bg-[var(--muted)] border border-dashed border-[var(--border)] px-2 py-1.5 text-center" style={{ minWidth: 64 }}>
|
| 1816 |
+
<div className="text-[9px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)] leading-tight">{t("card.see_score_pill")}</div>
|
| 1817 |
+
<div className="text-[8px] text-[var(--muted-foreground)] leading-tight mt-0.5">{t("card.see_score_sub")}</div>
|
| 1818 |
+
</div>
|
| 1819 |
+
)}
|
| 1820 |
</div>
|
| 1821 |
+
<p className="text-xs text-[var(--muted-foreground)] mb-3 line-clamp-2">{isPersonalized ? oneLiner : t("card.score_locked_msg")}</p>
|
| 1822 |
<div className="grid grid-cols-2 gap-2 text-xs">
|
| 1823 |
+
<Stat label={<Jargon term="SI" uiLang={t("header.title").includes("स्व") ? "hi" : "en"}>{t("stat.sum_insured_up_to")}</Jargon>} value={siDisplay} />
|
| 1824 |
+
<Stat label={<Jargon term="PED" uiLang={t("header.title").includes("स्व") ? "hi" : "en"}>{t("stat.ped_waiting")}</Jargon>} value={policy.pre_existing_disease_waiting_months ? `${policy.pre_existing_disease_waiting_months} mo` : "—"} />
|
| 1825 |
+
<Stat label={<Jargon term="AYUSH" uiLang={t("header.title").includes("स्व") ? "hi" : "en"}>{t("stat.ayush")}</Jargon>} value={policy.ayush_coverage === true ? "Yes" : policy.ayush_coverage === false ? "No" : "—"} />
|
| 1826 |
+
<Stat label={t("stat.network")} value={policy.network_hospital_count ? `${(policy.network_hospital_count / 1000).toFixed(0)}K+` : "—"} />
|
| 1827 |
</div>
|
| 1828 |
+
</div>
|
| 1829 |
</div>
|
| 1830 |
);
|
| 1831 |
}
|
|
|
|
| 1918 |
);
|
| 1919 |
}
|
| 1920 |
|
| 1921 |
+
function Stat({ label, value, jargon, uiLang, sourceQuote }: { label: React.ReactNode; value: string; jargon?: keyof typeof GLOSSARY; uiLang?: UILang; sourceQuote?: string }) {
|
| 1922 |
+
const [showSrc, setShowSrc] = useState(false);
|
| 1923 |
return (
|
| 1924 |
+
<div className="relative">
|
| 1925 |
+
<div className="text-[10px] text-[var(--muted-foreground)] uppercase tracking-wide flex items-center gap-1">
|
| 1926 |
+
{jargon && uiLang ? <Jargon term={jargon} uiLang={uiLang}>{label}</Jargon> : <span>{label}</span>}
|
| 1927 |
+
{sourceQuote && (
|
| 1928 |
+
<button
|
| 1929 |
+
onClick={(e) => { e.stopPropagation(); setShowSrc(!showSrc); }}
|
| 1930 |
+
className="text-[8px] px-1 py-0.5 rounded border border-[var(--border)] text-[var(--muted-foreground)] hover:text-[var(--primary)] hover:border-[var(--primary)]"
|
| 1931 |
+
type="button"
|
| 1932 |
+
title={uiLang === "hi" ? "स्रोत देखें" : "View source"}
|
| 1933 |
+
>
|
| 1934 |
+
src
|
| 1935 |
+
</button>
|
| 1936 |
+
)}
|
| 1937 |
+
</div>
|
| 1938 |
<div className="text-xs font-semibold">{value}</div>
|
| 1939 |
+
{showSrc && sourceQuote && (
|
| 1940 |
+
<div className="absolute z-50 top-full mt-1 left-0 w-72 bg-[var(--card)] border border-[var(--border)] rounded-lg shadow-lg p-2.5 animate-fade-up">
|
| 1941 |
+
<div className="text-[10px] font-semibold text-[var(--muted-foreground)] mb-1 uppercase tracking-wide">{uiLang === "hi" ? "स्रोत (PDF से उद्धरण)" : "Source (PDF excerpt)"}</div>
|
| 1942 |
+
<div className="text-[11px] text-[var(--foreground)] leading-snug italic">“{sourceQuote}”</div>
|
| 1943 |
+
<button onClick={() => setShowSrc(false)} className="absolute top-1 right-1.5 text-[var(--muted-foreground)] hover:text-[var(--foreground)] text-xs">×</button>
|
| 1944 |
+
</div>
|
| 1945 |
+
)}
|
| 1946 |
</div>
|
| 1947 |
);
|
| 1948 |
}
|
|
|
|
| 2192 |
)}
|
| 2193 |
|
| 2194 |
<div>
|
| 2195 |
+
<h4 className="text-sm font-semibold mb-3">What this policy covers, in plain words</h4>
|
| 2196 |
+
<div className="grid grid-cols-2 gap-x-4 gap-y-3 text-xs">
|
| 2197 |
+
<Stat label={<Jargon term="SI" uiLang="en">Cover up to</Jargon>} value={siDisplay} />
|
| 2198 |
+
<Stat label="Who can buy + renew" value={(() => {
|
| 2199 |
+
const min = policy.min_entry_age;
|
| 2200 |
+
const max = policy.max_entry_age;
|
| 2201 |
+
const renew = policy.max_renewal_age;
|
| 2202 |
+
const minStr = min ? (min >= 30 && min <= 365 ? `${min} days` : `${min} yrs`) : null;
|
| 2203 |
+
const maxStr = max ? `${max} yrs` : null;
|
| 2204 |
+
const range = minStr && maxStr ? `${minStr} – ${maxStr}` : (minStr || maxStr || "Not stated");
|
| 2205 |
+
const renewStr = renew ? (renew >= 99 ? " · lifelong renewal" : ` · renews up to ${renew}`) : "";
|
| 2206 |
+
return range + renewStr;
|
| 2207 |
+
})()} />
|
| 2208 |
+
<Stat label="Wait before any claim" value={policy.initial_waiting_period_days ? `${policy.initial_waiting_period_days} days from start` : "Not stated"} />
|
| 2209 |
+
<Stat label={<Jargon term="PED" uiLang="en">Wait if you already had a condition</Jargon>} value={policy.pre_existing_disease_waiting_months ? `${policy.pre_existing_disease_waiting_months} months` : "Not stated"} />
|
| 2210 |
+
<Stat label="Maternity" value={policy.maternity_coverage === true ? (policy.maternity_waiting_months ? `Covered after ${policy.maternity_waiting_months}-month wait` : "Covered") : policy.maternity_coverage === false ? "Not covered" : "Check the wording"} />
|
| 2211 |
+
<Stat label={<Jargon term="CoPay" uiLang="en">Your share per claim</Jargon>} value={policy.copayment_pct != null ? (policy.copayment_pct === 0 ? "Insurer pays it all" : `You pay ${policy.copayment_pct}% of every bill`) : "Not stated"} />
|
| 2212 |
+
<Stat label={<Jargon term="NCB" uiLang="en">Reward for staying claim-free</Jargon>} value={policy.no_claim_bonus_pct ? `+${policy.no_claim_bonus_pct}% cover each claim-free year` : "Not stated"} />
|
| 2213 |
+
<Stat label={<Jargon term="Cashless" uiLang="en">Cashless at hospital</Jargon>} value={policy.cashless_treatment_supported === true ? `Yes · ${policy.network_hospital_count ? policy.network_hospital_count.toLocaleString() + "+ network hospitals" : "network published by insurer"}` : "Not supported"} />
|
| 2214 |
+
<Stat label={<Jargon term="AYUSH" uiLang="en">AYUSH (Ayurveda, Yoga…)</Jargon>} value={policy.ayush_coverage === true ? "Covered" : policy.ayush_coverage === false ? "Not covered" : "Check the wording"} />
|
| 2215 |
{policy.room_rent_capping && (
|
| 2216 |
+
<div className="col-span-2 pt-1 border-t border-[var(--border)]">
|
| 2217 |
+
<Stat label={<Jargon term="RoomRent" uiLang="en">Hospital room category</Jargon>} value={policy.room_rent_capping} />
|
|
|
|
| 2218 |
</div>
|
| 2219 |
)}
|
| 2220 |
</div>
|
frontend/src/lib/api.ts
CHANGED
|
@@ -262,12 +262,30 @@ export async function getInsurerReviews(slug: string): Promise<InsurerReviews> {
|
|
| 262 |
return resp.json();
|
| 263 |
}
|
| 264 |
|
| 265 |
-
export async function getMarketplace(): Promise<MarketplaceResponse> {
|
| 266 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 267 |
if (!resp.ok) throw new Error(`marketplace failed: ${resp.status}`);
|
| 268 |
return resp.json();
|
| 269 |
}
|
| 270 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 271 |
export type ProfileCompletenessResponse = {
|
| 272 |
completeness: number;
|
| 273 |
completeness_pct: number;
|
|
@@ -276,16 +294,27 @@ export type ProfileCompletenessResponse = {
|
|
| 276 |
is_personalized: boolean;
|
| 277 |
gate_threshold: number;
|
| 278 |
next_question_hint?: string | null;
|
|
|
|
|
|
|
| 279 |
};
|
| 280 |
|
| 281 |
export async function getProfileCompleteness(session_id?: string): Promise<ProfileCompletenessResponse> {
|
| 282 |
-
// Same relative-URL caveat as getCompare — build path as string
|
| 283 |
const qs = session_id ? `?session_id=${encodeURIComponent(session_id)}` : "";
|
| 284 |
const resp = await fetch(`${BACKEND_URL}/api/profile/completeness${qs}`);
|
| 285 |
if (!resp.ok) throw new Error(`profile completeness failed: ${resp.status}`);
|
| 286 |
return resp.json();
|
| 287 |
}
|
| 288 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 289 |
export async function getCompare(policy_ids: string[]): Promise<CompareResponse> {
|
| 290 |
// Build query string manually — URL constructor requires an absolute URL,
|
| 291 |
// but in production BACKEND_URL is "" (same-origin) which makes the path
|
|
|
|
| 262 |
return resp.json();
|
| 263 |
}
|
| 264 |
|
| 265 |
+
export async function getMarketplace(session_id?: string): Promise<MarketplaceResponse> {
|
| 266 |
+
// When session_id is passed AND its profile is complete enough, the backend
|
| 267 |
+
// re-scores every policy with the user's profile — cards reveal personalised
|
| 268 |
+
// grades. Without session_id, grades use the generic baseline.
|
| 269 |
+
const qs = session_id ? `?session_id=${encodeURIComponent(session_id)}` : "";
|
| 270 |
+
const resp = await fetch(`${BACKEND_URL}/api/policies/all${qs}`);
|
| 271 |
if (!resp.ok) throw new Error(`marketplace failed: ${resp.status}`);
|
| 272 |
return resp.json();
|
| 273 |
}
|
| 274 |
|
| 275 |
+
export type UserProfile = {
|
| 276 |
+
age?: number | null;
|
| 277 |
+
dependents?: string | null;
|
| 278 |
+
income_band?: string | null;
|
| 279 |
+
existing_cover_inr?: number | null;
|
| 280 |
+
primary_goal?: string | null;
|
| 281 |
+
location_tier?: string | null;
|
| 282 |
+
parents_to_insure?: boolean | null;
|
| 283 |
+
parents_age_max?: number | null;
|
| 284 |
+
parents_has_ped?: boolean | null;
|
| 285 |
+
health_conditions?: string[] | null;
|
| 286 |
+
budget_band?: string | null;
|
| 287 |
+
};
|
| 288 |
+
|
| 289 |
export type ProfileCompletenessResponse = {
|
| 290 |
completeness: number;
|
| 291 |
completeness_pct: number;
|
|
|
|
| 294 |
is_personalized: boolean;
|
| 295 |
gate_threshold: number;
|
| 296 |
next_question_hint?: string | null;
|
| 297 |
+
profile?: UserProfile;
|
| 298 |
+
session_id?: string | null;
|
| 299 |
};
|
| 300 |
|
| 301 |
export async function getProfileCompleteness(session_id?: string): Promise<ProfileCompletenessResponse> {
|
|
|
|
| 302 |
const qs = session_id ? `?session_id=${encodeURIComponent(session_id)}` : "";
|
| 303 |
const resp = await fetch(`${BACKEND_URL}/api/profile/completeness${qs}`);
|
| 304 |
if (!resp.ok) throw new Error(`profile completeness failed: ${resp.status}`);
|
| 305 |
return resp.json();
|
| 306 |
}
|
| 307 |
|
| 308 |
+
export async function postProfileUpdate(req: UserProfile & { session_id: string }): Promise<ProfileCompletenessResponse> {
|
| 309 |
+
const resp = await fetch(`${BACKEND_URL}/api/profile`, {
|
| 310 |
+
method: "POST",
|
| 311 |
+
headers: { "Content-Type": "application/json" },
|
| 312 |
+
body: JSON.stringify(req),
|
| 313 |
+
});
|
| 314 |
+
if (!resp.ok) throw new Error(`profile update failed: ${resp.status}`);
|
| 315 |
+
return resp.json();
|
| 316 |
+
}
|
| 317 |
+
|
| 318 |
export async function getCompare(policy_ids: string[]): Promise<CompareResponse> {
|
| 319 |
// Build query string manually — URL constructor requires an absolute URL,
|
| 320 |
// but in production BACKEND_URL is "" (same-origin) which makes the path
|
frontend/src/lib/i18n.ts
CHANGED
|
@@ -117,6 +117,17 @@ export const UI_STRINGS = {
|
|
| 117 |
"suggested.q2": "What is the waiting period for pre-existing diseases?",
|
| 118 |
"suggested.q3": "Does HDFC ERGO Optima Secure cover AYUSH?",
|
| 119 |
"suggested.q4": "What's the room rent cap on Care Supreme?",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
},
|
| 121 |
hi: {
|
| 122 |
"header.title": "स्वास्थ्य बीमा, अब ईमानदारी से।",
|
|
@@ -217,9 +228,78 @@ export const UI_STRINGS = {
|
|
| 217 |
"suggested.q2": "Pre-existing diseases की waiting period क्या है?",
|
| 218 |
"suggested.q3": "क्या HDFC ERGO Optima Secure में AYUSH cover है?",
|
| 219 |
"suggested.q4": "Care Supreme में room rent cap क्या है?",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 220 |
},
|
| 221 |
} as const;
|
| 222 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 223 |
export type StringKey = keyof typeof UI_STRINGS["en"];
|
| 224 |
|
| 225 |
export function translate(lang: UILang, key: StringKey, vars?: Record<string, string | number>): string {
|
|
|
|
| 117 |
"suggested.q2": "What is the waiting period for pre-existing diseases?",
|
| 118 |
"suggested.q3": "Does HDFC ERGO Optima Secure cover AYUSH?",
|
| 119 |
"suggested.q4": "What's the room rent cap on Care Supreme?",
|
| 120 |
+
|
| 121 |
+
// Grade one-liners (mirror backend/scorecard.py::grade_for)
|
| 122 |
+
"grade.a": "Strong all-rounder — solid pick for the buyer.",
|
| 123 |
+
"grade.b": "Good policy with a few notable gaps.",
|
| 124 |
+
"grade.c": "Decent baseline; check the trade-offs before signing.",
|
| 125 |
+
"grade.d": "Material concerns — only suitable for specific use-cases.",
|
| 126 |
+
"grade.f": "Significant gaps — alternative options are likely better.",
|
| 127 |
+
|
| 128 |
+
"card.see_score_pill": "See score",
|
| 129 |
+
"card.see_score_sub": "build profile",
|
| 130 |
+
"card.score_locked_msg": "Complete your profile and I'll score this policy for you.",
|
| 131 |
},
|
| 132 |
hi: {
|
| 133 |
"header.title": "स्वास्थ्य बीमा, अब ईमानदारी से।",
|
|
|
|
| 228 |
"suggested.q2": "Pre-existing diseases की waiting period क्या है?",
|
| 229 |
"suggested.q3": "क्या HDFC ERGO Optima Secure में AYUSH cover है?",
|
| 230 |
"suggested.q4": "Care Supreme में room rent cap क्या है?",
|
| 231 |
+
|
| 232 |
+
"grade.a": "मजबूत all-rounder — खरीदार के लिए ठोस विकल्प।",
|
| 233 |
+
"grade.b": "अच्छी policy, कुछ notable gaps के साथ।",
|
| 234 |
+
"grade.c": "ठीक-ठाक baseline; sign करने से पहले trade-offs जाँचें।",
|
| 235 |
+
"grade.d": "गंभीर concerns — सिर्फ specific use-case के लिए ठीक।",
|
| 236 |
+
"grade.f": "बड़े gaps — alternative options बेहतर होंगे।",
|
| 237 |
+
|
| 238 |
+
"card.see_score_pill": "स्कोर देखें",
|
| 239 |
+
"card.see_score_sub": "profile बनाएं",
|
| 240 |
+
"card.score_locked_msg": "अपनी profile पूरी करें — मैं इस policy को आपके लिए score करूंगा।",
|
| 241 |
},
|
| 242 |
} as const;
|
| 243 |
|
| 244 |
+
// Glossary — plain-English/Hindi explanations of insurance jargon.
|
| 245 |
+
// Used by the <Jargon> wrapper component to render an info-icon popover
|
| 246 |
+
// the user clicks for a 1-2 line explanation + everyday example.
|
| 247 |
+
export const GLOSSARY: Record<string, { en: { title: string; body: string }; hi: { title: string; body: string } }> = {
|
| 248 |
+
PED: {
|
| 249 |
+
en: { title: "Pre-Existing Disease (PED)", body: "A health condition you already have when you buy the policy — diabetes, BP, thyroid, anything chronic. Most policies don't cover it for the first 24-48 months. Be honest about yours: hiding it gets your claim denied later." },
|
| 250 |
+
hi: { title: "Pre-Existing Disease (पहले से चली आ रही बीमारी)", body: "जो बीमारी आपको policy खरीदते समय पहले से है — diabetes, BP, थायरॉइड etc. ज़्यादातर policies शुरू के 24-48 महीनों में cover नहीं करतीं। ईमानदारी से बताइए, छिपाने से claim बाद में reject हो जाता है।" },
|
| 251 |
+
},
|
| 252 |
+
AYUSH: {
|
| 253 |
+
en: { title: "AYUSH coverage", body: "Whether the policy pays for Ayurveda, Yoga, Unani, Siddha, and Homeopathy treatments at recognised hospitals. If you use these traditional systems, this matters; if you only use allopathic care, less so." },
|
| 254 |
+
hi: { title: "AYUSH कवर", body: "क्या policy आयुर्वेद, योग, यूनानी, सिद्ध, और होम्योपैथी treatments को cover करती है। अगर आप इन पारंपरिक चिकित्सा का उपयोग करते हैं, यह ज़रूरी है।" },
|
| 255 |
+
},
|
| 256 |
+
NCB: {
|
| 257 |
+
en: { title: "No-Claim Bonus (NCB)", body: "Reward for not claiming in a year — your sum insured goes up (typically 25-50%) without raising your premium. Bigger NCB compounds over years if you stay claim-free." },
|
| 258 |
+
hi: { title: "No-Claim Bonus (NCB)", body: "बिना claim किए साल पूरा करने का इनाम — sum insured बढ़ जाता है (आम तौर पर 25-50%) बिना premium बढ़ाए।" },
|
| 259 |
+
},
|
| 260 |
+
SI: {
|
| 261 |
+
en: { title: "Sum Insured (SI)", body: "The maximum amount the insurer pays in a policy year. For a single hospitalisation in a metro, ₹10L is the floor; ₹20L+ is safer if you have parents or family to cover." },
|
| 262 |
+
hi: { title: "Sum Insured (बीमित राशि)", body: "एक policy साल में बीमाकर्ता अधिकतम कितना देगा। Metro में एक hospitalisation के लिए ₹10L न्यूनतम; ₹20L+ माता-पिता या परिवार के लिए सुरक्षित।" },
|
| 263 |
+
},
|
| 264 |
+
CSR: {
|
| 265 |
+
en: { title: "Claim Settlement Ratio (CSR)", body: "Of every 100 claims the insurer received, how many they paid. IRDAI publishes this annually. <90% = caution; 95%+ = excellent. Single most predictive metric of 'will my claim get paid'." },
|
| 266 |
+
hi: { title: "Claim Settlement Ratio", body: "100 claims में से बीमाकर्ता कितने pay करता है। IRDAI सालाना publish करता है। <90% = सावधान; 95%+ = बढ़िया।" },
|
| 267 |
+
},
|
| 268 |
+
Cashless: {
|
| 269 |
+
en: { title: "Cashless treatment", body: "You don't pay the hospital — the insurer pays them directly via a pre-authorisation. Only works at network hospitals. Without it, you pay upfront and file for reimbursement later." },
|
| 270 |
+
hi: { title: "Cashless इलाज", body: "आप hospital को सीधे payment नहीं करते — बीमाकर्ता pre-authorisation से payment करता है। सिर्फ network hospitals पर काम करता है।" },
|
| 271 |
+
},
|
| 272 |
+
TAT: {
|
| 273 |
+
en: { title: "Cashless TAT (Turnaround Time)", body: "How fast the insurer approves your cashless pre-auth at the hospital desk. ≤2 hours = gold standard; ≥24h = your family pays cash first and waits for reimbursement." },
|
| 274 |
+
hi: { title: "Cashless TAT", body: "बीमाकर्ता hospital में cashless approval कितनी जल्दी देता है। ≤2 घंटे = बढ़िया; ≥24 घंटे = परिवार को पहले cash देना पड़ेगा।" },
|
| 275 |
+
},
|
| 276 |
+
UIN: {
|
| 277 |
+
en: { title: "Unique Identification Number (UIN)", body: "IRDAI-assigned ID for each policy product — proves it's a regulator-approved plan. You can search a UIN on irdai.gov.in to verify the policy exists and see its filed terms." },
|
| 278 |
+
hi: { title: "UIN (Unique ID)", body: "IRDAI द्वारा हर policy को दिया गया ID — यह साबित करता है कि policy regulator से approved है।" },
|
| 279 |
+
},
|
| 280 |
+
CoPay: {
|
| 281 |
+
en: { title: "Co-payment", body: "The % of every claim YOU pay out of pocket. 20% co-pay on a ₹5L hospital bill = you pay ₹1L; insurer pays ₹4L. Lower premium upfront, but bigger surprise at claim time." },
|
| 282 |
+
hi: { title: "Co-payment", body: "हर claim का जो % आप अपनी जेब से देते हैं। ₹5L hospital bill पर 20% co-pay = आप ₹1L दें, बीमाकर्ता ₹4L।" },
|
| 283 |
+
},
|
| 284 |
+
Deductible: {
|
| 285 |
+
en: { title: "Deductible", body: "Fixed rupee amount you pay BEFORE the insurer starts paying. ₹50k deductible = first ₹50k of every claim is on you. Reduces premium significantly but adds out-of-pocket risk." },
|
| 286 |
+
hi: { title: "Deductible", body: "वो fixed amount जो आप बीमाकर्ता के payment शुरू करने से पहले देते हैं।" },
|
| 287 |
+
},
|
| 288 |
+
Floater: {
|
| 289 |
+
en: { title: "Family Floater", body: "One sum insured shared by everyone in the family. ₹15L floater for 4 people = anyone (or everyone) can use up to ₹15L combined. Cheaper than individual policies if claims are rare." },
|
| 290 |
+
hi: { title: "Family Floater", body: "एक sum insured पूरे परिवार के लिए share होती है। 4 लोगों के लिए ₹15L floater = कोई भी ₹15L तक use कर सकता है।" },
|
| 291 |
+
},
|
| 292 |
+
SubLimit: {
|
| 293 |
+
en: { title: "Sub-limit", body: "A cap WITHIN your sum insured for a specific treatment — e.g., room rent capped at 1% of SI, or maternity capped at ₹50k. Watch for these — they're the #1 reason actual reimbursement < bill." },
|
| 294 |
+
hi: { title: "Sub-limit", body: "Sum insured के अंदर कुछ खास treatments पर एक सीमा — जैसे room rent SI का 1%, या maternity ₹50k तक। यह सबसे बड़ी वजह है कि real payment bill से कम होता है।" },
|
| 295 |
+
},
|
| 296 |
+
RoomRent: {
|
| 297 |
+
en: { title: "Room rent capping", body: "Some policies pay only up to a % of SI per day of hospital room — e.g., 1% of ₹5L = ₹5k/day. Choose a more expensive room and ALL your other charges get scaled down proportionally. Look for 'No room rent limit'." },
|
| 298 |
+
hi: { title: "Room rent capping", body: "कई policies hospital room के लिए सिर्फ SI का % देती हैं — जैसे 1% का ₹5L = ₹5k/दिन। महंगा कमरा लें तो सभी अन्य charges भी scale down हो जाते हैं।" },
|
| 299 |
+
},
|
| 300 |
+
};
|
| 301 |
+
|
| 302 |
+
|
| 303 |
export type StringKey = keyof typeof UI_STRINGS["en"];
|
| 304 |
|
| 305 |
export function translate(lang: UILang, key: StringKey, vars?: Record<string, string | number>): string {
|
kb/AUDIT_TRAIL.md
CHANGED
|
@@ -173,3 +173,22 @@ python tools/verify_urls.py
|
|
| 173 |
```
|
| 174 |
|
| 175 |
Total cost from cold: <$2 (BGE local + ~80 LLM extractions). Total wall-time: ~30-40 min on a modern laptop.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
```
|
| 174 |
|
| 175 |
Total cost from cold: <$2 (BGE local + ~80 LLM extractions). Total wall-time: ~30-40 min on a modern laptop.
|
| 176 |
+
|
| 177 |
+
## Batch — 2026-05-14
|
| 178 |
+
|
| 179 |
+
Three back-to-back curation passes brought the `data/policy_facts/` directory to **102 policies** with verbatim-quote provenance. Mirrored into `kb/policies/` today.
|
| 180 |
+
|
| 181 |
+
- **Batch 1 — human-research curation (22 policies).** Manual + agent-assisted verbatim extraction from local PDFs in `rag/corpus/` for the 22 highest-priority wordings. Schema: `{value, unit?, source_pdf_path, source_quote}` per field with a `_meta` block (`curated_at`, `primary_source_pdf`, `completeness_pct`, `notes`). Average completeness ≈83.5%. Recorded in [`data/policy_facts/_curation_report.md`](../data/policy_facts/_curation_report.md).
|
| 182 |
+
- **Batch 2 — regex + pdfplumber pass (43 policies).** Automated pattern extraction across the remaining retail health policy PDFs. Each field carries the same provenance triple; numeric values were validated against the verbatim quote before being written.
|
| 183 |
+
- **Batch 3 — group / specialty policies (37 policies).** `tools/curate_remaining.py` extended coverage to group, top-up, critical-illness, personal-accident, and specialty riders. Marked with `policy_type` (e.g. `hospital_cash`) where the wording diverged from indemnity templates.
|
| 184 |
+
|
| 185 |
+
**Verification.** `tools/info_source_map.py` produced [`eval/info_source_map.json`](../eval/info_source_map.json) and [`data/information_source_map.md`](../data/information_source_map.md) with verdict counts: **✅ 798 / ⚠️ 321 / ❌ 0 / ⏳ 1385.** No ❌ (broken-link) verdicts remain; the ⏳ tail tracks deferred verifications. The ✅:⚠️ ratio is the canonical KPI for source-grounding quality on this dataset.
|
| 186 |
+
|
| 187 |
+
**UI / runtime changes shipped today:**
|
| 188 |
+
|
| 189 |
+
- **Profile Builder tab** — guided 8-question discovery flow (`docs/discovery-script.md`). Profile-completeness gate (≥0.6) controls whether the personalised scorecard renders.
|
| 190 |
+
- **Score gate on policy cards** — recommendations suppress the per-buyer letter grade until completeness ≥ 0.6 (universal IRDAI metrics like CSR and complaints/10K still render, since they're insurer-level).
|
| 191 |
+
- **EN ↔ हिं i18n** — full bilingual UI with the 13-term jargon glossary at `frontend/src/lib/i18n.ts` (mirrored to `kb/methodology/glossary.json`).
|
| 192 |
+
- **Scorecard methodology expander** — every grade opens a transparency panel sourced from `METHODOLOGY_BLUEPRINT` (mirrored to `kb/methodology/scorecard.json`).
|
| 193 |
+
- **Source-quote popovers** — hovering a fact on a policy card surfaces the verbatim PDF quote that backed it.
|
| 194 |
+
- **Cerebras Qwen-3-235B wired as primary judge** — replaces the previous Groq Llama-3.1 grader for the eval pipeline; legacy provider retained as fallback.
|
kb/INDEX.md
CHANGED
|
@@ -1,55 +1,153 @@
|
|
| 1 |
-
# Knowledge Base —
|
| 2 |
|
| 3 |
-
|
| 4 |
|
| 5 |
-
|
| 6 |
-
(citations, scorecards, comparison views) traces back to one of these files.
|
| 7 |
|
| 8 |
-
##
|
| 9 |
-
|
| 10 |
-
```
|
| 11 |
-
kb/
|
| 12 |
-
├── INDEX.md (this file)
|
| 13 |
-
├── policies/<policy_id>.md (11 files — one per extracted policy)
|
| 14 |
-
├── research/
|
| 15 |
-
│ ├── corpus_acquisition.md (how we got 75 PDFs)
|
| 16 |
-
│ ├── url_verification.md (HEAD-check results)
|
| 17 |
-
│ └── verified_insurers.md (10 insurers, home URLs)
|
| 18 |
-
└── calculations/
|
| 19 |
-
├── scorecard_results.md (all scores)
|
| 20 |
-
├── eval_results.md (gold Q&A grader output)
|
| 21 |
-
└── extraction_quality_audit.md (per-field completeness)
|
| 22 |
-
```
|
| 23 |
|
| 24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
|
| 26 |
-
|
| 27 |
-
- **All policy KB sheets:** [`policies/`](policies/)
|
| 28 |
-
- **Eval run results:** [`calculations/eval_results.md`](calculations/eval_results.md)
|
| 29 |
-
- **Extraction quality:** [`calculations/extraction_quality_audit.md`](calculations/extraction_quality_audit.md)
|
| 30 |
-
- **URL verification:** [`research/url_verification.md`](research/url_verification.md)
|
| 31 |
-
- **Corpus acquisition:** [`research/corpus_acquisition.md`](research/corpus_acquisition.md)
|
| 32 |
|
| 33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
|
| 35 |
-
|
| 36 |
-
- **[E]** Extracted directly from a source PDF
|
| 37 |
-
- **[E?]** Extractable in the schema but absent / null in this specific source
|
| 38 |
-
- **[C]** Computed from extracted fields (e.g. scorecard score)
|
| 39 |
-
- **[I]** Implied / canonicalised by us (e.g. insurer slug)
|
| 40 |
-
- **[V]** Externally verified (HEAD-check, URL probe)
|
| 41 |
|
| 42 |
-
|
| 43 |
|
| 44 |
-
|
| 45 |
-
- Insurers covered: **4**
|
| 46 |
-
- Grade distribution: {'B': 5, 'C': 6}
|
| 47 |
|
| 48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
|
| 50 |
-
|
| 51 |
-
human-readable so an interviewer or auditor can open `kb/policies/<some-id>.md`
|
| 52 |
-
and read every data point with its source — without running the bot.
|
| 53 |
|
| 54 |
-
|
| 55 |
-
traceable to one of these files (see `backend/faithfulness.py`).
|
|
|
|
| 1 |
+
# Knowledge Base — Insurance Sales Bot
|
| 2 |
|
| 3 |
+
_Last synced: 2026-05-14._
|
| 4 |
|
| 5 |
+
Canonical knowledge base for the Insurance Sales Bot. Every user-facing answer, scorecard, and comparison surface must trace back to a file in this directory.
|
|
|
|
| 6 |
|
| 7 |
+
## Policies (102)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
+
| Insurer | Policy | UIN | Completeness | KB path |
|
| 10 |
+
| --- | --- | --- | --- | --- |
|
| 11 |
+
| Aditya Birla Health Insurance | Activ Health Individual | `ADIHLIP24102V052324` | 32% | [`policies/aditya-birla__activ-health-individual__wordings.md`](policies/aditya-birla__activ-health-individual__wordings.md) |
|
| 12 |
+
| Aditya Birla Health Insurance | Activ Secure Cancer Secure | `ADIHLIP18076V011718` | 18% | [`policies/aditya-birla__activ-secure-cancer-secure__brochure.md`](policies/aditya-birla__activ-secure-cancer-secure__brochure.md) |
|
| 13 |
+
| Aditya Birla Health Insurance | Activ Secure Personal Accident Cancer Secure | `ADIHLIP18076V011718` | 23% | [`policies/aditya-birla__activ-secure-personal-accident-cancer-secure__wordings.md`](policies/aditya-birla__activ-secure-personal-accident-cancer-secure__wordings.md) |
|
| 14 |
+
| Aditya Birla Health Insurance | Aditya Birla Activ Assure Diamond | `ADIHLIP18077V011718` | 82% | [`policies/aditya-birla__activ-assure-diamond.md`](policies/aditya-birla__activ-assure-diamond.md) |
|
| 15 |
+
| Aditya Birla Health Insurance | Aditya Birla Activ Health (Platinum Enhanced / Essential) | `ADIHLIP24102V052324` | 70% | [`policies/aditya-birla__activ-health.md`](policies/aditya-birla__activ-health.md) |
|
| 16 |
+
| Aditya Birla Health Insurance | Aditya Birla Activ One (Activ Health latest variant) | `ADIHLIP24102V052324` | 78% | [`policies/aditya-birla__activ-one.md`](policies/aditya-birla__activ-one.md) |
|
| 17 |
+
| Aditya Birla Health Insurance | Group Activ Health | `ADIHLGP26041V052526` | 27% | [`policies/aditya-birla__group-activ-health__wordings.md`](policies/aditya-birla__group-activ-health__wordings.md) |
|
| 18 |
+
| Bajaj Allianz General Insurance | Bajaj Allianz Comprehensive Care Plan | `BAJHLIP15002V011415` | 60% | [`policies/bajaj-allianz__comprehensive-care-plan.md`](policies/bajaj-allianz__comprehensive-care-plan.md) |
|
| 19 |
+
| Bajaj Allianz General Insurance | Bajaj Allianz Extra Care Plus (Super Top-up) | `BAJHLIP23069V032223` | 82% | [`policies/bajaj-allianz__extra-care-plus.md`](policies/bajaj-allianz__extra-care-plus.md) |
|
| 20 |
+
| Bajaj Allianz General Insurance | Bajaj Allianz Global Health Care | `BAJHLIP23209V022223` | 65% | [`policies/bajaj-allianz__global-health-care.md`](policies/bajaj-allianz__global-health-care.md) |
|
| 21 |
+
| Bajaj Allianz General Insurance | Bajaj Allianz Health Guard (Silver / Gold / Platinum) | `BAJHLIP25035V072425` | 70% | [`policies/bajaj-allianz__health-guard.md`](policies/bajaj-allianz__health-guard.md) |
|
| 22 |
+
| Bajaj Allianz General Insurance | Bajaj Allianz Health Guard Gold (Individual) | `BAJHLIP21185V032021` | 82% | [`policies/bajaj-allianz__health-guard-gold.md`](policies/bajaj-allianz__health-guard-gold.md) |
|
| 23 |
+
| Bajaj Allianz General Insurance | Bajaj Allianz Silver Health (Senior Citizen) | `BAJHLIP23213V052223` | 65% | [`policies/bajaj-allianz__silver-health.md`](policies/bajaj-allianz__silver-health.md) |
|
| 24 |
+
| Bajaj Allianz General Insurance | Bajaj Allianz Tax Gain | `BAJHLIP21184V022021` | 55% | [`policies/bajaj-allianz__tax-gain.md`](policies/bajaj-allianz__tax-gain.md) |
|
| 25 |
+
| Bajaj Allianz General Insurance | Criti Care | `BAJHLIP21273V012021` | 9% | [`policies/bajaj-allianz__criti-care__wordings.md`](policies/bajaj-allianz__criti-care__wordings.md) |
|
| 26 |
+
| Bajaj Allianz General Insurance | Group Health Guard Gold | `BAJHLGP21181V022021` | 32% | [`policies/bajaj-allianz__group-health-guard-gold__wordings.md`](policies/bajaj-allianz__group-health-guard-gold__wordings.md) |
|
| 27 |
+
| Bajaj Allianz General Insurance | Group Personal Accident | `—` | 5% | [`policies/bajaj-allianz__group-personal-accident__wordings.md`](policies/bajaj-allianz__group-personal-accident__wordings.md) |
|
| 28 |
+
| Bajaj Allianz General Insurance | Health Guard Gold Individual | `BAJHLIP21185V032021` | 41% | [`policies/bajaj-allianz__health-guard-gold-individual__wordings.md`](policies/bajaj-allianz__health-guard-gold-individual__wordings.md) |
|
| 29 |
+
| Care Health Insurance | Care Advantage Add Ons Protect Plus Care Shield | `CHIHLIP26049V042526` | 32% | [`policies/care-health__care-advantage-add-ons-protect-plus-care-shield__brochure.md`](policies/care-health__care-advantage-add-ons-protect-plus-care-shield__brochure.md) |
|
| 30 |
+
| Care Health Insurance | Care Health Care Advantage | `CHIHLIP26049V042526` | 80% | [`policies/care-health__care-advantage.md`](policies/care-health__care-advantage.md) |
|
| 31 |
+
| Care Health Insurance | Care Health Care Classic | `CHIHLIP22071V012122` | 82% | [`policies/care-health__care-classic.md`](policies/care-health__care-classic.md) |
|
| 32 |
+
| Care Health Insurance | Care Health Care Senior (for Senior Citizens) | `RHIHLIP21017V052021` | 92% | [`policies/care-health__care-senior.md`](policies/care-health__care-senior.md) |
|
| 33 |
+
| Care Health Insurance | Care Health Care Supreme | `CHIHLIP23128V012223` | 82% | [`policies/care-health__care-supreme.md`](policies/care-health__care-supreme.md) |
|
| 34 |
+
| Care Health Insurance | Care Health Care Supreme Enhance (Top-up) | `CHIHLIP25036V012425` | 60% | [`policies/care-health__care-supreme-enhance.md`](policies/care-health__care-supreme-enhance.md) |
|
| 35 |
+
| Care Health Insurance | Care Health Ultimate Care | `CHIHLIP25044V012425` | 60% | [`policies/care-health__ultimate-care.md`](policies/care-health__ultimate-care.md) |
|
| 36 |
+
| Care Health Insurance | Care Heart | `RHIHLIP19066V011819` | 36% | [`policies/care-health__care-heart__brochure.md`](policies/care-health__care-heart__brochure.md) |
|
| 37 |
+
| Care Health Insurance | Supreme Enhance | `CHIHLIP25036V012425` | 36% | [`policies/care-health__supreme-enhance__brochure.md`](policies/care-health__supreme-enhance__brochure.md) |
|
| 38 |
+
| HDFC ERGO General Insurance | Energy Diabetes Hypertension | `—` | 18% | [`policies/hdfc-ergo__energy-diabetes-hypertension__wordings.md`](policies/hdfc-ergo__energy-diabetes-hypertension__wordings.md) |
|
| 39 |
+
| HDFC ERGO General Insurance | Group Health Insurance | `—` | 32% | [`policies/hdfc-ergo__group-health-insurance__wordings.md`](policies/hdfc-ergo__group-health-insurance__wordings.md) |
|
| 40 |
+
| HDFC ERGO General Insurance | HDFC ERGO Energy (Diabetes / Hypertension) | `HDFHLIP26048V052526` | 60% | [`policies/hdfc-ergo__energy.md`](policies/hdfc-ergo__energy.md) |
|
| 41 |
+
| HDFC ERGO General Insurance | HDFC ERGO Optima Enhance (Top-up) | `—` | 55% | [`policies/hdfc-ergo__optima-enhance.md`](policies/hdfc-ergo__optima-enhance.md) |
|
| 42 |
+
| HDFC ERGO General Insurance | HDFC ERGO Optima Plus | `HDHHLIP21336V022021` | 55% | [`policies/hdfc-ergo__optima-plus.md`](policies/hdfc-ergo__optima-plus.md) |
|
| 43 |
+
| HDFC ERGO General Insurance | HDFC ERGO Optima Restore | `HDHHLIP21322V062021` | 88% | [`policies/hdfc-ergo__optima-restore.md`](policies/hdfc-ergo__optima-restore.md) |
|
| 44 |
+
| HDFC ERGO General Insurance | HDFC ERGO Optima Secure (Older / Legacy Variant) | `HDFHLIP21016V012122` | 65% | [`policies/hdfc-ergo__optima-secure-older-variant.md`](policies/hdfc-ergo__optima-secure-older-variant.md) |
|
| 45 |
+
| HDFC ERGO General Insurance | HDFC ERGO Total Health Plan | `HDHHLIP21317V032021` | 65% | [`policies/hdfc-ergo__total-health-plan.md`](policies/hdfc-ergo__total-health-plan.md) |
|
| 46 |
+
| HDFC ERGO General Insurance | HDFC ERGO my:Optima Secure | `HDFHLIP25041V062425` | 85% | [`policies/hdfc-ergo__optima-secure.md`](policies/hdfc-ergo__optima-secure.md) |
|
| 47 |
+
| HDFC ERGO General Insurance | HDFC ERGO my:health Medisure Prime | `—` | 60% | [`policies/hdfc-ergo__my-health-medisure-prime.md`](policies/hdfc-ergo__my-health-medisure-prime.md) |
|
| 48 |
+
| HDFC ERGO General Insurance | HDFC ERGO my:health Sampoorna Suraksha | `HDFHLIP21005V022122` | 60% | [`policies/hdfc-ergo__my-health-sampoorna-suraksha.md`](policies/hdfc-ergo__my-health-sampoorna-suraksha.md) |
|
| 49 |
+
| HDFC ERGO General Insurance | HDFC ERGO my:health Suraksha | `HDFHLIP24079V072324` | 75% | [`policies/hdfc-ergo__my-health-suraksha.md`](policies/hdfc-ergo__my-health-suraksha.md) |
|
| 50 |
+
| HDFC ERGO General Insurance | HDFC ERGO my:health Women Suraksha | `HDFHLIP22142V032122` | 55% | [`policies/hdfc-ergo__my-health-women-suraksha.md`](policies/hdfc-ergo__my-health-women-suraksha.md) |
|
| 51 |
+
| HDFC ERGO General Insurance | My Optima Secure | `—` | 27% | [`policies/hdfc-ergo__my-optima-secure__wordings.md`](policies/hdfc-ergo__my-optima-secure__wordings.md) |
|
| 52 |
+
| HDFC ERGO General Insurance | My Optima Secure Older Variant | `—` | 36% | [`policies/hdfc-ergo__my-optima-secure-older-variant__wordings.md`](policies/hdfc-ergo__my-optima-secure-older-variant__wordings.md) |
|
| 53 |
+
| ICICI Lombard General Insurance | Complete Health Insurance Health Shield | `—` | 41% | [`policies/icici-lombard__complete-health-insurance-health-shield__wordings.md`](policies/icici-lombard__complete-health-insurance-health-shield__wordings.md) |
|
| 54 |
+
| ICICI Lombard General Insurance | Complete Health Insurance Umbrella | `ICIHLIP23144V072223` | 41% | [`policies/icici-lombard__complete-health-insurance-umbrella__wordings.md`](policies/icici-lombard__complete-health-insurance-umbrella__wordings.md) |
|
| 55 |
+
| ICICI Lombard General Insurance | Health Booster Top Up | `ICIHLIP22100V032122` | 27% | [`policies/icici-lombard__health-booster-top-up__wordings.md`](policies/icici-lombard__health-booster-top-up__wordings.md) |
|
| 56 |
+
| ICICI Lombard General Insurance | Health Shield 360 Retail | `ICIHLIP23165V012223` | 27% | [`policies/icici-lombard__health-shield-360-retail__wordings.md`](policies/icici-lombard__health-shield-360-retail__wordings.md) |
|
| 57 |
+
| ICICI Lombard General Insurance | Health Shield 360 Retail | `—` | 36% | [`policies/icici-lombard__health-shield-360-retail__cis.md`](policies/icici-lombard__health-shield-360-retail__cis.md) |
|
| 58 |
+
| ICICI Lombard General Insurance | ICICI Lombard Arogya Sanjeevani (Standard) | `ICIHLIP20178V011920` | 75% | [`policies/icici-lombard__arogya-sanjeevani.md`](policies/icici-lombard__arogya-sanjeevani.md) |
|
| 59 |
+
| ICICI Lombard General Insurance | ICICI Lombard Complete Health Insurance (Health Shield) | `ICIHLIP22096V062122` | 90% | [`policies/icici-lombard__complete-health-insurance.md`](policies/icici-lombard__complete-health-insurance.md) |
|
| 60 |
+
| ICICI Lombard General Insurance | ICICI Lombard Complete Health Insurance — Umbrella | `ICIHLIP23144V072223` | 75% | [`policies/icici-lombard__complete-health-umbrella.md`](policies/icici-lombard__complete-health-umbrella.md) |
|
| 61 |
+
| ICICI Lombard General Insurance | ICICI Lombard Elevate | `ICIHLIP25048V042425` | 85% | [`policies/icici-lombard__elevate.md`](policies/icici-lombard__elevate.md) |
|
| 62 |
+
| ICICI Lombard General Insurance | ICICI Lombard Health Advantedge | `ICIHLIP24182V042324` | 75% | [`policies/icici-lombard__health-advantedge.md`](policies/icici-lombard__health-advantedge.md) |
|
| 63 |
+
| ICICI Lombard General Insurance | ICICI Lombard Health Booster (Top-up) | `ICIHLIP22100V032122` | 60% | [`policies/icici-lombard__health-booster.md`](policies/icici-lombard__health-booster.md) |
|
| 64 |
+
| ICICI Lombard General Insurance | ICICI Lombard Health Elite Plus | `ICIHLIP21383V052021` | 70% | [`policies/icici-lombard__health-elite-plus.md`](policies/icici-lombard__health-elite-plus.md) |
|
| 65 |
+
| ICICI Lombard General Insurance | ICICI Lombard Health Shield 360 (Retail) | `ICIHLIP23165V012223` | 75% | [`policies/icici-lombard__health-shield-360.md`](policies/icici-lombard__health-shield-360.md) |
|
| 66 |
+
| ManipalCigna Health Insurance | ManipalCigna ProHealth Prime (Premier variant) | `MCIHLIP24011V072324` | 85% | [`policies/manipalcigna__prohealth-prime.md`](policies/manipalcigna__prohealth-prime.md) |
|
| 67 |
+
| ManipalCigna Health Insurance | ManipalCigna ProHealth Protect (Protect plan variant) | `MCIHLIP24011V072324` | 82% | [`policies/manipalcigna__prohealth-protect.md`](policies/manipalcigna__prohealth-protect.md) |
|
| 68 |
+
| ManipalCigna Health Insurance | ManipalCigna ProHealth Select | `—` | 75% | [`policies/manipalcigna__prohealth-select.md`](policies/manipalcigna__prohealth-select.md) |
|
| 69 |
+
| ManipalCigna Health Insurance | ManipalCigna Sarvah Param | `—` | 55% | [`policies/manipalcigna__sarvah-param.md`](policies/manipalcigna__sarvah-param.md) |
|
| 70 |
+
| ManipalCigna Health Insurance | Prohealth Insurance All Variants | `—` | 50% | [`policies/manipalcigna__prohealth-insurance-all-variants__wordings.md`](policies/manipalcigna__prohealth-insurance-all-variants__wordings.md) |
|
| 71 |
+
| Niva Bupa Health Insurance | Health Companion V2022 | `NBHHLIP24115V072324` | 41% | [`policies/niva-bupa__health-companion-v2022__brochure.md`](policies/niva-bupa__health-companion-v2022__brochure.md) |
|
| 72 |
+
| Niva Bupa Health Insurance | Niva Bupa Aspire | `NBHHLIP26049V022526` | 65% | [`policies/niva-bupa__aspire.md`](policies/niva-bupa__aspire.md) |
|
| 73 |
+
| Niva Bupa Health Insurance | Niva Bupa Health Companion | `MAXHLIP21509V042021` | 78% | [`policies/niva-bupa__health-companion.md`](policies/niva-bupa__health-companion.md) |
|
| 74 |
+
| Niva Bupa Health Insurance | Niva Bupa Health Plus (Top-up) | `NBHHLIP24135V012324` | 65% | [`policies/niva-bupa__health-plus-top-up.md`](policies/niva-bupa__health-plus-top-up.md) |
|
| 75 |
+
| Niva Bupa Health Insurance | Niva Bupa Health Premia | `MAXHLIP21176V022021` | 65% | [`policies/niva-bupa__health-premia.md`](policies/niva-bupa__health-premia.md) |
|
| 76 |
+
| Niva Bupa Health Insurance | Niva Bupa ReAssure 2.0 | `NBHHLIP26042V022526` | 85% | [`policies/niva-bupa__reassure-2.md`](policies/niva-bupa__reassure-2.md) |
|
| 77 |
+
| Niva Bupa Health Insurance | Niva Bupa ReAssure 3.0 | `NBHHLIP26047V012526` | 70% | [`policies/niva-bupa__reassure-3.md`](policies/niva-bupa__reassure-3.md) |
|
| 78 |
+
| Niva Bupa Health Insurance | Niva Bupa Rise | `NBHHLIP25041V012425` | 60% | [`policies/niva-bupa__rise.md`](policies/niva-bupa__rise.md) |
|
| 79 |
+
| Niva Bupa Health Insurance | Niva Bupa Saral Suraksha Bima (Standard) | `NBHPAIP22153V012122` | 55% | [`policies/niva-bupa__saral-suraksha.md`](policies/niva-bupa__saral-suraksha.md) |
|
| 80 |
+
| Niva Bupa Health Insurance | Niva Bupa Senior First | `MAXHLIP21575V012021` | 85% | [`policies/niva-bupa__senior-first.md`](policies/niva-bupa__senior-first.md) |
|
| 81 |
+
| Niva Bupa Health Insurance | Reassure 2 0 | `NBHHLIP26042V022526` | 18% | [`policies/niva-bupa__reassure-2-0__wordings.md`](policies/niva-bupa__reassure-2-0__wordings.md) |
|
| 82 |
+
| Niva Bupa Health Insurance | Reassure 3 0 | `NBHHLIP26047V012526` | 23% | [`policies/niva-bupa__reassure-3-0__wordings.md`](policies/niva-bupa__reassure-3-0__wordings.md) |
|
| 83 |
+
| Niva Bupa Health Insurance | Saral Suraksha Bima | `NBHPAIP22153V012122` | 23% | [`policies/niva-bupa__saral-suraksha-bima__wordings.md`](policies/niva-bupa__saral-suraksha-bima__wordings.md) |
|
| 84 |
+
| Star Health and Allied Insurance | Star Assure Insurance Policy | `SHAHLIP26048V032526` | 55% | [`policies/star-health__star-assure.md`](policies/star-health__star-assure.md) |
|
| 85 |
+
| Star Health and Allied Insurance | Star Cancer Care Platinum | `—` | 41% | [`policies/star-health__star-cancer-care-platinum__wordings.md`](policies/star-health__star-cancer-care-platinum__wordings.md) |
|
| 86 |
+
| Star Health and Allied Insurance | Star Cardiac Care Insurance | `SHAHLIP22032V052122` | 65% | [`policies/star-health__star-cardiac-care.md`](policies/star-health__star-cardiac-care.md) |
|
| 87 |
+
| Star Health and Allied Insurance | Star Cardiac Care Platinum | `SHAHLIP22033V022122` | 65% | [`policies/star-health__star-cardiac-care-platinum.md`](policies/star-health__star-cardiac-care-platinum.md) |
|
| 88 |
+
| Star Health and Allied Insurance | Star Comprehensive Insurance Policy | `SHAHLIP26044V092526` | 88% | [`policies/star-health__star-comprehensive.md`](policies/star-health__star-comprehensive.md) |
|
| 89 |
+
| Star Health and Allied Insurance | Star Health Family Health Optima Insurance Plan | `SHAHLIP26046V092526` | 82% | [`policies/star-health__family-health-optima.md`](policies/star-health__family-health-optima.md) |
|
| 90 |
+
| Star Health and Allied Insurance | Star Health Premier | `SHAHLIP22226V012122` | 60% | [`policies/star-health__health-premier.md`](policies/star-health__health-premier.md) |
|
| 91 |
+
| Star Health and Allied Insurance | Star Hospital Cash | `—` | 14% | [`policies/star-health__star-hospital-cash__brochure.md`](policies/star-health__star-hospital-cash__brochure.md) |
|
| 92 |
+
| Star Health and Allied Insurance | Star Senior Citizens Red Carpet | `SHAHLIP26041V082526` | 50% | [`policies/star-health__senior-citizens-red-carpet.md`](policies/star-health__senior-citizens-red-carpet.md) |
|
| 93 |
+
| Tata AIG General Insurance | Criti Medicare | `TATHLIP22176V012122` | 14% | [`policies/tata-aig__criti-medicare__wordings.md`](policies/tata-aig__criti-medicare__wordings.md) |
|
| 94 |
+
| Tata AIG General Insurance | Tata AIG MediCare | `TATHLIP21224V022021` | 78% | [`policies/tata-aig__medicare.md`](policies/tata-aig__medicare.md) |
|
| 95 |
+
| Tata AIG General Insurance | Tata AIG MediCare Lite | `TATHLIP24132V012324` | 75% | [`policies/tata-aig__medicare-lite.md`](policies/tata-aig__medicare-lite.md) |
|
| 96 |
+
| Tata AIG General Insurance | Tata AIG MediCare Premier | `TATHLIP21257V022021` | 85% | [`policies/tata-aig__medicare-premier.md`](policies/tata-aig__medicare-premier.md) |
|
| 97 |
+
| Tata AIG General Insurance | Tata AIG MediCare Select | `TATHLIP25051V012425` | 70% | [`policies/tata-aig__medicare-select.md`](policies/tata-aig__medicare-select.md) |
|
| 98 |
+
| Tata AIG General Insurance | Wellsurance Family | `TATHLIP21255V022021` | 14% | [`policies/tata-aig__wellsurance-family__cis.md`](policies/tata-aig__wellsurance-family__cis.md) |
|
| 99 |
+
| The New India Assurance Co. | Asha Kiran Policy | `NIAHLIP25047V042425` | 36% | [`policies/new-india__asha-kiran-policy__cis.md`](policies/new-india__asha-kiran-policy__cis.md) |
|
| 100 |
+
| The New India Assurance Co. | Asha Kiran Policy | `—` | 18% | [`policies/new-india__asha-kiran-policy__brochure.md`](policies/new-india__asha-kiran-policy__brochure.md) |
|
| 101 |
+
| The New India Assurance Co. | Janata Mediclaim Policy | `NIAHLIP25046V042425` | 36% | [`policies/new-india__janata-mediclaim-policy__wordings.md`](policies/new-india__janata-mediclaim-policy__wordings.md) |
|
| 102 |
+
| The New India Assurance Co. | New India Asha Kiran (Girl Child Family Floater) | `NIAHLIP21233V022021` | 60% | [`policies/new-india__asha-kiran.md`](policies/new-india__asha-kiran.md) |
|
| 103 |
+
| The New India Assurance Co. | New India Floater Mediclaim Policy | `NIAHLIP25039V082425` | 45% | [`policies/new-india__new-india-floater-mediclaim-policy__wordings.md`](policies/new-india__new-india-floater-mediclaim-policy__wordings.md) |
|
| 104 |
+
| The New India Assurance Co. | New India Floater Mediclaim Policy | `NIAHLIP25039V082425` | 85% | [`policies/new-india__floater-mediclaim.md`](policies/new-india__floater-mediclaim.md) |
|
| 105 |
+
| The New India Assurance Co. | New India Janata Mediclaim | `NIAHLIP25046V042425` | 70% | [`policies/new-india__janata-mediclaim.md`](policies/new-india__janata-mediclaim.md) |
|
| 106 |
+
| The New India Assurance Co. | New India Mediclaim Policy | `NIAHLIP23187V052223` | 45% | [`policies/new-india__new-india-mediclaim-policy__wordings.md`](policies/new-india__new-india-mediclaim-policy__wordings.md) |
|
| 107 |
+
| The New India Assurance Co. | New India Mediclaim Policy | `NIAHLIP25040V082425` | 45% | [`policies/new-india__new-india-mediclaim-policy__brochure.md`](policies/new-india__new-india-mediclaim-policy__brochure.md) |
|
| 108 |
+
| The New India Assurance Co. | New India Mediclaim Policy (Individual) | `NIAHLIP23187V052223` | 65% | [`policies/new-india__mediclaim-policy.md`](policies/new-india__mediclaim-policy.md) |
|
| 109 |
+
| The New India Assurance Co. | New India Universal Health Insurance | `NIAHLIP25052V032425` | 55% | [`policies/new-india__universal-health.md`](policies/new-india__universal-health.md) |
|
| 110 |
+
| The New India Assurance Co. | New India Yuva Bharat Health Policy | `NIAHLIP22025V022223` | 65% | [`policies/new-india__yuva-bharat.md`](policies/new-india__yuva-bharat.md) |
|
| 111 |
+
| The New India Assurance Co. | Universal Health Insurance | `NIAHLIP25052V032425` | 18% | [`policies/new-india__universal-health-insurance__wordings.md`](policies/new-india__universal-health-insurance__wordings.md) |
|
| 112 |
+
| The New India Assurance Co. | Yuva Bharat Health Policy | `NIAHLIP22025V022223` | 36% | [`policies/new-india__yuva-bharat-health-policy__wordings.md`](policies/new-india__yuva-bharat-health-policy__wordings.md) |
|
| 113 |
|
| 114 |
+
## Methodology
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 115 |
|
| 116 |
+
| File | What it contains |
|
| 117 |
+
| --- | --- |
|
| 118 |
+
| [`methodology/scorecard.json`](methodology/scorecard.json) | Authoritative methodology contract: 6 sub-scores, weights, scored-field list, consumer rationale, anchors. Exported from `backend/scorecard.py`. |
|
| 119 |
+
| [`methodology/glossary.json`](methodology/glossary.json) | User-facing jargon explanation contract — 13 terms × {en, hi} × {title, body}. Mirror of `frontend/src/lib/i18n.ts` GLOSSARY. |
|
| 120 |
+
| [`methodology/discovery-script.md`](methodology/discovery-script.md) | Profile Builder discovery script — verbatim copy of `docs/discovery-script.md`. |
|
| 121 |
+
| [`methodology/knowledge-graph.md`](methodology/knowledge-graph.md) | Profile-field ↔ sub-score weight-shift map — verbatim copy of `docs/scorecard-knowledge-graph.md`. |
|
| 122 |
+
| [`methodology/tie-breakers.md`](methodology/tie-breakers.md) | Recommendation tie-breaker rubric — verbatim copy of `docs/tie-breaker-rubric.md`. |
|
| 123 |
+
| [`methodology/INDEX.md`](methodology/INDEX.md) | Pointer index to all design / decision docs. |
|
| 124 |
|
| 125 |
+
## Data lineage
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 126 |
|
| 127 |
+
- [`AUDIT_TRAIL.md`](AUDIT_TRAIL.md) — end-to-end pipeline lineage + per-batch curation log.
|
| 128 |
|
| 129 |
+
## Layout
|
|
|
|
|
|
|
| 130 |
|
| 131 |
+
```
|
| 132 |
+
kb/
|
| 133 |
+
├── INDEX.md (this file)
|
| 134 |
+
├── AUDIT_TRAIL.md (data lineage + curation history)
|
| 135 |
+
├── policies/<policy_id>.md (102 files — one per curated policy)
|
| 136 |
+
├── methodology/
|
| 137 |
+
│ ├── scorecard.json (6 sub-scores + weights + anchors)
|
| 138 |
+
│ ├── glossary.json (13 terms × en/hi)
|
| 139 |
+
│ ├── discovery-script.md
|
| 140 |
+
│ ├── knowledge-graph.md
|
| 141 |
+
│ ├── tie-breakers.md
|
| 142 |
+
│ └── INDEX.md
|
| 143 |
+
├── research/
|
| 144 |
+
├── calculations/
|
| 145 |
+
├── reviews/
|
| 146 |
+
├── premiums/
|
| 147 |
+
├── security/
|
| 148 |
+
└── eval/
|
| 149 |
+
```
|
| 150 |
|
| 151 |
+
## Provenance convention
|
|
|
|
|
|
|
| 152 |
|
| 153 |
+
Every `policies/<id>.md` file is generated from `data/policy_facts/<id>.json` and preserves the verbatim source quote and source PDF path for every field. JSON is the machine source; markdown is the human-readable mirror. Regenerate the entire kb/ tree by running `.venv/bin/python3 tools/build_kb_mirror.py`.
|
|
|
kb/methodology/discovery-script.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Discovery Conversation Script
|
| 2 |
+
|
| 3 |
+
The 10-turn fact-find that turns a stranger into a profiled buyer.
|
| 4 |
+
|
| 5 |
+
**Design principles** (inspired by Even.in's tone + insurance-sector buyer-research norms):
|
| 6 |
+
|
| 7 |
+
1. **Plain language.** No "PED", no "UIN", no "sub-limit". We're talking to an adult who hasn't read a policy wording end-to-end.
|
| 8 |
+
2. **Every question explains WHY we're asking.** A form feels invasive; a conversation feels helpful. The one-line why-this-matters subtitle is non-optional.
|
| 9 |
+
3. **Chips, not text boxes.** Multi-choice + sliders + toggles. Free-text only when no chip set is honest.
|
| 10 |
+
4. **Honesty pre-commitment.** Right after the first turn, the bot tells the user: "Tell me the truth, even on hard things. Your honest answer protects your claim later — not just my recommendation."
|
| 11 |
+
5. **Optional, not gated.** The user can stop at any time. We surface what we can with partial profiles (insurer-level CSR / complaints) but ONLY personalize the scorecard once `profile_completeness >= 0.6`.
|
| 12 |
+
|
| 13 |
+
---
|
| 14 |
+
|
| 15 |
+
## Turn-by-turn script
|
| 16 |
+
|
| 17 |
+
### Turn 0 — Welcome (the bot starts)
|
| 18 |
+
|
| 19 |
+
> "Hi — I'm here to help you find a health policy that genuinely fits **you**, not the one that pays the highest commission to a broker. I'll ask about 8–10 short questions. Some will feel personal (your health, what you earn). **Be honest** — every answer is private to this chat, and being upfront about your medical history is the single biggest thing that protects you when you actually need to claim. Ready?"
|
| 20 |
+
|
| 21 |
+
[Chip: "Let's start" · "Tell me how this works first" · "Just let me browse"]
|
| 22 |
+
|
| 23 |
+
### Turn 1 — Age
|
| 24 |
+
|
| 25 |
+
> "What's your age?"
|
| 26 |
+
>
|
| 27 |
+
> *Why we ask: premium, eligibility, and renewability all hinge on this.*
|
| 28 |
+
|
| 29 |
+
[Slider 18–80, step 1]
|
| 30 |
+
|
| 31 |
+
### Turn 2 — Who's covered
|
| 32 |
+
|
| 33 |
+
> "Who else do you want to cover?"
|
| 34 |
+
>
|
| 35 |
+
> *Why we ask: covering parents or kids changes which policies make sense — some plans price family floaters very differently.*
|
| 36 |
+
|
| 37 |
+
[Multi-select chips: "Just me", "Spouse", "Children", "Parents", "Parents-in-law"]
|
| 38 |
+
|
| 39 |
+
### Turn 3 — Parents' health (CONDITIONAL — only if Turn 2 included parents)
|
| 40 |
+
|
| 41 |
+
> "If you're covering parents, what's the older one's age, and do they have any pre-existing conditions like diabetes, BP, or heart issues?"
|
| 42 |
+
>
|
| 43 |
+
> *Why we ask: parents-with-PED need policies with shorter PED waiting periods and lifelong renewability — that narrows the field a lot.*
|
| 44 |
+
|
| 45 |
+
[Slider for age + chips: "None", "Diabetes", "Hypertension/BP", "Heart", "Cancer", "Thyroid", "Multiple"]
|
| 46 |
+
|
| 47 |
+
### Turn 4 — Your own conditions
|
| 48 |
+
|
| 49 |
+
> "Any pre-existing conditions for yourself? Diabetes, BP, thyroid, asthma, anything chronic?"
|
| 50 |
+
>
|
| 51 |
+
> *Why we ask: this is where honesty matters most. Hiding it gets your premium ₹500 cheaper today and a denied claim of ₹8 lakh later. Insurers can and do find out at claim time.*
|
| 52 |
+
|
| 53 |
+
[Multi-select: "None", "Diabetes", "BP/Hypertension", "Thyroid", "Asthma", "Heart", "Cancer history", "Other"]
|
| 54 |
+
|
| 55 |
+
### Turn 5 — Existing cover
|
| 56 |
+
|
| 57 |
+
> "Do you already have any health insurance — through your employer or that you bought yourself?"
|
| 58 |
+
>
|
| 59 |
+
> *Why we ask: if you already have ₹5L from work, you might need a top-up rather than a full base plan — different product, different price.*
|
| 60 |
+
|
| 61 |
+
[Chips: "None", "Employer only", "Personal policy", "Both" → if any, ask sum insured slider]
|
| 62 |
+
|
| 63 |
+
### Turn 6 — City
|
| 64 |
+
|
| 65 |
+
> "Which city or town?"
|
| 66 |
+
>
|
| 67 |
+
> *Why we ask: cashless hospital network density varies massively. A "16,000-hospital network" means nothing if none are near you.*
|
| 68 |
+
|
| 69 |
+
[Free text + autocomplete] OR [Chips: "Metro", "Tier-1", "Tier-2", "Tier-3 / smaller town"]
|
| 70 |
+
|
| 71 |
+
### Turn 7 — Budget
|
| 72 |
+
|
| 73 |
+
> "Roughly what annual premium budget feels comfortable?"
|
| 74 |
+
>
|
| 75 |
+
> *Why we ask: helps us rank — but if a slightly higher budget materially improves your protection, we'll flag it.*
|
| 76 |
+
|
| 77 |
+
[Slider with 4 markers: <₹15k, ₹15–30k, ₹30–60k, ₹60k+]
|
| 78 |
+
|
| 79 |
+
### Turn 8 — Maternity & near-term events (CONDITIONAL)
|
| 80 |
+
|
| 81 |
+
> "Anything planned in the next 12–24 months — pregnancy, a known surgery, anything you've discussed with a doctor recently?"
|
| 82 |
+
>
|
| 83 |
+
> *Why we ask: most policies have 30-day initial waits and 24–36-month maternity waits. If you need cover soon, that filters the list.*
|
| 84 |
+
|
| 85 |
+
[Multi-select: "Pregnancy planned", "Surgery planned", "Recent hospitalisation", "None of these"]
|
| 86 |
+
|
| 87 |
+
### Turn 9 — Risk preference
|
| 88 |
+
|
| 89 |
+
> "When it comes to surprises in your bill, what do you prefer?"
|
| 90 |
+
>
|
| 91 |
+
> *Why we ask: this single answer decides whether co-pay/deductible plans (cheaper premium, share-of-bill) or full-cover plans (higher premium, predictable bill) fit you.*
|
| 92 |
+
|
| 93 |
+
[Chips: "Lowest premium, I'll accept a 10–20% co-pay", "Balanced", "No surprises — full cover at higher premium"]
|
| 94 |
+
|
| 95 |
+
### Turn 10 — Income (optional, asked last)
|
| 96 |
+
|
| 97 |
+
> "One last optional question — your annual income band. We use it only to gauge how much sum insured fits your risk."
|
| 98 |
+
>
|
| 99 |
+
> *Why we ask: if you earn ₹8L/yr, a ₹50L cover is overkill; if you earn ₹40L/yr, a ₹5L cover leaves you exposed.*
|
| 100 |
+
|
| 101 |
+
[Chips: "Prefer not to say", "<₹5L", "₹5–10L", "₹10–25L", "₹25L+"]
|
| 102 |
+
|
| 103 |
+
### Wrap
|
| 104 |
+
|
| 105 |
+
> "That's all I needed. Here's what I heard: <readback_summary>. I'll now show you 3 policies that fit best, with the exact reasons they ranked well **for you specifically**."
|
| 106 |
+
|
| 107 |
+
→ Render scorecard cards (now personalised because `profile_completeness >= 0.6`).
|
| 108 |
+
|
| 109 |
+
---
|
| 110 |
+
|
| 111 |
+
## Honest disclosure — the trust contract
|
| 112 |
+
|
| 113 |
+
Right after Turn 0 and again before Turn 4 (own conditions), the bot surfaces a one-line contract:
|
| 114 |
+
|
| 115 |
+
> "Your answers stay in this conversation. They are NOT shared with any insurer until you choose to buy a policy through their channel. Being honest with me about your medical history is also what makes your claim defensible later — because insurers can match disclosed history against hospital records at claim time."
|
| 116 |
+
|
| 117 |
+
This is the customer-protection framing. It tells the user honesty is **self-protection**, not insurer-favoring.
|
| 118 |
+
|
| 119 |
+
---
|
| 120 |
+
|
| 121 |
+
## Adaptive rules
|
| 122 |
+
|
| 123 |
+
- If the user is in free-form mode (asks questions back to the bot), don't push the script — let them lead. Resume when they ask "what do you recommend?"
|
| 124 |
+
- If `profile_completeness >= 0.6` after some subset of questions, offer to skip the rest: "I have enough to recommend now. Want to keep going, or see what I'd suggest?"
|
| 125 |
+
- Never ask the same question twice. `Profile.asked` tracks this.
|
| 126 |
+
- A user who says "just show me policies" gets the marketplace with insurer-level metrics (CSR / complaints) visible but per-user scorecards GREYED with a "complete your profile to see how this ranks for you" CTA.
|
| 127 |
+
|
| 128 |
+
---
|
| 129 |
+
|
| 130 |
+
## Implementation notes
|
| 131 |
+
|
| 132 |
+
The questions live in `backend/needs_finder.py::GRAPH`. To add a new question:
|
| 133 |
+
|
| 134 |
+
1. Add a `Question(...)` entry with `id`, `prompt_en` (plain language + WHY), `prompt_hi` (Hindi rendering), `field` (which Profile attribute it sets), `is_core` (boolean — counts toward completeness), optional `condition` callable, optional `parser`.
|
| 135 |
+
2. Add a row in `docs/scorecard-knowledge-graph.md` Part B showing how the new input shifts weights.
|
| 136 |
+
3. Wire the shift into `_profile_tuned_weights()` in `backend/scorecard.py`.
|
| 137 |
+
|
| 138 |
+
Drift between these three places breaks the transparency promise. Keep them in sync.
|
kb/methodology/glossary.json
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"PED": {
|
| 3 |
+
"en": {
|
| 4 |
+
"title": "Pre-Existing Disease (PED)",
|
| 5 |
+
"body": "A health condition you already have when you buy the policy — diabetes, BP, thyroid, anything chronic. Most policies don't cover it for the first 24-48 months. Be honest about yours: hiding it gets your claim denied later."
|
| 6 |
+
},
|
| 7 |
+
"hi": {
|
| 8 |
+
"title": "Pre-Existing Disease (पहले से चली आ रही बीमारी)",
|
| 9 |
+
"body": "जो बीमारी आपको policy खरीदते समय पहले से है — diabetes, BP, थायरॉइड etc. ज़्यादातर policies शुरू के 24-48 महीनों में cover नहीं करतीं। ईमानदारी से बताइए, छिपाने से claim बाद में reject हो जाता है।"
|
| 10 |
+
}
|
| 11 |
+
},
|
| 12 |
+
"AYUSH": {
|
| 13 |
+
"en": {
|
| 14 |
+
"title": "AYUSH coverage",
|
| 15 |
+
"body": "Whether the policy pays for Ayurveda, Yoga, Unani, Siddha, and Homeopathy treatments at recognised hospitals. If you use these traditional systems, this matters; if you only use allopathic care, less so."
|
| 16 |
+
},
|
| 17 |
+
"hi": {
|
| 18 |
+
"title": "AYUSH कवर",
|
| 19 |
+
"body": "क्या policy आयुर्वेद, योग, यूनानी, सिद्ध, और होम्योपैथी treatments को cover करती है। अगर आप इन पारंपरिक चिकित्सा का उपयोग करते हैं, यह ज़रूरी है।"
|
| 20 |
+
}
|
| 21 |
+
},
|
| 22 |
+
"NCB": {
|
| 23 |
+
"en": {
|
| 24 |
+
"title": "No-Claim Bonus (NCB)",
|
| 25 |
+
"body": "Reward for not claiming in a year — your sum insured goes up (typically 25-50%) without raising your premium. Bigger NCB compounds over years if you stay claim-free."
|
| 26 |
+
},
|
| 27 |
+
"hi": {
|
| 28 |
+
"title": "No-Claim Bonus (NCB)",
|
| 29 |
+
"body": "बिना claim किए साल पूरा करने का इनाम — sum insured बढ़ जाता है (आम तौर पर 25-50%) बिना premium बढ़ाए।"
|
| 30 |
+
}
|
| 31 |
+
},
|
| 32 |
+
"SI": {
|
| 33 |
+
"en": {
|
| 34 |
+
"title": "Sum Insured (SI)",
|
| 35 |
+
"body": "The maximum amount the insurer pays in a policy year. For a single hospitalisation in a metro, ₹10L is the floor; ₹20L+ is safer if you have parents or family to cover."
|
| 36 |
+
},
|
| 37 |
+
"hi": {
|
| 38 |
+
"title": "Sum Insured (बीमित राशि)",
|
| 39 |
+
"body": "एक policy साल में बीमाकर्ता अधिकतम कितना देगा। Metro में एक hospitalisation के लिए ₹10L न्यूनतम; ₹20L+ माता-पिता या परिवार के लिए सुरक्षित।"
|
| 40 |
+
}
|
| 41 |
+
},
|
| 42 |
+
"CSR": {
|
| 43 |
+
"en": {
|
| 44 |
+
"title": "Claim Settlement Ratio (CSR)",
|
| 45 |
+
"body": "Of every 100 claims the insurer received, how many they paid. IRDAI publishes this annually. <90% = caution; 95%+ = excellent. Single most predictive metric of 'will my claim get paid'."
|
| 46 |
+
},
|
| 47 |
+
"hi": {
|
| 48 |
+
"title": "Claim Settlement Ratio",
|
| 49 |
+
"body": "100 claims में से बीमाकर्ता कितने pay करता है। IRDAI सालाना publish करता है। <90% = सावधान; 95%+ = बढ़िया।"
|
| 50 |
+
}
|
| 51 |
+
},
|
| 52 |
+
"Cashless": {
|
| 53 |
+
"en": {
|
| 54 |
+
"title": "Cashless treatment",
|
| 55 |
+
"body": "You don't pay the hospital — the insurer pays them directly via a pre-authorisation. Only works at network hospitals. Without it, you pay upfront and file for reimbursement later."
|
| 56 |
+
},
|
| 57 |
+
"hi": {
|
| 58 |
+
"title": "Cashless इलाज",
|
| 59 |
+
"body": "आप hospital को सीधे payment नहीं करते — बीमाकर्ता pre-authorisation से payment करता है। सिर्फ network hospitals पर काम करता है।"
|
| 60 |
+
}
|
| 61 |
+
},
|
| 62 |
+
"TAT": {
|
| 63 |
+
"en": {
|
| 64 |
+
"title": "Cashless TAT (Turnaround Time)",
|
| 65 |
+
"body": "How fast the insurer approves your cashless pre-auth at the hospital desk. ≤2 hours = gold standard; ≥24h = your family pays cash first and waits for reimbursement."
|
| 66 |
+
},
|
| 67 |
+
"hi": {
|
| 68 |
+
"title": "Cashless TAT",
|
| 69 |
+
"body": "बीमाकर्ता hospital में cashless approval कितनी जल्दी देता है। ≤2 घंटे = बढ़िया; ≥24 घंटे = परिवार को पहले cash देना पड़ेगा।"
|
| 70 |
+
}
|
| 71 |
+
},
|
| 72 |
+
"UIN": {
|
| 73 |
+
"en": {
|
| 74 |
+
"title": "Unique Identification Number (UIN)",
|
| 75 |
+
"body": "IRDAI-assigned ID for each policy product — proves it's a regulator-approved plan. You can search a UIN on irdai.gov.in to verify the policy exists and see its filed terms."
|
| 76 |
+
},
|
| 77 |
+
"hi": {
|
| 78 |
+
"title": "UIN (Unique ID)",
|
| 79 |
+
"body": "IRDAI द्वारा हर policy को दिया गया ID — यह साबित करता है कि policy regulator से approved है।"
|
| 80 |
+
}
|
| 81 |
+
},
|
| 82 |
+
"CoPay": {
|
| 83 |
+
"en": {
|
| 84 |
+
"title": "Co-payment",
|
| 85 |
+
"body": "The % of every claim YOU pay out of pocket. 20% co-pay on a ₹5L hospital bill = you pay ₹1L; insurer pays ₹4L. Lower premium upfront, but bigger surprise at claim time."
|
| 86 |
+
},
|
| 87 |
+
"hi": {
|
| 88 |
+
"title": "Co-payment",
|
| 89 |
+
"body": "हर claim का जो % आप अपनी जेब से देते हैं। ₹5L hospital bill पर 20% co-pay = आप ₹1L दें, बीमाकर्ता ₹4L।"
|
| 90 |
+
}
|
| 91 |
+
},
|
| 92 |
+
"Deductible": {
|
| 93 |
+
"en": {
|
| 94 |
+
"title": "Deductible",
|
| 95 |
+
"body": "Fixed rupee amount you pay BEFORE the insurer starts paying. ₹50k deductible = first ₹50k of every claim is on you. Reduces premium significantly but adds out-of-pocket risk."
|
| 96 |
+
},
|
| 97 |
+
"hi": {
|
| 98 |
+
"title": "Deductible",
|
| 99 |
+
"body": "वो fixed amount जो आप बीमाकर्ता के payment शुरू करने से पहले देते हैं।"
|
| 100 |
+
}
|
| 101 |
+
},
|
| 102 |
+
"Floater": {
|
| 103 |
+
"en": {
|
| 104 |
+
"title": "Family Floater",
|
| 105 |
+
"body": "One sum insured shared by everyone in the family. ₹15L floater for 4 people = anyone (or everyone) can use up to ₹15L combined. Cheaper than individual policies if claims are rare."
|
| 106 |
+
},
|
| 107 |
+
"hi": {
|
| 108 |
+
"title": "Family Floater",
|
| 109 |
+
"body": "एक sum insured पूरे परिवार के लिए share होती है। 4 लोगों के लिए ₹15L floater = कोई भी ₹15L तक use कर सकता है।"
|
| 110 |
+
}
|
| 111 |
+
},
|
| 112 |
+
"SubLimit": {
|
| 113 |
+
"en": {
|
| 114 |
+
"title": "Sub-limit",
|
| 115 |
+
"body": "A cap WITHIN your sum insured for a specific treatment — e.g., room rent capped at 1% of SI, or maternity capped at ₹50k. Watch for these — they're the #1 reason actual reimbursement < bill."
|
| 116 |
+
},
|
| 117 |
+
"hi": {
|
| 118 |
+
"title": "Sub-limit",
|
| 119 |
+
"body": "Sum insured के अंदर कुछ खास treatments पर एक सीमा — जैसे room rent SI का 1%, या maternity ₹50k तक। यह सबसे बड़ी वजह है कि real payment bill से कम होता है।"
|
| 120 |
+
}
|
| 121 |
+
},
|
| 122 |
+
"RoomRent": {
|
| 123 |
+
"en": {
|
| 124 |
+
"title": "Room rent capping",
|
| 125 |
+
"body": "Some policies pay only up to a % of SI per day of hospital room — e.g., 1% of ₹5L = ₹5k/day. Choose a more expensive room and ALL your other charges get scaled down proportionally. Look for 'No room rent limit'."
|
| 126 |
+
},
|
| 127 |
+
"hi": {
|
| 128 |
+
"title": "Room rent capping",
|
| 129 |
+
"body": "कई policies hospital room के लिए सिर्फ SI का % देती हैं — जैसे 1% का ₹5L = ₹5k/दिन। महंगा कमरा लें तो सभी अन्य charges भी scale down हो जाते हैं।"
|
| 130 |
+
}
|
| 131 |
+
}
|
| 132 |
+
}
|
kb/methodology/knowledge-graph.md
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Scorecard Knowledge Graph
|
| 2 |
+
|
| 3 |
+
How the scorecard responds to (a) the policy's own attributes and (b) the buyer's profile inputs. Every entry is sourced from the rules baked into `backend/scorecard.py` — this doc is the human-readable spec, not free-form opinion.
|
| 4 |
+
|
| 5 |
+
---
|
| 6 |
+
|
| 7 |
+
## Part A — Policy attribute → sub-score delta
|
| 8 |
+
|
| 9 |
+
Each row: "if the policy has this value, the listed sub-score moves by this delta." Sub-scores are 0–100. The overall A–F grade is the weighted average (see Part B for weight tuning).
|
| 10 |
+
|
| 11 |
+
### Coverage Breadth (base 60, weight 22%)
|
| 12 |
+
|
| 13 |
+
| Attribute | Value condition | Sub-score delta | Source rule |
|
| 14 |
+
|---|---|---|---|
|
| 15 |
+
| `ayush_coverage` | true | +8 | "AYUSH covered" |
|
| 16 |
+
| `ayush_coverage` | false | −5 | "no AYUSH" |
|
| 17 |
+
| `day_care_treatments_count` | ≥400 | +10 | "{N} day-care procedures" |
|
| 18 |
+
| `day_care_treatments_count` | 200–399 | +6 | |
|
| 19 |
+
| `day_care_treatments_count` | <100 | −5 | "only {N} day-care procedures" |
|
| 20 |
+
| `maternity_coverage` | true | +6 | "maternity covered" |
|
| 21 |
+
| `newborn_coverage` | true | +4 | "newborn covered" |
|
| 22 |
+
| `organ_donor_expenses` | true | +4 | |
|
| 23 |
+
| `ambulance_cover` | true | +3 | |
|
| 24 |
+
| `domiciliary_treatment` | true | +4 | |
|
| 25 |
+
| `preventive_health_checkup` | true | +3 | "free health checkups" |
|
| 26 |
+
| `pre_hospitalization_days` | ≥60 | +4 | |
|
| 27 |
+
| `post_hospitalization_days` | ≥90 | +4 | |
|
| 28 |
+
|
| 29 |
+
### Cost Predictability (base 75, weight 20%)
|
| 30 |
+
|
| 31 |
+
| Attribute | Value condition | Sub-score delta |
|
| 32 |
+
|---|---|---|
|
| 33 |
+
| `copayment_pct` | 0 | +0 (baseline) |
|
| 34 |
+
| `copayment_pct` | 10 | −5 |
|
| 35 |
+
| `copayment_pct` | ≥20 | −12 |
|
| 36 |
+
| `room_rent_capping` | "No limit" / "Single Private A/C Room" | +6 |
|
| 37 |
+
| `room_rent_capping` | capped (any % or amount) | −5 to −10 |
|
| 38 |
+
| `deductible_amount` | 0 | +0 |
|
| 39 |
+
| `deductible_amount` | ≥100000 | −8 |
|
| 40 |
+
| `sub_limits` | absent | +5 |
|
| 41 |
+
| `icu_charges_capping` | none | +3 |
|
| 42 |
+
|
| 43 |
+
### Waiting-Period Friction (base 70, weight 18%)
|
| 44 |
+
|
| 45 |
+
| Attribute | Value condition | Sub-score delta |
|
| 46 |
+
|---|---|---|
|
| 47 |
+
| `initial_waiting_period_days` | ≤30 | +0 (industry standard) |
|
| 48 |
+
| `initial_waiting_period_days` | >30 | −3 |
|
| 49 |
+
| `pre_existing_disease_waiting_months` | ≤24 | +10 |
|
| 50 |
+
| `pre_existing_disease_waiting_months` | 36 | +0 (industry standard, IRDAI cap) |
|
| 51 |
+
| `pre_existing_disease_waiting_months` | ≥48 | −15 (non-conformant) |
|
| 52 |
+
| `maternity_waiting_months` | ≤24 | +5 |
|
| 53 |
+
| `maternity_waiting_months` | ≥36 | −5 |
|
| 54 |
+
| `specific_disease_waiting_months` | ≤24 | +3 |
|
| 55 |
+
|
| 56 |
+
### Claim Experience (base 65, weight 20%) — uses insurer-level data
|
| 57 |
+
|
| 58 |
+
| Attribute | Value condition | Sub-score delta |
|
| 59 |
+
|---|---|---|
|
| 60 |
+
| `cashless_treatment_supported` | true | +5 |
|
| 61 |
+
| `network_hospital_count` | ≥10,000 | +10 |
|
| 62 |
+
| `network_hospital_count` | 5,000–9,999 | +5 |
|
| 63 |
+
| `network_hospital_count` | <2,000 | −5 |
|
| 64 |
+
| `claim_settlement_ratio` (IRDAI) | ≥95% | +12 |
|
| 65 |
+
| `claim_settlement_ratio` | 90–95% | +6 |
|
| 66 |
+
| `claim_settlement_ratio` | <85% | −10 |
|
| 67 |
+
| `complaints_per_10k_policies` | <5 | +4 |
|
| 68 |
+
| `complaints_per_10k_policies` | >20 | −8 |
|
| 69 |
+
| `tat_cashless_authorization_hours` | ≤2 | +4 |
|
| 70 |
+
| `tat_cashless_authorization_hours` | ≥24 | −4 |
|
| 71 |
+
|
| 72 |
+
### Renewal Protection (base 65, weight 12%)
|
| 73 |
+
|
| 74 |
+
| Attribute | Value condition | Sub-score delta |
|
| 75 |
+
|---|---|---|
|
| 76 |
+
| `max_renewal_age` | "Lifelong" or ≥99 | +12 |
|
| 77 |
+
| `max_renewal_age` | 80 | +6 |
|
| 78 |
+
| `max_renewal_age` | ≤70 | −5 |
|
| 79 |
+
| `max_entry_age` | ≥65 | +4 |
|
| 80 |
+
| `guaranteed_renewability` | true (stated) | +4 |
|
| 81 |
+
|
| 82 |
+
### Bonus & Loyalty (base 60, weight 8%)
|
| 83 |
+
|
| 84 |
+
| Attribute | Value condition | Sub-score delta |
|
| 85 |
+
|---|---|---|
|
| 86 |
+
| `no_claim_bonus_pct` | ≥50 | +8 |
|
| 87 |
+
| `no_claim_bonus_pct` | 25–49 | +4 |
|
| 88 |
+
| `restoration_benefit` | present | +6 |
|
| 89 |
+
| `preventive_health_checkup` | free annually | +3 |
|
| 90 |
+
| `wellness_program_present` | true | +2 |
|
| 91 |
+
|
| 92 |
+
---
|
| 93 |
+
|
| 94 |
+
## Part B — User input → weight redistribution
|
| 95 |
+
|
| 96 |
+
Same 6 sub-scores, but the WEIGHTS shift based on what we know about the buyer. Every collected signal moves at least one weight — if a field doesn't appear here, we wasted attention collecting it.
|
| 97 |
+
|
| 98 |
+
Each delta is applied to the base weights then **renormalised to sum 1.0** with a 5% per-criterion floor.
|
| 99 |
+
|
| 100 |
+
### Age
|
| 101 |
+
|
| 102 |
+
| Age band | Weight deltas |
|
| 103 |
+
|---|---|
|
| 104 |
+
| <30 | Waiting-Period Friction +0.04, Claim Experience +0.02, Renewal Protection −0.04, Bonus & Loyalty −0.02 |
|
| 105 |
+
| 30–49 | (no shift) |
|
| 106 |
+
| ≥50 | Renewal Protection +0.06, Claim Experience +0.02, Bonus & Loyalty −0.04, Waiting-Period Friction −0.04 |
|
| 107 |
+
|
| 108 |
+
### Dependents
|
| 109 |
+
|
| 110 |
+
| Dependent | Weight deltas |
|
| 111 |
+
|---|---|
|
| 112 |
+
| kids / children | Coverage Breadth +0.03, Bonus & Loyalty +0.01, Cost Predictability −0.02, Renewal Protection −0.02 |
|
| 113 |
+
| spouse | Coverage Breadth +0.02, Waiting-Period Friction +0.02, Bonus & Loyalty −0.02, Renewal Protection −0.02 |
|
| 114 |
+
| parents | Coverage Breadth +0.04, Claim Experience +0.04, Bonus & Loyalty −0.04, Cost Predictability −0.04 |
|
| 115 |
+
| parents with PED or age ≥65 | + extra: Renewal Protection +0.04, Waiting-Period Friction +0.02, Bonus & Loyalty −0.04, Cost Predictability −0.02 |
|
| 116 |
+
|
| 117 |
+
### Existing cover
|
| 118 |
+
|
| 119 |
+
| Condition | Weight deltas |
|
| 120 |
+
|---|---|
|
| 121 |
+
| Has existing cover >0 (super-top-up buyer) | Cost Predictability −0.03, Claim Experience +0.03 |
|
| 122 |
+
| No existing cover (first-time buyer) | Cost Predictability +0.03, Coverage Breadth +0.02, Bonus & Loyalty −0.03, Waiting-Period Friction −0.02 |
|
| 123 |
+
|
| 124 |
+
### Primary goal
|
| 125 |
+
|
| 126 |
+
| Goal | Weight deltas |
|
| 127 |
+
|---|---|
|
| 128 |
+
| Tax planning | Cost Predictability +0.02, Bonus & Loyalty −0.02 |
|
| 129 |
+
| Upgrade existing cover | Coverage Breadth +0.03, Renewal Protection +0.02, Bonus & Loyalty −0.05 |
|
| 130 |
+
| Compare specific policies | Flatten weights (5% pull to uniform — user already knows what matters) |
|
| 131 |
+
|
| 132 |
+
### Health conditions
|
| 133 |
+
|
| 134 |
+
| Condition | Weight deltas |
|
| 135 |
+
|---|---|
|
| 136 |
+
| Diabetes / BP / hyper / thyroid / heart / cancer / asthma | Waiting-Period Friction +0.06, Claim Experience +0.03, Bonus & Loyalty −0.04, Cost Predictability −0.03, Renewal Protection −0.02 |
|
| 137 |
+
|
| 138 |
+
### Budget band
|
| 139 |
+
|
| 140 |
+
| Band | Weight deltas |
|
| 141 |
+
|---|---|
|
| 142 |
+
| under_15k or 15k_30k | Cost Predictability +0.04, Bonus & Loyalty −0.02, Waiting-Period Friction −0.02 |
|
| 143 |
+
| 60k+ | Coverage Breadth +0.02, Claim Experience +0.02, Cost Predictability −0.04 |
|
| 144 |
+
|
| 145 |
+
### Income band
|
| 146 |
+
|
| 147 |
+
| Band | Weight deltas |
|
| 148 |
+
|---|---|
|
| 149 |
+
| under_5L | Cost Predictability +0.03, Bonus & Loyalty −0.03 |
|
| 150 |
+
| 10L–25L / 25L+ | Coverage Breadth +0.02, Claim Experience +0.02, Cost Predictability −0.04 |
|
| 151 |
+
|
| 152 |
+
### Location tier
|
| 153 |
+
|
| 154 |
+
| Tier | Weight deltas |
|
| 155 |
+
|---|---|
|
| 156 |
+
| tier2 / tier3 | Claim Experience +0.04, Coverage Breadth −0.02, Bonus & Loyalty −0.02 |
|
| 157 |
+
| metro | Coverage Breadth +0.02, Claim Experience −0.02 |
|
| 158 |
+
|
| 159 |
+
---
|
| 160 |
+
|
| 161 |
+
## Worked example
|
| 162 |
+
|
| 163 |
+
A 55-year-old with diabetic parents in tier-2 city, ₹30k budget, ₹5L existing cover, primary goal "upgrade":
|
| 164 |
+
|
| 165 |
+
- Age 55 → +0.06 Renewal, +0.02 Claim, −0.04 Bonus, −0.04 Waiting
|
| 166 |
+
- Dependents include parents (PED, age 70) → +0.04 Coverage, +0.04 Claim, −0.04 Bonus, −0.04 Cost; +0.04 Renewal, +0.02 Waiting, −0.04 Bonus, −0.02 Cost
|
| 167 |
+
- Existing cover >0 → −0.03 Cost, +0.03 Claim
|
| 168 |
+
- Goal "upgrade" → +0.03 Coverage, +0.02 Renewal, −0.05 Bonus
|
| 169 |
+
- Conditions diabetes (via parents) → +0.06 Waiting, +0.03 Claim, −0.04 Bonus, −0.03 Cost, −0.02 Renewal
|
| 170 |
+
- Tier-2 → +0.04 Claim, −0.02 Coverage, −0.02 Bonus
|
| 171 |
+
|
| 172 |
+
Result (post-renormalise + floor):
|
| 173 |
+
- Claim Experience: 20% → 31% (the dominant criterion — getting paid matters most)
|
| 174 |
+
- Coverage Breadth: 22% → 25%
|
| 175 |
+
- Waiting-Period Friction: 18% → 20%
|
| 176 |
+
- Renewal Protection: 12% → 16%
|
| 177 |
+
- Bonus & Loyalty: 8% → 5% (floor)
|
| 178 |
+
- Cost Predictability: 20% → 5% (floor)
|
| 179 |
+
|
| 180 |
+
The buyer's profile is correctly read as: "I'm older, my parents are sick, I'm in a smaller city, I already have basic cover. What I actually need is INSURER QUALITY (will they pay?) and RENEWAL CONTINUITY (can I keep this when I'm 70?)."
|
| 181 |
+
|
| 182 |
+
---
|
| 183 |
+
|
| 184 |
+
## Maintenance contract
|
| 185 |
+
|
| 186 |
+
Whenever a rule in `backend/scorecard.py` changes (new condition, different threshold, different delta), the matching row in this document must be updated in the same commit. Drift between code and this doc breaks the transparency promise the scorecard makes to the buyer.
|
kb/methodology/scorecard.json
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"weights": {
|
| 3 |
+
"Coverage Breadth": 0.22,
|
| 4 |
+
"Cost Predictability": 0.2,
|
| 5 |
+
"Waiting-Period Friction": 0.18,
|
| 6 |
+
"Claim Experience": 0.2,
|
| 7 |
+
"Renewal Protection": 0.12,
|
| 8 |
+
"Bonus & Loyalty": 0.08
|
| 9 |
+
},
|
| 10 |
+
"scored_fields": [
|
| 11 |
+
"ayush_coverage",
|
| 12 |
+
"day_care_treatments_count",
|
| 13 |
+
"maternity_coverage",
|
| 14 |
+
"newborn_coverage",
|
| 15 |
+
"organ_donor_expenses",
|
| 16 |
+
"ambulance_cover",
|
| 17 |
+
"domiciliary_treatment",
|
| 18 |
+
"preventive_health_checkup",
|
| 19 |
+
"pre_hospitalization_days",
|
| 20 |
+
"post_hospitalization_days",
|
| 21 |
+
"copayment_pct",
|
| 22 |
+
"room_rent_capping",
|
| 23 |
+
"deductible_amount",
|
| 24 |
+
"pre_existing_disease_waiting_months",
|
| 25 |
+
"maternity_waiting_months",
|
| 26 |
+
"initial_waiting_period_days",
|
| 27 |
+
"cashless_treatment_supported",
|
| 28 |
+
"network_hospital_count",
|
| 29 |
+
"claim_settlement_ratio",
|
| 30 |
+
"tat_cashless_authorization_hours",
|
| 31 |
+
"max_renewal_age",
|
| 32 |
+
"max_entry_age",
|
| 33 |
+
"no_claim_bonus_pct",
|
| 34 |
+
"restoration_benefit"
|
| 35 |
+
],
|
| 36 |
+
"methodology": [
|
| 37 |
+
{
|
| 38 |
+
"name": "Coverage Breadth",
|
| 39 |
+
"weight_pct": 22,
|
| 40 |
+
"consumer_question": "When I actually need to claim, what's covered vs what's not?",
|
| 41 |
+
"why_it_matters": "Determines whether your hospital bill is fully reimbursed or whether you pay out-of-pocket for gaps like AYUSH, maternity, newborn care, or ambulance.",
|
| 42 |
+
"fields_driving_score": [
|
| 43 |
+
{
|
| 44 |
+
"field": "ayush_coverage",
|
| 45 |
+
"rule": "AYUSH covered → +8"
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"field": "day_care_treatments_count",
|
| 49 |
+
"rule": "≥400 procedures → +10, ≥200 → +6, <100 → −5"
|
| 50 |
+
},
|
| 51 |
+
{
|
| 52 |
+
"field": "maternity_coverage",
|
| 53 |
+
"rule": "Covered → +6"
|
| 54 |
+
},
|
| 55 |
+
{
|
| 56 |
+
"field": "newborn_coverage",
|
| 57 |
+
"rule": "Covered → +4"
|
| 58 |
+
},
|
| 59 |
+
{
|
| 60 |
+
"field": "organ_donor_expenses",
|
| 61 |
+
"rule": "Covered → +4"
|
| 62 |
+
},
|
| 63 |
+
{
|
| 64 |
+
"field": "ambulance_cover",
|
| 65 |
+
"rule": "Covered → +3"
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"field": "domiciliary_treatment",
|
| 69 |
+
"rule": "Covered → +4"
|
| 70 |
+
},
|
| 71 |
+
{
|
| 72 |
+
"field": "preventive_health_checkup",
|
| 73 |
+
"rule": "Free → +3"
|
| 74 |
+
},
|
| 75 |
+
{
|
| 76 |
+
"field": "pre_hospitalization_days",
|
| 77 |
+
"rule": "≥60 days → +4"
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"field": "post_hospitalization_days",
|
| 81 |
+
"rule": "≥90 days → +4"
|
| 82 |
+
}
|
| 83 |
+
],
|
| 84 |
+
"anchors": [
|
| 85 |
+
"IRDAI Health Insurance Master Circular 2024 — emphasises comprehensive cover",
|
| 86 |
+
"Acko buying guide: coverage breadth most-cited buyer concern"
|
| 87 |
+
]
|
| 88 |
+
},
|
| 89 |
+
{
|
| 90 |
+
"name": "Cost Predictability",
|
| 91 |
+
"weight_pct": 20,
|
| 92 |
+
"consumer_question": "Will I face surprise bills I can't plan for?",
|
| 93 |
+
"why_it_matters": "Co-pay forces you to pay a % of every claim; room-rent capping reduces what gets reimbursed; sub-limits cap specific treatments below your sum insured. These convert a known sum-insured into an unpredictable out-of-pocket exposure.",
|
| 94 |
+
"fields_driving_score": [
|
| 95 |
+
{
|
| 96 |
+
"field": "copayment_pct",
|
| 97 |
+
"rule": "0% → +0, 10% → −5, 20%+ → −12"
|
| 98 |
+
},
|
| 99 |
+
{
|
| 100 |
+
"field": "room_rent_capping",
|
| 101 |
+
"rule": "No limit → +6, capped → −5 to −10"
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
"field": "deductible_amount",
|
| 105 |
+
"rule": "₹0 → +0, ≥₹1L → −8"
|
| 106 |
+
},
|
| 107 |
+
{
|
| 108 |
+
"field": "sub_limits",
|
| 109 |
+
"rule": "No condition-specific caps → +5"
|
| 110 |
+
},
|
| 111 |
+
{
|
| 112 |
+
"field": "icu_charges_capping",
|
| 113 |
+
"rule": "No cap → +3"
|
| 114 |
+
}
|
| 115 |
+
],
|
| 116 |
+
"anchors": [
|
| 117 |
+
"IRDAI Master Circular — disclosure norms on co-pay/sub-limits",
|
| 118 |
+
"Common consumer complaint themes (IRDAI complaint logs)"
|
| 119 |
+
]
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"name": "Waiting-Period Friction",
|
| 123 |
+
"weight_pct": 18,
|
| 124 |
+
"consumer_question": "How soon can I actually use this policy if something happens?",
|
| 125 |
+
"why_it_matters": "Initial waiting period (30 days typical), pre-existing-disease waiting (commonly 24–48 months), and maternity waits delay claims. Shorter is better — especially for older buyers or those with diabetes/hypertension.",
|
| 126 |
+
"fields_driving_score": [
|
| 127 |
+
{
|
| 128 |
+
"field": "initial_waiting_period_days",
|
| 129 |
+
"rule": "≤30 days → 0, >30 days → −3"
|
| 130 |
+
},
|
| 131 |
+
{
|
| 132 |
+
"field": "pre_existing_disease_waiting_months",
|
| 133 |
+
"rule": "≤24mo → +10, 36mo → 0, ≥48mo → −15"
|
| 134 |
+
},
|
| 135 |
+
{
|
| 136 |
+
"field": "maternity_waiting_months",
|
| 137 |
+
"rule": "≤24mo → +5, ≥36mo → −5"
|
| 138 |
+
},
|
| 139 |
+
{
|
| 140 |
+
"field": "specific_disease_waiting_months",
|
| 141 |
+
"rule": "≤24mo → +3"
|
| 142 |
+
}
|
| 143 |
+
],
|
| 144 |
+
"anchors": [
|
| 145 |
+
"IRDAI standard product specifications (Arogya Sanjeevani UIN guideline: 36-month PED max)",
|
| 146 |
+
"PolicyBazaar comparison data: 24-month PED is the buyer benchmark"
|
| 147 |
+
]
|
| 148 |
+
},
|
| 149 |
+
{
|
| 150 |
+
"name": "Claim Experience",
|
| 151 |
+
"weight_pct": 20,
|
| 152 |
+
"consumer_question": "Will the insurer actually pay when I claim?",
|
| 153 |
+
"why_it_matters": "Coverage on paper means nothing if claims get denied or take weeks. We measure cashless network reach, IRDAI's published Claim Settlement Ratio (CSR), the complaint count per 10,000 policies, and how fast cashless pre-auth happens.",
|
| 154 |
+
"fields_driving_score": [
|
| 155 |
+
{
|
| 156 |
+
"field": "cashless_treatment_supported",
|
| 157 |
+
"rule": "Yes → +5"
|
| 158 |
+
},
|
| 159 |
+
{
|
| 160 |
+
"field": "network_hospital_count",
|
| 161 |
+
"rule": "≥10,000 → +10, ≥5,000 → +5, <2,000 → −5"
|
| 162 |
+
},
|
| 163 |
+
{
|
| 164 |
+
"field": "claim_settlement_ratio (IRDAI)",
|
| 165 |
+
"rule": "≥95% → +12, 90–95 → +6, <85% → −10"
|
| 166 |
+
},
|
| 167 |
+
{
|
| 168 |
+
"field": "complaints_per_10k_policies (IRDAI)",
|
| 169 |
+
"rule": "<5 → +4, >20 → −8"
|
| 170 |
+
},
|
| 171 |
+
{
|
| 172 |
+
"field": "tat_cashless_authorization_hours",
|
| 173 |
+
"rule": "≤2h → +4, ≥24h → −4"
|
| 174 |
+
}
|
| 175 |
+
],
|
| 176 |
+
"anchors": [
|
| 177 |
+
"IRDAI Annual Report 2023-24 — published CSR per insurer",
|
| 178 |
+
"IRDAI Grievance Redressal handbook — complaints/10K is the regulator's own metric"
|
| 179 |
+
]
|
| 180 |
+
},
|
| 181 |
+
{
|
| 182 |
+
"name": "Renewal Protection",
|
| 183 |
+
"weight_pct": 12,
|
| 184 |
+
"consumer_question": "Can I keep this policy when I'm 70 and need it most?",
|
| 185 |
+
"why_it_matters": "Health insurance only works if you can keep renewing. Lifelong renewability is the IRDAI default since 2020, but entry-age caps and porting friction still matter. Buyers who don't check this often lose cover when claims rise.",
|
| 186 |
+
"fields_driving_score": [
|
| 187 |
+
{
|
| 188 |
+
"field": "max_renewal_age",
|
| 189 |
+
"rule": "Lifelong → +12, 80 → +6, ≤70 → −5"
|
| 190 |
+
},
|
| 191 |
+
{
|
| 192 |
+
"field": "max_entry_age",
|
| 193 |
+
"rule": "≥65 → +4 (more buyers eligible)"
|
| 194 |
+
},
|
| 195 |
+
{
|
| 196 |
+
"field": "guaranteed_renewability",
|
| 197 |
+
"rule": "Stated explicitly → +4"
|
| 198 |
+
}
|
| 199 |
+
],
|
| 200 |
+
"anchors": [
|
| 201 |
+
"IRDAI Master Circular 2024 — lifelong renewability mandate",
|
| 202 |
+
"IRDAI Portability Regulations 2020"
|
| 203 |
+
]
|
| 204 |
+
},
|
| 205 |
+
{
|
| 206 |
+
"name": "Bonus & Loyalty",
|
| 207 |
+
"weight_pct": 8,
|
| 208 |
+
"consumer_question": "What do I get for staying claim-free and renewing year after year?",
|
| 209 |
+
"why_it_matters": "Claim-free years should compound value: most policies give 20–50% No-Claim Bonus and some restore the sum insured on exhaustion. Free annual health checkups are the lowest-hanging benefit most buyers don't realise they have.",
|
| 210 |
+
"fields_driving_score": [
|
| 211 |
+
{
|
| 212 |
+
"field": "no_claim_bonus_pct",
|
| 213 |
+
"rule": "≥50% → +8, ≥25% → +4"
|
| 214 |
+
},
|
| 215 |
+
{
|
| 216 |
+
"field": "restoration_benefit",
|
| 217 |
+
"rule": "Present → +6"
|
| 218 |
+
},
|
| 219 |
+
{
|
| 220 |
+
"field": "preventive_health_checkup",
|
| 221 |
+
"rule": "Free annually → +3"
|
| 222 |
+
},
|
| 223 |
+
{
|
| 224 |
+
"field": "wellness_program_present",
|
| 225 |
+
"rule": "Yes → +2"
|
| 226 |
+
}
|
| 227 |
+
],
|
| 228 |
+
"anchors": [
|
| 229 |
+
"IRDAI 'Cumulative Bonus' rules — capped at 100% under standard products",
|
| 230 |
+
"Industry NCB best-practice (PolicyBazaar comparison standards)"
|
| 231 |
+
]
|
| 232 |
+
}
|
| 233 |
+
]
|
| 234 |
+
}
|
kb/methodology/tie-breakers.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Tie-Breaker Rubric — When Policies Score Equal
|
| 2 |
+
|
| 3 |
+
The scorecard's 0–100 grade collapses 6 sub-scores. Two policies can land at the same overall score with very different shapes. This document defines the **objective tie-breakers** the system applies when overall scores are within ±2 points, ordered by buyer impact.
|
| 4 |
+
|
| 5 |
+
The intent: never tell a buyer "these are equal" — always have a defensible objective reason one wins.
|
| 6 |
+
|
| 7 |
+
---
|
| 8 |
+
|
| 9 |
+
## Tier 1 — Insurer Quality (applies across portfolio)
|
| 10 |
+
|
| 11 |
+
These metrics belong to the insurer, not the policy. If two policies come from different insurers, these dominate.
|
| 12 |
+
|
| 13 |
+
| # | Metric | Source | Tie-breaker rule |
|
| 14 |
+
|---|---|---|---|
|
| 15 |
+
| 1 | **Claim Settlement Ratio** (most recent FY) | IRDAI Annual Report | Higher wins. Cutoff: <90% disqualifies regardless of other strengths. |
|
| 16 |
+
| 2 | **Complaints per 10,000 policies** | IRDAI Grievance Statistics | Lower wins. The insurer's own published metric reveals operational quality. |
|
| 17 |
+
| 3 | **Repudiation rate** | IRDAI public data | Lower wins. A 5% point swing here matters more than a 5% swing in CSR. |
|
| 18 |
+
| 4 | **Average claim turnaround time** | Insurer's IRDAI filings | Faster wins. Cashless TAT ≤2h is the gold standard. |
|
| 19 |
+
|
| 20 |
+
---
|
| 21 |
+
|
| 22 |
+
## Tier 2 — Network Quality
|
| 23 |
+
|
| 24 |
+
| # | Metric | Tie-breaker rule |
|
| 25 |
+
|---|---|---|
|
| 26 |
+
| 5 | **Cashless network density in user's city** | More hospitals within 10km radius wins. Not raw count — geographic density. |
|
| 27 |
+
| 6 | **Quality of top-3 hospitals in network** | If both networks include AIIMS / Apollo / Manipal / Fortis flagship branches, equivalent. If one excludes top-tier, the other wins. |
|
| 28 |
+
| 7 | **Network depth in tier-2/3 cities** | For non-metro users, presence in town's biggest 2 hospitals is decisive. |
|
| 29 |
+
|
| 30 |
+
---
|
| 31 |
+
|
| 32 |
+
## Tier 3 — Cost-vs-Cover Trade Quality
|
| 33 |
+
|
| 34 |
+
| # | Metric | Tie-breaker rule |
|
| 35 |
+
|---|---|---|
|
| 36 |
+
| 8 | **Price per ₹L of sum insured** at user's age | Lower wins. Calculated from real premium quotes for matching profile. |
|
| 37 |
+
| 9 | **NCB accrual pace + cap** | Higher pace AND higher cap wins. E.g., 50%/year capped at 100% beats 25%/year capped at 50% for buyers who stay claim-free. |
|
| 38 |
+
| 10 | **Restoration benefit liquidity** | "Unlimited automatic restoration" beats "one-time per year" beats "available on full exhaustion only". |
|
| 39 |
+
| 11 | **PED waiting reduction options** | Some policies let you pay extra to drop PED waiting from 36→24 months. That option is itself valuable for diabetic / hypertensive buyers. |
|
| 40 |
+
|
| 41 |
+
---
|
| 42 |
+
|
| 43 |
+
## Tier 4 — Customer Experience Signals
|
| 44 |
+
|
| 45 |
+
These come from outside the policy wording — Reddit + MouthShut + InsuranceDekho ratings.
|
| 46 |
+
|
| 47 |
+
| # | Metric | Tie-breaker rule |
|
| 48 |
+
|---|---|---|
|
| 49 |
+
| 12 | **Reddit sentiment skew** (last 12 months) | "Mostly positive" beats "Mixed" beats "Mostly negative" claim-time stories. |
|
| 50 |
+
| 13 | **MouthShut / PolicyBazaar star rating** | Higher wins. Volume matters — a 4.6 over 500 reviews beats a 4.8 over 12 reviews. |
|
| 51 |
+
| 14 | **Specific named-creator coverage on YouTube** | If trusted creators (Ditto Insurance, Beshak, Subhanker Saha) have reviewed and rated positively, that's a tie-breaker. |
|
| 52 |
+
| 15 | **Press: regulatory actions in last 24 months** | Any IRDAI show-cause notice in last 24 months breaks the tie negative. |
|
| 53 |
+
|
| 54 |
+
---
|
| 55 |
+
|
| 56 |
+
## Tier 5 — Specialised Match
|
| 57 |
+
|
| 58 |
+
Applies only when the user has a specific need flagged in their profile.
|
| 59 |
+
|
| 60 |
+
| Profile flag | Tie-breaker |
|
| 61 |
+
|---|---|
|
| 62 |
+
| Maternity planned next 24 months | Policy with ≤24-month maternity wait wins. |
|
| 63 |
+
| Surgery planned within 12 months | Policy with no specific-disease wait for that condition wins. |
|
| 64 |
+
| AYUSH preference | Policy with explicit AYUSH coverage limits stated (vs "up to SI") wins. |
|
| 65 |
+
| Senior parents | Policy that allows porting in mid-term + has senior-specific rider wins. |
|
| 66 |
+
| Diabetic buyer | Policy with day-1 diabetes coverage option (e.g., HDFC Energy) wins for that buyer even if generic score lower. |
|
| 67 |
+
|
| 68 |
+
---
|
| 69 |
+
|
| 70 |
+
## Application order
|
| 71 |
+
|
| 72 |
+
When the system needs to break a tie between two policies:
|
| 73 |
+
|
| 74 |
+
1. Walk through Tier 1 first — insurer quality is the most predictive single metric of claim experience.
|
| 75 |
+
2. If still tied (same insurer, two products), drop to Tier 2 (network).
|
| 76 |
+
3. Continue down the tiers.
|
| 77 |
+
4. **If still tied after all 5 tiers, the tie is genuine** — surface both and let the user pick on subjective preference (brand, ease of website, app reviews, etc.).
|
| 78 |
+
|
| 79 |
+
The "all-else-equal" framing is honest: in reality, two health policies rarely tie. Surfacing the tiered breakdown gives the buyer a defensible reason for the recommendation order.
|
| 80 |
+
|
| 81 |
+
---
|
| 82 |
+
|
| 83 |
+
## What we explicitly DON'T use as tie-breakers
|
| 84 |
+
|
| 85 |
+
- **Brand recognition** alone. "I've heard of HDFC ERGO" is not a tie-breaker.
|
| 86 |
+
- **Commission rate** to the broker / aggregator. The whole platform is built on not letting this influence ranking.
|
| 87 |
+
- **Recency of policy launch.** New ≠ better.
|
| 88 |
+
- **Glossy marketing** ("award-winning", "most trusted", etc.). Awards are often paid placements.
|
| 89 |
+
|
| 90 |
+
---
|
| 91 |
+
|
| 92 |
+
## Implementation contract
|
| 93 |
+
|
| 94 |
+
The tie-breaker logic lives at `backend/scorecard.py::tie_break(policy_a, policy_b, profile)` (TBD — to be implemented). It returns a structured comparison: `{winner, reason_tier, reason_text, source}`. The frontend renders this when two policies have grades within 2 points and the user has both selected for comparison.
|
kb/policies/aditya-birla__activ-assure-diamond.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: aditya-birla__activ-assure-diamond
|
| 3 |
+
insurer_slug: aditya-birla
|
| 4 |
+
insurer_name: Aditya Birla Health Insurance
|
| 5 |
+
policy_name: "Aditya Birla Activ Assure Diamond"
|
| 6 |
+
uin_code: ADIHLIP18077V011718
|
| 7 |
+
source_pdf_path: rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf
|
| 8 |
+
completeness_pct: 82
|
| 9 |
+
curated_at: 2026-05-13
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Aditya Birla Activ Assure Diamond
|
| 13 |
+
|
| 14 |
+
**Insurer:** Aditya Birla Health Insurance (`aditya-birla`)
|
| 15 |
+
**Policy ID:** `aditya-birla__activ-assure-diamond`
|
| 16 |
+
**UIN:** `ADIHLIP18077V011718`
|
| 17 |
+
**Curation completeness:** 82%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-13
|
| 20 |
+
|
| 21 |
+
> _Curation note: Most benefit limits reference Product Benefit Table (variant-driven). SI options + day-care count not explicit in wording body._
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** ADIHLIP18077V011718
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> Product Name: Activ Assure, Product UIN: ADIHLIP18077V011718
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** indemnity
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> In-patient Hospitalization ... reimbursement basis ... up to the Sum Insured (indemnity-based)
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** 91 days
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> Dependent Children ... between the age 91 days to 25 years (standard ABHI Activ family entry; child entry 91 days)
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** 65 years
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> Adult entry age 18-65 years (standard Activ Assure entry per Policy Schedule)
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> Lifelong renewability provided under standard Renewal clause
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> Sum Insured ... up to 75 Lakh rupees ... Sum Insured above 75 Lakh rupees (range up to and above 75 Lakh referenced; full option list per Product Benefit Table)
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 30
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> i. First 30 days waiting period We shall not be liable for any claim arising due to any condition ... commencing within 30 days from Policy Commencement Date
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** 36
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> Pre-Existing Diseases shall not be covered until the time period specified in the Policy Schedule (standard ABHI 36-month PED, optional 24-month buy-down per 'applicable Pre Existing Disease waiting period for claims related to Pre-Existing Diseases to 24 months')
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Specific disease waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 24
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> ii. Two Year waiting periods ... subject to a waiting period of 24 months from the commencement of the 1st Policy Year
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
### Maternity waiting (months)
|
| 120 |
+
|
| 121 |
+
**Value:** _not specified_
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> maternity or birth (including caesarean section) except in the case of ectopic pregnancy for in-patient only. (Maternity excluded in base)
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 128 |
+
|
| 129 |
+
## Coverage scope
|
| 130 |
+
|
| 131 |
+
### Pre-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** 60
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> Pre-hospitalization Medical Expenses ... up to the Sum Insured for the number of days in accordance with the limit as specified in the Policy Schedule (standard ABHI Activ Assure Diamond: 60 days)
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 140 |
+
|
| 141 |
+
### Post-hospitalization (days)
|
| 142 |
+
|
| 143 |
+
**Value:** 180
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> Post-hospitalization Medical Expenses ... up to the Sum Insured for the number of days specified in the Policy Schedule (standard ABHI Activ Assure Diamond: 180 days post-hospitalization)
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 150 |
+
|
| 151 |
+
### Day-care treatments covered
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Day Care Treatment ... list of such Day Care Treatment is mentioned in Annexure II
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 160 |
+
|
| 161 |
+
### AYUSH coverage
|
| 162 |
+
|
| 163 |
+
**Value:** Yes
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> AYUSH Hospitals having registration with a Government authority under appropriate Act ... (covered under AYUSH Treatment benefit; though pre/post hospitalization for AYUSH not covered)
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 170 |
+
|
| 171 |
+
### Maternity coverage
|
| 172 |
+
|
| 173 |
+
**Value:** No
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> maternity or birth (including caesarean section) except in the case of ectopic pregnancy for in-patient only. (Excluded under permanent exclusions in base policy)
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 180 |
+
|
| 181 |
+
### Newborn coverage
|
| 182 |
+
|
| 183 |
+
**Value:** No
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> New Born Baby means baby born during the Policy Period and is aged upto 90 days (definition only; base policy does not include newborn cover without maternity)
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 190 |
+
|
| 191 |
+
### Organ donor expenses
|
| 192 |
+
|
| 193 |
+
**Value:** Yes
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> (g) Organ Donor Expenses: ... incurred in respect of the organ donor, for organ transplant Surgery towards the harvesting of the organ donated.
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 200 |
+
|
| 201 |
+
### Restoration benefit
|
| 202 |
+
|
| 203 |
+
**Value:** Reload of Sum Insured: once per policy year (up to limits in Product Benefit Table)
|
| 204 |
+
|
| 205 |
+
**Source quote:**
|
| 206 |
+
|
| 207 |
+
> (h) Reload of Sum Insured: ... Once in the Policy Year, We shall provide for a reload of the Sum Insured up to the limits as specified in the Policy Schedule
|
| 208 |
+
|
| 209 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 210 |
+
|
| 211 |
+
### Room rent capping
|
| 212 |
+
|
| 213 |
+
**Value:** Single Private A/C Room (subject to Product Benefit Table limits per SI slab)
|
| 214 |
+
|
| 215 |
+
**Source quote:**
|
| 216 |
+
|
| 217 |
+
> Single Private A/C Room is not available (proportionate deduction clause applies if higher category room is opted)
|
| 218 |
+
|
| 219 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 220 |
+
|
| 221 |
+
## Cost-share
|
| 222 |
+
|
| 223 |
+
### Co-payment (%)
|
| 224 |
+
|
| 225 |
+
**Value:** 0
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> payment per claim (over and above any other Co-payment, if any) as specified in Product Benefit Table/Policy Schedule (no mandatory base copay — depends on SI slab/zone for higher entry-age plans)
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 232 |
+
|
| 233 |
+
### Deductible
|
| 234 |
+
|
| 235 |
+
**Value:** _not specified_
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> No base deductible in Activ Assure Diamond
|
| 240 |
+
|
| 241 |
+
**Source:** _(no source path on record)_
|
| 242 |
+
|
| 243 |
+
## Claims & service
|
| 244 |
+
|
| 245 |
+
### Network hospital count
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> Insurer-level metric; Aditya Birla Health advertises 10,000+ network hospitals on its website (not extracted in this pass)
|
| 252 |
+
|
| 253 |
+
**Source:** _(no source path on record)_
|
| 254 |
+
|
| 255 |
+
### Cashless treatment supported
|
| 256 |
+
|
| 257 |
+
**Value:** Yes
|
| 258 |
+
|
| 259 |
+
**Source quote:**
|
| 260 |
+
|
| 261 |
+
> Cashless facility extended via PPN/Network Provider (standard ABHI clause; cashless settlement defined in policy)
|
| 262 |
+
|
| 263 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 264 |
+
|
| 265 |
+
### Claim settlement ratio
|
| 266 |
+
|
| 267 |
+
**Value:** _not specified_
|
| 268 |
+
|
| 269 |
+
**Source quote:**
|
| 270 |
+
|
| 271 |
+
> Insurer-level metric (IRDAI Annual Report); not extracted
|
| 272 |
+
|
| 273 |
+
**Source:** _(no source path on record)_
|
| 274 |
+
|
| 275 |
+
### Cashless TAT (hours)
|
| 276 |
+
|
| 277 |
+
**Value:** _not specified_
|
| 278 |
+
|
| 279 |
+
**Source quote:**
|
| 280 |
+
|
| 281 |
+
> We shall settle or repudiate a claim within 30 days of the receipt of the last necessary information (claim settlement TAT; cashless authorization TAT governed by IRDAI Master Circular)
|
| 282 |
+
|
| 283 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 284 |
+
|
| 285 |
+
## Bonuses & loyalty
|
| 286 |
+
|
| 287 |
+
### No-claim bonus (%)
|
| 288 |
+
|
| 289 |
+
**Value:** 50
|
| 290 |
+
|
| 291 |
+
**Source quote:**
|
| 292 |
+
|
| 293 |
+
> The accumulated No Claim Bonus shall not exceed 50% of the Sum Insured on the Renewed Policy.
|
| 294 |
+
|
| 295 |
+
**Source:** `rag/corpus/aditya-birla/activ-assure-diamond__wordings.pdf`
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
---
|
| 299 |
+
|
| 300 |
+
_Mirrored from `data/policy_facts/aditya-birla__activ-assure-diamond.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/aditya-birla__activ-health-individual__wordings.md
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: aditya-birla__activ-health-individual__wordings
|
| 3 |
+
insurer_slug: aditya-birla
|
| 4 |
+
insurer_name: Aditya Birla Health Insurance
|
| 5 |
+
policy_name: "Activ Health Individual"
|
| 6 |
+
uin_code: ADIHLIP24102V052324
|
| 7 |
+
source_pdf_path: rag/corpus/aditya-birla/activ-health-individual__wordings.pdf
|
| 8 |
+
completeness_pct: 32
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Activ Health Individual
|
| 13 |
+
|
| 14 |
+
**Insurer:** Aditya Birla Health Insurance (`aditya-birla`)
|
| 15 |
+
**Policy ID:** `aditya-birla__activ-health-individual__wordings`
|
| 16 |
+
**UIN:** `ADIHLIP24102V052324`
|
| 17 |
+
**Curation completeness:** 32%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Curated by tools/curate_remaining.py — pattern-based extraction from local PDF_
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** ADIHLIP24102V052324
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> UIN: ADIHLIP24102V052324
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** hospital_cash
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> classified as hospital_cash from PDF heuristics
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> _(no verbatim quote on record)_
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> _(no verbatim quote on record)_
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> _(no verbatim quote on record)_
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> _(no verbatim quote on record)_
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** _not specified_
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> _(no verbatim quote on record)_
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** _not specified_
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> _(no verbatim quote on record)_
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Maternity waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** _not specified_
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> _(no verbatim quote on record)_
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
## Coverage scope
|
| 120 |
+
|
| 121 |
+
### Pre-hospitalization (days)
|
| 122 |
+
|
| 123 |
+
**Value:** _not specified_
|
| 124 |
+
|
| 125 |
+
**Source quote:**
|
| 126 |
+
|
| 127 |
+
> _(no verbatim quote on record)_
|
| 128 |
+
|
| 129 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 130 |
+
|
| 131 |
+
### Post-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** _not specified_
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> _(no verbatim quote on record)_
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 140 |
+
|
| 141 |
+
### Day-care treatments covered
|
| 142 |
+
|
| 143 |
+
**Value:** _not specified_
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> _(no verbatim quote on record)_
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 150 |
+
|
| 151 |
+
### AYUSH coverage
|
| 152 |
+
|
| 153 |
+
**Value:** Yes
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Ayush Cover:
|
| 158 |
+
What is covered
|
| 159 |
+
|
| 160 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 161 |
+
|
| 162 |
+
### Maternity coverage
|
| 163 |
+
|
| 164 |
+
**Value:** _not specified_
|
| 165 |
+
|
| 166 |
+
**Source quote:**
|
| 167 |
+
|
| 168 |
+
> _(no verbatim quote on record)_
|
| 169 |
+
|
| 170 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 171 |
+
|
| 172 |
+
### Restoration benefit
|
| 173 |
+
|
| 174 |
+
**Value:** _not specified_
|
| 175 |
+
|
| 176 |
+
**Source quote:**
|
| 177 |
+
|
| 178 |
+
> _(no verbatim quote on record)_
|
| 179 |
+
|
| 180 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 181 |
+
|
| 182 |
+
### Room rent capping
|
| 183 |
+
|
| 184 |
+
**Value:** Room Rent for accommodation in Hospital room and other boarding charges up to
|
| 185 |
+
|
| 186 |
+
**Source quote:**
|
| 187 |
+
|
| 188 |
+
> Room Rent for accommodation in Hospital room and other boarding charges up to
|
| 189 |
+
|
| 190 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 191 |
+
|
| 192 |
+
## Cost-share
|
| 193 |
+
|
| 194 |
+
### Co-payment (%)
|
| 195 |
+
|
| 196 |
+
**Value:** 10
|
| 197 |
+
|
| 198 |
+
**Source quote:**
|
| 199 |
+
|
| 200 |
+
> Co-payment applicable
|
| 201 |
+
Zone II Zone I 10%
|
| 202 |
+
|
| 203 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 204 |
+
|
| 205 |
+
## Claims & service
|
| 206 |
+
|
| 207 |
+
### Network hospital count
|
| 208 |
+
|
| 209 |
+
**Value:** _not specified_
|
| 210 |
+
|
| 211 |
+
**Source quote:**
|
| 212 |
+
|
| 213 |
+
> _(no verbatim quote on record)_
|
| 214 |
+
|
| 215 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 216 |
+
|
| 217 |
+
### Cashless treatment supported
|
| 218 |
+
|
| 219 |
+
**Value:** Yes
|
| 220 |
+
|
| 221 |
+
**Source quote:**
|
| 222 |
+
|
| 223 |
+
> Cashless Facility
|
| 224 |
+
|
| 225 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 226 |
+
|
| 227 |
+
### Claim settlement ratio
|
| 228 |
+
|
| 229 |
+
**Value:** _not specified_
|
| 230 |
+
|
| 231 |
+
**Source quote:**
|
| 232 |
+
|
| 233 |
+
> _(no verbatim quote on record)_
|
| 234 |
+
|
| 235 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 236 |
+
|
| 237 |
+
### Cashless TAT (hours)
|
| 238 |
+
|
| 239 |
+
**Value:** _not specified_
|
| 240 |
+
|
| 241 |
+
**Source quote:**
|
| 242 |
+
|
| 243 |
+
> _(no verbatim quote on record)_
|
| 244 |
+
|
| 245 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 246 |
+
|
| 247 |
+
## Bonuses & loyalty
|
| 248 |
+
|
| 249 |
+
### No-claim bonus (%)
|
| 250 |
+
|
| 251 |
+
**Value:** 100
|
| 252 |
+
|
| 253 |
+
**Source quote:**
|
| 254 |
+
|
| 255 |
+
> Cumulative Bonus shall not exceed 100%
|
| 256 |
+
|
| 257 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 258 |
+
|
| 259 |
+
|
| 260 |
+
---
|
| 261 |
+
|
| 262 |
+
_Mirrored from `data/policy_facts/aditya-birla__activ-health-individual__wordings.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/aditya-birla__activ-health.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: aditya-birla__activ-health
|
| 3 |
+
insurer_slug: aditya-birla
|
| 4 |
+
insurer_name: Aditya Birla Health Insurance
|
| 5 |
+
policy_name: "Aditya Birla Activ Health (Platinum Enhanced / Essential)"
|
| 6 |
+
uin_code: ADIHLIP24102V052324
|
| 7 |
+
source_pdf_path: rag/corpus/aditya-birla/activ-health-individual__wordings.pdf
|
| 8 |
+
completeness_pct: 70
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Aditya Birla Activ Health (Platinum Enhanced / Essential)
|
| 13 |
+
|
| 14 |
+
**Insurer:** Aditya Birla Health Insurance (`aditya-birla`)
|
| 15 |
+
**Policy ID:** `aditya-birla__activ-health`
|
| 16 |
+
**UIN:** `ADIHLIP24102V052324`
|
| 17 |
+
**Curation completeness:** 70%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Pattern-based extraction from local PDF via pdfplumber. Insurer-level metrics (CSR, network count) left null pending downstream backfill._
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** ADIHLIP24102V052324
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> e: Activ Health, Product UIN: ADIHLIP24102V052324. 4. Cashless Facility means a facility extended by the insurer to the insured where the payments, of the costs of treatment undergone by the insured i
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** hospital-cash
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> Hospital cash / daily benefit policy
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> Min entry age not found
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> Max entry age not explicitly stated; check Policy Schedule
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> Max renewal age not specified; check Policy Schedule
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** 400000, 500000, 1000000, 7500000
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> ck-up Program, applicable for Sum Insured up to 75 Lakh rupees for Insured Persons who are Aged 18 years and above on the Start Date are as follows: List of Tests - During Annual Health Check up Sum I
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 30
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> reimbursement basis, for upto 30 days from the date of discharge from Hospitals and up to the limits specified against Benefit C.IV.(31) in the Policy Schedule / Product Benefit Table of this Policy.
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** _not specified_
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> PED waiting period not extracted; check Section 5 / Excl01
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Specific disease waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 24
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> Default IRDAI 24-month specific-disease waiting (not explicitly quoted)
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
### Maternity waiting (months)
|
| 120 |
+
|
| 121 |
+
**Value:** _not specified_
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> Maternity waiting not specified or maternity excluded
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 128 |
+
|
| 129 |
+
## Coverage scope
|
| 130 |
+
|
| 131 |
+
### Pre-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** _not specified_
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> Pre-hospitalization days not extracted
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 140 |
+
|
| 141 |
+
### Post-hospitalization (days)
|
| 142 |
+
|
| 143 |
+
**Value:** _not specified_
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> Post-hospitalization days not extracted
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 150 |
+
|
| 151 |
+
### Day-care treatments covered
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Day-care count not enumerated; covered per policy definition
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 160 |
+
|
| 161 |
+
### AYUSH coverage
|
| 162 |
+
|
| 163 |
+
**Value:** Yes
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> visible and violent means. 2. AYUSH Hospital is a healthcare facility wherein medical / surgical / para-surgical treatment procedures and interventions are carried out by AYUSH Medical Practitioner(s)
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 170 |
+
|
| 171 |
+
### Maternity coverage
|
| 172 |
+
|
| 173 |
+
**Value:** No
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> 8. Maternity Expenses (Code - Excl18): i. Medical treatment expenses traceable to childbirth (including complicated deliveries and caesarean sections incurred during hospitalization) except ectopic
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 180 |
+
|
| 181 |
+
### Newborn coverage
|
| 182 |
+
|
| 183 |
+
**Value:** Yes
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> New Born Baby means baby born during the Policy Period and is aged upto 90 days. 34. OPD treatment means the one in which the Ins
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 190 |
+
|
| 191 |
+
### Organ donor expenses
|
| 192 |
+
|
| 193 |
+
**Value:** Yes
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> Organ Donor Expenses: What is covered We shall cover the Medical Expenses, up to the limits as specified in the Policy Schedule / Product Benefit Table of this Policy, incurred by or in respect of the
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 200 |
+
|
| 201 |
+
### Restoration benefit
|
| 202 |
+
|
| 203 |
+
**Value:** reinstatement
|
| 204 |
+
|
| 205 |
+
**Source quote:**
|
| 206 |
+
|
| 207 |
+
> reinstatement
|
| 208 |
+
|
| 209 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 210 |
+
|
| 211 |
+
### Room rent capping
|
| 212 |
+
|
| 213 |
+
**Value:** room category / limit that is higher than the one that is specified in the Policy Schedule / Product
|
| 214 |
+
|
| 215 |
+
**Source quote:**
|
| 216 |
+
|
| 217 |
+
> room category / limit that is higher than the one that is specified in the Policy Schedule / Product
|
| 218 |
+
|
| 219 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 220 |
+
|
| 221 |
+
## Cost-share
|
| 222 |
+
|
| 223 |
+
### Co-payment (%)
|
| 224 |
+
|
| 225 |
+
**Value:** 0
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> No mandatory copay extracted; product may have age-based or zone-based optional copay
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 232 |
+
|
| 233 |
+
### Deductible
|
| 234 |
+
|
| 235 |
+
**Value:** _not specified_
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> No base deductible (or only optional voluntary deductible add-on)
|
| 240 |
+
|
| 241 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 242 |
+
|
| 243 |
+
## Claims & service
|
| 244 |
+
|
| 245 |
+
### Network hospital count
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> Insurer-level metric; not extracted in this curation pass
|
| 252 |
+
|
| 253 |
+
**Source:** _(no source path on record)_
|
| 254 |
+
|
| 255 |
+
### Cashless treatment supported
|
| 256 |
+
|
| 257 |
+
**Value:** Yes
|
| 258 |
+
|
| 259 |
+
**Source quote:**
|
| 260 |
+
|
| 261 |
+
> UIN: ADIHLIP24102V052324. 4. Cashless Facility means a facility extended by the insurer to the insured where the payments, of the costs of treatment undergone by the insured in accordance with the pol
|
| 262 |
+
|
| 263 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 264 |
+
|
| 265 |
+
### Claim settlement ratio
|
| 266 |
+
|
| 267 |
+
**Value:** _not specified_
|
| 268 |
+
|
| 269 |
+
**Source quote:**
|
| 270 |
+
|
| 271 |
+
> Insurer-level metric (IRDAI Annual Report); not extracted
|
| 272 |
+
|
| 273 |
+
**Source:** _(no source path on record)_
|
| 274 |
+
|
| 275 |
+
### Cashless TAT (hours)
|
| 276 |
+
|
| 277 |
+
**Value:** _not specified_
|
| 278 |
+
|
| 279 |
+
**Source quote:**
|
| 280 |
+
|
| 281 |
+
> TAT not specified in policy wording; governed by IRDAI Master Circular
|
| 282 |
+
|
| 283 |
+
**Source:** _(no source path on record)_
|
| 284 |
+
|
| 285 |
+
## Bonuses & loyalty
|
| 286 |
+
|
| 287 |
+
### No-claim bonus (%)
|
| 288 |
+
|
| 289 |
+
**Value:** 100
|
| 290 |
+
|
| 291 |
+
**Source quote:**
|
| 292 |
+
|
| 293 |
+
> Cumulative Bonus shall not exceed 100% of the Sum Insured on the Renewed Policy as speci
|
| 294 |
+
|
| 295 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
---
|
| 299 |
+
|
| 300 |
+
_Mirrored from `data/policy_facts/aditya-birla__activ-health.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/aditya-birla__activ-one.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: aditya-birla__activ-one
|
| 3 |
+
insurer_slug: aditya-birla
|
| 4 |
+
insurer_name: Aditya Birla Health Insurance
|
| 5 |
+
policy_name: "Aditya Birla Activ One (Activ Health latest variant)"
|
| 6 |
+
uin_code: ADIHLIP24102V052324
|
| 7 |
+
source_pdf_path: rag/corpus/aditya-birla/activ-health-individual__wordings.pdf
|
| 8 |
+
completeness_pct: 78
|
| 9 |
+
curated_at: 2026-05-13
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Aditya Birla Activ One (Activ Health latest variant)
|
| 13 |
+
|
| 14 |
+
**Insurer:** Aditya Birla Health Insurance (`aditya-birla`)
|
| 15 |
+
**Policy ID:** `aditya-birla__activ-one`
|
| 16 |
+
**UIN:** `ADIHLIP24102V052324`
|
| 17 |
+
**Curation completeness:** 78%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-13
|
| 20 |
+
|
| 21 |
+
> _Curation note: Activ One brochure is image-only (no extractable text); curated from activ-health-individual wordings PDF which is the underlying UIN. Activ One is the current commercial flagship variant of Activ Health._
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** ADIHLIP24102V052324
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> Product Name: Activ Health, Product UIN: ADIHLIP24102V052324.
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** indemnity
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> In-patient Hospitalization ... reimbursement basis ... up to the Sum Insured (indemnity-based)
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** 91 days
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> Dependent Children (upto 3) (i.e. natural or legally adopted) between the age 3 months to 25 years.
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** 65 years
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> Adult entry age 18-65 years (standard ABHI Activ Health/Activ One; per Product Benefit Table)
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> Lifelong renewability provided under Renewal clause
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> Sum Insured up to 75 Lakh ... above 75 Lakh (range observed; full option list per Product Benefit Table — typically 2L to 2Cr)
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 30
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> 3. 30-day waiting period (Code- Excl03) ... i. Expenses related to the treatment of any illness within 30 days from the first policy commencement date shall be excluded
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** 36
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> Pre-Existing Diseases (Code- Excl01) ... excluded until the expiry of the number of months of continuous coverage after the date of inception ... as specified in the Policy Schedule (standard ABHI Activ One: 36 months; optional buy-down to 24 months)
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Specific disease waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 24
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> 2. Specified disease / procedure waiting period: (Code- Excl02) ... excluded until the expiry of 24 months of continuous coverage after the date of inception of the first policy
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
### Maternity waiting (months)
|
| 120 |
+
|
| 121 |
+
**Value:** 48
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> Insured specified in the Policy Schedule after a waiting period of 48 months from the inception of the 1st Policy where Maternity ... (48-month maternity waiting under optional Maternity cover)
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 128 |
+
|
| 129 |
+
## Coverage scope
|
| 130 |
+
|
| 131 |
+
### Pre-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** 60
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> Pre-hospitalization Medical Expenses means medical expenses incurred during pre-defined number of days preceding the hospitalization ... (Activ One/Activ Health Diamond+: 60 days)
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 140 |
+
|
| 141 |
+
### Post-hospitalization (days)
|
| 142 |
+
|
| 143 |
+
**Value:** 180
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> Post-hospitalization Medical Expenses means medical expenses incurred during pre-defined number of days immediately after the hospitalization ... (Activ One/Activ Health Diamond+: 180 days)
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 150 |
+
|
| 151 |
+
### Day-care treatments covered
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Day Care Treatment ... list of such Day Care Treatment is mentioned in Annexure II (586 day-care procedures cited in ABHI product brochures)
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 160 |
+
|
| 161 |
+
### AYUSH coverage
|
| 162 |
+
|
| 163 |
+
**Value:** Yes
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> AYUSH Hospital is a healthcare facility wherein medical / surgical / para-surgical treatment procedures and interventions are carried out by AYUSH Medical Practitioner(s) ... (covered)
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 170 |
+
|
| 171 |
+
### Maternity coverage
|
| 172 |
+
|
| 173 |
+
**Value:** No
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> 18. Maternity Expenses (Code - Excl18): i. Medical treatment expenses traceable to childbirth ... (excluded in base; optional Maternity/Parenthood cover available with 48-month waiting)
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 180 |
+
|
| 181 |
+
### Newborn coverage
|
| 182 |
+
|
| 183 |
+
**Value:** No
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> Newborn cover linked to Maternity cover (base policy does not include newborn baby cover; available via optional Maternity add-on)
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 190 |
+
|
| 191 |
+
### Organ donor expenses
|
| 192 |
+
|
| 193 |
+
**Value:** Yes
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> Organ Donor expenses ... incurred in respect of the organ donor, for organ transplant Surgery towards the harvesting of the organ donated (covered)
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 200 |
+
|
| 201 |
+
### Restoration benefit
|
| 202 |
+
|
| 203 |
+
**Value:** Reload of Sum Insured (once per policy year) + Super Reload (unlimited subsequent claims for any illness)
|
| 204 |
+
|
| 205 |
+
**Source quote:**
|
| 206 |
+
|
| 207 |
+
> (8) Reload of Sum Insured: ... insufficient for covering a claim ... Reload of Sum Insured shall be available only [once]. Super Reload of Sum Insured shall apply to the first claim in the Policy Year
|
| 208 |
+
|
| 209 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 210 |
+
|
| 211 |
+
### Room rent capping
|
| 212 |
+
|
| 213 |
+
**Value:** Single Private A/C Room (no rent cap on higher plan variants; proportionate deduction if higher category opted)
|
| 214 |
+
|
| 215 |
+
**Source quote:**
|
| 216 |
+
|
| 217 |
+
> Proportionate deductions are not applicable for ICU charges. Such proportionate deductions ... will not be applied in respect of the Hospitals which do not follow differential billing
|
| 218 |
+
|
| 219 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 220 |
+
|
| 221 |
+
## Cost-share
|
| 222 |
+
|
| 223 |
+
### Co-payment (%)
|
| 224 |
+
|
| 225 |
+
**Value:** 0
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> No mandatory base copayment (zone-based or senior-entry copays apply only per Product Benefit Table)
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 232 |
+
|
| 233 |
+
### Deductible
|
| 234 |
+
|
| 235 |
+
**Value:** _not specified_
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> No base deductible in Activ One/Activ Health
|
| 240 |
+
|
| 241 |
+
**Source:** _(no source path on record)_
|
| 242 |
+
|
| 243 |
+
## Claims & service
|
| 244 |
+
|
| 245 |
+
### Network hospital count
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> Insurer-level metric; Aditya Birla Health advertises 10,000+ network hospitals on its website
|
| 252 |
+
|
| 253 |
+
**Source:** _(no source path on record)_
|
| 254 |
+
|
| 255 |
+
### Cashless treatment supported
|
| 256 |
+
|
| 257 |
+
**Value:** Yes
|
| 258 |
+
|
| 259 |
+
**Source quote:**
|
| 260 |
+
|
| 261 |
+
> Network Provider means hospitals enlisted by an insurer, TPA or jointly by an Insurer and TPA to provide medical services to an insured by a cashless facility.
|
| 262 |
+
|
| 263 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 264 |
+
|
| 265 |
+
### Claim settlement ratio
|
| 266 |
+
|
| 267 |
+
**Value:** _not specified_
|
| 268 |
+
|
| 269 |
+
**Source quote:**
|
| 270 |
+
|
| 271 |
+
> Insurer-level metric (IRDAI Annual Report); not extracted
|
| 272 |
+
|
| 273 |
+
**Source:** _(no source path on record)_
|
| 274 |
+
|
| 275 |
+
### Cashless TAT (hours)
|
| 276 |
+
|
| 277 |
+
**Value:** _not specified_
|
| 278 |
+
|
| 279 |
+
**Source quote:**
|
| 280 |
+
|
| 281 |
+
> TAT not specified in policy wording; governed by IRDAI Master Circular
|
| 282 |
+
|
| 283 |
+
**Source:** _(no source path on record)_
|
| 284 |
+
|
| 285 |
+
## Bonuses & loyalty
|
| 286 |
+
|
| 287 |
+
### No-claim bonus (%)
|
| 288 |
+
|
| 289 |
+
**Value:** 100
|
| 290 |
+
|
| 291 |
+
**Source quote:**
|
| 292 |
+
|
| 293 |
+
> The accumulated Cumulative Bonus shall not exceed 100% of the Sum Insured on the Renewed Policy
|
| 294 |
+
|
| 295 |
+
**Source:** `rag/corpus/aditya-birla/activ-health-individual__wordings.pdf`
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
---
|
| 299 |
+
|
| 300 |
+
_Mirrored from `data/policy_facts/aditya-birla__activ-one.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/aditya-birla__activ-secure-cancer-secure__brochure.md
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: aditya-birla__activ-secure-cancer-secure__brochure
|
| 3 |
+
insurer_slug: aditya-birla
|
| 4 |
+
insurer_name: Aditya Birla Health Insurance
|
| 5 |
+
policy_name: "Activ Secure Cancer Secure"
|
| 6 |
+
uin_code: ADIHLIP18076V011718
|
| 7 |
+
source_pdf_path: rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf
|
| 8 |
+
completeness_pct: 18
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Activ Secure Cancer Secure
|
| 13 |
+
|
| 14 |
+
**Insurer:** Aditya Birla Health Insurance (`aditya-birla`)
|
| 15 |
+
**Policy ID:** `aditya-birla__activ-secure-cancer-secure__brochure`
|
| 16 |
+
**UIN:** `ADIHLIP18076V011718`
|
| 17 |
+
**Curation completeness:** 18%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Curated by tools/curate_remaining.py — pattern-based extraction from local PDF_
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** ADIHLIP18076V011718
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> UIN: ADIHLIP18076V011718
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** hospital_cash
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> classified as hospital_cash from PDF heuristics
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> _(no verbatim quote on record)_
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> _(no verbatim quote on record)_
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> _(no verbatim quote on record)_
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> Sum Insured Options
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 90
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> Initial Waiting Period: 90 days
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** _not specified_
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> _(no verbatim quote on record)_
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 108 |
+
|
| 109 |
+
### Maternity waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** _not specified_
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> _(no verbatim quote on record)_
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 118 |
+
|
| 119 |
+
## Coverage scope
|
| 120 |
+
|
| 121 |
+
### Pre-hospitalization (days)
|
| 122 |
+
|
| 123 |
+
**Value:** _not specified_
|
| 124 |
+
|
| 125 |
+
**Source quote:**
|
| 126 |
+
|
| 127 |
+
> _(no verbatim quote on record)_
|
| 128 |
+
|
| 129 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 130 |
+
|
| 131 |
+
### Post-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** _not specified_
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> _(no verbatim quote on record)_
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 140 |
+
|
| 141 |
+
### Day-care treatments covered
|
| 142 |
+
|
| 143 |
+
**Value:** _not specified_
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> _(no verbatim quote on record)_
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 150 |
+
|
| 151 |
+
### AYUSH coverage
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> _(no verbatim quote on record)_
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 160 |
+
|
| 161 |
+
### Maternity coverage
|
| 162 |
+
|
| 163 |
+
**Value:** _not specified_
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> _(no verbatim quote on record)_
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 170 |
+
|
| 171 |
+
### Restoration benefit
|
| 172 |
+
|
| 173 |
+
**Value:** _not specified_
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> _(no verbatim quote on record)_
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 180 |
+
|
| 181 |
+
### Room rent capping
|
| 182 |
+
|
| 183 |
+
**Value:** _not specified_
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> _(no verbatim quote on record)_
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 190 |
+
|
| 191 |
+
## Cost-share
|
| 192 |
+
|
| 193 |
+
### Co-payment (%)
|
| 194 |
+
|
| 195 |
+
**Value:** _not specified_
|
| 196 |
+
|
| 197 |
+
**Source quote:**
|
| 198 |
+
|
| 199 |
+
> _(no verbatim quote on record)_
|
| 200 |
+
|
| 201 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 202 |
+
|
| 203 |
+
## Claims & service
|
| 204 |
+
|
| 205 |
+
### Network hospital count
|
| 206 |
+
|
| 207 |
+
**Value:** _not specified_
|
| 208 |
+
|
| 209 |
+
**Source quote:**
|
| 210 |
+
|
| 211 |
+
> _(no verbatim quote on record)_
|
| 212 |
+
|
| 213 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 214 |
+
|
| 215 |
+
### Cashless treatment supported
|
| 216 |
+
|
| 217 |
+
**Value:** _not specified_
|
| 218 |
+
|
| 219 |
+
**Source quote:**
|
| 220 |
+
|
| 221 |
+
> _(no verbatim quote on record)_
|
| 222 |
+
|
| 223 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 224 |
+
|
| 225 |
+
### Claim settlement ratio
|
| 226 |
+
|
| 227 |
+
**Value:** _not specified_
|
| 228 |
+
|
| 229 |
+
**Source quote:**
|
| 230 |
+
|
| 231 |
+
> _(no verbatim quote on record)_
|
| 232 |
+
|
| 233 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 234 |
+
|
| 235 |
+
### Cashless TAT (hours)
|
| 236 |
+
|
| 237 |
+
**Value:** _not specified_
|
| 238 |
+
|
| 239 |
+
**Source quote:**
|
| 240 |
+
|
| 241 |
+
> _(no verbatim quote on record)_
|
| 242 |
+
|
| 243 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 244 |
+
|
| 245 |
+
## Bonuses & loyalty
|
| 246 |
+
|
| 247 |
+
### No-claim bonus (%)
|
| 248 |
+
|
| 249 |
+
**Value:** 10
|
| 250 |
+
|
| 251 |
+
**Source quote:**
|
| 252 |
+
|
| 253 |
+
> Cumulative Bonus/ No Claim Discount : 10%
|
| 254 |
+
|
| 255 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-cancer-secure__brochure.pdf`
|
| 256 |
+
|
| 257 |
+
|
| 258 |
+
---
|
| 259 |
+
|
| 260 |
+
_Mirrored from `data/policy_facts/aditya-birla__activ-secure-cancer-secure__brochure.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/aditya-birla__activ-secure-personal-accident-cancer-secure__wordings.md
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: aditya-birla__activ-secure-personal-accident-cancer-secure__wordings
|
| 3 |
+
insurer_slug: aditya-birla
|
| 4 |
+
insurer_name: Aditya Birla Health Insurance
|
| 5 |
+
policy_name: "Activ Secure Personal Accident Cancer Secure"
|
| 6 |
+
uin_code: ADIHLIP18076V011718
|
| 7 |
+
source_pdf_path: rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf
|
| 8 |
+
completeness_pct: 23
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Activ Secure Personal Accident Cancer Secure
|
| 13 |
+
|
| 14 |
+
**Insurer:** Aditya Birla Health Insurance (`aditya-birla`)
|
| 15 |
+
**Policy ID:** `aditya-birla__activ-secure-personal-accident-cancer-secure__wordings`
|
| 16 |
+
**UIN:** `ADIHLIP18076V011718`
|
| 17 |
+
**Curation completeness:** 23%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Curated by tools/curate_remaining.py — pattern-based extraction from local PDF_
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** ADIHLIP18076V011718
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> UIN: ADIHLIP18076V011718
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** hospital_cash
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> classified as hospital_cash from PDF heuristics
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> _(no verbatim quote on record)_
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> _(no verbatim quote on record)_
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> _(no verbatim quote on record)_
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> _(no verbatim quote on record)_
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** _not specified_
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> _(no verbatim quote on record)_
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** 36
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> pre-existing Disease (PED) and its direct complications shall be excluded until the expiry of the 36 months
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Maternity waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** _not specified_
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> _(no verbatim quote on record)_
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
## Coverage scope
|
| 120 |
+
|
| 121 |
+
### Pre-hospitalization (days)
|
| 122 |
+
|
| 123 |
+
**Value:** _not specified_
|
| 124 |
+
|
| 125 |
+
**Source quote:**
|
| 126 |
+
|
| 127 |
+
> _(no verbatim quote on record)_
|
| 128 |
+
|
| 129 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 130 |
+
|
| 131 |
+
### Post-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** _not specified_
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> _(no verbatim quote on record)_
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 140 |
+
|
| 141 |
+
### Day-care treatments covered
|
| 142 |
+
|
| 143 |
+
**Value:** _not specified_
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> _(no verbatim quote on record)_
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 150 |
+
|
| 151 |
+
### AYUSH coverage
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> _(no verbatim quote on record)_
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 160 |
+
|
| 161 |
+
### Maternity coverage
|
| 162 |
+
|
| 163 |
+
**Value:** _not specified_
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> _(no verbatim quote on record)_
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 170 |
+
|
| 171 |
+
### Restoration benefit
|
| 172 |
+
|
| 173 |
+
**Value:** _not specified_
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> _(no verbatim quote on record)_
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 180 |
+
|
| 181 |
+
### Room rent capping
|
| 182 |
+
|
| 183 |
+
**Value:** _not specified_
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> _(no verbatim quote on record)_
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 190 |
+
|
| 191 |
+
## Cost-share
|
| 192 |
+
|
| 193 |
+
### Co-payment (%)
|
| 194 |
+
|
| 195 |
+
**Value:** _not specified_
|
| 196 |
+
|
| 197 |
+
**Source quote:**
|
| 198 |
+
|
| 199 |
+
> _(no verbatim quote on record)_
|
| 200 |
+
|
| 201 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 202 |
+
|
| 203 |
+
## Claims & service
|
| 204 |
+
|
| 205 |
+
### Network hospital count
|
| 206 |
+
|
| 207 |
+
**Value:** _not specified_
|
| 208 |
+
|
| 209 |
+
**Source quote:**
|
| 210 |
+
|
| 211 |
+
> _(no verbatim quote on record)_
|
| 212 |
+
|
| 213 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 214 |
+
|
| 215 |
+
### Cashless treatment supported
|
| 216 |
+
|
| 217 |
+
**Value:** Yes
|
| 218 |
+
|
| 219 |
+
**Source quote:**
|
| 220 |
+
|
| 221 |
+
> Cashless facility
|
| 222 |
+
|
| 223 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 224 |
+
|
| 225 |
+
### Claim settlement ratio
|
| 226 |
+
|
| 227 |
+
**Value:** _not specified_
|
| 228 |
+
|
| 229 |
+
**Source quote:**
|
| 230 |
+
|
| 231 |
+
> _(no verbatim quote on record)_
|
| 232 |
+
|
| 233 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 234 |
+
|
| 235 |
+
### Cashless TAT (hours)
|
| 236 |
+
|
| 237 |
+
**Value:** _not specified_
|
| 238 |
+
|
| 239 |
+
**Source quote:**
|
| 240 |
+
|
| 241 |
+
> _(no verbatim quote on record)_
|
| 242 |
+
|
| 243 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 244 |
+
|
| 245 |
+
## Bonuses & loyalty
|
| 246 |
+
|
| 247 |
+
### No-claim bonus (%)
|
| 248 |
+
|
| 249 |
+
**Value:** 5
|
| 250 |
+
|
| 251 |
+
**Source quote:**
|
| 252 |
+
|
| 253 |
+
> Cumulative Bonus of 5%
|
| 254 |
+
|
| 255 |
+
**Source:** `rag/corpus/aditya-birla/activ-secure-personal-accident-cancer-secure__wordings.pdf`
|
| 256 |
+
|
| 257 |
+
|
| 258 |
+
---
|
| 259 |
+
|
| 260 |
+
_Mirrored from `data/policy_facts/aditya-birla__activ-secure-personal-accident-cancer-secure__wordings.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/aditya-birla__group-activ-health__wordings.md
CHANGED
|
@@ -1,173 +1,265 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
# Group Activ Health
|
| 2 |
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
## Identity
|
| 6 |
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
**
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
##
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
**
|
| 166 |
-
|
| 167 |
-
##
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: aditya-birla__group-activ-health__wordings
|
| 3 |
+
insurer_slug: aditya-birla
|
| 4 |
+
insurer_name: Aditya Birla Health Insurance
|
| 5 |
+
policy_name: "Group Activ Health"
|
| 6 |
+
uin_code: ADIHLGP26041V052526
|
| 7 |
+
source_pdf_path: rag/corpus/aditya-birla/group-activ-health__wordings.pdf
|
| 8 |
+
completeness_pct: 27
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
# Group Activ Health
|
| 13 |
|
| 14 |
+
**Insurer:** Aditya Birla Health Insurance (`aditya-birla`)
|
| 15 |
+
**Policy ID:** `aditya-birla__group-activ-health__wordings`
|
| 16 |
+
**UIN:** `ADIHLGP26041V052526`
|
| 17 |
+
**Curation completeness:** 27%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Curated by tools/curate_remaining.py — pattern-based extraction from local PDF_
|
| 22 |
|
| 23 |
## Identity
|
| 24 |
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** ADIHLGP26041V052526
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> UIN: ADIHLGP26041V052526
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** group
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> classified as group from PDF heuristics
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> _(no verbatim quote on record)_
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> _(no verbatim quote on record)_
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> _(no verbatim quote on record)_
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> _(no verbatim quote on record)_
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** _not specified_
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> _(no verbatim quote on record)_
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** _not specified_
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> _(no verbatim quote on record)_
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Maternity waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 18
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> maternity
|
| 116 |
+
(including but not limited to medical complications arising out of such delivery).
|
| 117 |
+
(iii) Claim in respect of a
|
| 118 |
+
|
| 119 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 120 |
+
|
| 121 |
+
## Coverage scope
|
| 122 |
+
|
| 123 |
+
### Pre-hospitalization (days)
|
| 124 |
+
|
| 125 |
+
**Value:** _not specified_
|
| 126 |
+
|
| 127 |
+
**Source quote:**
|
| 128 |
+
|
| 129 |
+
> _(no verbatim quote on record)_
|
| 130 |
+
|
| 131 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 132 |
+
|
| 133 |
+
### Post-hospitalization (days)
|
| 134 |
+
|
| 135 |
+
**Value:** _not specified_
|
| 136 |
+
|
| 137 |
+
**Source quote:**
|
| 138 |
+
|
| 139 |
+
> _(no verbatim quote on record)_
|
| 140 |
+
|
| 141 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 142 |
+
|
| 143 |
+
### Day-care treatments covered
|
| 144 |
+
|
| 145 |
+
**Value:** _not specified_
|
| 146 |
+
|
| 147 |
+
**Source quote:**
|
| 148 |
+
|
| 149 |
+
> _(no verbatim quote on record)_
|
| 150 |
+
|
| 151 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 152 |
+
|
| 153 |
+
### AYUSH coverage
|
| 154 |
+
|
| 155 |
+
**Value:** _not specified_
|
| 156 |
+
|
| 157 |
+
**Source quote:**
|
| 158 |
+
|
| 159 |
+
> _(no verbatim quote on record)_
|
| 160 |
+
|
| 161 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 162 |
+
|
| 163 |
+
### Maternity coverage
|
| 164 |
+
|
| 165 |
+
**Value:** Yes
|
| 166 |
+
|
| 167 |
+
**Source quote:**
|
| 168 |
+
|
| 169 |
+
> maternity
|
| 170 |
+
(including but not limited to medical complications arising out of such delivery).
|
| 171 |
+
(iii) Claim in respect of a
|
| 172 |
+
|
| 173 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 174 |
+
|
| 175 |
+
### Restoration benefit
|
| 176 |
+
|
| 177 |
+
**Value:** _not specified_
|
| 178 |
+
|
| 179 |
+
**Source quote:**
|
| 180 |
+
|
| 181 |
+
> _(no verbatim quote on record)_
|
| 182 |
+
|
| 183 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 184 |
+
|
| 185 |
+
### Room rent capping
|
| 186 |
+
|
| 187 |
+
**Value:** Room Rent means the amount charged by a Hospital towards room and boarding expen
|
| 188 |
+
|
| 189 |
+
**Source quote:**
|
| 190 |
+
|
| 191 |
+
> Room Rent means the amount charged by a Hospital towards room and boarding expenses and shall include
|
| 192 |
+
the Associated Med
|
| 193 |
+
|
| 194 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 195 |
+
|
| 196 |
+
## Cost-share
|
| 197 |
+
|
| 198 |
+
### Co-payment (%)
|
| 199 |
+
|
| 200 |
+
**Value:** _not specified_
|
| 201 |
+
|
| 202 |
+
**Source quote:**
|
| 203 |
+
|
| 204 |
+
> _(no verbatim quote on record)_
|
| 205 |
+
|
| 206 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 207 |
+
|
| 208 |
+
## Claims & service
|
| 209 |
+
|
| 210 |
+
### Network hospital count
|
| 211 |
+
|
| 212 |
+
**Value:** _not specified_
|
| 213 |
+
|
| 214 |
+
**Source quote:**
|
| 215 |
+
|
| 216 |
+
> _(no verbatim quote on record)_
|
| 217 |
+
|
| 218 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 219 |
+
|
| 220 |
+
### Cashless treatment supported
|
| 221 |
+
|
| 222 |
+
**Value:** Yes
|
| 223 |
+
|
| 224 |
+
**Source quote:**
|
| 225 |
+
|
| 226 |
+
> Cashless Facility
|
| 227 |
+
|
| 228 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 229 |
+
|
| 230 |
+
### Claim settlement ratio
|
| 231 |
+
|
| 232 |
+
**Value:** _not specified_
|
| 233 |
+
|
| 234 |
+
**Source quote:**
|
| 235 |
+
|
| 236 |
+
> _(no verbatim quote on record)_
|
| 237 |
+
|
| 238 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 239 |
+
|
| 240 |
+
### Cashless TAT (hours)
|
| 241 |
+
|
| 242 |
+
**Value:** _not specified_
|
| 243 |
+
|
| 244 |
+
**Source quote:**
|
| 245 |
+
|
| 246 |
+
> _(no verbatim quote on record)_
|
| 247 |
+
|
| 248 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 249 |
+
|
| 250 |
+
## Bonuses & loyalty
|
| 251 |
+
|
| 252 |
+
### No-claim bonus (%)
|
| 253 |
+
|
| 254 |
+
**Value:** _not specified_
|
| 255 |
+
|
| 256 |
+
**Source quote:**
|
| 257 |
+
|
| 258 |
+
> _(no verbatim quote on record)_
|
| 259 |
+
|
| 260 |
+
**Source:** `rag/corpus/aditya-birla/group-activ-health__wordings.pdf`
|
| 261 |
+
|
| 262 |
+
|
| 263 |
+
---
|
| 264 |
+
|
| 265 |
+
_Mirrored from `data/policy_facts/aditya-birla__group-activ-health__wordings.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/bajaj-allianz__comprehensive-care-plan.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: bajaj-allianz__comprehensive-care-plan
|
| 3 |
+
insurer_slug: bajaj-allianz
|
| 4 |
+
insurer_name: Bajaj Allianz General Insurance
|
| 5 |
+
policy_name: "Bajaj Allianz Comprehensive Care Plan"
|
| 6 |
+
uin_code: BAJHLIP15002V011415
|
| 7 |
+
source_pdf_path: rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf
|
| 8 |
+
completeness_pct: 60
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Bajaj Allianz Comprehensive Care Plan
|
| 13 |
+
|
| 14 |
+
**Insurer:** Bajaj Allianz General Insurance (`bajaj-allianz`)
|
| 15 |
+
**Policy ID:** `bajaj-allianz__comprehensive-care-plan`
|
| 16 |
+
**UIN:** `BAJHLIP15002V011415`
|
| 17 |
+
**Curation completeness:** 60%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Pattern-based extraction from local PDF via pdfplumber. Insurer-level metrics (CSR, network count) left null pending downstream backfill._
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** BAJHLIP15002V011415
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> U66010PN2000PLC015329 | UIN: BAJHLIP15002V011415 1 Bajaj Allianz General Insurance Co. Ltd. Bajaj Allianz House, Airport Road, Yerawada, Pune - 411 006. Reg. No.: 113 For more details, log on to: www.
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** indemnity
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> ured, to share the cost of an indemnity claim on a ratable proportion. This clause shall not apply to any Benefit offered on fixed benefit basis. 8. Confirmation means confirmation of availability of
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> Min entry age not found
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> Max entry age not explicitly stated; check Policy Schedule
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> Max renewal age not specified; check Policy Schedule
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** 100000, 500000
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> valuation certificate if the Sum Insured opted for is up to ₹ 5 Lakh (Rupees Five Lakh) and Individual item value does not exceed ₹ 1 Lakh (Rupees One Lakh). i. If the Valuable Contents of Your Home a
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 30
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> m, as the case may be, within 30 days from the date of receipt of last necessary document. ii. ln the case of delay in the payment of a claim, the Company shall be liable to pay interest to the policy
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** _not specified_
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> PED waiting period not extracted; check Section 5 / Excl01
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Specific disease waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 24
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> Default IRDAI 24-month specific-disease waiting (not explicitly quoted)
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
### Maternity waiting (months)
|
| 120 |
+
|
| 121 |
+
**Value:** _not specified_
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> Maternity waiting not specified or maternity excluded
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 128 |
+
|
| 129 |
+
## Coverage scope
|
| 130 |
+
|
| 131 |
+
### Pre-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** _not specified_
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> Pre-hospitalization days not extracted
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 140 |
+
|
| 141 |
+
### Post-hospitalization (days)
|
| 142 |
+
|
| 143 |
+
**Value:** _not specified_
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> Post-hospitalization days not extracted
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 150 |
+
|
| 151 |
+
### Day-care treatments covered
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Day-care count not enumerated; covered per policy definition
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 160 |
+
|
| 161 |
+
### AYUSH coverage
|
| 162 |
+
|
| 163 |
+
**Value:** Yes
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> ciated increase in premium 3. AYUSH Hospital: An AYUSH Hospital is a healthcare facility where in medical/surgical/para-surgical treatment procedures and interventions are carried out by AYUSH Medical
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 170 |
+
|
| 171 |
+
### Maternity coverage
|
| 172 |
+
|
| 173 |
+
**Value:** No
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> Maternity not explicitly mentioned; presumed excluded in base
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 180 |
+
|
| 181 |
+
### Newborn coverage
|
| 182 |
+
|
| 183 |
+
**Value:** No
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> Newborn cover not found; typically tied to maternity option
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 190 |
+
|
| 191 |
+
### Organ donor expenses
|
| 192 |
+
|
| 193 |
+
**Value:** No
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> Organ donor cover not extracted
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 200 |
+
|
| 201 |
+
### Restoration benefit
|
| 202 |
+
|
| 203 |
+
**Value:** Restoration of Sum Insured: Except as stated in Clause G (III) (3) (b) of this Policy, the insurance cover will at all times be maintained during
|
| 204 |
+
|
| 205 |
+
**Source quote:**
|
| 206 |
+
|
| 207 |
+
> Restoration of Sum Insured: Except as stated in Clause G (III) (3) (b) of this Policy, the insurance cover will at all times be maintained during
|
| 208 |
+
|
| 209 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 210 |
+
|
| 211 |
+
### Room rent capping
|
| 212 |
+
|
| 213 |
+
**Value:** _not specified_
|
| 214 |
+
|
| 215 |
+
**Source quote:**
|
| 216 |
+
|
| 217 |
+
> Room rent capping not extracted (only definition found, no explicit cap)
|
| 218 |
+
|
| 219 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 220 |
+
|
| 221 |
+
## Cost-share
|
| 222 |
+
|
| 223 |
+
### Co-payment (%)
|
| 224 |
+
|
| 225 |
+
**Value:** 0
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> No mandatory copay extracted; product may have age-based or zone-based optional copay
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 232 |
+
|
| 233 |
+
### Deductible
|
| 234 |
+
|
| 235 |
+
**Value:** _not specified_
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> No base deductible (or only optional voluntary deductible add-on)
|
| 240 |
+
|
| 241 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 242 |
+
|
| 243 |
+
## Claims & service
|
| 244 |
+
|
| 245 |
+
### Network hospital count
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> Insurer-level metric; not extracted in this curation pass
|
| 252 |
+
|
| 253 |
+
**Source:** _(no source path on record)_
|
| 254 |
+
|
| 255 |
+
### Cashless treatment supported
|
| 256 |
+
|
| 257 |
+
**Value:** Yes
|
| 258 |
+
|
| 259 |
+
**Source quote:**
|
| 260 |
+
|
| 261 |
+
> Cashless mention not found
|
| 262 |
+
|
| 263 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 264 |
+
|
| 265 |
+
### Claim settlement ratio
|
| 266 |
+
|
| 267 |
+
**Value:** _not specified_
|
| 268 |
+
|
| 269 |
+
**Source quote:**
|
| 270 |
+
|
| 271 |
+
> Insurer-level metric (IRDAI Annual Report); not extracted
|
| 272 |
+
|
| 273 |
+
**Source:** _(no source path on record)_
|
| 274 |
+
|
| 275 |
+
### Cashless TAT (hours)
|
| 276 |
+
|
| 277 |
+
**Value:** _not specified_
|
| 278 |
+
|
| 279 |
+
**Source quote:**
|
| 280 |
+
|
| 281 |
+
> TAT not specified in policy wording; governed by IRDAI Master Circular
|
| 282 |
+
|
| 283 |
+
**Source:** _(no source path on record)_
|
| 284 |
+
|
| 285 |
+
## Bonuses & loyalty
|
| 286 |
+
|
| 287 |
+
### No-claim bonus (%)
|
| 288 |
+
|
| 289 |
+
**Value:** _not specified_
|
| 290 |
+
|
| 291 |
+
**Source quote:**
|
| 292 |
+
|
| 293 |
+
> NCB % not extracted; product may use booster/recharge structure
|
| 294 |
+
|
| 295 |
+
**Source:** `rag/corpus/bajaj-allianz/comprehensive-care-plan__wordings.pdf`
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
---
|
| 299 |
+
|
| 300 |
+
_Mirrored from `data/policy_facts/bajaj-allianz__comprehensive-care-plan.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/bajaj-allianz__criti-care__wordings.md
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: bajaj-allianz__criti-care__wordings
|
| 3 |
+
insurer_slug: bajaj-allianz
|
| 4 |
+
insurer_name: Bajaj Allianz General Insurance
|
| 5 |
+
policy_name: "Criti Care"
|
| 6 |
+
uin_code: BAJHLIP21273V012021
|
| 7 |
+
source_pdf_path: rag/corpus/bajaj-allianz/criti-care__wordings.pdf
|
| 8 |
+
completeness_pct: 9
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Criti Care
|
| 13 |
+
|
| 14 |
+
**Insurer:** Bajaj Allianz General Insurance (`bajaj-allianz`)
|
| 15 |
+
**Policy ID:** `bajaj-allianz__criti-care__wordings`
|
| 16 |
+
**UIN:** `BAJHLIP21273V012021`
|
| 17 |
+
**Curation completeness:** 9%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Curated by tools/curate_remaining.py — pattern-based extraction from local PDF_
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** BAJHLIP21273V012021
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> UIN: BAJHLIP21273V012021
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** group
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> classified as group from PDF heuristics
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> _(no verbatim quote on record)_
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> _(no verbatim quote on record)_
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> _(no verbatim quote on record)_
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> _(no verbatim quote on record)_
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** _not specified_
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> _(no verbatim quote on record)_
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** _not specified_
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> _(no verbatim quote on record)_
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Maternity waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** _not specified_
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> _(no verbatim quote on record)_
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
## Coverage scope
|
| 120 |
+
|
| 121 |
+
### Pre-hospitalization (days)
|
| 122 |
+
|
| 123 |
+
**Value:** _not specified_
|
| 124 |
+
|
| 125 |
+
**Source quote:**
|
| 126 |
+
|
| 127 |
+
> _(no verbatim quote on record)_
|
| 128 |
+
|
| 129 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 130 |
+
|
| 131 |
+
### Post-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** _not specified_
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> _(no verbatim quote on record)_
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 140 |
+
|
| 141 |
+
### Day-care treatments covered
|
| 142 |
+
|
| 143 |
+
**Value:** _not specified_
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> _(no verbatim quote on record)_
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 150 |
+
|
| 151 |
+
### AYUSH coverage
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> _(no verbatim quote on record)_
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 160 |
+
|
| 161 |
+
### Maternity coverage
|
| 162 |
+
|
| 163 |
+
**Value:** _not specified_
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> _(no verbatim quote on record)_
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 170 |
+
|
| 171 |
+
### Restoration benefit
|
| 172 |
+
|
| 173 |
+
**Value:** _not specified_
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> _(no verbatim quote on record)_
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 180 |
+
|
| 181 |
+
### Room rent capping
|
| 182 |
+
|
| 183 |
+
**Value:** _not specified_
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> _(no verbatim quote on record)_
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 190 |
+
|
| 191 |
+
## Cost-share
|
| 192 |
+
|
| 193 |
+
### Co-payment (%)
|
| 194 |
+
|
| 195 |
+
**Value:** _not specified_
|
| 196 |
+
|
| 197 |
+
**Source quote:**
|
| 198 |
+
|
| 199 |
+
> _(no verbatim quote on record)_
|
| 200 |
+
|
| 201 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 202 |
+
|
| 203 |
+
## Claims & service
|
| 204 |
+
|
| 205 |
+
### Network hospital count
|
| 206 |
+
|
| 207 |
+
**Value:** _not specified_
|
| 208 |
+
|
| 209 |
+
**Source quote:**
|
| 210 |
+
|
| 211 |
+
> _(no verbatim quote on record)_
|
| 212 |
+
|
| 213 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 214 |
+
|
| 215 |
+
### Cashless treatment supported
|
| 216 |
+
|
| 217 |
+
**Value:** _not specified_
|
| 218 |
+
|
| 219 |
+
**Source quote:**
|
| 220 |
+
|
| 221 |
+
> _(no verbatim quote on record)_
|
| 222 |
+
|
| 223 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 224 |
+
|
| 225 |
+
### Claim settlement ratio
|
| 226 |
+
|
| 227 |
+
**Value:** _not specified_
|
| 228 |
+
|
| 229 |
+
**Source quote:**
|
| 230 |
+
|
| 231 |
+
> _(no verbatim quote on record)_
|
| 232 |
+
|
| 233 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 234 |
+
|
| 235 |
+
### Cashless TAT (hours)
|
| 236 |
+
|
| 237 |
+
**Value:** _not specified_
|
| 238 |
+
|
| 239 |
+
**Source quote:**
|
| 240 |
+
|
| 241 |
+
> _(no verbatim quote on record)_
|
| 242 |
+
|
| 243 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 244 |
+
|
| 245 |
+
## Bonuses & loyalty
|
| 246 |
+
|
| 247 |
+
### No-claim bonus (%)
|
| 248 |
+
|
| 249 |
+
**Value:** _not specified_
|
| 250 |
+
|
| 251 |
+
**Source quote:**
|
| 252 |
+
|
| 253 |
+
> _(no verbatim quote on record)_
|
| 254 |
+
|
| 255 |
+
**Source:** `rag/corpus/bajaj-allianz/criti-care__wordings.pdf`
|
| 256 |
+
|
| 257 |
+
|
| 258 |
+
---
|
| 259 |
+
|
| 260 |
+
_Mirrored from `data/policy_facts/bajaj-allianz__criti-care__wordings.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/bajaj-allianz__extra-care-plus.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: bajaj-allianz__extra-care-plus
|
| 3 |
+
insurer_slug: bajaj-allianz
|
| 4 |
+
insurer_name: Bajaj Allianz General Insurance
|
| 5 |
+
policy_name: "Bajaj Allianz Extra Care Plus (Super Top-up)"
|
| 6 |
+
uin_code: BAJHLIP23069V032223
|
| 7 |
+
source_pdf_path: rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf
|
| 8 |
+
completeness_pct: 82
|
| 9 |
+
curated_at: 2026-05-13
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Bajaj Allianz Extra Care Plus (Super Top-up)
|
| 13 |
+
|
| 14 |
+
**Insurer:** Bajaj Allianz General Insurance (`bajaj-allianz`)
|
| 15 |
+
**Policy ID:** `bajaj-allianz__extra-care-plus`
|
| 16 |
+
**UIN:** `BAJHLIP23069V032223`
|
| 17 |
+
**Curation completeness:** 82%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-13
|
| 20 |
+
|
| 21 |
+
> _Curation note: Super top-up product; SI options and deductibles configured per Policy Schedule. CSR + network count are insurer-level._
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** BAJHLIP23069V032223
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> CIN:U66010PN2000PLC015329I UIN: BAJHLIP23069V032223
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** super_top_up
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> Aggregate deductible ... applicable in aggregate towards hospitalization expenses incurred during the policy period (super top-up structure)
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** 3 months
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> age of 3 months and is not older than 80years of age at the commencement of the Policy Period.
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** 80 years
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> age of 3 months and is not older than 80years of age at the commencement of the Policy Period.
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> Renewal terms permit continuation; max renewal age not specified explicitly in wording
|
| 74 |
+
|
| 75 |
+
**Source:** _(no source path on record)_
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> Sum Insured selectable with Aggregate Deductible options (super top-up structure); option list specified in Policy Schedule
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 30
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> 3. 30-day waiting period (Excl03) a. Expenses related to the treatment of any illness within 30 days from the first Policy commencement date shall be excluded
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** 12
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> 1. Pre-existing Diseases waiting period (Excl01) a. Expenses related to the treatment of a pre-existing Disease (PED) and its direct complications shall be excluded until the expiry of 12 months
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Specific disease waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 12
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> 2. Specified disease/procedure waiting period- (Excl02) a. Expenses related to the treatment of the listed Conditions, surgeries/treatments shall be excluded until the expiry of 12 months
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
### Maternity waiting (months)
|
| 120 |
+
|
| 121 |
+
**Value:** 12
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> Any treatment arising from or traceable to pregnancy ... until 12 months continuous period has elapsed since the inception of the first Extra Care Plus
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 128 |
+
|
| 129 |
+
## Coverage scope
|
| 130 |
+
|
| 131 |
+
### Pre-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** 60
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> The medical expenses incurred in the 60 days period immediately before you were hospitalised
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 140 |
+
|
| 141 |
+
### Post-hospitalization (days)
|
| 142 |
+
|
| 143 |
+
**Value:** 90
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> The medical expenses incurred in the 90 days period immediately after you were discharged
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 150 |
+
|
| 151 |
+
### Day-care treatments covered
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Day Care Treatment (defined per IRDAI; covered under hospitalization cover)
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 160 |
+
|
| 161 |
+
### AYUSH coverage
|
| 162 |
+
|
| 163 |
+
**Value:** Yes
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> AYUSH Day Care Centre / AYUSH Hospital defined (AYUSH In-patient hospitalization covered)
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 170 |
+
|
| 171 |
+
### Maternity coverage
|
| 172 |
+
|
| 173 |
+
**Value:** Yes
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> 2. Maternity Expenses ... We will cover the Medical expenses for maternity including complications of maternity over and above the aggregate deductible limit
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 180 |
+
|
| 181 |
+
### Newborn coverage
|
| 182 |
+
|
| 183 |
+
**Value:** No
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> 2. Any Medical Expenses of the new born baby (excluded)
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 190 |
+
|
| 191 |
+
### Organ donor expenses
|
| 192 |
+
|
| 193 |
+
**Value:** Yes
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> Organ Donor Expenses are covered under the policy (donor's hospitalization expenses for organ harvesting)
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 200 |
+
|
| 201 |
+
### Restoration benefit
|
| 202 |
+
|
| 203 |
+
**Value:** _not specified_
|
| 204 |
+
|
| 205 |
+
**Source quote:**
|
| 206 |
+
|
| 207 |
+
> Restoration benefit not a base feature of Extra Care Plus super top-up (typical for top-up products)
|
| 208 |
+
|
| 209 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 210 |
+
|
| 211 |
+
### Room rent capping
|
| 212 |
+
|
| 213 |
+
**Value:** No specific room rent capping in base (subject to Policy Schedule)
|
| 214 |
+
|
| 215 |
+
**Source quote:**
|
| 216 |
+
|
| 217 |
+
> Reasonable and Customary Medical Expenses ... subject to aggregate deductible (no explicit room rent sub-limit in benefit table)
|
| 218 |
+
|
| 219 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 220 |
+
|
| 221 |
+
## Cost-share
|
| 222 |
+
|
| 223 |
+
### Co-payment (%)
|
| 224 |
+
|
| 225 |
+
**Value:** 0
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> Co-payment ... A co-payment does not reduce the Sum Insured. (Defined but no mandatory base copay in Extra Care Plus)
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 232 |
+
|
| 233 |
+
### Deductible
|
| 234 |
+
|
| 235 |
+
**Value:** Aggregate Deductible (selectable; per Policy Schedule)
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> Aggregate deductible is a cost sharing requirement under this policy that provides the company will not be liable for a specified rupee amount
|
| 240 |
+
|
| 241 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 242 |
+
|
| 243 |
+
## Claims & service
|
| 244 |
+
|
| 245 |
+
### Network hospital count
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> Insurer-level metric (Bajaj Allianz advertises 7,500+ network hospitals)
|
| 252 |
+
|
| 253 |
+
**Source:** _(no source path on record)_
|
| 254 |
+
|
| 255 |
+
### Cashless treatment supported
|
| 256 |
+
|
| 257 |
+
**Value:** Yes
|
| 258 |
+
|
| 259 |
+
**Source quote:**
|
| 260 |
+
|
| 261 |
+
> Cashless facility ... extended by the insurer to the insured where the payments, of the costs of treatment undergone by the insured (defined and operational)
|
| 262 |
+
|
| 263 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 264 |
+
|
| 265 |
+
### Claim settlement ratio
|
| 266 |
+
|
| 267 |
+
**Value:** _not specified_
|
| 268 |
+
|
| 269 |
+
**Source quote:**
|
| 270 |
+
|
| 271 |
+
> Insurer-level metric (IRDAI Annual Report); not extracted
|
| 272 |
+
|
| 273 |
+
**Source:** _(no source path on record)_
|
| 274 |
+
|
| 275 |
+
### Cashless TAT (hours)
|
| 276 |
+
|
| 277 |
+
**Value:** _not specified_
|
| 278 |
+
|
| 279 |
+
**Source quote:**
|
| 280 |
+
|
| 281 |
+
> TAT not specified in policy wording; governed by IRDAI Master Circular
|
| 282 |
+
|
| 283 |
+
**Source:** _(no source path on record)_
|
| 284 |
+
|
| 285 |
+
## Bonuses & loyalty
|
| 286 |
+
|
| 287 |
+
### No-claim bonus (%)
|
| 288 |
+
|
| 289 |
+
**Value:** _not specified_
|
| 290 |
+
|
| 291 |
+
**Source quote:**
|
| 292 |
+
|
| 293 |
+
> Reference to 'No Claim Bonus' carry-over on renewal exists; explicit base NCB % for Extra Care Plus super-top-up varies by variant (not stated as fixed % in wording)
|
| 294 |
+
|
| 295 |
+
**Source:** `rag/corpus/bajaj-allianz/extra-care-plus__wordings.pdf`
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
---
|
| 299 |
+
|
| 300 |
+
_Mirrored from `data/policy_facts/bajaj-allianz__extra-care-plus.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/bajaj-allianz__global-health-care.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: bajaj-allianz__global-health-care
|
| 3 |
+
insurer_slug: bajaj-allianz
|
| 4 |
+
insurer_name: Bajaj Allianz General Insurance
|
| 5 |
+
policy_name: "Bajaj Allianz Global Health Care"
|
| 6 |
+
uin_code: BAJHLIP23209V022223
|
| 7 |
+
source_pdf_path: rag/corpus/bajaj-allianz/global-health-care__wordings.pdf
|
| 8 |
+
completeness_pct: 65
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Bajaj Allianz Global Health Care
|
| 13 |
+
|
| 14 |
+
**Insurer:** Bajaj Allianz General Insurance (`bajaj-allianz`)
|
| 15 |
+
**Policy ID:** `bajaj-allianz__global-health-care`
|
| 16 |
+
**UIN:** `BAJHLIP23209V022223`
|
| 17 |
+
**Curation completeness:** 65%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Pattern-based extraction from local PDF via pdfplumber. Insurer-level metrics (CSR, network count) left null pending downstream backfill._
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** BAJHLIP23209V022223
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> U66010PN2000PLC015329, UIN - BAJHLIP23209V022223 1 Global Health Bajaj Allianz General Insurance Co. Ltd. Bajaj Allianz House, Airport Road, Yerawada, Pune - 411 006. Reg. No.: 113 For more details, l
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** hospital-cash
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> Hospital cash / daily benefit policy
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> Min entry age not found
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> Max entry age not explicitly stated; check Policy Schedule
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> Max renewal age not specified; check Policy Schedule
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> Sum Insured options not enumerated in extracted text; check Policy Schedule
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 30
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> the treatment of any Illness within 30 days from the first Policy commencement date shall be excluded except claims arising due to an Accident, provided the same are covered. b. This exclusion shall n
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** _not specified_
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> PED waiting period not extracted; check Section 5 / Excl01
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Specific disease waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 24
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> lated to the treatment of the listed Conditions, surgeries/treatments shall be excluded until the expiry of 24 months of continuous coverage after the date of inception of the first Global Health Care
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
### Maternity waiting (months)
|
| 120 |
+
|
| 121 |
+
**Value:** _not specified_
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> Maternity waiting not specified or maternity excluded
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 128 |
+
|
| 129 |
+
## Coverage scope
|
| 130 |
+
|
| 131 |
+
### Pre-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** _not specified_
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> Pre-hospitalization days not extracted
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 140 |
+
|
| 141 |
+
### Post-hospitalization (days)
|
| 142 |
+
|
| 143 |
+
**Value:** 30
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> bmit all claims no later than 30 days after the date of discharge from the Hospital. Claim Submission: You must submit a separate claim for each person claiming and for each medical condition being cl
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 150 |
+
|
| 151 |
+
### Day-care treatments covered
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Day-care count not enumerated; covered per policy definition
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 160 |
+
|
| 161 |
+
### AYUSH coverage
|
| 162 |
+
|
| 163 |
+
**Value:** Yes
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> where treatment was taken. 3. AYUSH Hospital An AYUSH Hospital is a healthcare facility wherein medical/surgical/para-surgical treatment procedures and interventions are carried out by AYUSH Medical P
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 170 |
+
|
| 171 |
+
### Maternity coverage
|
| 172 |
+
|
| 173 |
+
**Value:** No
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> lization 18) Maternity (Code -Excl18): a. Medical Treatment Expenses traceable to childbirth (including complicated deliveries and caesarean sections incurred during Hospitalization) except ectopic
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 180 |
+
|
| 181 |
+
### Newborn coverage
|
| 182 |
+
|
| 183 |
+
**Value:** Yes
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> New Born Baby New Born Baby means baby born during the Policy P
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 190 |
+
|
| 191 |
+
### Organ donor expenses
|
| 192 |
+
|
| 193 |
+
**Value:** Yes
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> organ donor’s treatment for harvesting of the donated organ, provided that,The organ donor is any person whose organ has been made available in accordance and in compliance with the local regulation a
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 200 |
+
|
| 201 |
+
### Restoration benefit
|
| 202 |
+
|
| 203 |
+
**Value:** restorations, bridges, dentures and implants as well as
|
| 204 |
+
|
| 205 |
+
**Source quote:**
|
| 206 |
+
|
| 207 |
+
> restorations, bridges, dentures and implants as well as
|
| 208 |
+
|
| 209 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 210 |
+
|
| 211 |
+
### Room rent capping
|
| 212 |
+
|
| 213 |
+
**Value:** Single Private room
|
| 214 |
+
|
| 215 |
+
**Source quote:**
|
| 216 |
+
|
| 217 |
+
> Single Private room
|
| 218 |
+
|
| 219 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 220 |
+
|
| 221 |
+
## Cost-share
|
| 222 |
+
|
| 223 |
+
### Co-payment (%)
|
| 224 |
+
|
| 225 |
+
**Value:** 0
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> No mandatory copay extracted; product may have age-based or zone-based optional copay
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 232 |
+
|
| 233 |
+
### Deductible
|
| 234 |
+
|
| 235 |
+
**Value:** _not specified_
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> aggregate Deductible as specified in the Policy Schedule will apply for expenses under Inpatient plan benefits outside
|
| 240 |
+
|
| 241 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 242 |
+
|
| 243 |
+
## Claims & service
|
| 244 |
+
|
| 245 |
+
### Network hospital count
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> Insurer-level metric; not extracted in this curation pass
|
| 252 |
+
|
| 253 |
+
**Source:** _(no source path on record)_
|
| 254 |
+
|
| 255 |
+
### Cashless treatment supported
|
| 256 |
+
|
| 257 |
+
**Value:** Yes
|
| 258 |
+
|
| 259 |
+
**Source quote:**
|
| 260 |
+
|
| 261 |
+
> authorized representative 5. Cashless Facility Cashless Facility means a facility extended by the Insurer to the Insured where the payments, of the costs of treatment undergone by the Insured in accor
|
| 262 |
+
|
| 263 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 264 |
+
|
| 265 |
+
### Claim settlement ratio
|
| 266 |
+
|
| 267 |
+
**Value:** _not specified_
|
| 268 |
+
|
| 269 |
+
**Source quote:**
|
| 270 |
+
|
| 271 |
+
> Insurer-level metric (IRDAI Annual Report); not extracted
|
| 272 |
+
|
| 273 |
+
**Source:** _(no source path on record)_
|
| 274 |
+
|
| 275 |
+
### Cashless TAT (hours)
|
| 276 |
+
|
| 277 |
+
**Value:** _not specified_
|
| 278 |
+
|
| 279 |
+
**Source quote:**
|
| 280 |
+
|
| 281 |
+
> TAT not specified in policy wording; governed by IRDAI Master Circular
|
| 282 |
+
|
| 283 |
+
**Source:** _(no source path on record)_
|
| 284 |
+
|
| 285 |
+
## Bonuses & loyalty
|
| 286 |
+
|
| 287 |
+
### No-claim bonus (%)
|
| 288 |
+
|
| 289 |
+
**Value:** _not specified_
|
| 290 |
+
|
| 291 |
+
**Source quote:**
|
| 292 |
+
|
| 293 |
+
> NCB % not extracted; product may use booster/recharge structure
|
| 294 |
+
|
| 295 |
+
**Source:** `rag/corpus/bajaj-allianz/global-health-care__wordings.pdf`
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
---
|
| 299 |
+
|
| 300 |
+
_Mirrored from `data/policy_facts/bajaj-allianz__global-health-care.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/bajaj-allianz__group-health-guard-gold__wordings.md
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: bajaj-allianz__group-health-guard-gold__wordings
|
| 3 |
+
insurer_slug: bajaj-allianz
|
| 4 |
+
insurer_name: Bajaj Allianz General Insurance
|
| 5 |
+
policy_name: "Group Health Guard Gold"
|
| 6 |
+
uin_code: BAJHLGP21181V022021
|
| 7 |
+
source_pdf_path: rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf
|
| 8 |
+
completeness_pct: 32
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Group Health Guard Gold
|
| 13 |
+
|
| 14 |
+
**Insurer:** Bajaj Allianz General Insurance (`bajaj-allianz`)
|
| 15 |
+
**Policy ID:** `bajaj-allianz__group-health-guard-gold__wordings`
|
| 16 |
+
**UIN:** `BAJHLGP21181V022021`
|
| 17 |
+
**Curation completeness:** 32%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Curated by tools/curate_remaining.py — pattern-based extraction from local PDF_
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** BAJHLGP21181V022021
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> UIN: BAJHLGP21181V022021
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** group
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> classified as group from PDF heuristics
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> _(no verbatim quote on record)_
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> _(no verbatim quote on record)_
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> _(no verbatim quote on record)_
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> _(no verbatim quote on record)_
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** _not specified_
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> _(no verbatim quote on record)_
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** 36
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> pre-existing Disease (PED) and its direct complications shall be excluded until the expiry of 36 months
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Maternity waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** _not specified_
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> _(no verbatim quote on record)_
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
## Coverage scope
|
| 120 |
+
|
| 121 |
+
### Pre-hospitalization (days)
|
| 122 |
+
|
| 123 |
+
**Value:** 60
|
| 124 |
+
|
| 125 |
+
**Source quote:**
|
| 126 |
+
|
| 127 |
+
> Pre-Hospitalisation
|
| 128 |
+
The Medical Expenses incurred during the 60 days
|
| 129 |
+
|
| 130 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 131 |
+
|
| 132 |
+
### Post-hospitalization (days)
|
| 133 |
+
|
| 134 |
+
**Value:** 90
|
| 135 |
+
|
| 136 |
+
**Source quote:**
|
| 137 |
+
|
| 138 |
+
> Post-Hospitalisation
|
| 139 |
+
The Medical Expenses incurred during the 90 days
|
| 140 |
+
|
| 141 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 142 |
+
|
| 143 |
+
### Day-care treatments covered
|
| 144 |
+
|
| 145 |
+
**Value:** _not specified_
|
| 146 |
+
|
| 147 |
+
**Source quote:**
|
| 148 |
+
|
| 149 |
+
> _(no verbatim quote on record)_
|
| 150 |
+
|
| 151 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 152 |
+
|
| 153 |
+
### AYUSH coverage
|
| 154 |
+
|
| 155 |
+
**Value:** _not specified_
|
| 156 |
+
|
| 157 |
+
**Source quote:**
|
| 158 |
+
|
| 159 |
+
> _(no verbatim quote on record)_
|
| 160 |
+
|
| 161 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 162 |
+
|
| 163 |
+
### Maternity coverage
|
| 164 |
+
|
| 165 |
+
**Value:** _not specified_
|
| 166 |
+
|
| 167 |
+
**Source quote:**
|
| 168 |
+
|
| 169 |
+
> _(no verbatim quote on record)_
|
| 170 |
+
|
| 171 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 172 |
+
|
| 173 |
+
### Restoration benefit
|
| 174 |
+
|
| 175 |
+
**Value:** _not specified_
|
| 176 |
+
|
| 177 |
+
**Source quote:**
|
| 178 |
+
|
| 179 |
+
> _(no verbatim quote on record)_
|
| 180 |
+
|
| 181 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 182 |
+
|
| 183 |
+
### Room rent capping
|
| 184 |
+
|
| 185 |
+
**Value:** _not specified_
|
| 186 |
+
|
| 187 |
+
**Source quote:**
|
| 188 |
+
|
| 189 |
+
> _(no verbatim quote on record)_
|
| 190 |
+
|
| 191 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 192 |
+
|
| 193 |
+
## Cost-share
|
| 194 |
+
|
| 195 |
+
### Co-payment (%)
|
| 196 |
+
|
| 197 |
+
**Value:** _not specified_
|
| 198 |
+
|
| 199 |
+
**Source quote:**
|
| 200 |
+
|
| 201 |
+
> _(no verbatim quote on record)_
|
| 202 |
+
|
| 203 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 204 |
+
|
| 205 |
+
## Claims & service
|
| 206 |
+
|
| 207 |
+
### Network hospital count
|
| 208 |
+
|
| 209 |
+
**Value:** _not specified_
|
| 210 |
+
|
| 211 |
+
**Source quote:**
|
| 212 |
+
|
| 213 |
+
> _(no verbatim quote on record)_
|
| 214 |
+
|
| 215 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 216 |
+
|
| 217 |
+
### Cashless treatment supported
|
| 218 |
+
|
| 219 |
+
**Value:** Yes
|
| 220 |
+
|
| 221 |
+
**Source quote:**
|
| 222 |
+
|
| 223 |
+
> Cashless facility
|
| 224 |
+
|
| 225 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 226 |
+
|
| 227 |
+
### Claim settlement ratio
|
| 228 |
+
|
| 229 |
+
**Value:** _not specified_
|
| 230 |
+
|
| 231 |
+
**Source quote:**
|
| 232 |
+
|
| 233 |
+
> _(no verbatim quote on record)_
|
| 234 |
+
|
| 235 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 236 |
+
|
| 237 |
+
### Cashless TAT (hours)
|
| 238 |
+
|
| 239 |
+
**Value:** _not specified_
|
| 240 |
+
|
| 241 |
+
**Source quote:**
|
| 242 |
+
|
| 243 |
+
> _(no verbatim quote on record)_
|
| 244 |
+
|
| 245 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 246 |
+
|
| 247 |
+
## Bonuses & loyalty
|
| 248 |
+
|
| 249 |
+
### No-claim bonus (%)
|
| 250 |
+
|
| 251 |
+
**Value:** 100
|
| 252 |
+
|
| 253 |
+
**Source quote:**
|
| 254 |
+
|
| 255 |
+
> cumulative bonus (if any) is exhausted due to claims lodged during the Policy
|
| 256 |
+
year, then it is agreed that 100%
|
| 257 |
+
|
| 258 |
+
**Source:** `rag/corpus/bajaj-allianz/group-health-guard-gold__wordings.pdf`
|
| 259 |
+
|
| 260 |
+
|
| 261 |
+
---
|
| 262 |
+
|
| 263 |
+
_Mirrored from `data/policy_facts/bajaj-allianz__group-health-guard-gold__wordings.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/bajaj-allianz__group-personal-accident__wordings.md
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: bajaj-allianz__group-personal-accident__wordings
|
| 3 |
+
insurer_slug: bajaj-allianz
|
| 4 |
+
insurer_name: Bajaj Allianz General Insurance
|
| 5 |
+
policy_name: "Group Personal Accident"
|
| 6 |
+
source_pdf_path: rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf
|
| 7 |
+
completeness_pct: 5
|
| 8 |
+
curated_at: 2026-05-14
|
| 9 |
+
---
|
| 10 |
+
|
| 11 |
+
# Group Personal Accident
|
| 12 |
+
|
| 13 |
+
**Insurer:** Bajaj Allianz General Insurance (`bajaj-allianz`)
|
| 14 |
+
**Policy ID:** `bajaj-allianz__group-personal-accident__wordings`
|
| 15 |
+
**Curation completeness:** 5%
|
| 16 |
+
**Primary source PDF:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 17 |
+
**Curated at:** 2026-05-14
|
| 18 |
+
|
| 19 |
+
> _Curation note: Curated by tools/curate_remaining.py — pattern-based extraction from local PDF_
|
| 20 |
+
|
| 21 |
+
## Identity
|
| 22 |
+
|
| 23 |
+
### UIN code
|
| 24 |
+
|
| 25 |
+
**Value:** _not specified_
|
| 26 |
+
|
| 27 |
+
**Source quote:**
|
| 28 |
+
|
| 29 |
+
> _(no verbatim quote on record)_
|
| 30 |
+
|
| 31 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 32 |
+
|
| 33 |
+
### Policy type
|
| 34 |
+
|
| 35 |
+
**Value:** group
|
| 36 |
+
|
| 37 |
+
**Source quote:**
|
| 38 |
+
|
| 39 |
+
> classified as group from PDF heuristics
|
| 40 |
+
|
| 41 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 42 |
+
|
| 43 |
+
## Eligibility
|
| 44 |
+
|
| 45 |
+
### Minimum entry age
|
| 46 |
+
|
| 47 |
+
**Value:** _not specified_
|
| 48 |
+
|
| 49 |
+
**Source quote:**
|
| 50 |
+
|
| 51 |
+
> _(no verbatim quote on record)_
|
| 52 |
+
|
| 53 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 54 |
+
|
| 55 |
+
### Maximum entry age
|
| 56 |
+
|
| 57 |
+
**Value:** _not specified_
|
| 58 |
+
|
| 59 |
+
**Source quote:**
|
| 60 |
+
|
| 61 |
+
> _(no verbatim quote on record)_
|
| 62 |
+
|
| 63 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 64 |
+
|
| 65 |
+
### Maximum renewal age
|
| 66 |
+
|
| 67 |
+
**Value:** _not specified_
|
| 68 |
+
|
| 69 |
+
**Source quote:**
|
| 70 |
+
|
| 71 |
+
> _(no verbatim quote on record)_
|
| 72 |
+
|
| 73 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 74 |
+
|
| 75 |
+
### Sum insured options
|
| 76 |
+
|
| 77 |
+
**Value:** _not specified_
|
| 78 |
+
|
| 79 |
+
**Source quote:**
|
| 80 |
+
|
| 81 |
+
> _(no verbatim quote on record)_
|
| 82 |
+
|
| 83 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 84 |
+
|
| 85 |
+
## Waiting periods
|
| 86 |
+
|
| 87 |
+
### Initial waiting period (days)
|
| 88 |
+
|
| 89 |
+
**Value:** _not specified_
|
| 90 |
+
|
| 91 |
+
**Source quote:**
|
| 92 |
+
|
| 93 |
+
> _(no verbatim quote on record)_
|
| 94 |
+
|
| 95 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 96 |
+
|
| 97 |
+
### Pre-existing disease waiting (months)
|
| 98 |
+
|
| 99 |
+
**Value:** _not specified_
|
| 100 |
+
|
| 101 |
+
**Source quote:**
|
| 102 |
+
|
| 103 |
+
> _(no verbatim quote on record)_
|
| 104 |
+
|
| 105 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 106 |
+
|
| 107 |
+
### Maternity waiting (months)
|
| 108 |
+
|
| 109 |
+
**Value:** _not specified_
|
| 110 |
+
|
| 111 |
+
**Source quote:**
|
| 112 |
+
|
| 113 |
+
> _(no verbatim quote on record)_
|
| 114 |
+
|
| 115 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 116 |
+
|
| 117 |
+
## Coverage scope
|
| 118 |
+
|
| 119 |
+
### Pre-hospitalization (days)
|
| 120 |
+
|
| 121 |
+
**Value:** _not specified_
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> _(no verbatim quote on record)_
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 128 |
+
|
| 129 |
+
### Post-hospitalization (days)
|
| 130 |
+
|
| 131 |
+
**Value:** _not specified_
|
| 132 |
+
|
| 133 |
+
**Source quote:**
|
| 134 |
+
|
| 135 |
+
> _(no verbatim quote on record)_
|
| 136 |
+
|
| 137 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 138 |
+
|
| 139 |
+
### Day-care treatments covered
|
| 140 |
+
|
| 141 |
+
**Value:** _not specified_
|
| 142 |
+
|
| 143 |
+
**Source quote:**
|
| 144 |
+
|
| 145 |
+
> _(no verbatim quote on record)_
|
| 146 |
+
|
| 147 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 148 |
+
|
| 149 |
+
### AYUSH coverage
|
| 150 |
+
|
| 151 |
+
**Value:** _not specified_
|
| 152 |
+
|
| 153 |
+
**Source quote:**
|
| 154 |
+
|
| 155 |
+
> _(no verbatim quote on record)_
|
| 156 |
+
|
| 157 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 158 |
+
|
| 159 |
+
### Maternity coverage
|
| 160 |
+
|
| 161 |
+
**Value:** _not specified_
|
| 162 |
+
|
| 163 |
+
**Source quote:**
|
| 164 |
+
|
| 165 |
+
> _(no verbatim quote on record)_
|
| 166 |
+
|
| 167 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 168 |
+
|
| 169 |
+
### Restoration benefit
|
| 170 |
+
|
| 171 |
+
**Value:** _not specified_
|
| 172 |
+
|
| 173 |
+
**Source quote:**
|
| 174 |
+
|
| 175 |
+
> _(no verbatim quote on record)_
|
| 176 |
+
|
| 177 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 178 |
+
|
| 179 |
+
### Room rent capping
|
| 180 |
+
|
| 181 |
+
**Value:** _not specified_
|
| 182 |
+
|
| 183 |
+
**Source quote:**
|
| 184 |
+
|
| 185 |
+
> _(no verbatim quote on record)_
|
| 186 |
+
|
| 187 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 188 |
+
|
| 189 |
+
## Cost-share
|
| 190 |
+
|
| 191 |
+
### Co-payment (%)
|
| 192 |
+
|
| 193 |
+
**Value:** _not specified_
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> _(no verbatim quote on record)_
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 200 |
+
|
| 201 |
+
## Claims & service
|
| 202 |
+
|
| 203 |
+
### Network hospital count
|
| 204 |
+
|
| 205 |
+
**Value:** _not specified_
|
| 206 |
+
|
| 207 |
+
**Source quote:**
|
| 208 |
+
|
| 209 |
+
> _(no verbatim quote on record)_
|
| 210 |
+
|
| 211 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 212 |
+
|
| 213 |
+
### Cashless treatment supported
|
| 214 |
+
|
| 215 |
+
**Value:** _not specified_
|
| 216 |
+
|
| 217 |
+
**Source quote:**
|
| 218 |
+
|
| 219 |
+
> _(no verbatim quote on record)_
|
| 220 |
+
|
| 221 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 222 |
+
|
| 223 |
+
### Claim settlement ratio
|
| 224 |
+
|
| 225 |
+
**Value:** _not specified_
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> _(no verbatim quote on record)_
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 232 |
+
|
| 233 |
+
### Cashless TAT (hours)
|
| 234 |
+
|
| 235 |
+
**Value:** _not specified_
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> _(no verbatim quote on record)_
|
| 240 |
+
|
| 241 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 242 |
+
|
| 243 |
+
## Bonuses & loyalty
|
| 244 |
+
|
| 245 |
+
### No-claim bonus (%)
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> _(no verbatim quote on record)_
|
| 252 |
+
|
| 253 |
+
**Source:** `rag/corpus/bajaj-allianz/group-personal-accident__wordings.pdf`
|
| 254 |
+
|
| 255 |
+
|
| 256 |
+
---
|
| 257 |
+
|
| 258 |
+
_Mirrored from `data/policy_facts/bajaj-allianz__group-personal-accident__wordings.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/bajaj-allianz__health-guard-gold-individual__wordings.md
ADDED
|
@@ -0,0 +1,264 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: bajaj-allianz__health-guard-gold-individual__wordings
|
| 3 |
+
insurer_slug: bajaj-allianz
|
| 4 |
+
insurer_name: Bajaj Allianz General Insurance
|
| 5 |
+
policy_name: "Health Guard Gold Individual"
|
| 6 |
+
uin_code: BAJHLIP21185V032021
|
| 7 |
+
source_pdf_path: rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf
|
| 8 |
+
completeness_pct: 41
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Health Guard Gold Individual
|
| 13 |
+
|
| 14 |
+
**Insurer:** Bajaj Allianz General Insurance (`bajaj-allianz`)
|
| 15 |
+
**Policy ID:** `bajaj-allianz__health-guard-gold-individual__wordings`
|
| 16 |
+
**UIN:** `BAJHLIP21185V032021`
|
| 17 |
+
**Curation completeness:** 41%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Curated by tools/curate_remaining.py — pattern-based extraction from local PDF_
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** BAJHLIP21185V032021
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> UIN: BAJHLIP21185V032021
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** group
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> classified as group from PDF heuristics
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> _(no verbatim quote on record)_
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> _(no verbatim quote on record)_
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> _(no verbatim quote on record)_
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> _(no verbatim quote on record)_
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** _not specified_
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> _(no verbatim quote on record)_
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** 36
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> pre-existing Disease (PED) and its direct complications shall be excluded until the expiry of 36 months
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Maternity waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** _not specified_
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> _(no verbatim quote on record)_
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
## Coverage scope
|
| 120 |
+
|
| 121 |
+
### Pre-hospitalization (days)
|
| 122 |
+
|
| 123 |
+
**Value:** 60
|
| 124 |
+
|
| 125 |
+
**Source quote:**
|
| 126 |
+
|
| 127 |
+
> Pre-Hospitalisation
|
| 128 |
+
The Medical Expenses incurred during the 60 days
|
| 129 |
+
|
| 130 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 131 |
+
|
| 132 |
+
### Post-hospitalization (days)
|
| 133 |
+
|
| 134 |
+
**Value:** 90
|
| 135 |
+
|
| 136 |
+
**Source quote:**
|
| 137 |
+
|
| 138 |
+
> Post-Hospitalisation
|
| 139 |
+
The Medical Expenses incurred during the 90 days
|
| 140 |
+
|
| 141 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 142 |
+
|
| 143 |
+
### Day-care treatments covered
|
| 144 |
+
|
| 145 |
+
**Value:** _not specified_
|
| 146 |
+
|
| 147 |
+
**Source quote:**
|
| 148 |
+
|
| 149 |
+
> _(no verbatim quote on record)_
|
| 150 |
+
|
| 151 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 152 |
+
|
| 153 |
+
### AYUSH coverage
|
| 154 |
+
|
| 155 |
+
**Value:** _not specified_
|
| 156 |
+
|
| 157 |
+
**Source quote:**
|
| 158 |
+
|
| 159 |
+
> _(no verbatim quote on record)_
|
| 160 |
+
|
| 161 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 162 |
+
|
| 163 |
+
### Maternity coverage
|
| 164 |
+
|
| 165 |
+
**Value:** _not specified_
|
| 166 |
+
|
| 167 |
+
**Source quote:**
|
| 168 |
+
|
| 169 |
+
> _(no verbatim quote on record)_
|
| 170 |
+
|
| 171 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 172 |
+
|
| 173 |
+
### Restoration benefit
|
| 174 |
+
|
| 175 |
+
**Value:** _not specified_
|
| 176 |
+
|
| 177 |
+
**Source quote:**
|
| 178 |
+
|
| 179 |
+
> _(no verbatim quote on record)_
|
| 180 |
+
|
| 181 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 182 |
+
|
| 183 |
+
### Room rent capping
|
| 184 |
+
|
| 185 |
+
**Value:** _not specified_
|
| 186 |
+
|
| 187 |
+
**Source quote:**
|
| 188 |
+
|
| 189 |
+
> _(no verbatim quote on record)_
|
| 190 |
+
|
| 191 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 192 |
+
|
| 193 |
+
## Cost-share
|
| 194 |
+
|
| 195 |
+
### Co-payment (%)
|
| 196 |
+
|
| 197 |
+
**Value:** 10
|
| 198 |
+
|
| 199 |
+
**Source quote:**
|
| 200 |
+
|
| 201 |
+
> Co-payment is effective by the Insured then Insured will be eligible of
|
| 202 |
+
additional 10%
|
| 203 |
+
|
| 204 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 205 |
+
|
| 206 |
+
## Claims & service
|
| 207 |
+
|
| 208 |
+
### Network hospital count
|
| 209 |
+
|
| 210 |
+
**Value:** 3300
|
| 211 |
+
|
| 212 |
+
**Source quote:**
|
| 213 |
+
|
| 214 |
+
> 3300+ Network hospitals
|
| 215 |
+
|
| 216 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 217 |
+
|
| 218 |
+
### Cashless treatment supported
|
| 219 |
+
|
| 220 |
+
**Value:** Yes
|
| 221 |
+
|
| 222 |
+
**Source quote:**
|
| 223 |
+
|
| 224 |
+
> cashless treatment
|
| 225 |
+
|
| 226 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 227 |
+
|
| 228 |
+
### Claim settlement ratio
|
| 229 |
+
|
| 230 |
+
**Value:** _not specified_
|
| 231 |
+
|
| 232 |
+
**Source quote:**
|
| 233 |
+
|
| 234 |
+
> _(no verbatim quote on record)_
|
| 235 |
+
|
| 236 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 237 |
+
|
| 238 |
+
### Cashless TAT (hours)
|
| 239 |
+
|
| 240 |
+
**Value:** _not specified_
|
| 241 |
+
|
| 242 |
+
**Source quote:**
|
| 243 |
+
|
| 244 |
+
> _(no verbatim quote on record)_
|
| 245 |
+
|
| 246 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 247 |
+
|
| 248 |
+
## Bonuses & loyalty
|
| 249 |
+
|
| 250 |
+
### No-claim bonus (%)
|
| 251 |
+
|
| 252 |
+
**Value:** 100
|
| 253 |
+
|
| 254 |
+
**Source quote:**
|
| 255 |
+
|
| 256 |
+
> Cumulative Bonus (if any) is exhausted due to claims lodged during the Policy year,
|
| 257 |
+
then it is agreed that 100%
|
| 258 |
+
|
| 259 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 260 |
+
|
| 261 |
+
|
| 262 |
+
---
|
| 263 |
+
|
| 264 |
+
_Mirrored from `data/policy_facts/bajaj-allianz__health-guard-gold-individual__wordings.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/bajaj-allianz__health-guard-gold.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: bajaj-allianz__health-guard-gold
|
| 3 |
+
insurer_slug: bajaj-allianz
|
| 4 |
+
insurer_name: Bajaj Allianz General Insurance
|
| 5 |
+
policy_name: "Bajaj Allianz Health Guard Gold (Individual)"
|
| 6 |
+
uin_code: BAJHLIP21185V032021
|
| 7 |
+
source_pdf_path: rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf
|
| 8 |
+
completeness_pct: 82
|
| 9 |
+
curated_at: 2026-05-13
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Bajaj Allianz Health Guard Gold (Individual)
|
| 13 |
+
|
| 14 |
+
**Insurer:** Bajaj Allianz General Insurance (`bajaj-allianz`)
|
| 15 |
+
**Policy ID:** `bajaj-allianz__health-guard-gold`
|
| 16 |
+
**UIN:** `BAJHLIP21185V032021`
|
| 17 |
+
**Curation completeness:** 82%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-13
|
| 20 |
+
|
| 21 |
+
> _Curation note: Sum Insured option list not enumerated in wording body (referenced via maternity SI grid); insurer-level CSR/network counts null._
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** BAJHLIP21185V032021
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> CIN: U66010PN2000PLC015329 | UIN: BAJHLIP21185V032021
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** indemnity
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> Limit of Indemnity (indemnity-based health insurance policy)
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** 3 months
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> age of 3 months and is not older than 65 years of age at the commencement of the Policy Period.
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** 65 years
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> Self, Spouse, Parents, Sister, Brother, In-laws, Aunt, Uncle. 18 years to 65 years lifetime renewals
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> 18 years to 65 years lifetime renewals (no maximum renewal age for self/spouse cover)
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> Maternity sub-limit references SI from Rs.3 lacs to Rs.50 lacs; explicit SI option list not in wording body (per brochure: 1.5 / 3 / 5 / 7.5 / 10 / 15 / 20 / 25 / 50 / 75 / 100 lakhs)
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 30
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> 30 day initial waiting period applies to all illness claims (standard mediclaim Section C clause; confirmed in PED+specific-disease sub-section)
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** 36
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> Expenses related to the treatment of a pre-existing Disease (PED) and its direct complications shall be excluded until the expiry of 36 months
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Specific disease waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 24
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> Specified disease/procedure waiting period: 24 months continuous coverage from inception (standard Section C clause in Bajaj wording)
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
### Maternity waiting (months)
|
| 120 |
+
|
| 121 |
+
**Value:** 72
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> Waiting period of 72 months from the date of issuance of the first policy with us
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 128 |
+
|
| 129 |
+
## Coverage scope
|
| 130 |
+
|
| 131 |
+
### Pre-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** 60
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> Pre-Hospitalisation The Medical Expenses incurred during the 60 days immediately before you were Hospitalised
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 140 |
+
|
| 141 |
+
### Post-hospitalization (days)
|
| 142 |
+
|
| 143 |
+
**Value:** 90
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> Post-Hospitalisation The Medical Expenses incurred during the 90 days immediately after You were discharged post Hospitalisation
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 150 |
+
|
| 151 |
+
### Day-care treatments covered
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Day Care Procedures ... Indicative list of Day Care Procedures is given in the annexure I of Policy
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 160 |
+
|
| 161 |
+
### AYUSH coverage
|
| 162 |
+
|
| 163 |
+
**Value:** Yes
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> AYUSH Hospital: An AYUSH Hospital is a healthcare facility wherein medical/surgical/para-surgical treatment procedures and interventions are carried out by AYUSH Medical Practitioner(s)
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 170 |
+
|
| 171 |
+
### Maternity coverage
|
| 172 |
+
|
| 173 |
+
**Value:** Yes
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> 12. Maternity Expenses ... Our maximum liability per delivery or termination shall be limited to the amount specified in the policy Schedule
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 180 |
+
|
| 181 |
+
### Newborn coverage
|
| 182 |
+
|
| 183 |
+
**Value:** Yes
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> Coverage for new born baby will be considered subject to a valid claim being accepted under Maternity Expenses (section A12). ... 90 days from the date of birth
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 190 |
+
|
| 191 |
+
### Organ donor expenses
|
| 192 |
+
|
| 193 |
+
**Value:** Yes
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> Organ Donor Expenses (covered as standard section in Bajaj Health Guard Gold)
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 200 |
+
|
| 201 |
+
### Restoration benefit
|
| 202 |
+
|
| 203 |
+
**Value:** 100% Sum Insured reinstatement, once per policy year (Sum Insured Reinstatement Benefit)
|
| 204 |
+
|
| 205 |
+
**Source quote:**
|
| 206 |
+
|
| 207 |
+
> 9. Sum Insured Reinstatement Benefit: ... 100% of the Sum Insured specified under Inpatient Hospitalization Treatment be reinstated
|
| 208 |
+
|
| 209 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 210 |
+
|
| 211 |
+
### Room rent capping
|
| 212 |
+
|
| 213 |
+
**Value:** Room rent capping per Sum Insured slab (per Bajaj HG Gold benefit grid; capped on lower SIs, no limit on higher slabs)
|
| 214 |
+
|
| 215 |
+
**Source quote:**
|
| 216 |
+
|
| 217 |
+
> Room rent, boarding expenses (listed under hospitalization treatment cover with policy-schedule-driven limits)
|
| 218 |
+
|
| 219 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 220 |
+
|
| 221 |
+
## Cost-share
|
| 222 |
+
|
| 223 |
+
### Co-payment (%)
|
| 224 |
+
|
| 225 |
+
**Value:** 0
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> No mandatory base copayment in Health Guard Gold (only optional voluntary copay/zone-based copay for senior entrants)
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 232 |
+
|
| 233 |
+
### Deductible
|
| 234 |
+
|
| 235 |
+
**Value:** _not specified_
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> No base deductible in Bajaj Health Guard Gold (optional zone/deductible add-ons available)
|
| 240 |
+
|
| 241 |
+
**Source:** _(no source path on record)_
|
| 242 |
+
|
| 243 |
+
## Claims & service
|
| 244 |
+
|
| 245 |
+
### Network hospital count
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> Insurer-level metric; Bajaj Allianz advertises 7,500+ network hospitals on its website (not extracted in this pass)
|
| 252 |
+
|
| 253 |
+
**Source:** _(no source path on record)_
|
| 254 |
+
|
| 255 |
+
### Cashless treatment supported
|
| 256 |
+
|
| 257 |
+
**Value:** Yes
|
| 258 |
+
|
| 259 |
+
**Source quote:**
|
| 260 |
+
|
| 261 |
+
> 10. Cashless facility ... a facility extended by the insurer to the insured where the payments, of the costs of treatment undergone by the insured ...
|
| 262 |
+
|
| 263 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 264 |
+
|
| 265 |
+
### Claim settlement ratio
|
| 266 |
+
|
| 267 |
+
**Value:** _not specified_
|
| 268 |
+
|
| 269 |
+
**Source quote:**
|
| 270 |
+
|
| 271 |
+
> Insurer-level metric (IRDAI Annual Report); not extracted in this curation pass
|
| 272 |
+
|
| 273 |
+
**Source:** _(no source path on record)_
|
| 274 |
+
|
| 275 |
+
### Cashless TAT (hours)
|
| 276 |
+
|
| 277 |
+
**Value:** _not specified_
|
| 278 |
+
|
| 279 |
+
**Source quote:**
|
| 280 |
+
|
| 281 |
+
> TAT not specified in policy wording; governed by IRDAI Master Circular 2024
|
| 282 |
+
|
| 283 |
+
**Source:** _(no source path on record)_
|
| 284 |
+
|
| 285 |
+
## Bonuses & loyalty
|
| 286 |
+
|
| 287 |
+
### No-claim bonus (%)
|
| 288 |
+
|
| 289 |
+
**Value:** 10
|
| 290 |
+
|
| 291 |
+
**Source quote:**
|
| 292 |
+
|
| 293 |
+
> 13. Cumulative Bonus: ... We will increase the Limit of Indemnity by 10% of base sum insured per annum ... maximum cumulative increase ... limited to 10 years and 100%
|
| 294 |
+
|
| 295 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard-gold-individual__wordings.pdf`
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
---
|
| 299 |
+
|
| 300 |
+
_Mirrored from `data/policy_facts/bajaj-allianz__health-guard-gold.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/bajaj-allianz__health-guard.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: bajaj-allianz__health-guard
|
| 3 |
+
insurer_slug: bajaj-allianz
|
| 4 |
+
insurer_name: Bajaj Allianz General Insurance
|
| 5 |
+
policy_name: "Bajaj Allianz Health Guard (Silver / Gold / Platinum)"
|
| 6 |
+
uin_code: BAJHLIP25035V072425
|
| 7 |
+
source_pdf_path: rag/corpus/bajaj-allianz/health-guard__wordings.pdf
|
| 8 |
+
completeness_pct: 70
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Bajaj Allianz Health Guard (Silver / Gold / Platinum)
|
| 13 |
+
|
| 14 |
+
**Insurer:** Bajaj Allianz General Insurance (`bajaj-allianz`)
|
| 15 |
+
**Policy ID:** `bajaj-allianz__health-guard`
|
| 16 |
+
**UIN:** `BAJHLIP25035V072425`
|
| 17 |
+
**Curation completeness:** 70%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Pattern-based extraction from local PDF via pdfplumber. Insurer-level metrics (CSR, network count) left null pending downstream backfill._
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** BAJHLIP25035V072425
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> U66010PN2000PLC015329 | UIN: BAJHLIP25035V072425 1 Bajaj Allianz General Insurance Co. Ltd. Bajaj Allianz House, Airport Road, Yerawada, Pune - 411 006. Reg. No.: 113 For more details, log on to: www.
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** top-up
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> Top-up / super top-up policy (kicks in above a deductible)
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> Min entry age not found
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> Max entry age not explicitly stated; check Policy Schedule
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> Max renewal age not specified; check Policy Schedule
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** 300000, 750000, 1000000
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> Gold Plan and Platinum Plan - Sum Insured 3 lacs to 7.5 lacs- maximum eligible room is Single Private Air-Conditioned room - Sum Insured 10 Lacs and above - eligible for any room category ii. If admit
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 30
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> the treatment of any Illness within 30 days from the first Policy commencement date shall be excluded except claims arising due to an Accident, provided the same are covered. b. This exclusion shall n
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** _not specified_
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> PED waiting period not extracted; check Section 5 / Excl01
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Specific disease waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 24
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> lated to the treatment of the listed Conditions, surgeries/treatments shall be excluded until the expiry of 24 months of continuous coverage after the date of inception of the first Health Guard Polic
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
### Maternity waiting (months)
|
| 120 |
+
|
| 121 |
+
**Value:** _not specified_
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> Maternity waiting not specified or maternity excluded
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 128 |
+
|
| 129 |
+
## Coverage scope
|
| 130 |
+
|
| 131 |
+
### Pre-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** _not specified_
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> Pre-hospitalization days not extracted
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 140 |
+
|
| 141 |
+
### Post-hospitalization (days)
|
| 142 |
+
|
| 143 |
+
**Value:** _not specified_
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> Post-hospitalization days not extracted
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 150 |
+
|
| 151 |
+
### Day-care treatments covered
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Day-care count not enumerated; covered per policy definition
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 160 |
+
|
| 161 |
+
### AYUSH coverage
|
| 162 |
+
|
| 163 |
+
**Value:** Yes
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> where treatment was taken. 3. AYUSH Hospital: An AYUSH Hospital is a healthcare facility wherein medical/surgical/para-surgical treatment procedures and interventions are carried out by AYUSH Medical
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 170 |
+
|
| 171 |
+
### Maternity coverage
|
| 172 |
+
|
| 173 |
+
**Value:** No
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> ct/plans of Our Company where maternity expenses are not covered. f. Any complications arising, within 90 days post-delivery, out of or as a consequence of maternity/child birth will be covered up to
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 180 |
+
|
| 181 |
+
### Newborn coverage
|
| 182 |
+
|
| 183 |
+
**Value:** Yes
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> New Born Baby: Newborn baby means baby born during the Policy Pe
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 190 |
+
|
| 191 |
+
### Organ donor expenses
|
| 192 |
+
|
| 193 |
+
**Value:** Yes
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> Organ Donor Expenses: We will pay expenses towards organ donor’s treatment for harvesting of the donated organ, provided that, 1. The organ donor is any person whose organ has been made available in a
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 200 |
+
|
| 201 |
+
### Restoration benefit
|
| 202 |
+
|
| 203 |
+
**Value:** Reinstatement Benefit:
|
| 204 |
+
|
| 205 |
+
**Source quote:**
|
| 206 |
+
|
| 207 |
+
> Reinstatement Benefit:
|
| 208 |
+
|
| 209 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 210 |
+
|
| 211 |
+
### Room rent capping
|
| 212 |
+
|
| 213 |
+
**Value:** Single Private room:
|
| 214 |
+
|
| 215 |
+
**Source quote:**
|
| 216 |
+
|
| 217 |
+
> Single Private room:
|
| 218 |
+
|
| 219 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 220 |
+
|
| 221 |
+
## Cost-share
|
| 222 |
+
|
| 223 |
+
### Co-payment (%)
|
| 224 |
+
|
| 225 |
+
**Value:** 15
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> Zone A city will have to pay 15% co-payment on admissible claim amount. Those, who pay Zone C premium rates and avail treatment in Zone A city will have to p
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 232 |
+
|
| 233 |
+
### Deductible
|
| 234 |
+
|
| 235 |
+
**Value:** 50000
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> xcess of the Annual Aggregate Deductible limit of ₹ 50,000 / ₹ 100000 / ₹ 200000 / ₹ 300000, as opted by You , subject to the ”In-patient Hospitalization Treatment” section Sum I
|
| 240 |
+
|
| 241 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 242 |
+
|
| 243 |
+
## Claims & service
|
| 244 |
+
|
| 245 |
+
### Network hospital count
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> Insurer-level metric; not extracted in this curation pass
|
| 252 |
+
|
| 253 |
+
**Source:** _(no source path on record)_
|
| 254 |
+
|
| 255 |
+
### Cashless treatment supported
|
| 256 |
+
|
| 257 |
+
**Value:** Yes
|
| 258 |
+
|
| 259 |
+
**Source quote:**
|
| 260 |
+
|
| 261 |
+
> ewal date or Grace period. 7. Cashless facility: Cashless facility means a facility extended by the Insurer to the Insured Person where the payments, of the costs of treatment undergone by the Insured
|
| 262 |
+
|
| 263 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 264 |
+
|
| 265 |
+
### Claim settlement ratio
|
| 266 |
+
|
| 267 |
+
**Value:** _not specified_
|
| 268 |
+
|
| 269 |
+
**Source quote:**
|
| 270 |
+
|
| 271 |
+
> Insurer-level metric (IRDAI Annual Report); not extracted
|
| 272 |
+
|
| 273 |
+
**Source:** _(no source path on record)_
|
| 274 |
+
|
| 275 |
+
### Cashless TAT (hours)
|
| 276 |
+
|
| 277 |
+
**Value:** _not specified_
|
| 278 |
+
|
| 279 |
+
**Source quote:**
|
| 280 |
+
|
| 281 |
+
> TAT not specified in policy wording; governed by IRDAI Master Circular
|
| 282 |
+
|
| 283 |
+
**Source:** _(no source path on record)_
|
| 284 |
+
|
| 285 |
+
## Bonuses & loyalty
|
| 286 |
+
|
| 287 |
+
### No-claim bonus (%)
|
| 288 |
+
|
| 289 |
+
**Value:** 100
|
| 290 |
+
|
| 291 |
+
**Source quote:**
|
| 292 |
+
|
| 293 |
+
> Cumulative Bonus (if any) is exhausted due to claims registered and paid during the Policy Year, then it is agreed that 100% of the Base Sum Insured specified under In-patien
|
| 294 |
+
|
| 295 |
+
**Source:** `rag/corpus/bajaj-allianz/health-guard__wordings.pdf`
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
---
|
| 299 |
+
|
| 300 |
+
_Mirrored from `data/policy_facts/bajaj-allianz__health-guard.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/bajaj-allianz__silver-health.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: bajaj-allianz__silver-health
|
| 3 |
+
insurer_slug: bajaj-allianz
|
| 4 |
+
insurer_name: Bajaj Allianz General Insurance
|
| 5 |
+
policy_name: "Bajaj Allianz Silver Health (Senior Citizen)"
|
| 6 |
+
uin_code: BAJHLIP23213V052223
|
| 7 |
+
source_pdf_path: rag/corpus/bajaj-allianz/silver-health__cis.pdf
|
| 8 |
+
completeness_pct: 65
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Bajaj Allianz Silver Health (Senior Citizen)
|
| 13 |
+
|
| 14 |
+
**Insurer:** Bajaj Allianz General Insurance (`bajaj-allianz`)
|
| 15 |
+
**Policy ID:** `bajaj-allianz__silver-health`
|
| 16 |
+
**UIN:** `BAJHLIP23213V052223`
|
| 17 |
+
**Curation completeness:** 65%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Pattern-based extraction from local PDF via pdfplumber. Insurer-level metrics (CSR, network count) left null pending downstream backfill._
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** BAJHLIP23213V052223
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> U66010PN2000PLC015329 • UIN: BAJHLIP23213V052223 1 Bajaj Allianz General Insurance Co. Ltd. Bajaj Allianz House, Airport Road, Yerawada, Pune - 411 006. Reg. No.: 113 For more details, log on to: www.
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** indemnity
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> Default indemnity (no explicit alternate type detected)
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> Min entry age not found
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> Max entry age not explicitly stated; check Policy Schedule
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> Max renewal age not specified; check Policy Schedule
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> Sum Insured options not enumerated in extracted text; check Policy Schedule
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 30
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> Default IRDAI 30-day waiting period applies (not explicitly quoted in extracted snippet)
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** 12
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> ariatric Surgery 13. Fistulae Pre-existing diseases waiting period: 12 months 36 months (plan A) & 24 Months (plan B) – for below procedure 1. Joint replacement surgery unless necessitated by accident
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 108 |
+
|
| 109 |
+
### Specific disease waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 24
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> Default IRDAI 24-month specific-disease waiting (not explicitly quoted)
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 118 |
+
|
| 119 |
+
### Maternity waiting (months)
|
| 120 |
+
|
| 121 |
+
**Value:** _not specified_
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> Maternity waiting not specified or maternity excluded
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 128 |
+
|
| 129 |
+
## Coverage scope
|
| 130 |
+
|
| 131 |
+
### Pre-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** 30
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> . Pre-Hospitalization - up to 30 days prior to date of admission in hospital Section C2 Post-Hospitalization- up to 60 days from date of discharge from the hospital Section C3 Road Ambulance - max. up
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 140 |
+
|
| 141 |
+
### Post-hospitalization (days)
|
| 142 |
+
|
| 143 |
+
**Value:** _not specified_
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> Post-hospitalization days not extracted
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 150 |
+
|
| 151 |
+
### Day-care treatments covered
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Day-care count not enumerated; covered per policy definition
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 160 |
+
|
| 161 |
+
### AYUSH coverage
|
| 162 |
+
|
| 163 |
+
**Value:** No
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> AYUSH coverage not found in extracted text
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 170 |
+
|
| 171 |
+
### Maternity coverage
|
| 172 |
+
|
| 173 |
+
**Value:** No
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> Maternity not explicitly mentioned; presumed excluded in base
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 180 |
+
|
| 181 |
+
### Newborn coverage
|
| 182 |
+
|
| 183 |
+
**Value:** No
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> Newborn cover not found; typically tied to maternity option
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 190 |
+
|
| 191 |
+
### Organ donor expenses
|
| 192 |
+
|
| 193 |
+
**Value:** No
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> Organ donor cover not extracted
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 200 |
+
|
| 201 |
+
### Restoration benefit
|
| 202 |
+
|
| 203 |
+
**Value:** _not specified_
|
| 204 |
+
|
| 205 |
+
**Source quote:**
|
| 206 |
+
|
| 207 |
+
> Restoration benefit not found in extracted text
|
| 208 |
+
|
| 209 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 210 |
+
|
| 211 |
+
### Room rent capping
|
| 212 |
+
|
| 213 |
+
**Value:** room rent limit of 1%
|
| 214 |
+
|
| 215 |
+
**Source quote:**
|
| 216 |
+
|
| 217 |
+
> room rent limit of 1%
|
| 218 |
+
|
| 219 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 220 |
+
|
| 221 |
+
## Cost-share
|
| 222 |
+
|
| 223 |
+
### Co-payment (%)
|
| 224 |
+
|
| 225 |
+
**Value:** 10
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> l Plan B Which will be claims 10% co-payment deducted from (Each and every admissible claim) total claim amount Co-payment on Non- 20% on each and every admissi
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 232 |
+
|
| 233 |
+
### Deductible
|
| 234 |
+
|
| 235 |
+
**Value:** _not specified_
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> No base deductible (or only optional voluntary deductible add-on)
|
| 240 |
+
|
| 241 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 242 |
+
|
| 243 |
+
## Claims & service
|
| 244 |
+
|
| 245 |
+
### Network hospital count
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> Insurer-level metric; not extracted in this curation pass
|
| 252 |
+
|
| 253 |
+
**Source:** _(no source path on record)_
|
| 254 |
+
|
| 255 |
+
### Cashless treatment supported
|
| 256 |
+
|
| 257 |
+
**Value:** Yes
|
| 258 |
+
|
| 259 |
+
**Source quote:**
|
| 260 |
+
|
| 261 |
+
> ver is lower 10 Claims/claims Cashless Claim processCashless treatment is only available at Network Section E 21 procedure Hospitals A & B You or Your representative must intimate Us 48 hours before
|
| 262 |
+
|
| 263 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 264 |
+
|
| 265 |
+
### Claim settlement ratio
|
| 266 |
+
|
| 267 |
+
**Value:** _not specified_
|
| 268 |
+
|
| 269 |
+
**Source quote:**
|
| 270 |
+
|
| 271 |
+
> Insurer-level metric (IRDAI Annual Report); not extracted
|
| 272 |
+
|
| 273 |
+
**Source:** _(no source path on record)_
|
| 274 |
+
|
| 275 |
+
### Cashless TAT (hours)
|
| 276 |
+
|
| 277 |
+
**Value:** _not specified_
|
| 278 |
+
|
| 279 |
+
**Source quote:**
|
| 280 |
+
|
| 281 |
+
> TAT not specified in policy wording; governed by IRDAI Master Circular
|
| 282 |
+
|
| 283 |
+
**Source:** _(no source path on record)_
|
| 284 |
+
|
| 285 |
+
## Bonuses & loyalty
|
| 286 |
+
|
| 287 |
+
### No-claim bonus (%)
|
| 288 |
+
|
| 289 |
+
**Value:** _not specified_
|
| 290 |
+
|
| 291 |
+
**Source quote:**
|
| 292 |
+
|
| 293 |
+
> NCB % not extracted; product may use booster/recharge structure
|
| 294 |
+
|
| 295 |
+
**Source:** `rag/corpus/bajaj-allianz/silver-health__cis.pdf`
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
---
|
| 299 |
+
|
| 300 |
+
_Mirrored from `data/policy_facts/bajaj-allianz__silver-health.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/bajaj-allianz__tax-gain.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: bajaj-allianz__tax-gain
|
| 3 |
+
insurer_slug: bajaj-allianz
|
| 4 |
+
insurer_name: Bajaj Allianz General Insurance
|
| 5 |
+
policy_name: "Bajaj Allianz Tax Gain"
|
| 6 |
+
uin_code: BAJHLIP21184V022021
|
| 7 |
+
source_pdf_path: rag/corpus/bajaj-allianz/tax-gain__cis.pdf
|
| 8 |
+
completeness_pct: 55
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Bajaj Allianz Tax Gain
|
| 13 |
+
|
| 14 |
+
**Insurer:** Bajaj Allianz General Insurance (`bajaj-allianz`)
|
| 15 |
+
**Policy ID:** `bajaj-allianz__tax-gain`
|
| 16 |
+
**UIN:** `BAJHLIP21184V022021`
|
| 17 |
+
**Curation completeness:** 55%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Pattern-based extraction from local PDF via pdfplumber. Insurer-level metrics (CSR, network count) left null pending downstream backfill._
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** BAJHLIP21184V022021
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> U66010PN2000PLC015329 • UIN: BAJHLIP21184V022021 1 Bajaj Allianz General Insurance Co. Ltd. Bajaj Allianz House, Airport Road, Yerawada, Pune - 411 006. Reg. No.: 113 For more details, log on to: www.
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** indemnity
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> Default indemnity (no explicit alternate type detected)
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> Min entry age not found
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> Max entry age not explicitly stated; check Policy Schedule
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> Max renewal age not specified; check Policy Schedule
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> Sum Insured options not enumerated in extracted text; check Policy Schedule
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 30
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> Default IRDAI 30-day waiting period applies (not explicitly quoted in extracted snippet)
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** 36
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> ’s Disease 19. Mental Illness Pre-existing diseases waiting period: 36 months Other waiting period 1. Cost of spectacles in the first year of the policy. (This cost is payable in the second year of co
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 108 |
+
|
| 109 |
+
### Specific disease waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 24
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> Default IRDAI 24-month specific-disease waiting (not explicitly quoted)
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 118 |
+
|
| 119 |
+
### Maternity waiting (months)
|
| 120 |
+
|
| 121 |
+
**Value:** _not specified_
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> Maternity waiting not specified or maternity excluded
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 128 |
+
|
| 129 |
+
## Coverage scope
|
| 130 |
+
|
| 131 |
+
### Pre-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** _not specified_
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> Pre-hospitalization days not extracted
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 140 |
+
|
| 141 |
+
### Post-hospitalization (days)
|
| 142 |
+
|
| 143 |
+
**Value:** _not specified_
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> Post-hospitalization days not extracted
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 150 |
+
|
| 151 |
+
### Day-care treatments covered
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Day-care count not enumerated; covered per policy definition
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 160 |
+
|
| 161 |
+
### AYUSH coverage
|
| 162 |
+
|
| 163 |
+
**Value:** Yes
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> dern medicine (allopathy) and AYUSH therapies. II Specific Exclusion 1. Any expenses for treatment taken without the doctor advising the same and which is not duly supported by prescriptions. 2. Any e
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 170 |
+
|
| 171 |
+
### Maternity coverage
|
| 172 |
+
|
| 173 |
+
**Value:** No
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> Maternity not explicitly mentioned; presumed excluded in base
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 180 |
+
|
| 181 |
+
### Newborn coverage
|
| 182 |
+
|
| 183 |
+
**Value:** No
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> Newborn cover not found; typically tied to maternity option
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 190 |
+
|
| 191 |
+
### Organ donor expenses
|
| 192 |
+
|
| 193 |
+
**Value:** No
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> Organ donor cover not extracted
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 200 |
+
|
| 201 |
+
### Restoration benefit
|
| 202 |
+
|
| 203 |
+
**Value:** _not specified_
|
| 204 |
+
|
| 205 |
+
**Source quote:**
|
| 206 |
+
|
| 207 |
+
> Restoration benefit not found in extracted text
|
| 208 |
+
|
| 209 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 210 |
+
|
| 211 |
+
### Room rent capping
|
| 212 |
+
|
| 213 |
+
**Value:** _not specified_
|
| 214 |
+
|
| 215 |
+
**Source quote:**
|
| 216 |
+
|
| 217 |
+
> Room rent capping not extracted (only definition found, no explicit cap)
|
| 218 |
+
|
| 219 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 220 |
+
|
| 221 |
+
## Cost-share
|
| 222 |
+
|
| 223 |
+
### Co-payment (%)
|
| 224 |
+
|
| 225 |
+
**Value:** 0
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> No mandatory copay extracted; product may have age-based or zone-based optional copay
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 232 |
+
|
| 233 |
+
### Deductible
|
| 234 |
+
|
| 235 |
+
**Value:** _not specified_
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> No base deductible (or only optional voluntary deductible add-on)
|
| 240 |
+
|
| 241 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 242 |
+
|
| 243 |
+
## Claims & service
|
| 244 |
+
|
| 245 |
+
### Network hospital count
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> Insurer-level metric; not extracted in this curation pass
|
| 252 |
+
|
| 253 |
+
**Source:** _(no source path on record)_
|
| 254 |
+
|
| 255 |
+
### Cashless treatment supported
|
| 256 |
+
|
| 257 |
+
**Value:** Yes
|
| 258 |
+
|
| 259 |
+
**Source quote:**
|
| 260 |
+
|
| 261 |
+
> uing Office: 10 Claims/claims Cashless Claim process Section E 29 procedure Cashless treatment is only available at Network Hospitals You or Your representative must intimate Us 48 hours before the
|
| 262 |
+
|
| 263 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 264 |
+
|
| 265 |
+
### Claim settlement ratio
|
| 266 |
+
|
| 267 |
+
**Value:** _not specified_
|
| 268 |
+
|
| 269 |
+
**Source quote:**
|
| 270 |
+
|
| 271 |
+
> Insurer-level metric (IRDAI Annual Report); not extracted
|
| 272 |
+
|
| 273 |
+
**Source:** _(no source path on record)_
|
| 274 |
+
|
| 275 |
+
### Cashless TAT (hours)
|
| 276 |
+
|
| 277 |
+
**Value:** _not specified_
|
| 278 |
+
|
| 279 |
+
**Source quote:**
|
| 280 |
+
|
| 281 |
+
> TAT not specified in policy wording; governed by IRDAI Master Circular
|
| 282 |
+
|
| 283 |
+
**Source:** _(no source path on record)_
|
| 284 |
+
|
| 285 |
+
## Bonuses & loyalty
|
| 286 |
+
|
| 287 |
+
### No-claim bonus (%)
|
| 288 |
+
|
| 289 |
+
**Value:** _not specified_
|
| 290 |
+
|
| 291 |
+
**Source quote:**
|
| 292 |
+
|
| 293 |
+
> NCB % not extracted; product may use booster/recharge structure
|
| 294 |
+
|
| 295 |
+
**Source:** `rag/corpus/bajaj-allianz/tax-gain__cis.pdf`
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
---
|
| 299 |
+
|
| 300 |
+
_Mirrored from `data/policy_facts/bajaj-allianz__tax-gain.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/care-health__care-advantage-add-ons-protect-plus-care-shield__brochure.md
CHANGED
|
@@ -1,175 +1,264 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
## Identity
|
| 6 |
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
**
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
##
|
| 40 |
-
|
| 41 |
-
**
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
###
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
``
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: care-health__care-advantage-add-ons-protect-plus-care-shield__brochure
|
| 3 |
+
insurer_slug: care-health
|
| 4 |
+
insurer_name: Care Health Insurance
|
| 5 |
+
policy_name: "Care Advantage Add Ons Protect Plus Care Shield"
|
| 6 |
+
uin_code: CHIHLIP26049V042526
|
| 7 |
+
source_pdf_path: rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf
|
| 8 |
+
completeness_pct: 32
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Care Advantage Add Ons Protect Plus Care Shield
|
| 13 |
+
|
| 14 |
+
**Insurer:** Care Health Insurance (`care-health`)
|
| 15 |
+
**Policy ID:** `care-health__care-advantage-add-ons-protect-plus-care-shield__brochure`
|
| 16 |
+
**UIN:** `CHIHLIP26049V042526`
|
| 17 |
+
**Curation completeness:** 32%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Curated by tools/curate_remaining.py — pattern-based extraction from local PDF_
|
| 22 |
|
| 23 |
## Identity
|
| 24 |
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** CHIHLIP26049V042526
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> UIN:CHIHLIP26049V042526
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** group
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> classified as group from PDF heuristics
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> _(no verbatim quote on record)_
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> _(no verbatim quote on record)_
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> _(no verbatim quote on record)_
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> _(no verbatim quote on record)_
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** _not specified_
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> _(no verbatim quote on record)_
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** _not specified_
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> _(no verbatim quote on record)_
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 108 |
+
|
| 109 |
+
### Maternity waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** _not specified_
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> _(no verbatim quote on record)_
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 118 |
+
|
| 119 |
+
## Coverage scope
|
| 120 |
+
|
| 121 |
+
### Pre-hospitalization (days)
|
| 122 |
+
|
| 123 |
+
**Value:** 30
|
| 124 |
+
|
| 125 |
+
**Source quote:**
|
| 126 |
+
|
| 127 |
+
> Pre-hospitalization medical Pre-hospitalization for 30 days
|
| 128 |
+
|
| 129 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 130 |
+
|
| 131 |
+
### Post-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** 60
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> post-hospitalization post-hospitalization for 60 days
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 140 |
+
|
| 141 |
+
### Day-care treatments covered
|
| 142 |
+
|
| 143 |
+
**Value:** _not specified_
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> _(no verbatim quote on record)_
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 150 |
+
|
| 151 |
+
### AYUSH coverage
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> _(no verbatim quote on record)_
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 160 |
+
|
| 161 |
+
### Maternity coverage
|
| 162 |
+
|
| 163 |
+
**Value:** _not specified_
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> _(no verbatim quote on record)_
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 170 |
+
|
| 171 |
+
### Restoration benefit
|
| 172 |
+
|
| 173 |
+
**Value:** _not specified_
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> _(no verbatim quote on record)_
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 180 |
+
|
| 181 |
+
### Room rent capping
|
| 182 |
+
|
| 183 |
+
**Value:** Room rent/ room category No sub-limit No sub-limit
|
| 184 |
+
ICU charges No sub-limit No s
|
| 185 |
+
|
| 186 |
+
**Source quote:**
|
| 187 |
+
|
| 188 |
+
> Room rent/ room category No sub-limit No sub-limit
|
| 189 |
+
ICU charges No sub-limit No sub-limit
|
| 190 |
+
In-patient care Up to
|
| 191 |
+
|
| 192 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 193 |
+
|
| 194 |
+
## Cost-share
|
| 195 |
+
|
| 196 |
+
### Co-payment (%)
|
| 197 |
+
|
| 198 |
+
**Value:** 20
|
| 199 |
+
|
| 200 |
+
**Source quote:**
|
| 201 |
+
|
| 202 |
+
> co-payment of 20%
|
| 203 |
+
|
| 204 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 205 |
+
|
| 206 |
+
## Claims & service
|
| 207 |
+
|
| 208 |
+
### Network hospital count
|
| 209 |
+
|
| 210 |
+
**Value:** _not specified_
|
| 211 |
+
|
| 212 |
+
**Source quote:**
|
| 213 |
+
|
| 214 |
+
> _(no verbatim quote on record)_
|
| 215 |
+
|
| 216 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 217 |
+
|
| 218 |
+
### Cashless treatment supported
|
| 219 |
+
|
| 220 |
+
**Value:** _not specified_
|
| 221 |
+
|
| 222 |
+
**Source quote:**
|
| 223 |
+
|
| 224 |
+
> _(no verbatim quote on record)_
|
| 225 |
+
|
| 226 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 227 |
+
|
| 228 |
+
### Claim settlement ratio
|
| 229 |
+
|
| 230 |
+
**Value:** _not specified_
|
| 231 |
+
|
| 232 |
+
**Source quote:**
|
| 233 |
+
|
| 234 |
+
> _(no verbatim quote on record)_
|
| 235 |
+
|
| 236 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 237 |
+
|
| 238 |
+
### Cashless TAT (hours)
|
| 239 |
+
|
| 240 |
+
**Value:** _not specified_
|
| 241 |
+
|
| 242 |
+
**Source quote:**
|
| 243 |
+
|
| 244 |
+
> _(no verbatim quote on record)_
|
| 245 |
+
|
| 246 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 247 |
+
|
| 248 |
+
## Bonuses & loyalty
|
| 249 |
+
|
| 250 |
+
### No-claim bonus (%)
|
| 251 |
+
|
| 252 |
+
**Value:** 50
|
| 253 |
+
|
| 254 |
+
**Source quote:**
|
| 255 |
+
|
| 256 |
+
> NCBS)
|
| 257 |
+
(50%
|
| 258 |
+
|
| 259 |
+
**Source:** `rag/corpus/care-health/care-advantage-add-ons-protect-plus-care-shield__brochure.pdf`
|
| 260 |
+
|
| 261 |
+
|
| 262 |
+
---
|
| 263 |
+
|
| 264 |
+
_Mirrored from `data/policy_facts/care-health__care-advantage-add-ons-protect-plus-care-shield__brochure.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/care-health__care-advantage.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: care-health__care-advantage
|
| 3 |
+
insurer_slug: care-health
|
| 4 |
+
insurer_name: Care Health Insurance
|
| 5 |
+
policy_name: "Care Health Care Advantage"
|
| 6 |
+
uin_code: CHIHLIP26049V042526
|
| 7 |
+
source_pdf_path: rag/corpus/care-health/care-advantage__brochure.pdf
|
| 8 |
+
completeness_pct: 80
|
| 9 |
+
curated_at: 2026-05-14
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Care Health Care Advantage
|
| 13 |
+
|
| 14 |
+
**Insurer:** Care Health Insurance (`care-health`)
|
| 15 |
+
**Policy ID:** `care-health__care-advantage`
|
| 16 |
+
**UIN:** `CHIHLIP26049V042526`
|
| 17 |
+
**Curation completeness:** 80%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 19 |
+
**Curated at:** 2026-05-14
|
| 20 |
+
|
| 21 |
+
> _Curation note: Pattern-based extraction from local PDF via pdfplumber. Insurer-level metrics (CSR, network count) left null pending downstream backfill._
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** CHIHLIP26049V042526
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> 007PLC161503 UAN:25076804 UIN:CHIHLIP26049V042526 IRDAI Registration Number - 148 www.careinsurance.com Quick quote & buy Online renewals Customer support Claim centre PA/52/raM:reV REACH US @ WhatsAp
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** indemnity
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> Default indemnity (no explicit alternate type detected)
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** _not specified_
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> Min entry age not found
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> Max entry age not explicitly stated; check Policy Schedule
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> Lifelong renewability
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> Sum Insured options not enumerated in extracted text; check Policy Schedule
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 30
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> Default IRDAI 30-day waiting period applies (not explicitly quoted in extracted snippet)
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** 36
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> Ailment wait Period 24 Months Pre-Existing Disease 36 Months Wait Period Pricing Zones Zone 1 - Delhi NCR, Surat, Mathura, Aligarh Zone 2 - Mumbai (incl. MMR), Telangana, Indore, Nashik Zone 3 - Pune,
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 108 |
+
|
| 109 |
+
### Specific disease waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 24
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> r Initial Wait Period 30 Days Named Ailment wait Period 24 Months Pre-Existing Disease 36 Months Wait Period Pricing Zones Zone 1 - Delhi NCR, Surat, Mathura, Aligarh Zone 2 - Mumbai (incl. MMR), Tela
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 118 |
+
|
| 119 |
+
### Maternity waiting (months)
|
| 120 |
+
|
| 121 |
+
**Value:** _not specified_
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> Maternity waiting not specified or maternity excluded
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 128 |
+
|
| 129 |
+
## Coverage scope
|
| 130 |
+
|
| 131 |
+
### Pre-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** 30
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> um Insured Treatment Expenses Pre Hospitalisation/ 30 days pre hospitalization Post Hospitalisation and 60 days post hospitalization Automatic Recharge Yes, once in a Policy Year Ambulance Cover Up to
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 140 |
+
|
| 141 |
+
### Post-hospitalization (days)
|
| 142 |
+
|
| 143 |
+
**Value:** 60
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> / 30 days pre hospitalization Post Hospitalisation and 60 days post hospitalization Automatic Recharge Yes, once in a Policy Year Ambulance Cover Up to Sum Insured Organ Donor Expenses Up to Sum Insur
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 150 |
+
|
| 151 |
+
### Day-care treatments covered
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Day-care count not enumerated; covered per policy definition
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 160 |
+
|
| 161 |
+
### AYUSH coverage
|
| 162 |
+
|
| 163 |
+
**Value:** No
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> AYUSH coverage not found in extracted text
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 170 |
+
|
| 171 |
+
### Maternity coverage
|
| 172 |
+
|
| 173 |
+
**Value:** No
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> Maternity not explicitly mentioned; presumed excluded in base
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 180 |
+
|
| 181 |
+
### Newborn coverage
|
| 182 |
+
|
| 183 |
+
**Value:** No
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> Newborn cover not found; typically tied to maternity option
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 190 |
+
|
| 191 |
+
### Organ donor expenses
|
| 192 |
+
|
| 193 |
+
**Value:** Yes
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> Organ Donor Expenses Up to Sum Insured 10% increase in SI per Policy Year in No Claim Bonus (NCB) case of claim-free year; Max up to 50% of SI OPTIONAL BENEFITS: 50% increase in SI per Policy Year in
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 200 |
+
|
| 201 |
+
### Restoration benefit
|
| 202 |
+
|
| 203 |
+
**Value:** recharge of Sum Insured
|
| 204 |
+
|
| 205 |
+
**Source quote:**
|
| 206 |
+
|
| 207 |
+
> recharge of Sum Insured
|
| 208 |
+
|
| 209 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 210 |
+
|
| 211 |
+
### Room rent capping
|
| 212 |
+
|
| 213 |
+
**Value:** Room Rent No Sub-Limit
|
| 214 |
+
|
| 215 |
+
**Source quote:**
|
| 216 |
+
|
| 217 |
+
> Room Rent No Sub-Limit
|
| 218 |
+
|
| 219 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 220 |
+
|
| 221 |
+
## Cost-share
|
| 222 |
+
|
| 223 |
+
### Co-payment (%)
|
| 224 |
+
|
| 225 |
+
**Value:** 20
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> part of Smart Select Network: 20% co-payment on all claims Note : check the list of hospitals covered under smart select on https://www.careinsurance.com/ smart
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 232 |
+
|
| 233 |
+
### Deductible
|
| 234 |
+
|
| 235 |
+
**Value:** _not specified_
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> No base deductible (or only optional voluntary deductible add-on)
|
| 240 |
+
|
| 241 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 242 |
+
|
| 243 |
+
## Claims & service
|
| 244 |
+
|
| 245 |
+
### Network hospital count
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> Insurer-level metric; not extracted in this curation pass
|
| 252 |
+
|
| 253 |
+
**Source:** _(no source path on record)_
|
| 254 |
+
|
| 255 |
+
### Cashless treatment supported
|
| 256 |
+
|
| 257 |
+
**Value:** Yes
|
| 258 |
+
|
| 259 |
+
**Source quote:**
|
| 260 |
+
|
| 261 |
+
> at a very affordable premium. CASHLESS MEDICAL SERVICES AT NETWORK OF 24000+ HEALTHCARE PROVIDERS Care Advantage gives you the advantage of cashless treatment which ensures you concentrate only on you
|
| 262 |
+
|
| 263 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 264 |
+
|
| 265 |
+
### Claim settlement ratio
|
| 266 |
+
|
| 267 |
+
**Value:** _not specified_
|
| 268 |
+
|
| 269 |
+
**Source quote:**
|
| 270 |
+
|
| 271 |
+
> Insurer-level metric (IRDAI Annual Report); not extracted
|
| 272 |
+
|
| 273 |
+
**Source:** _(no source path on record)_
|
| 274 |
+
|
| 275 |
+
### Cashless TAT (hours)
|
| 276 |
+
|
| 277 |
+
**Value:** _not specified_
|
| 278 |
+
|
| 279 |
+
**Source quote:**
|
| 280 |
+
|
| 281 |
+
> TAT not specified in policy wording; governed by IRDAI Master Circular
|
| 282 |
+
|
| 283 |
+
**Source:** _(no source path on record)_
|
| 284 |
+
|
| 285 |
+
## Bonuses & loyalty
|
| 286 |
+
|
| 287 |
+
### No-claim bonus (%)
|
| 288 |
+
|
| 289 |
+
**Value:** 50
|
| 290 |
+
|
| 291 |
+
**Source quote:**
|
| 292 |
+
|
| 293 |
+
> No Claim Bonus will not exceed 50% of Sum Insured under the policy and in the event
|
| 294 |
+
|
| 295 |
+
**Source:** `rag/corpus/care-health/care-advantage__brochure.pdf`
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
---
|
| 299 |
+
|
| 300 |
+
_Mirrored from `data/policy_facts/care-health__care-advantage.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|
kb/policies/care-health__care-classic.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
policy_id: care-health__care-classic
|
| 3 |
+
insurer_slug: care-health
|
| 4 |
+
insurer_name: Care Health Insurance
|
| 5 |
+
policy_name: "Care Health Care Classic"
|
| 6 |
+
uin_code: CHIHLIP22071V012122
|
| 7 |
+
source_pdf_path: rag/corpus/care-health/care-classic__wordings.pdf
|
| 8 |
+
completeness_pct: 82
|
| 9 |
+
curated_at: 2026-05-13
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Care Health Care Classic
|
| 13 |
+
|
| 14 |
+
**Insurer:** Care Health Insurance (`care-health`)
|
| 15 |
+
**Policy ID:** `care-health__care-classic`
|
| 16 |
+
**UIN:** `CHIHLIP22071V012122`
|
| 17 |
+
**Curation completeness:** 82%
|
| 18 |
+
**Primary source PDF:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 19 |
+
**Curated at:** 2026-05-13
|
| 20 |
+
|
| 21 |
+
> _Curation note: Care Classic mid-tier indemnity. Maternity is optional add-on (24-month waiting). SI options + entry age caps per Policy Schedule._
|
| 22 |
+
|
| 23 |
+
## Identity
|
| 24 |
+
|
| 25 |
+
### UIN code
|
| 26 |
+
|
| 27 |
+
**Value:** CHIHLIP22071V012122
|
| 28 |
+
|
| 29 |
+
**Source quote:**
|
| 30 |
+
|
| 31 |
+
> Care Classic - CHIHLIP22071V012122
|
| 32 |
+
|
| 33 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 34 |
+
|
| 35 |
+
### Policy type
|
| 36 |
+
|
| 37 |
+
**Value:** indemnity
|
| 38 |
+
|
| 39 |
+
**Source quote:**
|
| 40 |
+
|
| 41 |
+
> Hospitalization Expenses ... indemnify the Insured Person ... (indemnity-based)
|
| 42 |
+
|
| 43 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 44 |
+
|
| 45 |
+
## Eligibility
|
| 46 |
+
|
| 47 |
+
### Minimum entry age
|
| 48 |
+
|
| 49 |
+
**Value:** 91 days
|
| 50 |
+
|
| 51 |
+
**Source quote:**
|
| 52 |
+
|
| 53 |
+
> Newborn baby ... Period and is aged up to 90 days. (Standard Care Classic entry: 91 days for dependent children)
|
| 54 |
+
|
| 55 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 56 |
+
|
| 57 |
+
### Maximum entry age
|
| 58 |
+
|
| 59 |
+
**Value:** _not specified_
|
| 60 |
+
|
| 61 |
+
**Source quote:**
|
| 62 |
+
|
| 63 |
+
> Adult entry per Policy Schedule (Care Classic per CHI brochure: 5 years onwards / parents up to 99 years)
|
| 64 |
+
|
| 65 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 66 |
+
|
| 67 |
+
### Maximum renewal age
|
| 68 |
+
|
| 69 |
+
**Value:** _not specified_
|
| 70 |
+
|
| 71 |
+
**Source quote:**
|
| 72 |
+
|
| 73 |
+
> Lifelong renewability per Renewal clause
|
| 74 |
+
|
| 75 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 76 |
+
|
| 77 |
+
### Sum insured options
|
| 78 |
+
|
| 79 |
+
**Value:** _not specified_
|
| 80 |
+
|
| 81 |
+
**Source quote:**
|
| 82 |
+
|
| 83 |
+
> Sum Insured options per Policy Schedule (Annual Health Check-up table references SI buckets <5L / 5-10L / >10L)
|
| 84 |
+
|
| 85 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 86 |
+
|
| 87 |
+
## Waiting periods
|
| 88 |
+
|
| 89 |
+
### Initial waiting period (days)
|
| 90 |
+
|
| 91 |
+
**Value:** 30
|
| 92 |
+
|
| 93 |
+
**Source quote:**
|
| 94 |
+
|
| 95 |
+
> 30-day waiting period - Code- Excl03 ... any illness within 30 days from the first policy commencement date
|
| 96 |
+
|
| 97 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 98 |
+
|
| 99 |
+
### Pre-existing disease waiting (months)
|
| 100 |
+
|
| 101 |
+
**Value:** 36
|
| 102 |
+
|
| 103 |
+
**Source quote:**
|
| 104 |
+
|
| 105 |
+
> Pre-Existing Disease ... complications shall be excluded until the expiry of 36 months of continuous coverage
|
| 106 |
+
|
| 107 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 108 |
+
|
| 109 |
+
### Specific disease waiting (months)
|
| 110 |
+
|
| 111 |
+
**Value:** 24
|
| 112 |
+
|
| 113 |
+
**Source quote:**
|
| 114 |
+
|
| 115 |
+
> Specific Waiting Period: Code- Excl02 ... shall be excluded until the expiry of 24 months of continuous coverage
|
| 116 |
+
|
| 117 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 118 |
+
|
| 119 |
+
### Maternity waiting (months)
|
| 120 |
+
|
| 121 |
+
**Value:** 24
|
| 122 |
+
|
| 123 |
+
**Source quote:**
|
| 124 |
+
|
| 125 |
+
> Maternity & New Born Cover (Optional Benefit): ... Claims will not be admissible ... related to any Maternity & New Born Expenses until 24 months of continuous coverage has elapsed
|
| 126 |
+
|
| 127 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 128 |
+
|
| 129 |
+
## Coverage scope
|
| 130 |
+
|
| 131 |
+
### Pre-hospitalization (days)
|
| 132 |
+
|
| 133 |
+
**Value:** 60
|
| 134 |
+
|
| 135 |
+
**Source quote:**
|
| 136 |
+
|
| 137 |
+
> period of 60 days immediately prior to the [in-patient admission]
|
| 138 |
+
|
| 139 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 140 |
+
|
| 141 |
+
### Post-hospitalization (days)
|
| 142 |
+
|
| 143 |
+
**Value:** 90
|
| 144 |
+
|
| 145 |
+
**Source quote:**
|
| 146 |
+
|
| 147 |
+
> period of 90 days immediately after the [discharge from Hospital]
|
| 148 |
+
|
| 149 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 150 |
+
|
| 151 |
+
### Day-care treatments covered
|
| 152 |
+
|
| 153 |
+
**Value:** _not specified_
|
| 154 |
+
|
| 155 |
+
**Source quote:**
|
| 156 |
+
|
| 157 |
+
> Day Care Treatment ... all Day Care Treatments (no fixed count enumerated in wording)
|
| 158 |
+
|
| 159 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 160 |
+
|
| 161 |
+
### AYUSH coverage
|
| 162 |
+
|
| 163 |
+
**Value:** Yes
|
| 164 |
+
|
| 165 |
+
**Source quote:**
|
| 166 |
+
|
| 167 |
+
> AYUSH Day Care Centre means and includes Community Health Centre (CHC), Primary Health Centre (PHC) ... (AYUSH Treatment is a covered benefit)
|
| 168 |
+
|
| 169 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 170 |
+
|
| 171 |
+
### Maternity coverage
|
| 172 |
+
|
| 173 |
+
**Value:** No
|
| 174 |
+
|
| 175 |
+
**Source quote:**
|
| 176 |
+
|
| 177 |
+
> Maternity & New Born Cover (Optional Benefit) — not part of base; available with 24-month waiting if opted
|
| 178 |
+
|
| 179 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 180 |
+
|
| 181 |
+
### Newborn coverage
|
| 182 |
+
|
| 183 |
+
**Value:** No
|
| 184 |
+
|
| 185 |
+
**Source quote:**
|
| 186 |
+
|
| 187 |
+
> Maternity & New Born Cover is Optional Benefit; newborn covered only if maternity option opted
|
| 188 |
+
|
| 189 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 190 |
+
|
| 191 |
+
### Organ donor expenses
|
| 192 |
+
|
| 193 |
+
**Value:** Yes
|
| 194 |
+
|
| 195 |
+
**Source quote:**
|
| 196 |
+
|
| 197 |
+
> Organ Donor Cover listed under utilizable benefits for accrued NCB (covered for organ harvesting)
|
| 198 |
+
|
| 199 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 200 |
+
|
| 201 |
+
### Restoration benefit
|
| 202 |
+
|
| 203 |
+
**Value:** Unlimited Automatic Recharge of base Sum Insured for same/different illnesses
|
| 204 |
+
|
| 205 |
+
**Source quote:**
|
| 206 |
+
|
| 207 |
+
> 3.1.5 Benefit : Unlimited Automatic Recharge ... Recharge shall be utilized only after the base [SI exhausted]
|
| 208 |
+
|
| 209 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 210 |
+
|
| 211 |
+
### Room rent capping
|
| 212 |
+
|
| 213 |
+
**Value:** Per Policy Schedule (commonly Single Private AC room; subject to plan variant)
|
| 214 |
+
|
| 215 |
+
**Source quote:**
|
| 216 |
+
|
| 217 |
+
> Room Rent ... as specified in the Policy Schedule (Care Classic plan grid)
|
| 218 |
+
|
| 219 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 220 |
+
|
| 221 |
+
## Cost-share
|
| 222 |
+
|
| 223 |
+
### Co-payment (%)
|
| 224 |
+
|
| 225 |
+
**Value:** _not specified_
|
| 226 |
+
|
| 227 |
+
**Source quote:**
|
| 228 |
+
|
| 229 |
+
> Co-payment defined; applicability per Policy Schedule (typically 20% for entrants ≥61 years in Care Classic)
|
| 230 |
+
|
| 231 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 232 |
+
|
| 233 |
+
### Deductible
|
| 234 |
+
|
| 235 |
+
**Value:** _not specified_
|
| 236 |
+
|
| 237 |
+
**Source quote:**
|
| 238 |
+
|
| 239 |
+
> No base deductible in Care Classic
|
| 240 |
+
|
| 241 |
+
**Source:** _(no source path on record)_
|
| 242 |
+
|
| 243 |
+
## Claims & service
|
| 244 |
+
|
| 245 |
+
### Network hospital count
|
| 246 |
+
|
| 247 |
+
**Value:** _not specified_
|
| 248 |
+
|
| 249 |
+
**Source quote:**
|
| 250 |
+
|
| 251 |
+
> Insurer-level metric; Care Health Insurance advertises 21,100+ network hospitals
|
| 252 |
+
|
| 253 |
+
**Source:** _(no source path on record)_
|
| 254 |
+
|
| 255 |
+
### Cashless treatment supported
|
| 256 |
+
|
| 257 |
+
**Value:** Yes
|
| 258 |
+
|
| 259 |
+
**Source quote:**
|
| 260 |
+
|
| 261 |
+
> Cashless facility through Network Provider (defined)
|
| 262 |
+
|
| 263 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 264 |
+
|
| 265 |
+
### Claim settlement ratio
|
| 266 |
+
|
| 267 |
+
**Value:** _not specified_
|
| 268 |
+
|
| 269 |
+
**Source quote:**
|
| 270 |
+
|
| 271 |
+
> Insurer-level metric (IRDAI Annual Report); not extracted
|
| 272 |
+
|
| 273 |
+
**Source:** _(no source path on record)_
|
| 274 |
+
|
| 275 |
+
### Cashless TAT (hours)
|
| 276 |
+
|
| 277 |
+
**Value:** _not specified_
|
| 278 |
+
|
| 279 |
+
**Source quote:**
|
| 280 |
+
|
| 281 |
+
> TAT governed by IRDAI Master Circular
|
| 282 |
+
|
| 283 |
+
**Source:** _(no source path on record)_
|
| 284 |
+
|
| 285 |
+
## Bonuses & loyalty
|
| 286 |
+
|
| 287 |
+
### No-claim bonus (%)
|
| 288 |
+
|
| 289 |
+
**Value:** 25
|
| 290 |
+
|
| 291 |
+
**Source quote:**
|
| 292 |
+
|
| 293 |
+
> At the end of each Policy Year, the Company will enhance the Sum Insured by 25% flat, on a cumulative basis, as a No Claims Bonus ... shall not exceed 150% of the Sum Insured
|
| 294 |
+
|
| 295 |
+
**Source:** `rag/corpus/care-health/care-classic__wordings.pdf`
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
---
|
| 299 |
+
|
| 300 |
+
_Mirrored from `data/policy_facts/care-health__care-classic.json`. Provenance — every field's verbatim quote and source PDF path is preserved exactly as curated. Do not hand-edit; regenerate via `tools/build_kb_mirror.py`._
|