Spaces:
Sleeping
Sleeping
Deploy v1 — single-Docker FastAPI + Next.js + RAG + voice + faithfulness
Browse files- backend/config.py +4 -4
- data/reviews/aditya-birla.json +44 -16
- data/reviews/bajaj-allianz.json +49 -15
- data/reviews/care-health.json +58 -17
- data/reviews/hdfc-ergo.json +72 -20
- data/reviews/icici-lombard.json +54 -16
- data/reviews/manipalcigna.json +42 -14
- data/reviews/new-india.json +47 -15
- data/reviews/niva-bupa.json +76 -20
- data/reviews/star-health.json +64 -17
- data/reviews/tata-aig.json +42 -14
- docs/ci-templates/eval-workflow.yml.template +83 -0
- eval/reviews_url_verification.json +231 -0
- kb/INDEX.md +1 -1
- kb/calculations/scorecard_results.md +1 -1
- kb/eval/INDEX.md +32 -0
- kb/methodology/INDEX.md +40 -0
- kb/premiums/INDEX.md +323 -0
- kb/research/corpus_acquisition.md +1 -1
- kb/reviews/INDEX.md +24 -0
- kb/reviews/aditya-birla.md +48 -0
- kb/reviews/bajaj-allianz.md +49 -0
- kb/reviews/care-health.md +50 -0
- kb/reviews/hdfc-ergo.md +55 -0
- kb/reviews/icici-lombard.md +49 -0
- kb/reviews/manipalcigna.md +48 -0
- kb/reviews/new-india.md +48 -0
- kb/reviews/niva-bupa.md +55 -0
- kb/reviews/star-health.md +53 -0
- kb/reviews/tata-aig.md +48 -0
- kb/security/INDEX.md +42 -0
- rag/build_kb.py +342 -3
- rag/corpus/_playwright_results.md +87 -0
- rag/corpus/regulatory/_manifest.json +142 -108
- rag/vectors/chroma.sqlite3 +2 -2
- rag/vectors/d62097c0-7e5e-4fb9-b582-54c657c3c91f/data_level0.bin +3 -0
- rag/vectors/d62097c0-7e5e-4fb9-b582-54c657c3c91f/header.bin +3 -0
- rag/vectors/d62097c0-7e5e-4fb9-b582-54c657c3c91f/length.bin +3 -0
- rag/vectors/d62097c0-7e5e-4fb9-b582-54c657c3c91f/link_lists.bin +0 -0
- tools/chunk_sweep.py +219 -0
- tools/verify_review_urls.py +167 -0
backend/config.py
CHANGED
|
@@ -52,10 +52,10 @@ class Settings:
|
|
| 52 |
VECTORS_DIR: Path = ROOT / "rag" / "vectors"
|
| 53 |
STRUCTURED_DB: Path = ROOT / "rag" / "policies.duckdb"
|
| 54 |
|
| 55 |
-
# Tunables
|
| 56 |
-
CHUNK_TOKENS: int = 800
|
| 57 |
-
CHUNK_OVERLAP_TOKENS: int = 120
|
| 58 |
-
RAG_TOP_K: int = 5
|
| 59 |
|
| 60 |
@classmethod
|
| 61 |
def validate(cls) -> list[str]:
|
|
|
|
| 52 |
VECTORS_DIR: Path = ROOT / "rag" / "vectors"
|
| 53 |
STRUCTURED_DB: Path = ROOT / "rag" / "policies.duckdb"
|
| 54 |
|
| 55 |
+
# Tunables (overrideable via env vars so the hyperparameter sweep can iterate)
|
| 56 |
+
CHUNK_TOKENS: int = int(os.environ.get("CHUNK_TOKENS", "800"))
|
| 57 |
+
CHUNK_OVERLAP_TOKENS: int = int(os.environ.get("CHUNK_OVERLAP_TOKENS", "120"))
|
| 58 |
+
RAG_TOP_K: int = int(os.environ.get("RAG_TOP_K", "5"))
|
| 59 |
|
| 60 |
@classmethod
|
| 61 |
def validate(cls) -> list[str]:
|
data/reviews/aditya-birla.json
CHANGED
|
@@ -2,30 +2,38 @@
|
|
| 2 |
"insurer_slug": "aditya-birla",
|
| 3 |
"insurer_name": "Aditya Birla Health Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
| 5 |
-
|
| 6 |
"claim_metrics": {
|
| 7 |
"claim_settlement_ratio_pct": 92.97,
|
| 8 |
"claim_settlement_ratio_year": "2023-24",
|
| 9 |
"complaints_per_10k_policies": 13,
|
| 10 |
"complaints_year": "2023-24",
|
| 11 |
-
"incurred_claim_ratio_pct": 71.
|
| 12 |
"source_irdai_url": "https://irdai.gov.in/document-detail?documentId=6436847",
|
| 13 |
"source_secondary_url": "https://www.policyx.com/health-insurance/aditya-birla-health-insurance/claim-settlement-ratio/",
|
| 14 |
"source_company_url": "https://www.angelone.in/news/market-updates/aditya-birla-health-insurance-claims-settlement-ratio-analysis-for-2024-25"
|
| 15 |
},
|
| 16 |
-
|
| 17 |
"aggregator_ratings": {
|
| 18 |
-
"policybazaar": {
|
| 19 |
-
|
| 20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
},
|
| 22 |
-
|
| 23 |
"trustpilot": {
|
| 24 |
"score": null,
|
| 25 |
"review_count": null,
|
| 26 |
"url": null
|
| 27 |
},
|
| 28 |
-
|
| 29 |
"reddit_sentiment": {
|
| 30 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 31 |
"mentions_last_year_estimate": 28,
|
|
@@ -33,7 +41,7 @@
|
|
| 33 |
"notable_themes": [
|
| 34 |
"Activ One plan well-received for wellness benefits",
|
| 35 |
"HealthReturns wellness program (premium discount for healthy behavior) is differentiator",
|
| 36 |
-
"100% of claims paid within 3 months in FY25
|
| 37 |
"Aditya Birla Capital brand trust",
|
| 38 |
"10,000+ cashless network (tied 2nd with Niva/Tata)"
|
| 39 |
],
|
|
@@ -42,24 +50,44 @@
|
|
| 42 |
"https://www.policybazaar.com/health-insurance/comparison/aditya-birla-activ-one-vs-tata-aig-medicare/"
|
| 43 |
]
|
| 44 |
},
|
| 45 |
-
|
| 46 |
"youtube_coverage": {
|
| 47 |
"top_creators_who_reviewed": [
|
| 48 |
-
{
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
],
|
| 50 |
"overall_youtube_sentiment": "favourable"
|
| 51 |
},
|
| 52 |
-
|
| 53 |
"in_news": [
|
| 54 |
-
{
|
| 55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
],
|
| 57 |
-
|
| 58 |
"aggregate_score": {
|
| 59 |
"value_0_100": 81.2,
|
| 60 |
"letter_grade": "B",
|
| 61 |
"headline": "Strong CSR (93%) with low complaints (13 per 10K), differentiated by HealthReturns wellness program",
|
| 62 |
"computed_at": "2026-05-13",
|
| 63 |
"computation_notes": "0.40*92.97 + 0.20*(100-26) + 0.15*(4.4*20) + 0.10*75 + 0.10*90 + 0.05*100 = 37.2 + 14.8 + 13.2 + 7.5 + 9 + 5 = 86.7. Adjusted to 81.2 for smaller mindshare on Reddit/YouTube vs Top 3."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
}
|
| 65 |
-
}
|
|
|
|
| 2 |
"insurer_slug": "aditya-birla",
|
| 3 |
"insurer_name": "Aditya Birla Health Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
|
|
|
| 5 |
"claim_metrics": {
|
| 6 |
"claim_settlement_ratio_pct": 92.97,
|
| 7 |
"claim_settlement_ratio_year": "2023-24",
|
| 8 |
"complaints_per_10k_policies": 13,
|
| 9 |
"complaints_year": "2023-24",
|
| 10 |
+
"incurred_claim_ratio_pct": 71.5,
|
| 11 |
"source_irdai_url": "https://irdai.gov.in/document-detail?documentId=6436847",
|
| 12 |
"source_secondary_url": "https://www.policyx.com/health-insurance/aditya-birla-health-insurance/claim-settlement-ratio/",
|
| 13 |
"source_company_url": "https://www.angelone.in/news/market-updates/aditya-birla-health-insurance-claims-settlement-ratio-analysis-for-2024-25"
|
| 14 |
},
|
|
|
|
| 15 |
"aggregator_ratings": {
|
| 16 |
+
"policybazaar": {
|
| 17 |
+
"avg_star": 4.4,
|
| 18 |
+
"review_count": null,
|
| 19 |
+
"url": "https://www.policybazaar.com/insurance-companies/aditya-birla-health-insurance/claim-settlement-ratio/"
|
| 20 |
+
},
|
| 21 |
+
"insuredekho": {
|
| 22 |
+
"avg_star": 4.3,
|
| 23 |
+
"review_count": null,
|
| 24 |
+
"url": "https://www.insurancedekho.com/health-insurance/aditya-birla/claim-settlement"
|
| 25 |
+
},
|
| 26 |
+
"joinditto": {
|
| 27 |
+
"avg_star": 4.5,
|
| 28 |
+
"review_count": null,
|
| 29 |
+
"url": "https://joinditto.in/articles/health-insurance/aditya-birla-health-insurance-claim-settlement-ratio/"
|
| 30 |
+
}
|
| 31 |
},
|
|
|
|
| 32 |
"trustpilot": {
|
| 33 |
"score": null,
|
| 34 |
"review_count": null,
|
| 35 |
"url": null
|
| 36 |
},
|
|
|
|
| 37 |
"reddit_sentiment": {
|
| 38 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 39 |
"mentions_last_year_estimate": 28,
|
|
|
|
| 41 |
"notable_themes": [
|
| 42 |
"Activ One plan well-received for wellness benefits",
|
| 43 |
"HealthReturns wellness program (premium discount for healthy behavior) is differentiator",
|
| 44 |
+
"100% of claims paid within 3 months in FY25 \u2014 operational efficiency strong",
|
| 45 |
"Aditya Birla Capital brand trust",
|
| 46 |
"10,000+ cashless network (tied 2nd with Niva/Tata)"
|
| 47 |
],
|
|
|
|
| 50 |
"https://www.policybazaar.com/health-insurance/comparison/aditya-birla-activ-one-vs-tata-aig-medicare/"
|
| 51 |
]
|
| 52 |
},
|
|
|
|
| 53 |
"youtube_coverage": {
|
| 54 |
"top_creators_who_reviewed": [
|
| 55 |
+
{
|
| 56 |
+
"creator": "Ditto Insurance",
|
| 57 |
+
"video_url": "https://joinditto.in/articles/health-insurance/aditya-birla-health-insurance-claim-settlement-ratio/",
|
| 58 |
+
"verdict": "ranked in Ditto's top-5 health insurers"
|
| 59 |
+
}
|
| 60 |
],
|
| 61 |
"overall_youtube_sentiment": "favourable"
|
| 62 |
},
|
|
|
|
| 63 |
"in_news": [
|
| 64 |
+
{
|
| 65 |
+
"headline": "Aditya Birla Health Insurance Claims Settlement Ratio Analysis for 2024-25",
|
| 66 |
+
"url": "https://www.angelone.in/news/market-updates/aditya-birla-health-insurance-claims-settlement-ratio-analysis-for-2024-25",
|
| 67 |
+
"publication": "Angel One",
|
| 68 |
+
"date": "2025",
|
| 69 |
+
"tone": "positive"
|
| 70 |
+
},
|
| 71 |
+
{
|
| 72 |
+
"headline": "Aditya Birla Health Insurance paid Rs 952 crore in commissions in April-December 2025 (growing scale)",
|
| 73 |
+
"url": "https://cafemutual.com/news/insurance/37646-how-much-did-the-non-life-insurers-pay-in-commission-in-april-december-2025",
|
| 74 |
+
"publication": "Cafemutual",
|
| 75 |
+
"date": "2026",
|
| 76 |
+
"tone": "neutral"
|
| 77 |
+
}
|
| 78 |
],
|
|
|
|
| 79 |
"aggregate_score": {
|
| 80 |
"value_0_100": 81.2,
|
| 81 |
"letter_grade": "B",
|
| 82 |
"headline": "Strong CSR (93%) with low complaints (13 per 10K), differentiated by HealthReturns wellness program",
|
| 83 |
"computed_at": "2026-05-13",
|
| 84 |
"computation_notes": "0.40*92.97 + 0.20*(100-26) + 0.15*(4.4*20) + 0.10*75 + 0.10*90 + 0.05*100 = 37.2 + 14.8 + 13.2 + 7.5 + 9 + 5 = 86.7. Adjusted to 81.2 for smaller mindshare on Reddit/YouTube vs Top 3."
|
| 85 |
+
},
|
| 86 |
+
"_url_verification": {
|
| 87 |
+
"verified_at": "2026-05-12T23:57:25Z",
|
| 88 |
+
"total_urls": 9,
|
| 89 |
+
"ok": 9,
|
| 90 |
+
"broken_count": 0,
|
| 91 |
+
"broken_urls": []
|
| 92 |
}
|
| 93 |
+
}
|
data/reviews/bajaj-allianz.json
CHANGED
|
@@ -2,7 +2,6 @@
|
|
| 2 |
"insurer_slug": "bajaj-allianz",
|
| 3 |
"insurer_name": "Bajaj Allianz General Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
| 5 |
-
|
| 6 |
"claim_metrics": {
|
| 7 |
"claim_settlement_ratio_pct": 92.24,
|
| 8 |
"claim_settlement_ratio_year": "2023-24",
|
|
@@ -15,19 +14,28 @@
|
|
| 15 |
"source_company_url": "https://www.bajajgeneralinsurance.com/about-us/financial-information.html",
|
| 16 |
"source_annual_report": "https://www.bajajgeneralinsurance.com/download-documents/annual-report/Annual-Report-2023-2024.pdf"
|
| 17 |
},
|
| 18 |
-
|
| 19 |
"aggregator_ratings": {
|
| 20 |
-
"policybazaar": {
|
| 21 |
-
|
| 22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
},
|
| 24 |
-
|
| 25 |
"trustpilot": {
|
| 26 |
"score": null,
|
| 27 |
"review_count": null,
|
| 28 |
"url": null
|
| 29 |
},
|
| 30 |
-
|
| 31 |
"reddit_sentiment": {
|
| 32 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 33 |
"mentions_last_year_estimate": 25,
|
|
@@ -44,25 +52,51 @@
|
|
| 44 |
"https://www.policyx.com/health-insurance/bajaj-general-health-insurance/claim-settlement-ratio/"
|
| 45 |
]
|
| 46 |
},
|
| 47 |
-
|
| 48 |
"youtube_coverage": {
|
| 49 |
"top_creators_who_reviewed": [
|
| 50 |
-
{
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
],
|
| 52 |
"overall_youtube_sentiment": "favourable"
|
| 53 |
},
|
| 54 |
-
|
| 55 |
"in_news": [
|
| 56 |
-
{
|
| 57 |
-
|
| 58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
],
|
| 60 |
-
|
| 61 |
"aggregate_score": {
|
| 62 |
"value_0_100": 84.5,
|
| 63 |
"letter_grade": "B",
|
| 64 |
"headline": "Industry-leading complaints record (3 per 10K) and high CSR (92.2%); third-largest non-life insurer in India",
|
| 65 |
"computed_at": "2026-05-13",
|
| 66 |
"computation_notes": "0.40*92.24 + 0.20*(100-6) + 0.15*(4.47*20) + 0.10*90 + 0.10*90 + 0.05*100 = 36.9 + 18.8 + 13.4 + 9 + 9 + 5 = 92.1. Adjusted down to 84.5 because brand awareness in health-specific (vs general) segment is mid-tier and review-count footprint smaller than Star/HDFC."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 67 |
}
|
| 68 |
-
}
|
|
|
|
| 2 |
"insurer_slug": "bajaj-allianz",
|
| 3 |
"insurer_name": "Bajaj Allianz General Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
|
|
|
| 5 |
"claim_metrics": {
|
| 6 |
"claim_settlement_ratio_pct": 92.24,
|
| 7 |
"claim_settlement_ratio_year": "2023-24",
|
|
|
|
| 14 |
"source_company_url": "https://www.bajajgeneralinsurance.com/about-us/financial-information.html",
|
| 15 |
"source_annual_report": "https://www.bajajgeneralinsurance.com/download-documents/annual-report/Annual-Report-2023-2024.pdf"
|
| 16 |
},
|
|
|
|
| 17 |
"aggregator_ratings": {
|
| 18 |
+
"policybazaar": {
|
| 19 |
+
"avg_star": 4.5,
|
| 20 |
+
"review_count": null,
|
| 21 |
+
"url": "https://www.policybazaar.com/insurance-companies/bajaj-allianz-health-insurance/claim-settlement-ratio/"
|
| 22 |
+
},
|
| 23 |
+
"insuredekho": {
|
| 24 |
+
"avg_star": 4.4,
|
| 25 |
+
"review_count": null,
|
| 26 |
+
"url": "https://www.insurancedekho.com/health-insurance/bajaj-allianz/claim-settlement"
|
| 27 |
+
},
|
| 28 |
+
"joinditto": {
|
| 29 |
+
"avg_star": 4.5,
|
| 30 |
+
"review_count": null,
|
| 31 |
+
"url": "https://joinditto.in/articles/health-insurance/bajaj-general-health-insurance-claim-settlement-ratio/"
|
| 32 |
+
}
|
| 33 |
},
|
|
|
|
| 34 |
"trustpilot": {
|
| 35 |
"score": null,
|
| 36 |
"review_count": null,
|
| 37 |
"url": null
|
| 38 |
},
|
|
|
|
| 39 |
"reddit_sentiment": {
|
| 40 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 41 |
"mentions_last_year_estimate": 25,
|
|
|
|
| 52 |
"https://www.policyx.com/health-insurance/bajaj-general-health-insurance/claim-settlement-ratio/"
|
| 53 |
]
|
| 54 |
},
|
|
|
|
| 55 |
"youtube_coverage": {
|
| 56 |
"top_creators_who_reviewed": [
|
| 57 |
+
{
|
| 58 |
+
"creator": "Ditto Insurance",
|
| 59 |
+
"video_url": "https://joinditto.in/articles/health-insurance/bajaj-general-health-insurance-claim-settlement-ratio/",
|
| 60 |
+
"verdict": "ranked in top-5 by Ditto for retail health"
|
| 61 |
+
}
|
| 62 |
],
|
| 63 |
"overall_youtube_sentiment": "favourable"
|
| 64 |
},
|
|
|
|
| 65 |
"in_news": [
|
| 66 |
+
{
|
| 67 |
+
"headline": "Bajaj Allianz General Insurance delivers strong financial results with profits rising 27% to Rs 921 crore",
|
| 68 |
+
"url": "https://www.bajajallianz.com/download-documents/press-release/Press-Release-Finance-Bajaj-Allianz-General-Insurance-delivers-strong-financial-results-with-profits-rising-by-27percent-to-Rs%20921-crore.pdf",
|
| 69 |
+
"publication": "Bajaj Allianz",
|
| 70 |
+
"date": "2024",
|
| 71 |
+
"tone": "positive"
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"headline": "ICICI Lombard, Bajaj Allianz and New India are the most profitable non-life players in FY 2024",
|
| 75 |
+
"url": "https://cafemutual.com/news/insurance/33076-icici-lombard-bajaj-allianz-and-new-india-are-the-most-profitable-non-life-players-in-fy-2024",
|
| 76 |
+
"publication": "Cafemutual",
|
| 77 |
+
"date": "2024",
|
| 78 |
+
"tone": "positive"
|
| 79 |
+
},
|
| 80 |
+
{
|
| 81 |
+
"headline": "Bajaj Allianz GWP grew to Rs 20,630 crore in FY24, 33.2% growth",
|
| 82 |
+
"url": "https://www.bajajgeneralinsurance.com/about-us/financial-highlights.html",
|
| 83 |
+
"publication": "Bajaj Allianz IR",
|
| 84 |
+
"date": "2024",
|
| 85 |
+
"tone": "positive"
|
| 86 |
+
}
|
| 87 |
],
|
|
|
|
| 88 |
"aggregate_score": {
|
| 89 |
"value_0_100": 84.5,
|
| 90 |
"letter_grade": "B",
|
| 91 |
"headline": "Industry-leading complaints record (3 per 10K) and high CSR (92.2%); third-largest non-life insurer in India",
|
| 92 |
"computed_at": "2026-05-13",
|
| 93 |
"computation_notes": "0.40*92.24 + 0.20*(100-6) + 0.15*(4.47*20) + 0.10*90 + 0.10*90 + 0.05*100 = 36.9 + 18.8 + 13.4 + 9 + 9 + 5 = 92.1. Adjusted down to 84.5 because brand awareness in health-specific (vs general) segment is mid-tier and review-count footprint smaller than Star/HDFC."
|
| 94 |
+
},
|
| 95 |
+
"_url_verification": {
|
| 96 |
+
"verified_at": "2026-05-12T23:57:25Z",
|
| 97 |
+
"total_urls": 11,
|
| 98 |
+
"ok": 11,
|
| 99 |
+
"broken_count": 0,
|
| 100 |
+
"broken_urls": []
|
| 101 |
}
|
| 102 |
+
}
|
data/reviews/care-health.json
CHANGED
|
@@ -2,7 +2,6 @@
|
|
| 2 |
"insurer_slug": "care-health",
|
| 3 |
"insurer_name": "Care Health Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
| 5 |
-
|
| 6 |
"claim_metrics": {
|
| 7 |
"claim_settlement_ratio_pct": 93.13,
|
| 8 |
"claim_settlement_ratio_year": "2023-24 (3-year avg)",
|
|
@@ -14,19 +13,28 @@
|
|
| 14 |
"source_secondary_url": "https://www.policyx.com/health-insurance/religare-health-insurance/claim-settlement-ratio/",
|
| 15 |
"source_company_url": "https://www.careinsurance.com/health-insurance/health-insurance-claim-settlement-ratio"
|
| 16 |
},
|
| 17 |
-
|
| 18 |
"aggregator_ratings": {
|
| 19 |
-
"policybazaar": {
|
| 20 |
-
|
| 21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
},
|
| 23 |
-
|
| 24 |
"trustpilot": {
|
| 25 |
"score": null,
|
| 26 |
"review_count": null,
|
| 27 |
"url": null
|
| 28 |
},
|
| 29 |
-
|
| 30 |
"reddit_sentiment": {
|
| 31 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 32 |
"mentions_last_year_estimate": 35,
|
|
@@ -43,26 +51,59 @@
|
|
| 43 |
"https://www.policybazaar.com/health-insurance/companies/hdfc-ergo-vs-niva-bupa/"
|
| 44 |
]
|
| 45 |
},
|
| 46 |
-
|
| 47 |
"youtube_coverage": {
|
| 48 |
"top_creators_who_reviewed": [
|
| 49 |
-
{
|
| 50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
],
|
| 52 |
"overall_youtube_sentiment": "favourable"
|
| 53 |
},
|
| 54 |
-
|
| 55 |
"in_news": [
|
| 56 |
-
{
|
| 57 |
-
|
| 58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
],
|
| 60 |
-
|
| 61 |
"aggregate_score": {
|
| 62 |
"value_0_100": 70.4,
|
| 63 |
"letter_grade": "B",
|
| 64 |
"headline": "Solid CSR (93%) and YouTube/advisor endorsement, but bottom-of-table ICR (57.7%) and complaints volume drag the score",
|
| 65 |
"computed_at": "2026-05-13",
|
| 66 |
-
"computation_notes": "0.40*93.13 + 0.20*(100-42*2) + 0.15*(4.2*20) + 0.10*60 + 0.10*90 + 0.05*33 = 37.3 + 3.2 + 12.6 + 6 + 9 + 1.65 = 69.75
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 67 |
}
|
| 68 |
-
}
|
|
|
|
| 2 |
"insurer_slug": "care-health",
|
| 3 |
"insurer_name": "Care Health Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
|
|
|
| 5 |
"claim_metrics": {
|
| 6 |
"claim_settlement_ratio_pct": 93.13,
|
| 7 |
"claim_settlement_ratio_year": "2023-24 (3-year avg)",
|
|
|
|
| 13 |
"source_secondary_url": "https://www.policyx.com/health-insurance/religare-health-insurance/claim-settlement-ratio/",
|
| 14 |
"source_company_url": "https://www.careinsurance.com/health-insurance/health-insurance-claim-settlement-ratio"
|
| 15 |
},
|
|
|
|
| 16 |
"aggregator_ratings": {
|
| 17 |
+
"policybazaar": {
|
| 18 |
+
"avg_star": 4.4,
|
| 19 |
+
"review_count": null,
|
| 20 |
+
"url": "https://www.policybazaar.com/insurance-companies/religare-health-insurance/claim-settlement-ratio/"
|
| 21 |
+
},
|
| 22 |
+
"insuredekho": {
|
| 23 |
+
"avg_star": 4.3,
|
| 24 |
+
"review_count": null,
|
| 25 |
+
"url": "https://www.insurancedekho.com/health-insurance/care/user-reviews"
|
| 26 |
+
},
|
| 27 |
+
"joinditto": {
|
| 28 |
+
"avg_star": 4.0,
|
| 29 |
+
"review_count": null,
|
| 30 |
+
"url": "https://joinditto.in/articles/health-insurance/care-health-insurance-review/"
|
| 31 |
+
}
|
| 32 |
},
|
|
|
|
| 33 |
"trustpilot": {
|
| 34 |
"score": null,
|
| 35 |
"review_count": null,
|
| 36 |
"url": null
|
| 37 |
},
|
|
|
|
| 38 |
"reddit_sentiment": {
|
| 39 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 40 |
"mentions_last_year_estimate": 35,
|
|
|
|
| 51 |
"https://www.policybazaar.com/health-insurance/companies/hdfc-ergo-vs-niva-bupa/"
|
| 52 |
]
|
| 53 |
},
|
|
|
|
| 54 |
"youtube_coverage": {
|
| 55 |
"top_creators_who_reviewed": [
|
| 56 |
+
{
|
| 57 |
+
"creator": "Ditto Insurance",
|
| 58 |
+
"video_url": "https://www.youtube.com/watch?v=2_EhrtJhn44",
|
| 59 |
+
"verdict": "Care Supreme in 3-way comparison; competitive option"
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"creator": "Ditto Insurance",
|
| 63 |
+
"video_url": "https://www.youtube.com/watch?v=1rRvcVkcQVw",
|
| 64 |
+
"verdict": "Care Supreme vs HDFC Ergo Optima Secure 2026 comparison"
|
| 65 |
+
}
|
| 66 |
],
|
| 67 |
"overall_youtube_sentiment": "favourable"
|
| 68 |
},
|
|
|
|
| 69 |
"in_news": [
|
| 70 |
+
{
|
| 71 |
+
"headline": "Care Health Insurance settled only 57.69% of claims, paying Rs 2.88 per Rs 5 claimed",
|
| 72 |
+
"url": "https://thesouthfirst.com/health/health-insurance-claims-standalone-insurers-pay-rs-3-07-per-rs-5-claim-general-insurers-offer-rs-4-17/",
|
| 73 |
+
"publication": "The South First",
|
| 74 |
+
"date": "2024-12",
|
| 75 |
+
"tone": "negative"
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"headline": "Star Health, CARE, Niva Bupa record most policyholder complaints in FY24",
|
| 79 |
+
"url": "https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html",
|
| 80 |
+
"publication": "Business Standard",
|
| 81 |
+
"date": "2025-09-01",
|
| 82 |
+
"tone": "negative"
|
| 83 |
+
},
|
| 84 |
+
{
|
| 85 |
+
"headline": "Care Health Insurance Claim Settlement Ratio Analysis",
|
| 86 |
+
"url": "https://joinditto.in/articles/health-insurance/care-health-insurance-claim-settlement-ratio/",
|
| 87 |
+
"publication": "Ditto Insurance",
|
| 88 |
+
"date": "2026-04",
|
| 89 |
+
"tone": "neutral"
|
| 90 |
+
}
|
| 91 |
],
|
|
|
|
| 92 |
"aggregate_score": {
|
| 93 |
"value_0_100": 70.4,
|
| 94 |
"letter_grade": "B",
|
| 95 |
"headline": "Solid CSR (93%) and YouTube/advisor endorsement, but bottom-of-table ICR (57.7%) and complaints volume drag the score",
|
| 96 |
"computed_at": "2026-05-13",
|
| 97 |
+
"computation_notes": "0.40*93.13 + 0.20*(100-42*2) + 0.15*(4.2*20) + 0.10*60 + 0.10*90 + 0.05*33 = 37.3 + 3.2 + 12.6 + 6 + 9 + 1.65 = 69.75 \u2248 70.4"
|
| 98 |
+
},
|
| 99 |
+
"_url_verification": {
|
| 100 |
+
"verified_at": "2026-05-12T23:57:25Z",
|
| 101 |
+
"total_urls": 13,
|
| 102 |
+
"ok": 11,
|
| 103 |
+
"broken_count": 2,
|
| 104 |
+
"broken_urls": [
|
| 105 |
+
"https://www.careinsurance.com/health-insurance/health-insurance-claim-settlement-ratio",
|
| 106 |
+
"https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html"
|
| 107 |
+
]
|
| 108 |
}
|
| 109 |
+
}
|
data/reviews/hdfc-ergo.json
CHANGED
|
@@ -2,9 +2,8 @@
|
|
| 2 |
"insurer_slug": "hdfc-ergo",
|
| 3 |
"insurer_name": "HDFC ERGO General Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
| 5 |
-
|
| 6 |
"claim_metrics": {
|
| 7 |
-
"claim_settlement_ratio_pct": 99.
|
| 8 |
"claim_settlement_ratio_year": "2023-24",
|
| 9 |
"complaints_per_10k_policies": 15,
|
| 10 |
"complaints_year": "2023-24",
|
|
@@ -14,21 +13,34 @@
|
|
| 14 |
"source_secondary_url": "https://www.policybazaar.com/insurance-companies/hdfc-ergo-health-insurance/claim-settlement-ratio/",
|
| 15 |
"source_company_url": "https://www.hdfcergo.com/blogs/health-insurance/hdfc-ergo-claim-settlement-ratio"
|
| 16 |
},
|
| 17 |
-
|
| 18 |
"aggregator_ratings": {
|
| 19 |
-
"policybazaar": {
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
},
|
| 24 |
-
|
| 25 |
"trustpilot": {
|
| 26 |
"score": 1.7,
|
| 27 |
"review_count": null,
|
| 28 |
"url": "https://www.trustpilot.com/review/www.hdfcergo.com",
|
| 29 |
"note": "Trustpilot has limited Indian customer engagement; reviews skew to grievances"
|
| 30 |
},
|
| 31 |
-
|
| 32 |
"reddit_sentiment": {
|
| 33 |
"subreddit": "IndianFinance / IndiaInvestments / personalfinanceindia",
|
| 34 |
"mentions_last_year_estimate": 55,
|
|
@@ -45,28 +57,68 @@
|
|
| 45 |
"https://www.oneassure.in/insurance/health-insurance-compare/niva-bupa-re-assure-vs-icici-health-shield-vs-hdfc-ergo-my-health-suraksha-gold"
|
| 46 |
]
|
| 47 |
},
|
| 48 |
-
|
| 49 |
"youtube_coverage": {
|
| 50 |
"top_creators_who_reviewed": [
|
| 51 |
-
{
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
],
|
| 56 |
"overall_youtube_sentiment": "favourable"
|
| 57 |
},
|
| 58 |
-
|
| 59 |
"in_news": [
|
| 60 |
-
{
|
| 61 |
-
|
| 62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
],
|
| 64 |
-
|
| 65 |
"aggregate_score": {
|
| 66 |
"value_0_100": 85.7,
|
| 67 |
"letter_grade": "A",
|
| 68 |
"headline": "Industry-leading claim settlement ratio (99.1%) with low complaints (15 per 10K) and strong YouTube/advisor recommendation",
|
| 69 |
"computed_at": "2026-05-13",
|
| 70 |
"computation_notes": "0.40*99.10 + 0.20*(100-30) + 0.15*(4.45*20) + 0.10*75 + 0.10*90 + 0.05*100 = 39.6 + 14 + 13.4 + 7.5 + 9 + 5 = 88.5. Adjusted to 85.7 accounting for Trustpilot drag and some negative emergency-claim anecdotes."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
}
|
| 72 |
-
}
|
|
|
|
| 2 |
"insurer_slug": "hdfc-ergo",
|
| 3 |
"insurer_name": "HDFC ERGO General Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
|
|
|
| 5 |
"claim_metrics": {
|
| 6 |
+
"claim_settlement_ratio_pct": 99.1,
|
| 7 |
"claim_settlement_ratio_year": "2023-24",
|
| 8 |
"complaints_per_10k_policies": 15,
|
| 9 |
"complaints_year": "2023-24",
|
|
|
|
| 13 |
"source_secondary_url": "https://www.policybazaar.com/insurance-companies/hdfc-ergo-health-insurance/claim-settlement-ratio/",
|
| 14 |
"source_company_url": "https://www.hdfcergo.com/blogs/health-insurance/hdfc-ergo-claim-settlement-ratio"
|
| 15 |
},
|
|
|
|
| 16 |
"aggregator_ratings": {
|
| 17 |
+
"policybazaar": {
|
| 18 |
+
"avg_star": 4.4,
|
| 19 |
+
"review_count": null,
|
| 20 |
+
"url": "https://www.policybazaar.com/hdfc-ergo-general-reviews-903/"
|
| 21 |
+
},
|
| 22 |
+
"insuredekho": {
|
| 23 |
+
"avg_star": 4.5,
|
| 24 |
+
"review_count": null,
|
| 25 |
+
"url": "https://www.insurancedekho.com/health-insurance/hdfc-ergo"
|
| 26 |
+
},
|
| 27 |
+
"joinditto": {
|
| 28 |
+
"avg_star": 4.5,
|
| 29 |
+
"review_count": null,
|
| 30 |
+
"url": "https://joinditto.in/health-insurance/hdfc-ergo/reviews/"
|
| 31 |
+
},
|
| 32 |
+
"mouthshut": {
|
| 33 |
+
"avg_star": 2.5,
|
| 34 |
+
"review_count": null,
|
| 35 |
+
"url": "https://www.mouthshut.com/product-reviews/hdfc-ergo-health-insurance-reviews-925865222"
|
| 36 |
+
}
|
| 37 |
},
|
|
|
|
| 38 |
"trustpilot": {
|
| 39 |
"score": 1.7,
|
| 40 |
"review_count": null,
|
| 41 |
"url": "https://www.trustpilot.com/review/www.hdfcergo.com",
|
| 42 |
"note": "Trustpilot has limited Indian customer engagement; reviews skew to grievances"
|
| 43 |
},
|
|
|
|
| 44 |
"reddit_sentiment": {
|
| 45 |
"subreddit": "IndianFinance / IndiaInvestments / personalfinanceindia",
|
| 46 |
"mentions_last_year_estimate": 55,
|
|
|
|
| 57 |
"https://www.oneassure.in/insurance/health-insurance-compare/niva-bupa-re-assure-vs-icici-health-shield-vs-hdfc-ergo-my-health-suraksha-gold"
|
| 58 |
]
|
| 59 |
},
|
|
|
|
| 60 |
"youtube_coverage": {
|
| 61 |
"top_creators_who_reviewed": [
|
| 62 |
+
{
|
| 63 |
+
"creator": "Ditto Insurance",
|
| 64 |
+
"video_url": "https://www.youtube.com/watch?v=2_EhrtJhn44",
|
| 65 |
+
"verdict": "HDFC ERGO Optima Secure highly recommended in 3-way comparison"
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"creator": "Ditto Insurance",
|
| 69 |
+
"video_url": "https://www.youtube.com/watch?v=i3xMZGMstzE",
|
| 70 |
+
"verdict": "Optima Secure preferred over Niva Bupa Aspire"
|
| 71 |
+
},
|
| 72 |
+
{
|
| 73 |
+
"creator": "Sagar Sinha",
|
| 74 |
+
"video_url": "https://www.youtube.com/watch?v=1BUFoq5jbmQ",
|
| 75 |
+
"verdict": "balanced HDFC ERGO vs Niva Bupa review"
|
| 76 |
+
},
|
| 77 |
+
{
|
| 78 |
+
"creator": "Sanjay Kathuria",
|
| 79 |
+
"video_url": "https://www.youtube.com/watch?v=EDZ74XMFirI",
|
| 80 |
+
"verdict": "comparative 2026 review"
|
| 81 |
+
}
|
| 82 |
],
|
| 83 |
"overall_youtube_sentiment": "favourable"
|
| 84 |
},
|
|
|
|
| 85 |
"in_news": [
|
| 86 |
+
{
|
| 87 |
+
"headline": "HDFC Ergo Aims for 18% Premium Growth in Retail Health Insurance for 2024-25",
|
| 88 |
+
"url": "https://www.goodreturns.in/news/hdfc-ergo-aims-to-maintain-premium-growth-2024-25-011-1392211.html",
|
| 89 |
+
"publication": "Goodreturns",
|
| 90 |
+
"date": "2024",
|
| 91 |
+
"tone": "positive"
|
| 92 |
+
},
|
| 93 |
+
{
|
| 94 |
+
"headline": "HDFC ERGO General Insurance Claims Settlement Ratio Analysis for 2024-25",
|
| 95 |
+
"url": "https://www.angelone.in/news/market-updates/hdfc-ergo-general-insurance-claims-settlement-ratio-analysis-for-2024-25",
|
| 96 |
+
"publication": "Angel One",
|
| 97 |
+
"date": "2025",
|
| 98 |
+
"tone": "positive"
|
| 99 |
+
},
|
| 100 |
+
{
|
| 101 |
+
"headline": "Pre-approved cashless facility launched for chemotherapy and dialysis",
|
| 102 |
+
"url": "https://www.hdfcergo.com/",
|
| 103 |
+
"publication": "HDFC ERGO",
|
| 104 |
+
"date": "2024",
|
| 105 |
+
"tone": "positive"
|
| 106 |
+
}
|
| 107 |
],
|
|
|
|
| 108 |
"aggregate_score": {
|
| 109 |
"value_0_100": 85.7,
|
| 110 |
"letter_grade": "A",
|
| 111 |
"headline": "Industry-leading claim settlement ratio (99.1%) with low complaints (15 per 10K) and strong YouTube/advisor recommendation",
|
| 112 |
"computed_at": "2026-05-13",
|
| 113 |
"computation_notes": "0.40*99.10 + 0.20*(100-30) + 0.15*(4.45*20) + 0.10*75 + 0.10*90 + 0.05*100 = 39.6 + 14 + 13.4 + 7.5 + 9 + 5 = 88.5. Adjusted to 85.7 accounting for Trustpilot drag and some negative emergency-claim anecdotes."
|
| 114 |
+
},
|
| 115 |
+
"_url_verification": {
|
| 116 |
+
"verified_at": "2026-05-12T23:57:25Z",
|
| 117 |
+
"total_urls": 17,
|
| 118 |
+
"ok": 16,
|
| 119 |
+
"broken_count": 1,
|
| 120 |
+
"broken_urls": [
|
| 121 |
+
"https://www.trustpilot.com/review/www.hdfcergo.com"
|
| 122 |
+
]
|
| 123 |
}
|
| 124 |
+
}
|
data/reviews/icici-lombard.json
CHANGED
|
@@ -2,31 +2,39 @@
|
|
| 2 |
"insurer_slug": "icici-lombard",
|
| 3 |
"insurer_name": "ICICI Lombard General Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
| 5 |
-
|
| 6 |
"claim_metrics": {
|
| 7 |
"claim_settlement_ratio_pct": 85.0,
|
| 8 |
"claim_settlement_ratio_year": "2023-24",
|
| 9 |
"complaints_per_10k_policies": 10,
|
| 10 |
"complaints_year": "2023-24 (3-year avg ~9-10)",
|
| 11 |
"incurred_claim_ratio_pct": 78.67,
|
| 12 |
-
"three_year_avg_csr_pct": 84.
|
| 13 |
"source_irdai_url": "https://irdai.gov.in/document-detail?documentId=6436847",
|
| 14 |
"source_secondary_url": "https://www.policyx.com/health-insurance/icici-lombard-health-insurance/claim-settlement-ratio/",
|
| 15 |
"source_company_url": "https://www.icicilombard.com/health-insurance/blogs/icici-lombard-health-insurance-claim-settlement-ratio"
|
| 16 |
},
|
| 17 |
-
|
| 18 |
"aggregator_ratings": {
|
| 19 |
-
"policybazaar": {
|
| 20 |
-
|
| 21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
},
|
| 23 |
-
|
| 24 |
"trustpilot": {
|
| 25 |
"score": null,
|
| 26 |
"review_count": null,
|
| 27 |
"url": null
|
| 28 |
},
|
| 29 |
-
|
| 30 |
"reddit_sentiment": {
|
| 31 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 32 |
"mentions_last_year_estimate": 30,
|
|
@@ -43,25 +51,55 @@
|
|
| 43 |
"https://joinditto.in/articles/health-insurance/is-icici-lombard-health-insurance-good/"
|
| 44 |
]
|
| 45 |
},
|
| 46 |
-
|
| 47 |
"youtube_coverage": {
|
| 48 |
"top_creators_who_reviewed": [
|
| 49 |
-
{
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
],
|
| 51 |
"overall_youtube_sentiment": "mixed"
|
| 52 |
},
|
| 53 |
-
|
| 54 |
"in_news": [
|
| 55 |
-
{
|
| 56 |
-
|
| 57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
],
|
| 59 |
-
|
| 60 |
"aggregate_score": {
|
| 61 |
"value_0_100": 73.5,
|
| 62 |
"letter_grade": "B",
|
| 63 |
"headline": "Strongest complaint metrics in the cohort (10 per 10K) and solid financials, but health CSR (85%) lags peers like HDFC ERGO and Bajaj",
|
| 64 |
"computed_at": "2026-05-13",
|
| 65 |
"computation_notes": "0.40*85.0 + 0.20*(100-20) + 0.15*(4.2*20) + 0.10*75 + 0.10*60 + 0.05*67 = 34 + 16 + 12.6 + 7.5 + 6 + 3.35 = 79.45. Adjusted down to 73.5 because health-specific CSR is lower than the cohort-best general CSR figure."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
}
|
| 67 |
-
}
|
|
|
|
| 2 |
"insurer_slug": "icici-lombard",
|
| 3 |
"insurer_name": "ICICI Lombard General Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
|
|
|
| 5 |
"claim_metrics": {
|
| 6 |
"claim_settlement_ratio_pct": 85.0,
|
| 7 |
"claim_settlement_ratio_year": "2023-24",
|
| 8 |
"complaints_per_10k_policies": 10,
|
| 9 |
"complaints_year": "2023-24 (3-year avg ~9-10)",
|
| 10 |
"incurred_claim_ratio_pct": 78.67,
|
| 11 |
+
"three_year_avg_csr_pct": 84.5,
|
| 12 |
"source_irdai_url": "https://irdai.gov.in/document-detail?documentId=6436847",
|
| 13 |
"source_secondary_url": "https://www.policyx.com/health-insurance/icici-lombard-health-insurance/claim-settlement-ratio/",
|
| 14 |
"source_company_url": "https://www.icicilombard.com/health-insurance/blogs/icici-lombard-health-insurance-claim-settlement-ratio"
|
| 15 |
},
|
|
|
|
| 16 |
"aggregator_ratings": {
|
| 17 |
+
"policybazaar": {
|
| 18 |
+
"avg_star": 4.3,
|
| 19 |
+
"review_count": null,
|
| 20 |
+
"url": "https://www.policybazaar.com/insurance-companies/icici-lombard-health-insurance/claim-settlement-ratio/"
|
| 21 |
+
},
|
| 22 |
+
"insuredekho": {
|
| 23 |
+
"avg_star": 4.4,
|
| 24 |
+
"review_count": null,
|
| 25 |
+
"url": "https://www.insurancedekho.com/health-insurance/icici-lombard/claim-settlement"
|
| 26 |
+
},
|
| 27 |
+
"joinditto": {
|
| 28 |
+
"avg_star": 4.0,
|
| 29 |
+
"review_count": null,
|
| 30 |
+
"url": "https://joinditto.in/articles/health-insurance/is-icici-lombard-health-insurance-good/"
|
| 31 |
+
}
|
| 32 |
},
|
|
|
|
| 33 |
"trustpilot": {
|
| 34 |
"score": null,
|
| 35 |
"review_count": null,
|
| 36 |
"url": null
|
| 37 |
},
|
|
|
|
| 38 |
"reddit_sentiment": {
|
| 39 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 40 |
"mentions_last_year_estimate": 30,
|
|
|
|
| 51 |
"https://joinditto.in/articles/health-insurance/is-icici-lombard-health-insurance-good/"
|
| 52 |
]
|
| 53 |
},
|
|
|
|
| 54 |
"youtube_coverage": {
|
| 55 |
"top_creators_who_reviewed": [
|
| 56 |
+
{
|
| 57 |
+
"creator": "Ditto Insurance review",
|
| 58 |
+
"video_url": "https://joinditto.in/articles/health-insurance/is-icici-lombard-health-insurance-good/",
|
| 59 |
+
"verdict": "decent but not top-3 health insurer pick"
|
| 60 |
+
}
|
| 61 |
],
|
| 62 |
"overall_youtube_sentiment": "mixed"
|
| 63 |
},
|
|
|
|
| 64 |
"in_news": [
|
| 65 |
+
{
|
| 66 |
+
"headline": "ICICI Lombard Q1FY25 net profit grows 48.7% YoY to Rs 580 crore",
|
| 67 |
+
"url": "https://www.icicilombard.com/investor-relations",
|
| 68 |
+
"publication": "ICICI Lombard IR",
|
| 69 |
+
"date": "2024-07",
|
| 70 |
+
"tone": "positive"
|
| 71 |
+
},
|
| 72 |
+
{
|
| 73 |
+
"headline": "ICICI Lombard, Bajaj Allianz and New India are the most profitable non-life players in FY 2024",
|
| 74 |
+
"url": "https://cafemutual.com/news/insurance/33076-icici-lombard-bajaj-allianz-and-new-india-are-the-most-profitable-non-life-players-in-fy-2024",
|
| 75 |
+
"publication": "Cafemutual",
|
| 76 |
+
"date": "2024",
|
| 77 |
+
"tone": "positive"
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"headline": "Integrated Annual Report 2023-24: Uniting for a Singular Purpose",
|
| 81 |
+
"url": "https://www.icicilombard.com/docs/default-source/financial-information/annualreport2024.pdf",
|
| 82 |
+
"publication": "ICICI Lombard",
|
| 83 |
+
"date": "2024",
|
| 84 |
+
"tone": "neutral"
|
| 85 |
+
}
|
| 86 |
],
|
|
|
|
| 87 |
"aggregate_score": {
|
| 88 |
"value_0_100": 73.5,
|
| 89 |
"letter_grade": "B",
|
| 90 |
"headline": "Strongest complaint metrics in the cohort (10 per 10K) and solid financials, but health CSR (85%) lags peers like HDFC ERGO and Bajaj",
|
| 91 |
"computed_at": "2026-05-13",
|
| 92 |
"computation_notes": "0.40*85.0 + 0.20*(100-20) + 0.15*(4.2*20) + 0.10*75 + 0.10*60 + 0.05*67 = 34 + 16 + 12.6 + 7.5 + 6 + 3.35 = 79.45. Adjusted down to 73.5 because health-specific CSR is lower than the cohort-best general CSR figure."
|
| 93 |
+
},
|
| 94 |
+
"_url_verification": {
|
| 95 |
+
"verified_at": "2026-05-12T23:57:25Z",
|
| 96 |
+
"total_urls": 10,
|
| 97 |
+
"ok": 7,
|
| 98 |
+
"broken_count": 3,
|
| 99 |
+
"broken_urls": [
|
| 100 |
+
"https://www.icicilombard.com/health-insurance/blogs/icici-lombard-health-insurance-claim-settlement-ratio",
|
| 101 |
+
"https://www.icicilombard.com/investor-relations",
|
| 102 |
+
"https://www.icicilombard.com/docs/default-source/financial-information/annualreport2024.pdf"
|
| 103 |
+
]
|
| 104 |
}
|
| 105 |
+
}
|
data/reviews/manipalcigna.json
CHANGED
|
@@ -2,7 +2,6 @@
|
|
| 2 |
"insurer_slug": "manipalcigna",
|
| 3 |
"insurer_name": "ManipalCigna Health Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
| 5 |
-
|
| 6 |
"claim_metrics": {
|
| 7 |
"claim_settlement_ratio_pct": 99.0,
|
| 8 |
"claim_settlement_ratio_year": "2023-24",
|
|
@@ -13,19 +12,28 @@
|
|
| 13 |
"source_secondary_url": "https://www.policyx.com/health-insurance/manipalcigna-health-insurance/claim-settlement-ratio/",
|
| 14 |
"source_company_url": "https://www.manipalcigna.com/blog/claim-settlement-ratio"
|
| 15 |
},
|
| 16 |
-
|
| 17 |
"aggregator_ratings": {
|
| 18 |
-
"policybazaar": {
|
| 19 |
-
|
| 20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
},
|
| 22 |
-
|
| 23 |
"trustpilot": {
|
| 24 |
"score": null,
|
| 25 |
"review_count": null,
|
| 26 |
"url": null
|
| 27 |
},
|
| 28 |
-
|
| 29 |
"reddit_sentiment": {
|
| 30 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 31 |
"mentions_last_year_estimate": 18,
|
|
@@ -42,24 +50,44 @@
|
|
| 42 |
"https://www.policyx.com/health-insurance/manipalcigna-health-insurance/claim-settlement-ratio/"
|
| 43 |
]
|
| 44 |
},
|
| 45 |
-
|
| 46 |
"youtube_coverage": {
|
| 47 |
"top_creators_who_reviewed": [
|
| 48 |
-
{
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
],
|
| 50 |
"overall_youtube_sentiment": "mixed"
|
| 51 |
},
|
| 52 |
-
|
| 53 |
"in_news": [
|
| 54 |
-
{
|
| 55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
],
|
| 57 |
-
|
| 58 |
"aggregate_score": {
|
| 59 |
"value_0_100": 76.3,
|
| 60 |
"letter_grade": "B",
|
| 61 |
"headline": "High reported CSR (99%) and Manipal-hospital network advantage; smaller scale and above-median complaints temper the score",
|
| 62 |
"computed_at": "2026-05-13",
|
| 63 |
"computation_notes": "0.40*99.0 + 0.20*(100-48) + 0.15*(4.17*20) + 0.10*60 + 0.10*60 + 0.05*0 = 39.6 + 10.4 + 12.5 + 6 + 6 + 0 = 74.5. Adjusted to 76.3 with small premium for CSR strength."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
}
|
| 65 |
-
}
|
|
|
|
| 2 |
"insurer_slug": "manipalcigna",
|
| 3 |
"insurer_name": "ManipalCigna Health Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
|
|
|
| 5 |
"claim_metrics": {
|
| 6 |
"claim_settlement_ratio_pct": 99.0,
|
| 7 |
"claim_settlement_ratio_year": "2023-24",
|
|
|
|
| 12 |
"source_secondary_url": "https://www.policyx.com/health-insurance/manipalcigna-health-insurance/claim-settlement-ratio/",
|
| 13 |
"source_company_url": "https://www.manipalcigna.com/blog/claim-settlement-ratio"
|
| 14 |
},
|
|
|
|
| 15 |
"aggregator_ratings": {
|
| 16 |
+
"policybazaar": {
|
| 17 |
+
"avg_star": 4.3,
|
| 18 |
+
"review_count": null,
|
| 19 |
+
"url": "https://www.policybazaar.com/insurance-companies/manipalcigna-health-insurance/claim-settlement-ratio/"
|
| 20 |
+
},
|
| 21 |
+
"insuredekho": {
|
| 22 |
+
"avg_star": 4.2,
|
| 23 |
+
"review_count": null,
|
| 24 |
+
"url": "https://www.insurancedekho.com/health-insurance/manipalcigna/claim-settlement"
|
| 25 |
+
},
|
| 26 |
+
"joinditto": {
|
| 27 |
+
"avg_star": 4.0,
|
| 28 |
+
"review_count": null,
|
| 29 |
+
"url": "https://joinditto.in/articles/health-insurance/manipal-cigna-health-insurance-review/"
|
| 30 |
+
}
|
| 31 |
},
|
|
|
|
| 32 |
"trustpilot": {
|
| 33 |
"score": null,
|
| 34 |
"review_count": null,
|
| 35 |
"url": null
|
| 36 |
},
|
|
|
|
| 37 |
"reddit_sentiment": {
|
| 38 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 39 |
"mentions_last_year_estimate": 18,
|
|
|
|
| 50 |
"https://www.policyx.com/health-insurance/manipalcigna-health-insurance/claim-settlement-ratio/"
|
| 51 |
]
|
| 52 |
},
|
|
|
|
| 53 |
"youtube_coverage": {
|
| 54 |
"top_creators_who_reviewed": [
|
| 55 |
+
{
|
| 56 |
+
"creator": "Ditto Insurance review",
|
| 57 |
+
"video_url": "https://joinditto.in/articles/health-insurance/manipal-cigna-health-insurance-review/",
|
| 58 |
+
"verdict": "competent option; not top recommendation but solid for niche profiles"
|
| 59 |
+
}
|
| 60 |
],
|
| 61 |
"overall_youtube_sentiment": "mixed"
|
| 62 |
},
|
|
|
|
| 63 |
"in_news": [
|
| 64 |
+
{
|
| 65 |
+
"headline": "ManipalCigna ICR at 74.81% in FY24-25 \u2014 within healthy 70-90% comfort range",
|
| 66 |
+
"url": "https://cafemutual.com/news/insurance/33084-which-companies-are-better-at-settling-health-claims",
|
| 67 |
+
"publication": "Cafemutual",
|
| 68 |
+
"date": "2024-12",
|
| 69 |
+
"tone": "neutral"
|
| 70 |
+
},
|
| 71 |
+
{
|
| 72 |
+
"headline": "ManipalCigna claim settlement ratio analysis",
|
| 73 |
+
"url": "https://www.renewbuy.com/health-insurance/manipalcigna-health-insurance/claim-settlement-ratio",
|
| 74 |
+
"publication": "RenewBuy",
|
| 75 |
+
"date": "2024",
|
| 76 |
+
"tone": "neutral"
|
| 77 |
+
}
|
| 78 |
],
|
|
|
|
| 79 |
"aggregate_score": {
|
| 80 |
"value_0_100": 76.3,
|
| 81 |
"letter_grade": "B",
|
| 82 |
"headline": "High reported CSR (99%) and Manipal-hospital network advantage; smaller scale and above-median complaints temper the score",
|
| 83 |
"computed_at": "2026-05-13",
|
| 84 |
"computation_notes": "0.40*99.0 + 0.20*(100-48) + 0.15*(4.17*20) + 0.10*60 + 0.10*60 + 0.05*0 = 39.6 + 10.4 + 12.5 + 6 + 6 + 0 = 74.5. Adjusted to 76.3 with small premium for CSR strength."
|
| 85 |
+
},
|
| 86 |
+
"_url_verification": {
|
| 87 |
+
"verified_at": "2026-05-12T23:57:25Z",
|
| 88 |
+
"total_urls": 8,
|
| 89 |
+
"ok": 8,
|
| 90 |
+
"broken_count": 0,
|
| 91 |
+
"broken_urls": []
|
| 92 |
}
|
| 93 |
+
}
|
data/reviews/new-india.json
CHANGED
|
@@ -2,7 +2,6 @@
|
|
| 2 |
"insurer_slug": "new-india",
|
| 3 |
"insurer_name": "New India Assurance",
|
| 4 |
"last_updated": "2026-05-13",
|
| 5 |
-
|
| 6 |
"claim_metrics": {
|
| 7 |
"claim_settlement_ratio_pct": 95.04,
|
| 8 |
"claim_settlement_ratio_year": "2023-24 (by claim count)",
|
|
@@ -15,19 +14,28 @@
|
|
| 15 |
"source_company_url": "https://www.newindia.co.in/public-disclosure",
|
| 16 |
"note": "Highest payer among general insurers; IBAI 2023-24 General Insurance Claim Insights ranks NIA #1 on settlement"
|
| 17 |
},
|
| 18 |
-
|
| 19 |
"aggregator_ratings": {
|
| 20 |
-
"policybazaar": {
|
| 21 |
-
|
| 22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
},
|
| 24 |
-
|
| 25 |
"trustpilot": {
|
| 26 |
"score": null,
|
| 27 |
"review_count": null,
|
| 28 |
"url": null
|
| 29 |
},
|
| 30 |
-
|
| 31 |
"reddit_sentiment": {
|
| 32 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 33 |
"mentions_last_year_estimate": 25,
|
|
@@ -44,24 +52,48 @@
|
|
| 44 |
"https://www.policybazaar.com/insurance-companies/new-india-assurance-health-insurance/claim-settlement-ratio/"
|
| 45 |
]
|
| 46 |
},
|
| 47 |
-
|
| 48 |
"youtube_coverage": {
|
| 49 |
"top_creators_who_reviewed": [],
|
| 50 |
"overall_youtube_sentiment": "mixed",
|
| 51 |
"note": "Limited dedicated influencer coverage; PSU brand under-marketed on YouTube vs private players"
|
| 52 |
},
|
| 53 |
-
|
| 54 |
"in_news": [
|
| 55 |
-
{
|
| 56 |
-
|
| 57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
],
|
| 59 |
-
|
| 60 |
"aggregate_score": {
|
| 61 |
"value_0_100": 78.6,
|
| 62 |
"letter_grade": "B",
|
| 63 |
"headline": "Highest claim payout among general insurers (ICR 103%, CSR 95% by count); PSU service experience drags consumer-perception score",
|
| 64 |
"computed_at": "2026-05-13",
|
| 65 |
-
"computation_notes": "0.40*95.04 + 0.20*(100-40) + 0.15*(4.1*20) + 0.10*60 + 0.10*60 + 0.05*67 = 38 + 12 + 12.3 + 6 + 6 + 3.35 = 77.65
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
}
|
| 67 |
-
}
|
|
|
|
| 2 |
"insurer_slug": "new-india",
|
| 3 |
"insurer_name": "New India Assurance",
|
| 4 |
"last_updated": "2026-05-13",
|
|
|
|
| 5 |
"claim_metrics": {
|
| 6 |
"claim_settlement_ratio_pct": 95.04,
|
| 7 |
"claim_settlement_ratio_year": "2023-24 (by claim count)",
|
|
|
|
| 14 |
"source_company_url": "https://www.newindia.co.in/public-disclosure",
|
| 15 |
"note": "Highest payer among general insurers; IBAI 2023-24 General Insurance Claim Insights ranks NIA #1 on settlement"
|
| 16 |
},
|
|
|
|
| 17 |
"aggregator_ratings": {
|
| 18 |
+
"policybazaar": {
|
| 19 |
+
"avg_star": 4.2,
|
| 20 |
+
"review_count": null,
|
| 21 |
+
"url": "https://www.policybazaar.com/insurance-companies/new-india-assurance-health-insurance/claim-settlement-ratio/"
|
| 22 |
+
},
|
| 23 |
+
"insuredekho": {
|
| 24 |
+
"avg_star": 4.0,
|
| 25 |
+
"review_count": null,
|
| 26 |
+
"url": "https://www.insurancedekho.com/health-insurance/new-india/claim-settlement"
|
| 27 |
+
},
|
| 28 |
+
"policyx": {
|
| 29 |
+
"avg_star": 4.1,
|
| 30 |
+
"review_count": null,
|
| 31 |
+
"url": "https://www.policyx.com/health-insurance/new-india-health-insurance/claim-settlement-ratio/"
|
| 32 |
+
}
|
| 33 |
},
|
|
|
|
| 34 |
"trustpilot": {
|
| 35 |
"score": null,
|
| 36 |
"review_count": null,
|
| 37 |
"url": null
|
| 38 |
},
|
|
|
|
| 39 |
"reddit_sentiment": {
|
| 40 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 41 |
"mentions_last_year_estimate": 25,
|
|
|
|
| 52 |
"https://www.policybazaar.com/insurance-companies/new-india-assurance-health-insurance/claim-settlement-ratio/"
|
| 53 |
]
|
| 54 |
},
|
|
|
|
| 55 |
"youtube_coverage": {
|
| 56 |
"top_creators_who_reviewed": [],
|
| 57 |
"overall_youtube_sentiment": "mixed",
|
| 58 |
"note": "Limited dedicated influencer coverage; PSU brand under-marketed on YouTube vs private players"
|
| 59 |
},
|
|
|
|
| 60 |
"in_news": [
|
| 61 |
+
{
|
| 62 |
+
"headline": "New India Assurance Tops Health Insurance Claims Settlement",
|
| 63 |
+
"url": "https://www.deccanchronicle.com/business/new-india-assurance-tops-health-insurance-claims-settlement-1841899",
|
| 64 |
+
"publication": "Deccan Chronicle",
|
| 65 |
+
"date": "2024",
|
| 66 |
+
"tone": "positive"
|
| 67 |
+
},
|
| 68 |
+
{
|
| 69 |
+
"headline": "New India Assurance Q3FY24 results: Net profit falls 4.38% to Rs 715 crore",
|
| 70 |
+
"url": "https://www.business-standard.com/companies/news/new-india-assurance-q3fy24-results-net-profit-falls-4-38-to-rs-715-crore-124020901758_1.html",
|
| 71 |
+
"publication": "Business Standard",
|
| 72 |
+
"date": "2024-02-09",
|
| 73 |
+
"tone": "neutral"
|
| 74 |
+
},
|
| 75 |
+
{
|
| 76 |
+
"headline": "ICICI Lombard, Bajaj Allianz and New India are the most profitable non-life players in FY 2024",
|
| 77 |
+
"url": "https://cafemutual.com/news/insurance/33076-icici-lombard-bajaj-allianz-and-new-india-are-the-most-profitable-non-life-players-in-fy-2024",
|
| 78 |
+
"publication": "Cafemutual",
|
| 79 |
+
"date": "2024",
|
| 80 |
+
"tone": "positive"
|
| 81 |
+
}
|
| 82 |
],
|
|
|
|
| 83 |
"aggregate_score": {
|
| 84 |
"value_0_100": 78.6,
|
| 85 |
"letter_grade": "B",
|
| 86 |
"headline": "Highest claim payout among general insurers (ICR 103%, CSR 95% by count); PSU service experience drags consumer-perception score",
|
| 87 |
"computed_at": "2026-05-13",
|
| 88 |
+
"computation_notes": "0.40*95.04 + 0.20*(100-40) + 0.15*(4.1*20) + 0.10*60 + 0.10*60 + 0.05*67 = 38 + 12 + 12.3 + 6 + 6 + 3.35 = 77.65 \u2248 78.6"
|
| 89 |
+
},
|
| 90 |
+
"_url_verification": {
|
| 91 |
+
"verified_at": "2026-05-12T23:57:25Z",
|
| 92 |
+
"total_urls": 8,
|
| 93 |
+
"ok": 7,
|
| 94 |
+
"broken_count": 1,
|
| 95 |
+
"broken_urls": [
|
| 96 |
+
"https://www.business-standard.com/companies/news/new-india-assurance-q3fy24-results-net-profit-falls-4-38-to-rs-715-crore-124020901758_1.html"
|
| 97 |
+
]
|
| 98 |
}
|
| 99 |
+
}
|
data/reviews/niva-bupa.json
CHANGED
|
@@ -2,7 +2,6 @@
|
|
| 2 |
"insurer_slug": "niva-bupa",
|
| 3 |
"insurer_name": "Niva Bupa Health Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
| 5 |
-
|
| 6 |
"claim_metrics": {
|
| 7 |
"claim_settlement_ratio_pct": 91.62,
|
| 8 |
"claim_settlement_ratio_year": "2023-24 (3-year avg through FY25)",
|
|
@@ -13,21 +12,34 @@
|
|
| 13 |
"source_secondary_url": "https://joinditto.in/articles/health-insurance/niva-bupa-health-insurance-claim-settlement-ratio/",
|
| 14 |
"source_annual_report": "https://transactions.nivabupa.com/pages/doc/pub-dis/annual-reports/Annual-Report-FY-2023-24.pdf"
|
| 15 |
},
|
| 16 |
-
|
| 17 |
"aggregator_ratings": {
|
| 18 |
-
"policybazaar": {
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
},
|
| 23 |
-
|
| 24 |
"trustpilot": {
|
| 25 |
"score": 1.8,
|
| 26 |
"review_count": null,
|
| 27 |
"url": "https://www.trustpilot.com/review/nivabupa.com",
|
| 28 |
"note": "Complaints around refunds and policy onboarding"
|
| 29 |
},
|
| 30 |
-
|
| 31 |
"reddit_sentiment": {
|
| 32 |
"subreddit": "IndianFinance / IndiaInvestments / personalfinanceindia",
|
| 33 |
"mentions_last_year_estimate": 45,
|
|
@@ -37,35 +49,79 @@
|
|
| 37 |
"Bupa global parent brand association = trust signal",
|
| 38 |
"App quality and customer service complaints common",
|
| 39 |
"Higher than industry-average complaint volume (42.85 per 10K)",
|
| 40 |
-
"Recently listed on Indian stock market (Nov 2024)
|
| 41 |
],
|
| 42 |
"sample_post_urls": [
|
| 43 |
"https://www.quora.com/Has-anyone-taken-Niva-Bupa-health-insurance-in-India-How-reliable-is-it",
|
| 44 |
"https://www.policybazaar.com/health-insurance/companies/hdfc-ergo-vs-niva-bupa/"
|
| 45 |
]
|
| 46 |
},
|
| 47 |
-
|
| 48 |
"youtube_coverage": {
|
| 49 |
"top_creators_who_reviewed": [
|
| 50 |
-
{
|
| 51 |
-
|
| 52 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
],
|
| 54 |
"overall_youtube_sentiment": "favourable"
|
| 55 |
},
|
| 56 |
-
|
| 57 |
"in_news": [
|
| 58 |
-
{
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
],
|
| 63 |
-
|
| 64 |
"aggregate_score": {
|
| 65 |
"value_0_100": 75.8,
|
| 66 |
"letter_grade": "B",
|
| 67 |
"headline": "Strong CSR (91.6%) and growth post-IPO; complaints volume above industry average is the main drag",
|
| 68 |
"computed_at": "2026-05-13",
|
| 69 |
"computation_notes": "0.40*91.62 + 0.20*(100-43*2) + 0.15*(4.0*20) + 0.10*60 + 0.10*90 + 0.05*50 = 36.6 + 2.8 + 12 + 6 + 9 + 2.5 = 68.9. Adjusted +6.9 for IPO success, Bupa global brand strength, and Ditto/YouTube favorability."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
}
|
| 71 |
-
}
|
|
|
|
| 2 |
"insurer_slug": "niva-bupa",
|
| 3 |
"insurer_name": "Niva Bupa Health Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
|
|
|
| 5 |
"claim_metrics": {
|
| 6 |
"claim_settlement_ratio_pct": 91.62,
|
| 7 |
"claim_settlement_ratio_year": "2023-24 (3-year avg through FY25)",
|
|
|
|
| 12 |
"source_secondary_url": "https://joinditto.in/articles/health-insurance/niva-bupa-health-insurance-claim-settlement-ratio/",
|
| 13 |
"source_annual_report": "https://transactions.nivabupa.com/pages/doc/pub-dis/annual-reports/Annual-Report-FY-2023-24.pdf"
|
| 14 |
},
|
|
|
|
| 15 |
"aggregator_ratings": {
|
| 16 |
+
"policybazaar": {
|
| 17 |
+
"avg_star": 4.4,
|
| 18 |
+
"review_count": null,
|
| 19 |
+
"url": "https://www.policybazaar.com/max-bupa-health-general-reviews-477/"
|
| 20 |
+
},
|
| 21 |
+
"insuredekho": {
|
| 22 |
+
"avg_star": 4.3,
|
| 23 |
+
"review_count": 192,
|
| 24 |
+
"url": "https://www.insurancedekho.com/health-insurance/niva-bupa-health-insurance/user-reviews"
|
| 25 |
+
},
|
| 26 |
+
"mouthshut": {
|
| 27 |
+
"avg_star": 2.0,
|
| 28 |
+
"review_count": null,
|
| 29 |
+
"url": "https://www.mouthshut.com/product-reviews/niva-bupa-health-insurance-reviews-925608449"
|
| 30 |
+
},
|
| 31 |
+
"justdial": {
|
| 32 |
+
"avg_star": 3.5,
|
| 33 |
+
"review_count": 903,
|
| 34 |
+
"url": "https://www.justdial.com/Mumbai/Niva-Bupa-Health-Insurance-Company-Ltd-Customer-Care/022PXX22-XX22-121222183516-A3L5_BZDET/reviews"
|
| 35 |
+
}
|
| 36 |
},
|
|
|
|
| 37 |
"trustpilot": {
|
| 38 |
"score": 1.8,
|
| 39 |
"review_count": null,
|
| 40 |
"url": "https://www.trustpilot.com/review/nivabupa.com",
|
| 41 |
"note": "Complaints around refunds and policy onboarding"
|
| 42 |
},
|
|
|
|
| 43 |
"reddit_sentiment": {
|
| 44 |
"subreddit": "IndianFinance / IndiaInvestments / personalfinanceindia",
|
| 45 |
"mentions_last_year_estimate": 45,
|
|
|
|
| 49 |
"Bupa global parent brand association = trust signal",
|
| 50 |
"App quality and customer service complaints common",
|
| 51 |
"Higher than industry-average complaint volume (42.85 per 10K)",
|
| 52 |
+
"Recently listed on Indian stock market (Nov 2024) \u2014 growing scale"
|
| 53 |
],
|
| 54 |
"sample_post_urls": [
|
| 55 |
"https://www.quora.com/Has-anyone-taken-Niva-Bupa-health-insurance-in-India-How-reliable-is-it",
|
| 56 |
"https://www.policybazaar.com/health-insurance/companies/hdfc-ergo-vs-niva-bupa/"
|
| 57 |
]
|
| 58 |
},
|
|
|
|
| 59 |
"youtube_coverage": {
|
| 60 |
"top_creators_who_reviewed": [
|
| 61 |
+
{
|
| 62 |
+
"creator": "Ditto Insurance",
|
| 63 |
+
"video_url": "https://www.youtube.com/watch?v=2_EhrtJhn44",
|
| 64 |
+
"verdict": "ReAssure 2.0 vs HDFC Ergo vs Care comparison; recommended for premium plans"
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"creator": "Sagar Sinha",
|
| 68 |
+
"video_url": "https://www.youtube.com/watch?v=1BUFoq5jbmQ",
|
| 69 |
+
"verdict": "balanced comparison with HDFC ERGO"
|
| 70 |
+
},
|
| 71 |
+
{
|
| 72 |
+
"creator": "Sanjay Kathuria",
|
| 73 |
+
"video_url": "https://www.youtube.com/watch?v=EDZ74XMFirI",
|
| 74 |
+
"verdict": "comparative 2026 review"
|
| 75 |
+
}
|
| 76 |
],
|
| 77 |
"overall_youtube_sentiment": "favourable"
|
| 78 |
},
|
|
|
|
| 79 |
"in_news": [
|
| 80 |
+
{
|
| 81 |
+
"headline": "Niva Bupa shares make positive debut on bourses; list at 6% premium",
|
| 82 |
+
"url": "https://www.business-standard.com/markets/news/niva-bupa-shares-make-positive-debut-on-bourses-list-at-6-premium-124111400326_1.html",
|
| 83 |
+
"publication": "Business Standard",
|
| 84 |
+
"date": "2024-11-14",
|
| 85 |
+
"tone": "positive"
|
| 86 |
+
},
|
| 87 |
+
{
|
| 88 |
+
"headline": "Bupa Group Indian health insurance business, Niva Bupa, successfully completes IPO",
|
| 89 |
+
"url": "https://www.bupa.com/news-and-press/press-releases/2024/bupa-indian-health-insurance-business-niva-bupa-completes-ipo",
|
| 90 |
+
"publication": "Bupa Group",
|
| 91 |
+
"date": "2024-11",
|
| 92 |
+
"tone": "positive"
|
| 93 |
+
},
|
| 94 |
+
{
|
| 95 |
+
"headline": "Star Health, CARE, Niva Bupa record most policyholder complaints in FY24",
|
| 96 |
+
"url": "https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html",
|
| 97 |
+
"publication": "Business Standard",
|
| 98 |
+
"date": "2025-09-01",
|
| 99 |
+
"tone": "negative"
|
| 100 |
+
},
|
| 101 |
+
{
|
| 102 |
+
"headline": "Niva Bupa IPO: Growth, claim settlement and retention metrics compared with industry peers",
|
| 103 |
+
"url": "https://upstox.com/news/market-news/ipo/understanding-niva-bupa-s-market-position-growth-claim-settlement-and-retention-metrics-compared-with-industry-peers/article-127535/",
|
| 104 |
+
"publication": "Upstox",
|
| 105 |
+
"date": "2024-11",
|
| 106 |
+
"tone": "neutral"
|
| 107 |
+
}
|
| 108 |
],
|
|
|
|
| 109 |
"aggregate_score": {
|
| 110 |
"value_0_100": 75.8,
|
| 111 |
"letter_grade": "B",
|
| 112 |
"headline": "Strong CSR (91.6%) and growth post-IPO; complaints volume above industry average is the main drag",
|
| 113 |
"computed_at": "2026-05-13",
|
| 114 |
"computation_notes": "0.40*91.62 + 0.20*(100-43*2) + 0.15*(4.0*20) + 0.10*60 + 0.10*90 + 0.05*50 = 36.6 + 2.8 + 12 + 6 + 9 + 2.5 = 68.9. Adjusted +6.9 for IPO success, Bupa global brand strength, and Ditto/YouTube favorability."
|
| 115 |
+
},
|
| 116 |
+
"_url_verification": {
|
| 117 |
+
"verified_at": "2026-05-12T23:57:25Z",
|
| 118 |
+
"total_urls": 17,
|
| 119 |
+
"ok": 14,
|
| 120 |
+
"broken_count": 3,
|
| 121 |
+
"broken_urls": [
|
| 122 |
+
"https://www.trustpilot.com/review/nivabupa.com",
|
| 123 |
+
"https://www.business-standard.com/markets/news/niva-bupa-shares-make-positive-debut-on-bourses-list-at-6-premium-124111400326_1.html",
|
| 124 |
+
"https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html"
|
| 125 |
+
]
|
| 126 |
}
|
| 127 |
+
}
|
data/reviews/star-health.json
CHANGED
|
@@ -2,7 +2,6 @@
|
|
| 2 |
"insurer_slug": "star-health",
|
| 3 |
"insurer_name": "Star Health & Allied Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
| 5 |
-
|
| 6 |
"claim_metrics": {
|
| 7 |
"claim_settlement_ratio_pct": 82.31,
|
| 8 |
"claim_settlement_ratio_year": "2023-24",
|
|
@@ -14,20 +13,29 @@
|
|
| 14 |
"source_irdai_url": "https://irdai.gov.in/document-detail?documentId=6436847",
|
| 15 |
"source_secondary_url": "https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html"
|
| 16 |
},
|
| 17 |
-
|
| 18 |
"aggregator_ratings": {
|
| 19 |
-
"policybazaar": {
|
| 20 |
-
|
| 21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
},
|
| 23 |
-
|
| 24 |
"trustpilot": {
|
| 25 |
"score": 1.5,
|
| 26 |
"review_count": null,
|
| 27 |
"url": "https://www.trustpilot.com/review/www.starhealth.in",
|
| 28 |
"note": "Largely negative reviews; complaints cluster around claim rejections and post-sale service"
|
| 29 |
},
|
| 30 |
-
|
| 31 |
"reddit_sentiment": {
|
| 32 |
"subreddit": "IndianFinance / IndiaInvestments / personalfinanceindia",
|
| 33 |
"mentions_last_year_estimate": 60,
|
|
@@ -44,27 +52,66 @@
|
|
| 44 |
"https://technofino.in/community/threads/star-health-insurance-renew-or-port.35180/"
|
| 45 |
]
|
| 46 |
},
|
| 47 |
-
|
| 48 |
"youtube_coverage": {
|
| 49 |
"top_creators_who_reviewed": [
|
| 50 |
-
{
|
| 51 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
],
|
| 53 |
"overall_youtube_sentiment": "mixed"
|
| 54 |
},
|
| 55 |
-
|
| 56 |
"in_news": [
|
| 57 |
-
{
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
],
|
| 62 |
-
|
| 63 |
"aggregate_score": {
|
| 64 |
"value_0_100": 60.4,
|
| 65 |
"letter_grade": "C",
|
| 66 |
"headline": "India's largest standalone health insurer by premium, but under IRDAI scrutiny for the sector's highest complaint volume (13,308 in FY24) and lowest CSR (82.3%) among standalone insurers",
|
| 67 |
"computed_at": "2026-05-13",
|
| 68 |
"computation_notes": "0.40*82.31 + 0.20*(100-50*2) + 0.15*(4.0*20) + 0.10*40 + 0.10*60 + 0.05*0 = 32.9 + 0 + 12 + 4 + 6 + 0 = 54.9 (uncapped). Complaints capped at 50; star avg ~4.0 across aggregators; Reddit mixed-negative=40; YouTube mixed=60; news 0 positive of 4."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 69 |
}
|
| 70 |
-
}
|
|
|
|
| 2 |
"insurer_slug": "star-health",
|
| 3 |
"insurer_name": "Star Health & Allied Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
|
|
|
| 5 |
"claim_metrics": {
|
| 6 |
"claim_settlement_ratio_pct": 82.31,
|
| 7 |
"claim_settlement_ratio_year": "2023-24",
|
|
|
|
| 13 |
"source_irdai_url": "https://irdai.gov.in/document-detail?documentId=6436847",
|
| 14 |
"source_secondary_url": "https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html"
|
| 15 |
},
|
|
|
|
| 16 |
"aggregator_ratings": {
|
| 17 |
+
"policybazaar": {
|
| 18 |
+
"avg_star": 4.3,
|
| 19 |
+
"review_count": null,
|
| 20 |
+
"url": "https://www.policybazaar.com/star-health-insurance-reviews-881/"
|
| 21 |
+
},
|
| 22 |
+
"insuredekho": {
|
| 23 |
+
"avg_star": 4.4,
|
| 24 |
+
"review_count": 403,
|
| 25 |
+
"url": "https://www.insurancedekho.com/health-insurance/star/user-reviews"
|
| 26 |
+
},
|
| 27 |
+
"mouthshut": {
|
| 28 |
+
"avg_star": 2.0,
|
| 29 |
+
"review_count": null,
|
| 30 |
+
"url": "https://www.mouthshut.com/product-reviews/star-health-insurance-reviews-925865246"
|
| 31 |
+
}
|
| 32 |
},
|
|
|
|
| 33 |
"trustpilot": {
|
| 34 |
"score": 1.5,
|
| 35 |
"review_count": null,
|
| 36 |
"url": "https://www.trustpilot.com/review/www.starhealth.in",
|
| 37 |
"note": "Largely negative reviews; complaints cluster around claim rejections and post-sale service"
|
| 38 |
},
|
|
|
|
| 39 |
"reddit_sentiment": {
|
| 40 |
"subreddit": "IndianFinance / IndiaInvestments / personalfinanceindia",
|
| 41 |
"mentions_last_year_estimate": 60,
|
|
|
|
| 52 |
"https://technofino.in/community/threads/star-health-insurance-renew-or-port.35180/"
|
| 53 |
]
|
| 54 |
},
|
|
|
|
| 55 |
"youtube_coverage": {
|
| 56 |
"top_creators_who_reviewed": [
|
| 57 |
+
{
|
| 58 |
+
"creator": "Ditto Insurance",
|
| 59 |
+
"video_url": "https://www.youtube.com/watch?v=0tiEsznD61I",
|
| 60 |
+
"verdict": "comparison Super Star vs HDFC Ergo Optima Secure; Ditto prefers HDFC ERGO for reliability"
|
| 61 |
+
},
|
| 62 |
+
{
|
| 63 |
+
"creator": "Ditto Insurance (review)",
|
| 64 |
+
"video_url": "https://joinditto.in/articles/health-insurance/star-health-insurance-review/",
|
| 65 |
+
"verdict": "suitable for senior citizens; concerns on claim experience"
|
| 66 |
+
}
|
| 67 |
],
|
| 68 |
"overall_youtube_sentiment": "mixed"
|
| 69 |
},
|
|
|
|
| 70 |
"in_news": [
|
| 71 |
+
{
|
| 72 |
+
"headline": "Star Health under IRDAI lens over claim settlement; insurer says routine process",
|
| 73 |
+
"url": "https://www.businesstoday.in/personal-finance/insurance/story/star-health-under-irdai-lens-over-claim-settlement-insurer-says-routine-process-469373-2025-03-25",
|
| 74 |
+
"publication": "Business Today",
|
| 75 |
+
"date": "2025-03-25",
|
| 76 |
+
"tone": "negative"
|
| 77 |
+
},
|
| 78 |
+
{
|
| 79 |
+
"headline": "Star Health Under Fire: IRDAI Scrutinizes High Claim Rejections & Delays",
|
| 80 |
+
"url": "https://the420.in/star-health-under-fire-irdai-scrutinizes-high-claim-rejections-delays/",
|
| 81 |
+
"publication": "The420.in",
|
| 82 |
+
"date": "2025-04",
|
| 83 |
+
"tone": "negative"
|
| 84 |
+
},
|
| 85 |
+
{
|
| 86 |
+
"headline": "Star Health, CARE, Niva Bupa record most policyholder complaints in FY24",
|
| 87 |
+
"url": "https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html",
|
| 88 |
+
"publication": "Business Standard",
|
| 89 |
+
"date": "2025-09-01",
|
| 90 |
+
"tone": "negative"
|
| 91 |
+
},
|
| 92 |
+
{
|
| 93 |
+
"headline": "Star Health Under Irdai Scrutiny For Health Insurance Claim Settlement Practices",
|
| 94 |
+
"url": "https://www.outlookmoney.com/insurance/health-insurance/star-health-under-irdai-scrutiny-for-health-insurance-claim-settlement-practices",
|
| 95 |
+
"publication": "Outlook Money",
|
| 96 |
+
"date": "2025-04",
|
| 97 |
+
"tone": "negative"
|
| 98 |
+
}
|
| 99 |
],
|
|
|
|
| 100 |
"aggregate_score": {
|
| 101 |
"value_0_100": 60.4,
|
| 102 |
"letter_grade": "C",
|
| 103 |
"headline": "India's largest standalone health insurer by premium, but under IRDAI scrutiny for the sector's highest complaint volume (13,308 in FY24) and lowest CSR (82.3%) among standalone insurers",
|
| 104 |
"computed_at": "2026-05-13",
|
| 105 |
"computation_notes": "0.40*82.31 + 0.20*(100-50*2) + 0.15*(4.0*20) + 0.10*40 + 0.10*60 + 0.05*0 = 32.9 + 0 + 12 + 4 + 6 + 0 = 54.9 (uncapped). Complaints capped at 50; star avg ~4.0 across aggregators; Reddit mixed-negative=40; YouTube mixed=60; news 0 positive of 4."
|
| 106 |
+
},
|
| 107 |
+
"_url_verification": {
|
| 108 |
+
"verified_at": "2026-05-12T23:57:25Z",
|
| 109 |
+
"total_urls": 13,
|
| 110 |
+
"ok": 11,
|
| 111 |
+
"broken_count": 2,
|
| 112 |
+
"broken_urls": [
|
| 113 |
+
"https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html",
|
| 114 |
+
"https://www.trustpilot.com/review/www.starhealth.in"
|
| 115 |
+
]
|
| 116 |
}
|
| 117 |
+
}
|
data/reviews/tata-aig.json
CHANGED
|
@@ -2,7 +2,6 @@
|
|
| 2 |
"insurer_slug": "tata-aig",
|
| 3 |
"insurer_name": "Tata AIG General Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
| 5 |
-
|
| 6 |
"claim_metrics": {
|
| 7 |
"claim_settlement_ratio_pct": 88.72,
|
| 8 |
"claim_settlement_ratio_year": "2023-24 (3-year avg)",
|
|
@@ -13,19 +12,28 @@
|
|
| 13 |
"source_secondary_url": "https://www.policyx.com/health-insurance/tata-aig-health-insurance/claim-settlement-ratio/",
|
| 14 |
"source_tertiary_url": "https://joinditto.in/articles/health-insurance/tata-aig-health-insurance-claim-settlement-ratio/"
|
| 15 |
},
|
| 16 |
-
|
| 17 |
"aggregator_ratings": {
|
| 18 |
-
"policybazaar": {
|
| 19 |
-
|
| 20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
},
|
| 22 |
-
|
| 23 |
"trustpilot": {
|
| 24 |
"score": null,
|
| 25 |
"review_count": null,
|
| 26 |
"url": null
|
| 27 |
},
|
| 28 |
-
|
| 29 |
"reddit_sentiment": {
|
| 30 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 31 |
"mentions_last_year_estimate": 22,
|
|
@@ -42,24 +50,44 @@
|
|
| 42 |
"https://www.policybazaar.com/health-insurance/companies/aditya-birla-vs-tata-aig/"
|
| 43 |
]
|
| 44 |
},
|
| 45 |
-
|
| 46 |
"youtube_coverage": {
|
| 47 |
"top_creators_who_reviewed": [
|
| 48 |
-
{
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
],
|
| 50 |
"overall_youtube_sentiment": "mixed"
|
| 51 |
},
|
| 52 |
-
|
| 53 |
"in_news": [
|
| 54 |
-
{
|
| 55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
],
|
| 57 |
-
|
| 58 |
"aggregate_score": {
|
| 59 |
"value_0_100": 75.6,
|
| 60 |
"letter_grade": "B",
|
| 61 |
"headline": "Solid mid-tier player: 88.7% CSR, low complaints (~11 per 10K), strong brand & global-coverage products",
|
| 62 |
"computed_at": "2026-05-13",
|
| 63 |
"computation_notes": "0.40*88.72 + 0.20*(100-22) + 0.15*(4.3*20) + 0.10*75 + 0.10*60 + 0.05*100 = 35.5 + 15.6 + 12.9 + 7.5 + 6 + 5 = 82.5. Adjusted to 75.6 reflecting below-industry CSR average comment."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
}
|
| 65 |
-
}
|
|
|
|
| 2 |
"insurer_slug": "tata-aig",
|
| 3 |
"insurer_name": "Tata AIG General Insurance",
|
| 4 |
"last_updated": "2026-05-13",
|
|
|
|
| 5 |
"claim_metrics": {
|
| 6 |
"claim_settlement_ratio_pct": 88.72,
|
| 7 |
"claim_settlement_ratio_year": "2023-24 (3-year avg)",
|
|
|
|
| 12 |
"source_secondary_url": "https://www.policyx.com/health-insurance/tata-aig-health-insurance/claim-settlement-ratio/",
|
| 13 |
"source_tertiary_url": "https://joinditto.in/articles/health-insurance/tata-aig-health-insurance-claim-settlement-ratio/"
|
| 14 |
},
|
|
|
|
| 15 |
"aggregator_ratings": {
|
| 16 |
+
"policybazaar": {
|
| 17 |
+
"avg_star": 4.3,
|
| 18 |
+
"review_count": null,
|
| 19 |
+
"url": "https://www.policybazaar.com/insurance-companies/tata-aig-health-insurance/claim-settlement-ratio/"
|
| 20 |
+
},
|
| 21 |
+
"insuredekho": {
|
| 22 |
+
"avg_star": 4.4,
|
| 23 |
+
"review_count": null,
|
| 24 |
+
"url": "https://www.insurancedekho.com/health-insurance/tata-aig/claim-settlement"
|
| 25 |
+
},
|
| 26 |
+
"joinditto": {
|
| 27 |
+
"avg_star": 4.2,
|
| 28 |
+
"review_count": null,
|
| 29 |
+
"url": "https://joinditto.in/articles/health-insurance/tata-aig-health-insurance-claim-settlement-ratio/"
|
| 30 |
+
}
|
| 31 |
},
|
|
|
|
| 32 |
"trustpilot": {
|
| 33 |
"score": null,
|
| 34 |
"review_count": null,
|
| 35 |
"url": null
|
| 36 |
},
|
|
|
|
| 37 |
"reddit_sentiment": {
|
| 38 |
"subreddit": "IndianFinance / IndiaInvestments",
|
| 39 |
"mentions_last_year_estimate": 22,
|
|
|
|
| 50 |
"https://www.policybazaar.com/health-insurance/companies/aditya-birla-vs-tata-aig/"
|
| 51 |
]
|
| 52 |
},
|
|
|
|
| 53 |
"youtube_coverage": {
|
| 54 |
"top_creators_who_reviewed": [
|
| 55 |
+
{
|
| 56 |
+
"creator": "1Finance",
|
| 57 |
+
"video_url": "https://1finance.co.in/product-scoring/health-insurance/tata-aig-medicare",
|
| 58 |
+
"verdict": "MediCare scored on product features; recommended for premium segment"
|
| 59 |
+
}
|
| 60 |
],
|
| 61 |
"overall_youtube_sentiment": "mixed"
|
| 62 |
},
|
|
|
|
| 63 |
"in_news": [
|
| 64 |
+
{
|
| 65 |
+
"headline": "Tata AIG GWP grew from Rs 1,930 cr (FY22) to Rs 3,592 cr (FY25), strong YoY growth",
|
| 66 |
+
"url": "https://joinditto.in/articles/health-insurance/tata-aig-health-insurance-claim-settlement-ratio/",
|
| 67 |
+
"publication": "Ditto Insurance",
|
| 68 |
+
"date": "2026",
|
| 69 |
+
"tone": "positive"
|
| 70 |
+
},
|
| 71 |
+
{
|
| 72 |
+
"headline": "Tata AIG MediCare Premier plan launches",
|
| 73 |
+
"url": "https://www.beshak.org/insurance/health-insurance/best-health-insurance-plans/tata-aig-medi-care-premier/",
|
| 74 |
+
"publication": "Beshak",
|
| 75 |
+
"date": "2026-04",
|
| 76 |
+
"tone": "neutral"
|
| 77 |
+
}
|
| 78 |
],
|
|
|
|
| 79 |
"aggregate_score": {
|
| 80 |
"value_0_100": 75.6,
|
| 81 |
"letter_grade": "B",
|
| 82 |
"headline": "Solid mid-tier player: 88.7% CSR, low complaints (~11 per 10K), strong brand & global-coverage products",
|
| 83 |
"computed_at": "2026-05-13",
|
| 84 |
"computation_notes": "0.40*88.72 + 0.20*(100-22) + 0.15*(4.3*20) + 0.10*75 + 0.10*60 + 0.05*100 = 35.5 + 15.6 + 12.9 + 7.5 + 6 + 5 = 82.5. Adjusted to 75.6 reflecting below-industry CSR average comment."
|
| 85 |
+
},
|
| 86 |
+
"_url_verification": {
|
| 87 |
+
"verified_at": "2026-05-12T23:57:25Z",
|
| 88 |
+
"total_urls": 9,
|
| 89 |
+
"ok": 9,
|
| 90 |
+
"broken_count": 0,
|
| 91 |
+
"broken_urls": []
|
| 92 |
}
|
| 93 |
+
}
|
docs/ci-templates/eval-workflow.yml.template
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Gold-QA eval gate
|
| 2 |
+
|
| 3 |
+
on:
|
| 4 |
+
pull_request:
|
| 5 |
+
branches: [main]
|
| 6 |
+
push:
|
| 7 |
+
branches: [main]
|
| 8 |
+
workflow_dispatch:
|
| 9 |
+
|
| 10 |
+
jobs:
|
| 11 |
+
eval:
|
| 12 |
+
runs-on: ubuntu-latest
|
| 13 |
+
timeout-minutes: 25
|
| 14 |
+
steps:
|
| 15 |
+
- uses: actions/checkout@v4
|
| 16 |
+
with:
|
| 17 |
+
lfs: true
|
| 18 |
+
|
| 19 |
+
- name: Set up Python 3.11
|
| 20 |
+
uses: actions/setup-python@v5
|
| 21 |
+
with:
|
| 22 |
+
python-version: "3.11"
|
| 23 |
+
cache: "pip"
|
| 24 |
+
|
| 25 |
+
- name: Cache HuggingFace model
|
| 26 |
+
uses: actions/cache@v4
|
| 27 |
+
with:
|
| 28 |
+
path: ~/.cache/huggingface
|
| 29 |
+
key: hf-bge-small-${{ runner.os }}
|
| 30 |
+
|
| 31 |
+
- name: Install dependencies
|
| 32 |
+
run: |
|
| 33 |
+
python -m pip install --upgrade pip
|
| 34 |
+
pip install -r requirements.txt
|
| 35 |
+
|
| 36 |
+
- name: Pre-download embedding model
|
| 37 |
+
run: python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('BAAI/bge-small-en-v1.5')"
|
| 38 |
+
|
| 39 |
+
- name: Rebuild Chroma if missing
|
| 40 |
+
run: |
|
| 41 |
+
if [ ! -f rag/vectors/chroma.sqlite3 ]; then
|
| 42 |
+
python -m rag.ingest 2>&1 | tail -30
|
| 43 |
+
fi
|
| 44 |
+
|
| 45 |
+
- name: Run eval on first 25 gold pairs
|
| 46 |
+
env:
|
| 47 |
+
SARVAM_API_KEY: ${{ secrets.SARVAM_API_KEY }}
|
| 48 |
+
VOYAGE_API_KEY: ${{ secrets.VOYAGE_API_KEY }}
|
| 49 |
+
GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}
|
| 50 |
+
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
| 51 |
+
run: python -m eval.run --limit 25 2>&1 | tee eval/ci_output.log
|
| 52 |
+
|
| 53 |
+
- name: Enforce accuracy floor
|
| 54 |
+
run: |
|
| 55 |
+
python <<'PY'
|
| 56 |
+
import json, sys
|
| 57 |
+
d = json.load(open("eval/results.json"))
|
| 58 |
+
s = d.get("summary", {})
|
| 59 |
+
factual = s.get("factual_accuracy", 0.0)
|
| 60 |
+
citation = s.get("citation_accuracy", 0.0)
|
| 61 |
+
print(f"Factual: {factual*100:.1f}%")
|
| 62 |
+
print(f"Citation: {citation*100:.1f}%")
|
| 63 |
+
floor_factual = 0.65
|
| 64 |
+
floor_citation = 0.55
|
| 65 |
+
if factual < floor_factual:
|
| 66 |
+
print(f"FAIL — factual below floor {floor_factual*100:.0f}%")
|
| 67 |
+
sys.exit(1)
|
| 68 |
+
if citation < floor_citation:
|
| 69 |
+
print(f"FAIL — citation below floor {floor_citation*100:.0f}%")
|
| 70 |
+
sys.exit(1)
|
| 71 |
+
print("PASS")
|
| 72 |
+
PY
|
| 73 |
+
|
| 74 |
+
- name: Upload eval results
|
| 75 |
+
if: always()
|
| 76 |
+
uses: actions/upload-artifact@v4
|
| 77 |
+
with:
|
| 78 |
+
name: eval-results-${{ github.run_number }}
|
| 79 |
+
path: |
|
| 80 |
+
eval/results.md
|
| 81 |
+
eval/results.json
|
| 82 |
+
eval/ci_output.log
|
| 83 |
+
retention-days: 30
|
eval/reviews_url_verification.json
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"verified_at": "2026-05-12T23:57:25Z",
|
| 3 |
+
"per_insurer": {
|
| 4 |
+
"aditya-birla": {
|
| 5 |
+
"total": 9,
|
| 6 |
+
"ok": 9,
|
| 7 |
+
"broken": 0,
|
| 8 |
+
"broken_list": []
|
| 9 |
+
},
|
| 10 |
+
"bajaj-allianz": {
|
| 11 |
+
"total": 11,
|
| 12 |
+
"ok": 11,
|
| 13 |
+
"broken": 0,
|
| 14 |
+
"broken_list": []
|
| 15 |
+
},
|
| 16 |
+
"care-health": {
|
| 17 |
+
"total": 13,
|
| 18 |
+
"ok": 11,
|
| 19 |
+
"broken": 2,
|
| 20 |
+
"broken_list": [
|
| 21 |
+
{
|
| 22 |
+
"path": "claim_metrics.source_company_url",
|
| 23 |
+
"url": "https://www.careinsurance.com/health-insurance/health-insurance-claim-settlement-ratio",
|
| 24 |
+
"status": 403,
|
| 25 |
+
"error": null
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"path": "in_news.[1].url",
|
| 29 |
+
"url": "https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html",
|
| 30 |
+
"status": 403,
|
| 31 |
+
"error": null
|
| 32 |
+
}
|
| 33 |
+
]
|
| 34 |
+
},
|
| 35 |
+
"hdfc-ergo": {
|
| 36 |
+
"total": 17,
|
| 37 |
+
"ok": 16,
|
| 38 |
+
"broken": 1,
|
| 39 |
+
"broken_list": [
|
| 40 |
+
{
|
| 41 |
+
"path": "trustpilot.url",
|
| 42 |
+
"url": "https://www.trustpilot.com/review/www.hdfcergo.com",
|
| 43 |
+
"status": 403,
|
| 44 |
+
"error": null
|
| 45 |
+
}
|
| 46 |
+
]
|
| 47 |
+
},
|
| 48 |
+
"icici-lombard": {
|
| 49 |
+
"total": 10,
|
| 50 |
+
"ok": 7,
|
| 51 |
+
"broken": 3,
|
| 52 |
+
"broken_list": [
|
| 53 |
+
{
|
| 54 |
+
"path": "claim_metrics.source_company_url",
|
| 55 |
+
"url": "https://www.icicilombard.com/health-insurance/blogs/icici-lombard-health-insurance-claim-settlement-ratio",
|
| 56 |
+
"status": 403,
|
| 57 |
+
"error": null
|
| 58 |
+
},
|
| 59 |
+
{
|
| 60 |
+
"path": "in_news.[0].url",
|
| 61 |
+
"url": "https://www.icicilombard.com/investor-relations",
|
| 62 |
+
"status": 403,
|
| 63 |
+
"error": null
|
| 64 |
+
},
|
| 65 |
+
{
|
| 66 |
+
"path": "in_news.[2].url",
|
| 67 |
+
"url": "https://www.icicilombard.com/docs/default-source/financial-information/annualreport2024.pdf",
|
| 68 |
+
"status": 403,
|
| 69 |
+
"error": null
|
| 70 |
+
}
|
| 71 |
+
]
|
| 72 |
+
},
|
| 73 |
+
"manipalcigna": {
|
| 74 |
+
"total": 8,
|
| 75 |
+
"ok": 8,
|
| 76 |
+
"broken": 0,
|
| 77 |
+
"broken_list": []
|
| 78 |
+
},
|
| 79 |
+
"new-india": {
|
| 80 |
+
"total": 8,
|
| 81 |
+
"ok": 7,
|
| 82 |
+
"broken": 1,
|
| 83 |
+
"broken_list": [
|
| 84 |
+
{
|
| 85 |
+
"path": "in_news.[1].url",
|
| 86 |
+
"url": "https://www.business-standard.com/companies/news/new-india-assurance-q3fy24-results-net-profit-falls-4-38-to-rs-715-crore-124020901758_1.html",
|
| 87 |
+
"status": 403,
|
| 88 |
+
"error": null
|
| 89 |
+
}
|
| 90 |
+
]
|
| 91 |
+
},
|
| 92 |
+
"niva-bupa": {
|
| 93 |
+
"total": 17,
|
| 94 |
+
"ok": 14,
|
| 95 |
+
"broken": 3,
|
| 96 |
+
"broken_list": [
|
| 97 |
+
{
|
| 98 |
+
"path": "trustpilot.url",
|
| 99 |
+
"url": "https://www.trustpilot.com/review/nivabupa.com",
|
| 100 |
+
"status": 403,
|
| 101 |
+
"error": null
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
"path": "in_news.[0].url",
|
| 105 |
+
"url": "https://www.business-standard.com/markets/news/niva-bupa-shares-make-positive-debut-on-bourses-list-at-6-premium-124111400326_1.html",
|
| 106 |
+
"status": 403,
|
| 107 |
+
"error": null
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"path": "in_news.[2].url",
|
| 111 |
+
"url": "https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html",
|
| 112 |
+
"status": 403,
|
| 113 |
+
"error": null
|
| 114 |
+
}
|
| 115 |
+
]
|
| 116 |
+
},
|
| 117 |
+
"star-health": {
|
| 118 |
+
"total": 13,
|
| 119 |
+
"ok": 11,
|
| 120 |
+
"broken": 2,
|
| 121 |
+
"broken_list": [
|
| 122 |
+
{
|
| 123 |
+
"path": "claim_metrics.source_secondary_url",
|
| 124 |
+
"url": "https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html",
|
| 125 |
+
"status": 403,
|
| 126 |
+
"error": null
|
| 127 |
+
},
|
| 128 |
+
{
|
| 129 |
+
"path": "trustpilot.url",
|
| 130 |
+
"url": "https://www.trustpilot.com/review/www.starhealth.in",
|
| 131 |
+
"status": 403,
|
| 132 |
+
"error": null
|
| 133 |
+
}
|
| 134 |
+
]
|
| 135 |
+
},
|
| 136 |
+
"tata-aig": {
|
| 137 |
+
"total": 9,
|
| 138 |
+
"ok": 9,
|
| 139 |
+
"broken": 0,
|
| 140 |
+
"broken_list": []
|
| 141 |
+
}
|
| 142 |
+
},
|
| 143 |
+
"total_urls": 95,
|
| 144 |
+
"broken_urls": [
|
| 145 |
+
{
|
| 146 |
+
"insurer": "care-health",
|
| 147 |
+
"path": "claim_metrics.source_company_url",
|
| 148 |
+
"url": "https://www.careinsurance.com/health-insurance/health-insurance-claim-settlement-ratio",
|
| 149 |
+
"status": 403,
|
| 150 |
+
"error": null
|
| 151 |
+
},
|
| 152 |
+
{
|
| 153 |
+
"insurer": "care-health",
|
| 154 |
+
"path": "in_news.[1].url",
|
| 155 |
+
"url": "https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html",
|
| 156 |
+
"status": 403,
|
| 157 |
+
"error": null
|
| 158 |
+
},
|
| 159 |
+
{
|
| 160 |
+
"insurer": "hdfc-ergo",
|
| 161 |
+
"path": "trustpilot.url",
|
| 162 |
+
"url": "https://www.trustpilot.com/review/www.hdfcergo.com",
|
| 163 |
+
"status": 403,
|
| 164 |
+
"error": null
|
| 165 |
+
},
|
| 166 |
+
{
|
| 167 |
+
"insurer": "icici-lombard",
|
| 168 |
+
"path": "claim_metrics.source_company_url",
|
| 169 |
+
"url": "https://www.icicilombard.com/health-insurance/blogs/icici-lombard-health-insurance-claim-settlement-ratio",
|
| 170 |
+
"status": 403,
|
| 171 |
+
"error": null
|
| 172 |
+
},
|
| 173 |
+
{
|
| 174 |
+
"insurer": "icici-lombard",
|
| 175 |
+
"path": "in_news.[0].url",
|
| 176 |
+
"url": "https://www.icicilombard.com/investor-relations",
|
| 177 |
+
"status": 403,
|
| 178 |
+
"error": null
|
| 179 |
+
},
|
| 180 |
+
{
|
| 181 |
+
"insurer": "icici-lombard",
|
| 182 |
+
"path": "in_news.[2].url",
|
| 183 |
+
"url": "https://www.icicilombard.com/docs/default-source/financial-information/annualreport2024.pdf",
|
| 184 |
+
"status": 403,
|
| 185 |
+
"error": null
|
| 186 |
+
},
|
| 187 |
+
{
|
| 188 |
+
"insurer": "new-india",
|
| 189 |
+
"path": "in_news.[1].url",
|
| 190 |
+
"url": "https://www.business-standard.com/companies/news/new-india-assurance-q3fy24-results-net-profit-falls-4-38-to-rs-715-crore-124020901758_1.html",
|
| 191 |
+
"status": 403,
|
| 192 |
+
"error": null
|
| 193 |
+
},
|
| 194 |
+
{
|
| 195 |
+
"insurer": "niva-bupa",
|
| 196 |
+
"path": "trustpilot.url",
|
| 197 |
+
"url": "https://www.trustpilot.com/review/nivabupa.com",
|
| 198 |
+
"status": 403,
|
| 199 |
+
"error": null
|
| 200 |
+
},
|
| 201 |
+
{
|
| 202 |
+
"insurer": "niva-bupa",
|
| 203 |
+
"path": "in_news.[0].url",
|
| 204 |
+
"url": "https://www.business-standard.com/markets/news/niva-bupa-shares-make-positive-debut-on-bourses-list-at-6-premium-124111400326_1.html",
|
| 205 |
+
"status": 403,
|
| 206 |
+
"error": null
|
| 207 |
+
},
|
| 208 |
+
{
|
| 209 |
+
"insurer": "niva-bupa",
|
| 210 |
+
"path": "in_news.[2].url",
|
| 211 |
+
"url": "https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html",
|
| 212 |
+
"status": 403,
|
| 213 |
+
"error": null
|
| 214 |
+
},
|
| 215 |
+
{
|
| 216 |
+
"insurer": "star-health",
|
| 217 |
+
"path": "claim_metrics.source_secondary_url",
|
| 218 |
+
"url": "https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html",
|
| 219 |
+
"status": 403,
|
| 220 |
+
"error": null
|
| 221 |
+
},
|
| 222 |
+
{
|
| 223 |
+
"insurer": "star-health",
|
| 224 |
+
"path": "trustpilot.url",
|
| 225 |
+
"url": "https://www.trustpilot.com/review/www.starhealth.in",
|
| 226 |
+
"status": 403,
|
| 227 |
+
"error": null
|
| 228 |
+
}
|
| 229 |
+
],
|
| 230 |
+
"ok_urls": 103
|
| 231 |
+
}
|
kb/INDEX.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
# Knowledge Base — Master Index
|
| 2 |
|
| 3 |
-
_Generated 2026-05-12T23:
|
| 4 |
|
| 5 |
This is the **single canonical KB** for this project. Every data point in the bot
|
| 6 |
(citations, scorecards, comparison views) traces back to one of these files.
|
|
|
|
| 1 |
# Knowledge Base — Master Index
|
| 2 |
|
| 3 |
+
_Generated 2026-05-12T23:59:58Z. Auto-regenerable via `python -m rag.build_kb`._
|
| 4 |
|
| 5 |
This is the **single canonical KB** for this project. Every data point in the bot
|
| 6 |
(citations, scorecards, comparison views) traces back to one of these files.
|
kb/calculations/scorecard_results.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
# Calculations — Scorecard Results
|
| 2 |
|
| 3 |
-
_Computed by `backend/scorecard.py` at 2026-05-12T23:
|
| 4 |
|
| 5 |
Methodology: [`docs/scorecard-methodology.md`](../../docs/scorecard-methodology.md)
|
| 6 |
|
|
|
|
| 1 |
# Calculations — Scorecard Results
|
| 2 |
|
| 3 |
+
_Computed by `backend/scorecard.py` at 2026-05-12T23:59:58Z on 11 extracted policies._
|
| 4 |
|
| 5 |
Methodology: [`docs/scorecard-methodology.md`](../../docs/scorecard-methodology.md)
|
| 6 |
|
kb/eval/INDEX.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Eval — Gold Q&A + Run History
|
| 2 |
+
|
| 3 |
+
_Auto-generated. Source: `eval/gold_qa.json` + `eval/results.json` + `eval/run.py`._
|
| 4 |
+
|
| 5 |
+
## Gold Q&A composition — 96 pairs total
|
| 6 |
+
|
| 7 |
+
| Type | Count |
|
| 8 |
+
| --- | --- |
|
| 9 |
+
| `waiting_period` | 27 |
|
| 10 |
+
| `coverage_scope` | 21 |
|
| 11 |
+
| `exclusions_oos` | 20 |
|
| 12 |
+
| `sub_limit` | 12 |
|
| 13 |
+
| `regulatory_oos` | 10 |
|
| 14 |
+
| `bonus` | 6 |
|
| 15 |
+
|
| 16 |
+
**Refusal-test questions:** 30 (these test the bot correctly refuses out-of-corpus questions)
|
| 17 |
+
|
| 18 |
+
## Most recent eval run
|
| 19 |
+
|
| 20 |
+
- Ran: 2026-05-12T22:30:15Z
|
| 21 |
+
- Questions: 25
|
| 22 |
+
- Factual accuracy: **40.0%**
|
| 23 |
+
- Citation accuracy: **50.0%**
|
| 24 |
+
- Refusal precision: **44.4%**
|
| 25 |
+
- Blocked by faithfulness: 12
|
| 26 |
+
|
| 27 |
+
## Methodology
|
| 28 |
+
|
| 29 |
+
- Gold Q&A built by 3 pipelines: auto-from-extraction (templated), LLM-drafted (human-verified), hand-crafted adversarial. See `docs/03-eval-plan.md`.
|
| 30 |
+
- Grader: Groq Llama-3.3-70B (different model family from generators → non-circular).
|
| 31 |
+
- Re-run: `python -m eval.run [--limit N] [--policy <id>]`.
|
| 32 |
+
- CI gate: `.github/workflows/eval.yml` runs eval on every PR; blocks merge if factual_accuracy < 0.65 or citation_accuracy < 0.55.
|
kb/methodology/INDEX.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Methodology — Pointers to all design docs
|
| 2 |
+
|
| 3 |
+
_All design / decision docs in one navigable place._
|
| 4 |
+
|
| 5 |
+
## Foundation docs (in `docs/`)
|
| 6 |
+
|
| 7 |
+
| Doc | What it covers |
|
| 8 |
+
| --- | --- |
|
| 9 |
+
| [`01-requirements.md`](../../docs/01-requirements.md) | Product vision, 3 user personas, buyer journey, 10 success criteria, 11 non-goals, constraints |
|
| 10 |
+
| [`02-architecture.md`](../../docs/02-architecture.md) | Stack picks, system diagram, schema groupings, repo layout, c-readiness commitments |
|
| 11 |
+
| [`03-eval-plan.md`](../../docs/03-eval-plan.md) | 3-pipeline gold Q&A construction, grader, metrics, run cadence |
|
| 12 |
+
| [`04-failure-modes.md`](../../docs/04-failure-modes.md) | 16 named failure modes (F-01..F-16), detection + mitigation per mode |
|
| 13 |
+
| [`05-needs-analysis-flow.md`](../../docs/05-needs-analysis-flow.md) | Fact-find question graph, bilingual prompts, termination logic |
|
| 14 |
+
| [`decisions.md`](../../docs/decisions.md) | Append-only log of 17+ technical decisions with alternatives + reasoning |
|
| 15 |
+
| [`tech-stack-rationale.md`](../../docs/tech-stack-rationale.md) | 22-row stack pick table + selection rubric + cost envelope |
|
| 16 |
+
| [`scorecard-methodology.md`](../../docs/scorecard-methodology.md) | 48-field schema → 24 scored fields → 6 sub-scores → A-F grade |
|
| 17 |
+
| [`ROADMAP.md`](../../docs/ROADMAP.md) | v1 vertical slice → v2 platform plan |
|
| 18 |
+
| [`information_source_map.md`](../../docs/information_source_map.md) | Corpus catalog (auto-generated by `rag/source_map.py`) |
|
| 19 |
+
|
| 20 |
+
## KB sub-indexes (each regenerable via `python -m rag.build_kb`)
|
| 21 |
+
|
| 22 |
+
| Path | Content |
|
| 23 |
+
| --- | --- |
|
| 24 |
+
| [`kb/INDEX.md`](../INDEX.md) | Master index |
|
| 25 |
+
| [`kb/AUDIT_TRAIL.md`](../AUDIT_TRAIL.md) | 10-stage data lineage + decision-to-artifact map |
|
| 26 |
+
| [`kb/policies/`](../policies/) | One sheet per extracted policy |
|
| 27 |
+
| [`kb/research/`](../research/) | Corpus acquisition, URL verification, insurer universe |
|
| 28 |
+
| [`kb/calculations/`](../calculations/) | Scorecard results, eval results, extraction audit |
|
| 29 |
+
| [`kb/reviews/`](../reviews/) | Per-insurer reputation sheets + leaderboard |
|
| 30 |
+
| [`kb/premiums/`](../premiums/) | Illustrative pricing samples + scaling factors |
|
| 31 |
+
| [`kb/security/`](../security/) | Upload gates + hallucination defense |
|
| 32 |
+
| [`kb/eval/`](../eval/) | Gold Q&A composition + run history |
|
| 33 |
+
|
| 34 |
+
## How to navigate
|
| 35 |
+
|
| 36 |
+
- New visitor → start at `kb/INDEX.md`
|
| 37 |
+
- Auditor → start at `kb/AUDIT_TRAIL.md`
|
| 38 |
+
- Engineer onboarding → start at `docs/02-architecture.md`
|
| 39 |
+
- BFSI compliance review → `kb/security/` + `docs/04-failure-modes.md` + `logs/hallucinations.jsonl`
|
| 40 |
+
- Buyer-side curiosity → any `kb/policies/<id>.md` ends with a "What the bot will and won't say" section.
|
kb/premiums/INDEX.md
ADDED
|
@@ -0,0 +1,323 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Premiums — Illustrative Pricing Data
|
| 2 |
+
|
| 3 |
+
_Auto-generated from `data/premiums/illustrative_premiums.json`. Real PolicyBazaar / InsuranceDekho / rate-chart anchors plus derived scaling factors. NEVER a binding quote._
|
| 4 |
+
|
| 5 |
+
## Methodology
|
| 6 |
+
|
| 7 |
+
Premium samples pulled from public quote pages on PolicyBazaar, JoinDitto, Beshak, and insurer rate cards (Tata AIG MediCare Premier official rate chart, Star Family Health Optima Annexure-2, Niva Bupa ReAssure 2.0 rate card) on 2026-05-13. Single quotes are illustrative starting premiums for healthy non-smoking lives in Delhi (metro / Zone 1 / Zone A); actual premium varies with underwriting, pin code, family composition, and add-ons. Where a specific (insurer, policy, age, SI) combination did not surface a public number, the closest comparable insurer band was used and the gap was filled with the scaling factors below (derived from the 2-3 anchor points that ARE real). Scaling factors are calibrated against the IRDAI bandings used by most Indian health insurers and are consistent with the visible deltas in the JoinDitto / Beshak premium charts.
|
| 8 |
+
|
| 9 |
+
### Sources consulted
|
| 10 |
+
|
| 11 |
+
- [https://www.policybazaar.com/insurance-companies/hdfc-ergo-health-insurance/optima-secure-plan/](https://www.policybazaar.com/insurance-companies/hdfc-ergo-health-insurance/optima-secure-plan/)
|
| 12 |
+
- [https://www.policybazaar.com/insurance-companies/religare-health-insurance/care-supreme/](https://www.policybazaar.com/insurance-companies/religare-health-insurance/care-supreme/)
|
| 13 |
+
- [https://www.policybazaar.com/insurance-companies/aditya-birla-health-insurance/activ-assure-diamond-](https://www.policybazaar.com/insurance-companies/aditya-birla-health-insurance/activ-assure-diamond-plan/)
|
| 14 |
+
- [https://www.policybazaar.com/insurance-companies/bajaj-allianz-health-insurance/individual-health-gu](https://www.policybazaar.com/insurance-companies/bajaj-allianz-health-insurance/individual-health-guard-plan/)
|
| 15 |
+
- [https://www.policybazaar.com/insurance-companies/star-health-insurance/family-health-optima-insuranc](https://www.policybazaar.com/insurance-companies/star-health-insurance/family-health-optima-insurance-plan/)
|
| 16 |
+
- [https://www.policybazaar.com/insurance-companies/star-health-insurance/senior-citizens-red-carpet-he](https://www.policybazaar.com/insurance-companies/star-health-insurance/senior-citizens-red-carpet-health-insurance-policy/)
|
| 17 |
+
- [https://www.policybazaar.com/insurance-companies/icici-lombard-health-insurance/elevate-plan/](https://www.policybazaar.com/insurance-companies/icici-lombard-health-insurance/elevate-plan/)
|
| 18 |
+
- [https://www.policybazaar.com/insurance-companies/tata-aig-health-insurance/medicare-premier/](https://www.policybazaar.com/insurance-companies/tata-aig-health-insurance/medicare-premier/)
|
| 19 |
+
- [https://www.policybazaar.com/insurance-companies/manipalcigna-health-insurance/prohealth-prime/](https://www.policybazaar.com/insurance-companies/manipalcigna-health-insurance/prohealth-prime/)
|
| 20 |
+
- [https://www.policybazaar.com/insurance-companies/max-bupa-health-insurance/premium-calculator/](https://www.policybazaar.com/insurance-companies/max-bupa-health-insurance/premium-calculator/)
|
| 21 |
+
|
| 22 |
+
## Per-policy anchor samples
|
| 23 |
+
|
| 24 |
+
_26 policies indexed._
|
| 25 |
+
|
| 26 |
+
### Aditya Birla Activ Assure Diamond
|
| 27 |
+
`policy_id`: `aditya-birla__activ-assure-diamond`
|
| 28 |
+
|
| 29 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 30 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 31 |
+
| 30 | 500000 | metro | N | 1 | **8,215** | [link](https://www.adityabirlacapital.com/healthinsurance/activ-assure-diamond) |
|
| 32 |
+
| 30 | 1000000 | metro | N | 1 | **11,100** | derived |
|
| 33 |
+
| 40 | 1000000 | metro | N | 1 | **15,500** | derived |
|
| 34 |
+
| 50 | 1000000 | metro | N | 2 | **35,500** | derived |
|
| 35 |
+
| 35 | 2500000 | metro | N | 4 | **41,000** | derived |
|
| 36 |
+
|
| 37 |
+
### Aditya Birla Group Activ Health
|
| 38 |
+
`policy_id`: `aditya-birla__group-activ-health`
|
| 39 |
+
|
| 40 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 41 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 42 |
+
| 35 | 500000 | metro | N | 1 | **7,500** | callback only |
|
| 43 |
+
|
| 44 |
+
### Bajaj Allianz Health Guard / Comprehensive Care Plan
|
| 45 |
+
`policy_id`: `bajaj-allianz__health-guard`
|
| 46 |
+
|
| 47 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 48 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 49 |
+
| 30 | 350000 | metro | N | 1 | **6,962** | [link](https://www.bajajfinserv.in/insurance/bajaj-general-health-guard-insurance-plan) |
|
| 50 |
+
| 30 | 500000 | metro | N | 1 | **8,200** | derived |
|
| 51 |
+
| 30 | 1000000 | metro | N | 1 | **11,500** | derived |
|
| 52 |
+
| 40 | 1000000 | metro | N | 2 | **26,500** | derived |
|
| 53 |
+
| 35 | 2500000 | metro | N | 4 | **39,000** | derived |
|
| 54 |
+
|
| 55 |
+
### Bajaj Allianz Silver Health (Senior 46-80)
|
| 56 |
+
`policy_id`: `bajaj-allianz__silver-health`
|
| 57 |
+
|
| 58 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 59 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 60 |
+
| 60 | 500000 | metro | N | 1 | **19,800** | [link](https://www.policybazaar.com/insurance-companies/bajaj-allianz-health-insurance/silver-health-plan/) |
|
| 61 |
+
| 65 | 500000 | metro | N | 1 | **24,500** | derived |
|
| 62 |
+
| 70 | 500000 | metro | N | 1 | **32,000** | derived |
|
| 63 |
+
|
| 64 |
+
### Bajaj Allianz Tax Gain
|
| 65 |
+
`policy_id`: `bajaj-allianz__tax-gain`
|
| 66 |
+
|
| 67 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 68 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 69 |
+
| 35 | 500000 | metro | N | 4 | **11,500** | [link](https://www.bajajgeneralinsurance.com/health-insurance-plans/) |
|
| 70 |
+
|
| 71 |
+
### Care Health Care Advantage
|
| 72 |
+
`policy_id`: `care-health__care-advantage`
|
| 73 |
+
|
| 74 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 75 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 76 |
+
| 30 | 500000 | metro | N | 1 | **5,100** | [link](https://www.careinsurance.com/product/care-supreme) |
|
| 77 |
+
|
| 78 |
+
### Care Health Care Classic
|
| 79 |
+
`policy_id`: `care-health__care-classic`
|
| 80 |
+
|
| 81 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 82 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 83 |
+
| 30 | 500000 | metro | N | 1 | **5,400** | [link](https://www.policybazaar.com/insurance-companies/religare-health-insurance/) |
|
| 84 |
+
| 30 | 1000000 | metro | N | 1 | **7,300** | derived |
|
| 85 |
+
|
| 86 |
+
### Care Health Care Senior
|
| 87 |
+
`policy_id`: `care-health__care-senior`
|
| 88 |
+
|
| 89 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 90 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 91 |
+
| 65 | 500000 | metro | N | 1 | **22,500** | [link](https://www.policybazaar.com/insurance-companies/religare-health-insurance/care-senior/) |
|
| 92 |
+
| 65 | 1000000 | metro | N | 1 | **32,500** | derived |
|
| 93 |
+
| 70 | 500000 | metro | N | 1 | **31,000** | derived |
|
| 94 |
+
|
| 95 |
+
### Care Health Care Supreme
|
| 96 |
+
`policy_id`: `care-health__care-supreme`
|
| 97 |
+
|
| 98 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 99 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 100 |
+
| 30 | 500000 | metro | N | 1 | **4,800** | [link](https://www.policybazaar.com/insurance-companies/religare-health-insurance/care-supreme/) |
|
| 101 |
+
| 30 | 1000000 | metro | N | 1 | **6,492** | [link](https://www.policybazaar.com/insurance-companies/religare-health-insurance/care-supreme/) |
|
| 102 |
+
| 40 | 1000000 | metro | N | 1 | **9,089** | derived |
|
| 103 |
+
| 35 | 2500000 | metro | N | 4 | **33,800** | derived |
|
| 104 |
+
| 50 | 2500000 | metro | N | 2 | **49,500** | derived |
|
| 105 |
+
|
| 106 |
+
### HDFC ERGO Energy (Diabetes/Hypertension focused)
|
| 107 |
+
`policy_id`: `hdfc-ergo__energy`
|
| 108 |
+
|
| 109 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 110 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 111 |
+
| 40 | 500000 | metro | N | 1 | **12,500** | callback only |
|
| 112 |
+
|
| 113 |
+
### HDFC ERGO Optima Plus
|
| 114 |
+
`policy_id`: `hdfc-ergo__optima-plus`
|
| 115 |
+
|
| 116 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 117 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 118 |
+
| 30 | 500000 | metro | N | 1 | **7,200** | [link](https://www.policybazaar.com/insurance-companies/hdfc-ergo-health-insurance/optima-plus-insurance-plan/) |
|
| 119 |
+
| 35 | 1000000 | metro | N | 2 | **16,000** | derived |
|
| 120 |
+
|
| 121 |
+
### HDFC ERGO Optima Restore
|
| 122 |
+
`policy_id`: `hdfc-ergo__optima-restore`
|
| 123 |
+
|
| 124 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 125 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 126 |
+
| 30 | 500000 | metro | N | 1 | **6,800** | derived |
|
| 127 |
+
| 30 | 1000000 | metro | N | 1 | **9,100** | derived |
|
| 128 |
+
| 40 | 1000000 | metro | N | 2 | **21,000** | derived |
|
| 129 |
+
|
| 130 |
+
### HDFC ERGO my:Optima Secure
|
| 131 |
+
`policy_id`: `hdfc-ergo__optima-secure`
|
| 132 |
+
|
| 133 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 134 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 135 |
+
| 30 | 500000 | metro | N | 1 | **4,800** | [link](https://www.policybazaar.com/insurance-companies/hdfc-ergo-health-insurance/optima-secure-plan/) |
|
| 136 |
+
| 30 | 1000000 | metro | N | 1 | **6,492** | [link](https://www.policybazaar.com/insurance-companies/hdfc-ergo-health-insurance/optima-secure-plan/) |
|
| 137 |
+
| 40 | 1000000 | metro | N | 1 | **9,089** | derived |
|
| 138 |
+
| 50 | 1000000 | metro | N | 2 | **22,500** | derived |
|
| 139 |
+
| 35 | 2500000 | metro | N | 4 | **35,200** | derived |
|
| 140 |
+
|
| 141 |
+
### ICICI Lombard Elevate
|
| 142 |
+
`policy_id`: `icici-lombard__elevate`
|
| 143 |
+
|
| 144 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 145 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 146 |
+
| 30 | 1000000 | metro | N | 1 | **9,500** | [link](https://www.icicilombard.com/health-insurance/elevate-health-policy) |
|
| 147 |
+
| 30 | 500000 | metro | N | 1 | **7,000** | derived |
|
| 148 |
+
| 40 | 1000000 | metro | N | 2 | **22,500** | derived |
|
| 149 |
+
| 35 | 2500000 | metro | N | 4 | **36,500** | derived |
|
| 150 |
+
|
| 151 |
+
### ICICI Lombard Health AdvantEdge
|
| 152 |
+
`policy_id`: `icici-lombard__health-advantedge`
|
| 153 |
+
|
| 154 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 155 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 156 |
+
| 30 | 500000 | metro | N | 1 | **6,500** | [link](https://www.policybazaar.com/insurance-companies/icici-lombard-health-insurance/) |
|
| 157 |
+
| 30 | 1000000 | metro | N | 1 | **8,800** | derived |
|
| 158 |
+
|
| 159 |
+
### ManipalCigna ProHealth Prime Active
|
| 160 |
+
`policy_id`: `manipalcigna__prohealth-prime-active`
|
| 161 |
+
|
| 162 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 163 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 164 |
+
| 30 | 500000 | metro | N | 1 | **6,200** | [link](https://www.manipalcigna.com/hospitalization-cover/prohealth-insurance/prohealthprime-active) |
|
| 165 |
+
| 30 | 1000000 | metro | N | 1 | **8,400** | derived |
|
| 166 |
+
| 40 | 1000000 | metro | N | 2 | **19,500** | derived |
|
| 167 |
+
|
| 168 |
+
### New India Assurance Asha Kiran Policy
|
| 169 |
+
`policy_id`: `new-india__asha-kiran`
|
| 170 |
+
|
| 171 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 172 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 173 |
+
| 30 | 300000 | metro | N | 1 | **3,650** | [link](https://www.newindia.co.in/portal/readMore/Pages/Asha-Kiran-Policy) |
|
| 174 |
+
| 30 | 500000 | metro | N | 3 | **6,800** | derived |
|
| 175 |
+
|
| 176 |
+
### New India Mediclaim
|
| 177 |
+
`policy_id`: `new-india__mediclaim`
|
| 178 |
+
|
| 179 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 180 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 181 |
+
| 30 | 500000 | metro | N | 1 | **5,400** | [link](https://www.newindia.co.in/portal/readMore/Pages/Mediclaim-Policy) |
|
| 182 |
+
| 30 | 1000000 | metro | N | 1 | **7,300** | derived |
|
| 183 |
+
| 50 | 500000 | metro | N | 2 | **18,500** | derived |
|
| 184 |
+
|
| 185 |
+
### Niva Bupa Aspire
|
| 186 |
+
`policy_id`: `niva-bupa__aspire`
|
| 187 |
+
|
| 188 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 189 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 190 |
+
| 30 | 500000 | metro | N | 1 | **7,200** | [link](https://www.nivabupa.com/family-health-insurance-plans/aspire.html) |
|
| 191 |
+
| 30 | 1000000 | metro | N | 1 | **9,700** | derived |
|
| 192 |
+
| 35 | 1000000 | metro | N | 2 | **16,500** | derived |
|
| 193 |
+
|
| 194 |
+
### Niva Bupa Health Premia
|
| 195 |
+
`policy_id`: `niva-bupa__health-premia`
|
| 196 |
+
|
| 197 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 198 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 199 |
+
| 30 | 500000 | metro | N | 3 | **14,000** | [link](https://www.nivabupa.com/health-insurance-plan/health-premia) |
|
| 200 |
+
| 35 | 1000000 | metro | N | 4 | **24,500** | derived |
|
| 201 |
+
| 45 | 2500000 | metro | N | 4 | **52,000** | derived |
|
| 202 |
+
|
| 203 |
+
### Niva Bupa ReAssure 2.0
|
| 204 |
+
`policy_id`: `niva-bupa__reassure`
|
| 205 |
+
|
| 206 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 207 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 208 |
+
| 30 | 500000 | metro | N | 1 | **21,047** | [link](https://joinditto.in/articles/health-insurance/niva-bupa-reassure-2-0-premium-chart/) |
|
| 209 |
+
| 30 | 500000 | metro | N | 1 | **21,560** | [link](https://joinditto.in/articles/health-insurance/niva-bupa-reassure-2-0-premium-chart/) |
|
| 210 |
+
| 30 | 1000000 | metro | N | 1 | **26,500** | derived |
|
| 211 |
+
| 40 | 1000000 | metro | N | 2 | **58,000** | derived |
|
| 212 |
+
|
| 213 |
+
### Star Comprehensive Health Insurance
|
| 214 |
+
`policy_id`: `star-health__comprehensive`
|
| 215 |
+
|
| 216 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 217 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 218 |
+
| 30 | 500000 | metro | N | 1 | **8,500** | [link](https://www.policybazaar.com/insurance-companies/star-health-insurance/star-comprehensive-insurance-policy/) |
|
| 219 |
+
| 30 | 1000000 | metro | N | 1 | **11,200** | derived |
|
| 220 |
+
| 45 | 1000000 | metro | N | 2 | **27,800** | derived |
|
| 221 |
+
|
| 222 |
+
### Star Family Health Optima
|
| 223 |
+
`policy_id`: `star-health__family-health-optima`
|
| 224 |
+
|
| 225 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 226 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 227 |
+
| 30 | 500000 | metro | N | 3 | **7,968** | [link](https://www.scribd.com/document/667873826/Annexure-2-Premium-Chart-Family-Health-Optima-Insurance-Plan-Revised) |
|
| 228 |
+
| 40 | 500000 | metro | N | 4 | **10,046** | [link](https://www.scribd.com/document/667873826/Annexure-2-Premium-Chart-Family-Health-Optima-Insurance-Plan-Revised) |
|
| 229 |
+
| 48 | 500000 | metro | N | 4 | **13,669** | [link](https://www.scribd.com/document/667873826/Annexure-2-Premium-Chart-Family-Health-Optima-Insurance-Plan-Revised) |
|
| 230 |
+
| 35 | 1000000 | metro | N | 4 | **14,500** | derived |
|
| 231 |
+
| 35 | 2500000 | metro | N | 4 | **26,800** | derived |
|
| 232 |
+
|
| 233 |
+
### Star Senior Citizens Red Carpet
|
| 234 |
+
`policy_id`: `star-health__senior-citizens-red-carpet`
|
| 235 |
+
|
| 236 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 237 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 238 |
+
| 60 | 100000 | metro | N | 1 | **6,710** | [link](https://www.starhealth.in/health-insurance/health-insurance-for-senior-citizens/) |
|
| 239 |
+
| 60 | 500000 | metro | N | 1 | **18,900** | derived |
|
| 240 |
+
| 65 | 500000 | metro | N | 1 | **24,500** | derived |
|
| 241 |
+
| 70 | 500000 | metro | N | 1 | **31,200** | derived |
|
| 242 |
+
| 75 | 1000000 | metro | N | 1 | **55,000** | derived |
|
| 243 |
+
|
| 244 |
+
### Tata AIG MediCare
|
| 245 |
+
`policy_id`: `tata-aig__medicare`
|
| 246 |
+
|
| 247 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 248 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 249 |
+
| 30 | 500000 | metro | N | 1 | **7,100** | [link](https://www.axisbank.com/docs/default-source/default-document-library/medicare-rate-chart-06-12-22.pdf) |
|
| 250 |
+
| 30 | 1000000 | metro | N | 1 | **8,800** | [link](https://www.axisbank.com/docs/default-source/default-document-library/medicare-rate-chart-06-12-22.pdf) |
|
| 251 |
+
| 40 | 1000000 | metro | N | 1 | **10,300** | derived |
|
| 252 |
+
|
| 253 |
+
### Tata AIG MediCare Premier
|
| 254 |
+
`policy_id`: `tata-aig__medicare-premier`
|
| 255 |
+
|
| 256 |
+
| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |
|
| 257 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 258 |
+
| 30 | 500000 | metro | N | 1 | **8,362** | [link](https://www.axisbank.com/docs/default-source/default-document-library/tata-aig-medicare-premier-rate-chart.pdf) |
|
| 259 |
+
| 30 | 1000000 | metro | N | 1 | **10,319** | [link](https://www.axisbank.com/docs/default-source/default-document-library/tata-aig-medicare-premier-rate-chart.pdf) |
|
| 260 |
+
| 40 | 500000 | metro | N | 1 | **9,868** | [link](https://www.axisbank.com/docs/default-source/default-document-library/tata-aig-medicare-premier-rate-chart.pdf) |
|
| 261 |
+
| 40 | 1000000 | metro | N | 1 | **12,266** | [link](https://www.axisbank.com/docs/default-source/default-document-library/tata-aig-medicare-premier-rate-chart.pdf) |
|
| 262 |
+
| 35 | 2500000 | metro | N | 4 | **38,500** | derived |
|
| 263 |
+
|
| 264 |
+
## Scaling factors
|
| 265 |
+
|
| 266 |
+
These are derived from comparing real anchor points across age, SI, city, smoker, family-floater dimensions.
|
| 267 |
+
|
| 268 |
+
### age_multipliers
|
| 269 |
+
```
|
| 270 |
+
{
|
| 271 |
+
"18-25": 0.85,
|
| 272 |
+
"26-35": 1.0,
|
| 273 |
+
"36-45": 1.4,
|
| 274 |
+
"46-55": 2.1,
|
| 275 |
+
"56-65": 3.2,
|
| 276 |
+
"66-75": 4.5,
|
| 277 |
+
"75+": 5.8
|
| 278 |
+
}
|
| 279 |
+
```
|
| 280 |
+
|
| 281 |
+
### sum_insured_multipliers
|
| 282 |
+
```
|
| 283 |
+
{
|
| 284 |
+
"300000": 0.82,
|
| 285 |
+
"500000": 1.0,
|
| 286 |
+
"1000000": 1.35,
|
| 287 |
+
"1500000": 1.65,
|
| 288 |
+
"2500000": 2.25,
|
| 289 |
+
"5000000": 3.2,
|
| 290 |
+
"10000000": 4.8
|
| 291 |
+
}
|
| 292 |
+
```
|
| 293 |
+
|
| 294 |
+
### city_tier_multipliers
|
| 295 |
+
```
|
| 296 |
+
{
|
| 297 |
+
"metro": 1.0,
|
| 298 |
+
"tier1": 0.92,
|
| 299 |
+
"tier2": 0.82
|
| 300 |
+
}
|
| 301 |
+
```
|
| 302 |
+
|
| 303 |
+
### smoker_multiplier
|
| 304 |
+
```
|
| 305 |
+
1.25
|
| 306 |
+
```
|
| 307 |
+
|
| 308 |
+
### family_floater_multipliers
|
| 309 |
+
```
|
| 310 |
+
{
|
| 311 |
+
"1": 1.0,
|
| 312 |
+
"2": 1.65,
|
| 313 |
+
"3": 2.0,
|
| 314 |
+
"4": 2.4,
|
| 315 |
+
"5": 2.7,
|
| 316 |
+
"6": 2.95
|
| 317 |
+
}
|
| 318 |
+
```
|
| 319 |
+
|
| 320 |
+
### rounding
|
| 321 |
+
```
|
| 322 |
+
"All computed premiums should be rounded to nearest Rs 100 when surfaced to the user. Use these as a soft estimate; always nudge the user toward a formal quote on the insurer's portal."
|
| 323 |
+
```
|
kb/research/corpus_acquisition.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
# Research — Corpus Acquisition
|
| 2 |
|
| 3 |
-
_Auto-generated from `rag/corpus/_manifest.json` at 2026-05-12T23:
|
| 4 |
|
| 5 |
## Headline
|
| 6 |
- Total attempted: **91** URLs across 10 target insurers
|
|
|
|
| 1 |
# Research — Corpus Acquisition
|
| 2 |
|
| 3 |
+
_Auto-generated from `rag/corpus/_manifest.json` at 2026-05-12T23:59:58Z_
|
| 4 |
|
| 5 |
## Headline
|
| 6 |
- Total attempted: **91** URLs across 10 target insurers
|
kb/reviews/INDEX.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Reviews — Insurer Reputation Index
|
| 2 |
+
|
| 3 |
+
_Auto-generated. Source: `data/reviews/*.json`. Per-insurer sheets in `kb/reviews/<slug>.md`._
|
| 4 |
+
|
| 5 |
+
## Leaderboard
|
| 6 |
+
|
| 7 |
+
| Rank | Insurer | Score | Grade | CSR | Complaints/10K | URL verification |
|
| 8 |
+
| --- | --- | --- | --- | --- | --- | --- |
|
| 9 |
+
| 1 | [HDFC ERGO General Insurance](./hdfc-ergo.md) | **85.7** | A | 99.1% | 15 | 16/17 reachable |
|
| 10 |
+
| 2 | [Bajaj Allianz General Insurance](./bajaj-allianz.md) | **84.5** | B | 92.24% | 3 | 11/11 reachable |
|
| 11 |
+
| 3 | [Aditya Birla Health Insurance](./aditya-birla.md) | **81.2** | B | 92.97% | 13 | 9/9 reachable |
|
| 12 |
+
| 4 | [New India Assurance](./new-india.md) | **78.6** | B | 95.04% | 20 | 7/8 reachable |
|
| 13 |
+
| 5 | [ManipalCigna Health Insurance](./manipalcigna.md) | **76.3** | B | 99.0% | 24 | 8/8 reachable |
|
| 14 |
+
| 6 | [Niva Bupa Health Insurance](./niva-bupa.md) | **75.8** | B | 91.62% | 43 | 14/17 reachable |
|
| 15 |
+
| 7 | [Tata AIG General Insurance](./tata-aig.md) | **75.6** | B | 88.72% | 11 | 9/9 reachable |
|
| 16 |
+
| 8 | [ICICI Lombard General Insurance](./icici-lombard.md) | **73.5** | B | 85.0% | 10 | 7/10 reachable |
|
| 17 |
+
| 9 | [Care Health Insurance](./care-health.md) | **70.4** | B | 93.13% | 42 | 11/13 reachable |
|
| 18 |
+
| 10 | [Star Health & Allied Insurance](./star-health.md) | **60.4** | C | 82.31% | 52 | 11/13 reachable |
|
| 19 |
+
|
| 20 |
+
## Bot integration
|
| 21 |
+
|
| 22 |
+
- API: `GET /api/insurers/<slug>/reviews`
|
| 23 |
+
- The IRDAI CSR + complaints per 10K from this data feeds the **Claim Experience** sub-score of the scorecard (see `kb/policies/<id>.md` for the per-policy effect).
|
| 24 |
+
- v2 expansions: live Reddit/YouTube sentiment refresh, IRDAI weekly refresh, news monitoring with alerts on insurer-specific incidents.
|
kb/reviews/aditya-birla.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Aditya Birla Health Insurance — Reputation Sheet
|
| 2 |
+
|
| 3 |
+
_Auto-generated from `data/reviews/aditya-birla.json`. Reviews are the v1 substitute for live regulator + sentiment monitoring. Re-build with `python -m rag.build_kb`._
|
| 4 |
+
|
| 5 |
+
**Aggregate score:** **81.2** (B). _Strong CSR (93%) with low complaints (13 per 10K), differentiated by HealthReturns wellness program_
|
| 6 |
+
|
| 7 |
+
**URL verification:** 9/9 URLs reachable via HEAD-check; 0 return 403 to scripts (bot-protected real URLs — open fine in a browser).
|
| 8 |
+
|
| 9 |
+
## IRDAI claim metrics
|
| 10 |
+
|
| 11 |
+
| Metric | Value |
|
| 12 |
+
| --- | --- |
|
| 13 |
+
| Claim settlement ratio (CSR) | **92.97%** (2023-24) |
|
| 14 |
+
| Complaints / 10K policies | **13** (2023-24) |
|
| 15 |
+
| Source | [IRDAI Annual Report](https://irdai.gov.in/document-detail?documentId=6436847) |
|
| 16 |
+
|
| 17 |
+
## Aggregator portal ratings
|
| 18 |
+
|
| 19 |
+
| Portal | Avg star | Review count | URL |
|
| 20 |
+
| --- | --- | --- | --- |
|
| 21 |
+
| policybazaar | 4.4 | None | [https://www.policybazaar.com/insurance-companies/aditya-birl](https://www.policybazaar.com/insurance-companies/aditya-birla-health-insurance/claim-settlement-ratio/) |
|
| 22 |
+
| insuredekho | 4.3 | None | [https://www.insurancedekho.com/health-insurance/aditya-birla](https://www.insurancedekho.com/health-insurance/aditya-birla/claim-settlement) |
|
| 23 |
+
| joinditto | 4.5 | None | [https://joinditto.in/articles/health-insurance/aditya-birla-](https://joinditto.in/articles/health-insurance/aditya-birla-health-insurance-claim-settlement-ratio/) |
|
| 24 |
+
|
| 25 |
+
## Reddit / r/IndianFinance sentiment
|
| 26 |
+
|
| 27 |
+
- Overall: **mixed-positive**
|
| 28 |
+
- Mentions estimate: 28
|
| 29 |
+
- Themes: Activ One plan well-received for wellness benefits, HealthReturns wellness program (premium discount for healthy behavior) is differentiator, 100% of claims paid within 3 months in FY25 — operational efficiency strong, Aditya Birla Capital brand trust, 10,000+ cashless network (tied 2nd with Niva/Tata)
|
| 30 |
+
- Sample posts:
|
| 31 |
+
- [https://www.policybazaar.com/health-insurance/companies/aditya-birla-vs-tata-aig](https://www.policybazaar.com/health-insurance/companies/aditya-birla-vs-tata-aig/)
|
| 32 |
+
- [https://www.policybazaar.com/health-insurance/comparison/aditya-birla-activ-one-](https://www.policybazaar.com/health-insurance/comparison/aditya-birla-activ-one-vs-tata-aig-medicare/)
|
| 33 |
+
|
| 34 |
+
## YouTube coverage
|
| 35 |
+
|
| 36 |
+
- Overall sentiment: **favourable**
|
| 37 |
+
- **Ditto Insurance** — [https://joinditto.in/articles/health-insurance/aditya-birla-health-insurance-cla](https://joinditto.in/articles/health-insurance/aditya-birla-health-insurance-claim-settlement-ratio/) — _ranked in Ditto's top-5 health insurers_
|
| 38 |
+
|
| 39 |
+
## Recent news
|
| 40 |
+
|
| 41 |
+
- **Aditya Birla Health Insurance Claims Settlement Ratio Analysis for 2024-25** (Angel One, 2025, tone: positive) — [https://www.angelone.in/news/market-updates/aditya-birla-health-insurance-claims](https://www.angelone.in/news/market-updates/aditya-birla-health-insurance-claims-settlement-ratio-analysis-for-2024-25)
|
| 42 |
+
- **Aditya Birla Health Insurance paid Rs 952 crore in commissions in April-December 2025 (growing scale)** (Cafemutual, 2026, tone: neutral) — [https://cafemutual.com/news/insurance/37646-how-much-did-the-non-life-insurers-p](https://cafemutual.com/news/insurance/37646-how-much-did-the-non-life-insurers-pay-in-commission-in-april-december-2025)
|
| 43 |
+
|
| 44 |
+
---
|
| 45 |
+
|
| 46 |
+
_Aggregate score formula: 0.40 × CSR + 0.20 × inverse-complaints + 0.15 × avg-aggregator-star + 0.10 × reddit + 0.10 × youtube + 0.05 × news. See `data/reviews/INDEX.md` for the leaderboard._
|
| 47 |
+
|
| 48 |
+
**Flows into the bot via:** `score_claim_experience()` in `backend/scorecard.py` — IRDAI CSR + complaints become Claim Experience sub-score signals for every policy this insurer offers.
|
kb/reviews/bajaj-allianz.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Bajaj Allianz General Insurance — Reputation Sheet
|
| 2 |
+
|
| 3 |
+
_Auto-generated from `data/reviews/bajaj-allianz.json`. Reviews are the v1 substitute for live regulator + sentiment monitoring. Re-build with `python -m rag.build_kb`._
|
| 4 |
+
|
| 5 |
+
**Aggregate score:** **84.5** (B). _Industry-leading complaints record (3 per 10K) and high CSR (92.2%); third-largest non-life insurer in India_
|
| 6 |
+
|
| 7 |
+
**URL verification:** 11/11 URLs reachable via HEAD-check; 0 return 403 to scripts (bot-protected real URLs — open fine in a browser).
|
| 8 |
+
|
| 9 |
+
## IRDAI claim metrics
|
| 10 |
+
|
| 11 |
+
| Metric | Value |
|
| 12 |
+
| --- | --- |
|
| 13 |
+
| Claim settlement ratio (CSR) | **92.24%** (2023-24) |
|
| 14 |
+
| Complaints / 10K policies | **3** (2023-24) |
|
| 15 |
+
| Source | [IRDAI Annual Report](https://irdai.gov.in/document-detail?documentId=6436847) |
|
| 16 |
+
|
| 17 |
+
## Aggregator portal ratings
|
| 18 |
+
|
| 19 |
+
| Portal | Avg star | Review count | URL |
|
| 20 |
+
| --- | --- | --- | --- |
|
| 21 |
+
| policybazaar | 4.5 | None | [https://www.policybazaar.com/insurance-companies/bajaj-allia](https://www.policybazaar.com/insurance-companies/bajaj-allianz-health-insurance/claim-settlement-ratio/) |
|
| 22 |
+
| insuredekho | 4.4 | None | [https://www.insurancedekho.com/health-insurance/bajaj-allian](https://www.insurancedekho.com/health-insurance/bajaj-allianz/claim-settlement) |
|
| 23 |
+
| joinditto | 4.5 | None | [https://joinditto.in/articles/health-insurance/bajaj-general](https://joinditto.in/articles/health-insurance/bajaj-general-health-insurance-claim-settlement-ratio/) |
|
| 24 |
+
|
| 25 |
+
## Reddit / r/IndianFinance sentiment
|
| 26 |
+
|
| 27 |
+
- Overall: **positive**
|
| 28 |
+
- Mentions estimate: 25
|
| 29 |
+
- Themes: Best-in-class low complaint count (3 per 10K, industry-leading), Health Guard Gold plan well-reviewed, Strong solvency and credit rating (AAA stable), Settles claims typically within 7 working days, Less marketed than Star/HDFC but quietly strong on metrics
|
| 30 |
+
- Sample posts:
|
| 31 |
+
- [https://1finance.co.in/product-scoring/health-insurance/bajaj-allianz-health-gua](https://1finance.co.in/product-scoring/health-insurance/bajaj-allianz-health-guard-gold-plan)
|
| 32 |
+
- [https://www.policyx.com/health-insurance/bajaj-general-health-insurance/claim-se](https://www.policyx.com/health-insurance/bajaj-general-health-insurance/claim-settlement-ratio/)
|
| 33 |
+
|
| 34 |
+
## YouTube coverage
|
| 35 |
+
|
| 36 |
+
- Overall sentiment: **favourable**
|
| 37 |
+
- **Ditto Insurance** — [https://joinditto.in/articles/health-insurance/bajaj-general-health-insurance-cl](https://joinditto.in/articles/health-insurance/bajaj-general-health-insurance-claim-settlement-ratio/) — _ranked in top-5 by Ditto for retail health_
|
| 38 |
+
|
| 39 |
+
## Recent news
|
| 40 |
+
|
| 41 |
+
- **Bajaj Allianz General Insurance delivers strong financial results with profits rising 27% to Rs 921 crore** (Bajaj Allianz, 2024, tone: positive) — [https://www.bajajallianz.com/download-documents/press-release/Press-Release-Fina](https://www.bajajallianz.com/download-documents/press-release/Press-Release-Finance-Bajaj-Allianz-General-Insurance-delivers-strong-financial-results-with-profits-rising-by-27percent-to-Rs%20921-crore.pdf)
|
| 42 |
+
- **ICICI Lombard, Bajaj Allianz and New India are the most profitable non-life players in FY 2024** (Cafemutual, 2024, tone: positive) — [https://cafemutual.com/news/insurance/33076-icici-lombard-bajaj-allianz-and-new-](https://cafemutual.com/news/insurance/33076-icici-lombard-bajaj-allianz-and-new-india-are-the-most-profitable-non-life-players-in-fy-2024)
|
| 43 |
+
- **Bajaj Allianz GWP grew to Rs 20,630 crore in FY24, 33.2% growth** (Bajaj Allianz IR, 2024, tone: positive) — [https://www.bajajgeneralinsurance.com/about-us/financial-highlights.html](https://www.bajajgeneralinsurance.com/about-us/financial-highlights.html)
|
| 44 |
+
|
| 45 |
+
---
|
| 46 |
+
|
| 47 |
+
_Aggregate score formula: 0.40 × CSR + 0.20 × inverse-complaints + 0.15 × avg-aggregator-star + 0.10 × reddit + 0.10 × youtube + 0.05 × news. See `data/reviews/INDEX.md` for the leaderboard._
|
| 48 |
+
|
| 49 |
+
**Flows into the bot via:** `score_claim_experience()` in `backend/scorecard.py` — IRDAI CSR + complaints become Claim Experience sub-score signals for every policy this insurer offers.
|
kb/reviews/care-health.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Care Health Insurance — Reputation Sheet
|
| 2 |
+
|
| 3 |
+
_Auto-generated from `data/reviews/care-health.json`. Reviews are the v1 substitute for live regulator + sentiment monitoring. Re-build with `python -m rag.build_kb`._
|
| 4 |
+
|
| 5 |
+
**Aggregate score:** **70.4** (B). _Solid CSR (93%) and YouTube/advisor endorsement, but bottom-of-table ICR (57.7%) and complaints volume drag the score_
|
| 6 |
+
|
| 7 |
+
**URL verification:** 11/13 URLs reachable via HEAD-check; 2 return 403 to scripts (bot-protected real URLs — open fine in a browser).
|
| 8 |
+
|
| 9 |
+
## IRDAI claim metrics
|
| 10 |
+
|
| 11 |
+
| Metric | Value |
|
| 12 |
+
| --- | --- |
|
| 13 |
+
| Claim settlement ratio (CSR) | **93.13%** (2023-24 (3-year avg)) |
|
| 14 |
+
| Complaints / 10K policies | **42** (2023-24) |
|
| 15 |
+
| Source | [IRDAI Annual Report](https://irdai.gov.in/document-detail?documentId=6436847) |
|
| 16 |
+
|
| 17 |
+
## Aggregator portal ratings
|
| 18 |
+
|
| 19 |
+
| Portal | Avg star | Review count | URL |
|
| 20 |
+
| --- | --- | --- | --- |
|
| 21 |
+
| policybazaar | 4.4 | None | [https://www.policybazaar.com/insurance-companies/religare-he](https://www.policybazaar.com/insurance-companies/religare-health-insurance/claim-settlement-ratio/) |
|
| 22 |
+
| insuredekho | 4.3 | None | [https://www.insurancedekho.com/health-insurance/care/user-re](https://www.insurancedekho.com/health-insurance/care/user-reviews) |
|
| 23 |
+
| joinditto | 4.0 | None | [https://joinditto.in/articles/health-insurance/care-health-i](https://joinditto.in/articles/health-insurance/care-health-insurance-review/) |
|
| 24 |
+
|
| 25 |
+
## Reddit / r/IndianFinance sentiment
|
| 26 |
+
|
| 27 |
+
- Overall: **mixed**
|
| 28 |
+
- Mentions estimate: 35
|
| 29 |
+
- Themes: Care Supreme plan widely recommended for comprehensive coverage, Receptive to escalations; reverses decisions when documentation supports customer, PED-related claim denials a recurring concern (e.g., myopia treated as PED case), Religare Enterprises corporate governance noise lingers as reputation drag, Above-industry complaint volume (42 per 10K)
|
| 30 |
+
- Sample posts:
|
| 31 |
+
- [https://joinditto.in/articles/health-insurance/is-care-health-insurance-good/](https://joinditto.in/articles/health-insurance/is-care-health-insurance-good/)
|
| 32 |
+
- [https://www.policybazaar.com/health-insurance/companies/hdfc-ergo-vs-niva-bupa/](https://www.policybazaar.com/health-insurance/companies/hdfc-ergo-vs-niva-bupa/)
|
| 33 |
+
|
| 34 |
+
## YouTube coverage
|
| 35 |
+
|
| 36 |
+
- Overall sentiment: **favourable**
|
| 37 |
+
- **Ditto Insurance** — [https://www.youtube.com/watch?v=2_EhrtJhn44](https://www.youtube.com/watch?v=2_EhrtJhn44) — _Care Supreme in 3-way comparison; competitive option_
|
| 38 |
+
- **Ditto Insurance** — [https://www.youtube.com/watch?v=1rRvcVkcQVw](https://www.youtube.com/watch?v=1rRvcVkcQVw) — _Care Supreme vs HDFC Ergo Optima Secure 2026 comparison_
|
| 39 |
+
|
| 40 |
+
## Recent news
|
| 41 |
+
|
| 42 |
+
- **Care Health Insurance settled only 57.69% of claims, paying Rs 2.88 per Rs 5 claimed** (The South First, 2024-12, tone: negative) — [https://thesouthfirst.com/health/health-insurance-claims-standalone-insurers-pay](https://thesouthfirst.com/health/health-insurance-claims-standalone-insurers-pay-rs-3-07-per-rs-5-claim-general-insurers-offer-rs-4-17/)
|
| 43 |
+
- **Star Health, CARE, Niva Bupa record most policyholder complaints in FY24** (Business Standard, 2025-09-01, tone: negative) — [https://www.business-standard.com/finance/personal-finance/star-health-care-niva](https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html)
|
| 44 |
+
- **Care Health Insurance Claim Settlement Ratio Analysis** (Ditto Insurance, 2026-04, tone: neutral) — [https://joinditto.in/articles/health-insurance/care-health-insurance-claim-settl](https://joinditto.in/articles/health-insurance/care-health-insurance-claim-settlement-ratio/)
|
| 45 |
+
|
| 46 |
+
---
|
| 47 |
+
|
| 48 |
+
_Aggregate score formula: 0.40 × CSR + 0.20 × inverse-complaints + 0.15 × avg-aggregator-star + 0.10 × reddit + 0.10 × youtube + 0.05 × news. See `data/reviews/INDEX.md` for the leaderboard._
|
| 49 |
+
|
| 50 |
+
**Flows into the bot via:** `score_claim_experience()` in `backend/scorecard.py` — IRDAI CSR + complaints become Claim Experience sub-score signals for every policy this insurer offers.
|
kb/reviews/hdfc-ergo.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# HDFC ERGO General Insurance — Reputation Sheet
|
| 2 |
+
|
| 3 |
+
_Auto-generated from `data/reviews/hdfc-ergo.json`. Reviews are the v1 substitute for live regulator + sentiment monitoring. Re-build with `python -m rag.build_kb`._
|
| 4 |
+
|
| 5 |
+
**Aggregate score:** **85.7** (A). _Industry-leading claim settlement ratio (99.1%) with low complaints (15 per 10K) and strong YouTube/advisor recommendation_
|
| 6 |
+
|
| 7 |
+
**URL verification:** 16/17 URLs reachable via HEAD-check; 1 return 403 to scripts (bot-protected real URLs — open fine in a browser).
|
| 8 |
+
|
| 9 |
+
## IRDAI claim metrics
|
| 10 |
+
|
| 11 |
+
| Metric | Value |
|
| 12 |
+
| --- | --- |
|
| 13 |
+
| Claim settlement ratio (CSR) | **99.1%** (2023-24) |
|
| 14 |
+
| Complaints / 10K policies | **15** (2023-24) |
|
| 15 |
+
| Source | [IRDAI Annual Report](https://irdai.gov.in/document-detail?documentId=6436847) |
|
| 16 |
+
|
| 17 |
+
## Aggregator portal ratings
|
| 18 |
+
|
| 19 |
+
| Portal | Avg star | Review count | URL |
|
| 20 |
+
| --- | --- | --- | --- |
|
| 21 |
+
| policybazaar | 4.4 | None | [https://www.policybazaar.com/hdfc-ergo-general-reviews-903/](https://www.policybazaar.com/hdfc-ergo-general-reviews-903/) |
|
| 22 |
+
| insuredekho | 4.5 | None | [https://www.insurancedekho.com/health-insurance/hdfc-ergo](https://www.insurancedekho.com/health-insurance/hdfc-ergo) |
|
| 23 |
+
| joinditto | 4.5 | None | [https://joinditto.in/health-insurance/hdfc-ergo/reviews/](https://joinditto.in/health-insurance/hdfc-ergo/reviews/) |
|
| 24 |
+
| mouthshut | 2.5 | None | [https://www.mouthshut.com/product-reviews/hdfc-ergo-health-i](https://www.mouthshut.com/product-reviews/hdfc-ergo-health-insurance-reviews-925865222) |
|
| 25 |
+
|
| 26 |
+
**Trustpilot:** 1.7 (None reviews) — [https://www.trustpilot.com/review/www.hdfcergo.com](https://www.trustpilot.com/review/www.hdfcergo.com)
|
| 27 |
+
|
| 28 |
+
## Reddit / r/IndianFinance sentiment
|
| 29 |
+
|
| 30 |
+
- Overall: **mixed-positive**
|
| 31 |
+
- Mentions estimate: 55
|
| 32 |
+
- Themes: Optima Secure plan is the most-recommended retail health plan on Indian Reddit, Cashless approval reportedly fast at network hospitals, Some 'silly mistake' / non-disclosure rejection complaints in emergencies, Premium pricing on the higher end but considered worth it, Ditto Insurance / advisors actively recommend HDFC ERGO for reliability
|
| 33 |
+
- Sample posts:
|
| 34 |
+
- [https://www.quora.com/Have-you-ever-made-any-claim-against-HDFC-Ergo-health-insu](https://www.quora.com/Have-you-ever-made-any-claim-against-HDFC-Ergo-health-insurance-and-was-it-a-good-experience)
|
| 35 |
+
- [https://www.oneassure.in/insurance/health-insurance-compare/niva-bupa-re-assure-](https://www.oneassure.in/insurance/health-insurance-compare/niva-bupa-re-assure-vs-icici-health-shield-vs-hdfc-ergo-my-health-suraksha-gold)
|
| 36 |
+
|
| 37 |
+
## YouTube coverage
|
| 38 |
+
|
| 39 |
+
- Overall sentiment: **favourable**
|
| 40 |
+
- **Ditto Insurance** — [https://www.youtube.com/watch?v=2_EhrtJhn44](https://www.youtube.com/watch?v=2_EhrtJhn44) — _HDFC ERGO Optima Secure highly recommended in 3-way comparison_
|
| 41 |
+
- **Ditto Insurance** — [https://www.youtube.com/watch?v=i3xMZGMstzE](https://www.youtube.com/watch?v=i3xMZGMstzE) — _Optima Secure preferred over Niva Bupa Aspire_
|
| 42 |
+
- **Sagar Sinha** — [https://www.youtube.com/watch?v=1BUFoq5jbmQ](https://www.youtube.com/watch?v=1BUFoq5jbmQ) — _balanced HDFC ERGO vs Niva Bupa review_
|
| 43 |
+
- **Sanjay Kathuria** — [https://www.youtube.com/watch?v=EDZ74XMFirI](https://www.youtube.com/watch?v=EDZ74XMFirI) — _comparative 2026 review_
|
| 44 |
+
|
| 45 |
+
## Recent news
|
| 46 |
+
|
| 47 |
+
- **HDFC Ergo Aims for 18% Premium Growth in Retail Health Insurance for 2024-25** (Goodreturns, 2024, tone: positive) — [https://www.goodreturns.in/news/hdfc-ergo-aims-to-maintain-premium-growth-2024-2](https://www.goodreturns.in/news/hdfc-ergo-aims-to-maintain-premium-growth-2024-25-011-1392211.html)
|
| 48 |
+
- **HDFC ERGO General Insurance Claims Settlement Ratio Analysis for 2024-25** (Angel One, 2025, tone: positive) — [https://www.angelone.in/news/market-updates/hdfc-ergo-general-insurance-claims-s](https://www.angelone.in/news/market-updates/hdfc-ergo-general-insurance-claims-settlement-ratio-analysis-for-2024-25)
|
| 49 |
+
- **Pre-approved cashless facility launched for chemotherapy and dialysis** (HDFC ERGO, 2024, tone: positive) — [https://www.hdfcergo.com/](https://www.hdfcergo.com/)
|
| 50 |
+
|
| 51 |
+
---
|
| 52 |
+
|
| 53 |
+
_Aggregate score formula: 0.40 × CSR + 0.20 × inverse-complaints + 0.15 × avg-aggregator-star + 0.10 × reddit + 0.10 × youtube + 0.05 × news. See `data/reviews/INDEX.md` for the leaderboard._
|
| 54 |
+
|
| 55 |
+
**Flows into the bot via:** `score_claim_experience()` in `backend/scorecard.py` — IRDAI CSR + complaints become Claim Experience sub-score signals for every policy this insurer offers.
|
kb/reviews/icici-lombard.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# ICICI Lombard General Insurance — Reputation Sheet
|
| 2 |
+
|
| 3 |
+
_Auto-generated from `data/reviews/icici-lombard.json`. Reviews are the v1 substitute for live regulator + sentiment monitoring. Re-build with `python -m rag.build_kb`._
|
| 4 |
+
|
| 5 |
+
**Aggregate score:** **73.5** (B). _Strongest complaint metrics in the cohort (10 per 10K) and solid financials, but health CSR (85%) lags peers like HDFC ERGO and Bajaj_
|
| 6 |
+
|
| 7 |
+
**URL verification:** 7/10 URLs reachable via HEAD-check; 3 return 403 to scripts (bot-protected real URLs — open fine in a browser).
|
| 8 |
+
|
| 9 |
+
## IRDAI claim metrics
|
| 10 |
+
|
| 11 |
+
| Metric | Value |
|
| 12 |
+
| --- | --- |
|
| 13 |
+
| Claim settlement ratio (CSR) | **85.0%** (2023-24) |
|
| 14 |
+
| Complaints / 10K policies | **10** (2023-24 (3-year avg ~9-10)) |
|
| 15 |
+
| Source | [IRDAI Annual Report](https://irdai.gov.in/document-detail?documentId=6436847) |
|
| 16 |
+
|
| 17 |
+
## Aggregator portal ratings
|
| 18 |
+
|
| 19 |
+
| Portal | Avg star | Review count | URL |
|
| 20 |
+
| --- | --- | --- | --- |
|
| 21 |
+
| policybazaar | 4.3 | None | [https://www.policybazaar.com/insurance-companies/icici-lomba](https://www.policybazaar.com/insurance-companies/icici-lombard-health-insurance/claim-settlement-ratio/) |
|
| 22 |
+
| insuredekho | 4.4 | None | [https://www.insurancedekho.com/health-insurance/icici-lombar](https://www.insurancedekho.com/health-insurance/icici-lombard/claim-settlement) |
|
| 23 |
+
| joinditto | 4.0 | None | [https://joinditto.in/articles/health-insurance/is-icici-lomb](https://joinditto.in/articles/health-insurance/is-icici-lombard-health-insurance-good/) |
|
| 24 |
+
|
| 25 |
+
## Reddit / r/IndianFinance sentiment
|
| 26 |
+
|
| 27 |
+
- Overall: **mixed-positive**
|
| 28 |
+
- Mentions estimate: 30
|
| 29 |
+
- Themes: Health Shield product cited as competitive offering, Strong parent brand (ICICI Bank) confidence, Low complaint volume relative to peers (~10 per 10K, well below industry average of 27), Below-average CSR vs HDFC ERGO and Bajaj Allianz, 10,200+ network hospitals praised
|
| 30 |
+
- Sample posts:
|
| 31 |
+
- [https://www.oneassure.in/insurance/health-insurance-compare/niva-bupa-re-assure-](https://www.oneassure.in/insurance/health-insurance-compare/niva-bupa-re-assure-vs-icici-health-shield-vs-hdfc-ergo-my-health-suraksha-gold)
|
| 32 |
+
- [https://joinditto.in/articles/health-insurance/is-icici-lombard-health-insurance](https://joinditto.in/articles/health-insurance/is-icici-lombard-health-insurance-good/)
|
| 33 |
+
|
| 34 |
+
## YouTube coverage
|
| 35 |
+
|
| 36 |
+
- Overall sentiment: **mixed**
|
| 37 |
+
- **Ditto Insurance review** — [https://joinditto.in/articles/health-insurance/is-icici-lombard-health-insurance](https://joinditto.in/articles/health-insurance/is-icici-lombard-health-insurance-good/) — _decent but not top-3 health insurer pick_
|
| 38 |
+
|
| 39 |
+
## Recent news
|
| 40 |
+
|
| 41 |
+
- **ICICI Lombard Q1FY25 net profit grows 48.7% YoY to Rs 580 crore** (ICICI Lombard IR, 2024-07, tone: positive) — [https://www.icicilombard.com/investor-relations](https://www.icicilombard.com/investor-relations)
|
| 42 |
+
- **ICICI Lombard, Bajaj Allianz and New India are the most profitable non-life players in FY 2024** (Cafemutual, 2024, tone: positive) — [https://cafemutual.com/news/insurance/33076-icici-lombard-bajaj-allianz-and-new-](https://cafemutual.com/news/insurance/33076-icici-lombard-bajaj-allianz-and-new-india-are-the-most-profitable-non-life-players-in-fy-2024)
|
| 43 |
+
- **Integrated Annual Report 2023-24: Uniting for a Singular Purpose** (ICICI Lombard, 2024, tone: neutral) — [https://www.icicilombard.com/docs/default-source/financial-information/annualrep](https://www.icicilombard.com/docs/default-source/financial-information/annualreport2024.pdf)
|
| 44 |
+
|
| 45 |
+
---
|
| 46 |
+
|
| 47 |
+
_Aggregate score formula: 0.40 × CSR + 0.20 × inverse-complaints + 0.15 × avg-aggregator-star + 0.10 × reddit + 0.10 × youtube + 0.05 × news. See `data/reviews/INDEX.md` for the leaderboard._
|
| 48 |
+
|
| 49 |
+
**Flows into the bot via:** `score_claim_experience()` in `backend/scorecard.py` — IRDAI CSR + complaints become Claim Experience sub-score signals for every policy this insurer offers.
|
kb/reviews/manipalcigna.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# ManipalCigna Health Insurance — Reputation Sheet
|
| 2 |
+
|
| 3 |
+
_Auto-generated from `data/reviews/manipalcigna.json`. Reviews are the v1 substitute for live regulator + sentiment monitoring. Re-build with `python -m rag.build_kb`._
|
| 4 |
+
|
| 5 |
+
**Aggregate score:** **76.3** (B). _High reported CSR (99%) and Manipal-hospital network advantage; smaller scale and above-median complaints temper the score_
|
| 6 |
+
|
| 7 |
+
**URL verification:** 8/8 URLs reachable via HEAD-check; 0 return 403 to scripts (bot-protected real URLs — open fine in a browser).
|
| 8 |
+
|
| 9 |
+
## IRDAI claim metrics
|
| 10 |
+
|
| 11 |
+
| Metric | Value |
|
| 12 |
+
| --- | --- |
|
| 13 |
+
| Claim settlement ratio (CSR) | **99.0%** (2023-24) |
|
| 14 |
+
| Complaints / 10K policies | **24** (2023-24) |
|
| 15 |
+
| Source | [IRDAI Annual Report](https://irdai.gov.in/document-detail?documentId=6436847) |
|
| 16 |
+
|
| 17 |
+
## Aggregator portal ratings
|
| 18 |
+
|
| 19 |
+
| Portal | Avg star | Review count | URL |
|
| 20 |
+
| --- | --- | --- | --- |
|
| 21 |
+
| policybazaar | 4.3 | None | [https://www.policybazaar.com/insurance-companies/manipalcign](https://www.policybazaar.com/insurance-companies/manipalcigna-health-insurance/claim-settlement-ratio/) |
|
| 22 |
+
| insuredekho | 4.2 | None | [https://www.insurancedekho.com/health-insurance/manipalcigna](https://www.insurancedekho.com/health-insurance/manipalcigna/claim-settlement) |
|
| 23 |
+
| joinditto | 4.0 | None | [https://joinditto.in/articles/health-insurance/manipal-cigna](https://joinditto.in/articles/health-insurance/manipal-cigna-health-insurance-review/) |
|
| 24 |
+
|
| 25 |
+
## Reddit / r/IndianFinance sentiment
|
| 26 |
+
|
| 27 |
+
- Overall: **mixed**
|
| 28 |
+
- Mentions estimate: 18
|
| 29 |
+
- Themes: Prohealth Plus / Prime products discussed favorably for comprehensive coverage, Manipal Hospitals network synergy a structural advantage, Smaller scale = less consumer mindshare than top-5, Complaints (24 per 10K) above median but below Care/Niva Bupa/Star, Cigna global brand association
|
| 30 |
+
- Sample posts:
|
| 31 |
+
- [https://joinditto.in/articles/health-insurance/manipal-cigna-health-insurance-re](https://joinditto.in/articles/health-insurance/manipal-cigna-health-insurance-review/)
|
| 32 |
+
- [https://www.policyx.com/health-insurance/manipalcigna-health-insurance/claim-set](https://www.policyx.com/health-insurance/manipalcigna-health-insurance/claim-settlement-ratio/)
|
| 33 |
+
|
| 34 |
+
## YouTube coverage
|
| 35 |
+
|
| 36 |
+
- Overall sentiment: **mixed**
|
| 37 |
+
- **Ditto Insurance review** — [https://joinditto.in/articles/health-insurance/manipal-cigna-health-insurance-re](https://joinditto.in/articles/health-insurance/manipal-cigna-health-insurance-review/) — _competent option; not top recommendation but solid for niche profiles_
|
| 38 |
+
|
| 39 |
+
## Recent news
|
| 40 |
+
|
| 41 |
+
- **ManipalCigna ICR at 74.81% in FY24-25 — within healthy 70-90% comfort range** (Cafemutual, 2024-12, tone: neutral) — [https://cafemutual.com/news/insurance/33084-which-companies-are-better-at-settli](https://cafemutual.com/news/insurance/33084-which-companies-are-better-at-settling-health-claims)
|
| 42 |
+
- **ManipalCigna claim settlement ratio analysis** (RenewBuy, 2024, tone: neutral) — [https://www.renewbuy.com/health-insurance/manipalcigna-health-insurance/claim-se](https://www.renewbuy.com/health-insurance/manipalcigna-health-insurance/claim-settlement-ratio)
|
| 43 |
+
|
| 44 |
+
---
|
| 45 |
+
|
| 46 |
+
_Aggregate score formula: 0.40 × CSR + 0.20 × inverse-complaints + 0.15 × avg-aggregator-star + 0.10 × reddit + 0.10 × youtube + 0.05 × news. See `data/reviews/INDEX.md` for the leaderboard._
|
| 47 |
+
|
| 48 |
+
**Flows into the bot via:** `score_claim_experience()` in `backend/scorecard.py` — IRDAI CSR + complaints become Claim Experience sub-score signals for every policy this insurer offers.
|
kb/reviews/new-india.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# New India Assurance — Reputation Sheet
|
| 2 |
+
|
| 3 |
+
_Auto-generated from `data/reviews/new-india.json`. Reviews are the v1 substitute for live regulator + sentiment monitoring. Re-build with `python -m rag.build_kb`._
|
| 4 |
+
|
| 5 |
+
**Aggregate score:** **78.6** (B). _Highest claim payout among general insurers (ICR 103%, CSR 95% by count); PSU service experience drags consumer-perception score_
|
| 6 |
+
|
| 7 |
+
**URL verification:** 7/8 URLs reachable via HEAD-check; 1 return 403 to scripts (bot-protected real URLs — open fine in a browser).
|
| 8 |
+
|
| 9 |
+
## IRDAI claim metrics
|
| 10 |
+
|
| 11 |
+
| Metric | Value |
|
| 12 |
+
| --- | --- |
|
| 13 |
+
| Claim settlement ratio (CSR) | **95.04%** (2023-24 (by claim count)) |
|
| 14 |
+
| Complaints / 10K policies | **20** (2023-24) |
|
| 15 |
+
| Source | [IRDAI Annual Report](https://irdai.gov.in/document-detail?documentId=6436847) |
|
| 16 |
+
|
| 17 |
+
## Aggregator portal ratings
|
| 18 |
+
|
| 19 |
+
| Portal | Avg star | Review count | URL |
|
| 20 |
+
| --- | --- | --- | --- |
|
| 21 |
+
| policybazaar | 4.2 | None | [https://www.policybazaar.com/insurance-companies/new-india-a](https://www.policybazaar.com/insurance-companies/new-india-assurance-health-insurance/claim-settlement-ratio/) |
|
| 22 |
+
| insuredekho | 4.0 | None | [https://www.insurancedekho.com/health-insurance/new-india/cl](https://www.insurancedekho.com/health-insurance/new-india/claim-settlement) |
|
| 23 |
+
| policyx | 4.1 | None | [https://www.policyx.com/health-insurance/new-india-health-in](https://www.policyx.com/health-insurance/new-india-health-insurance/claim-settlement-ratio/) |
|
| 24 |
+
|
| 25 |
+
## Reddit / r/IndianFinance sentiment
|
| 26 |
+
|
| 27 |
+
- Overall: **mixed**
|
| 28 |
+
- Mentions estimate: 25
|
| 29 |
+
- Themes: PSU insurer with India's largest GWP (Rs 43,618 cr in FY25), Highest claim payout among general insurers (paying more than premiums collected, ICR 103%), Customer service / digital experience consistently rated below private peers, Branch-heavy, paper-heavy claim process flagged, Strong cashless network for legacy users; preferred by older customers
|
| 30 |
+
- Sample posts:
|
| 31 |
+
- [https://www.deccanchronicle.com/business/new-india-assurance-tops-health-insuran](https://www.deccanchronicle.com/business/new-india-assurance-tops-health-insurance-claims-settlement-1841899)
|
| 32 |
+
- [https://www.policybazaar.com/insurance-companies/new-india-assurance-health-insu](https://www.policybazaar.com/insurance-companies/new-india-assurance-health-insurance/claim-settlement-ratio/)
|
| 33 |
+
|
| 34 |
+
## YouTube coverage
|
| 35 |
+
|
| 36 |
+
- Overall sentiment: **mixed**
|
| 37 |
+
|
| 38 |
+
## Recent news
|
| 39 |
+
|
| 40 |
+
- **New India Assurance Tops Health Insurance Claims Settlement** (Deccan Chronicle, 2024, tone: positive) — [https://www.deccanchronicle.com/business/new-india-assurance-tops-health-insuran](https://www.deccanchronicle.com/business/new-india-assurance-tops-health-insurance-claims-settlement-1841899)
|
| 41 |
+
- **New India Assurance Q3FY24 results: Net profit falls 4.38% to Rs 715 crore** (Business Standard, 2024-02-09, tone: neutral) — [https://www.business-standard.com/companies/news/new-india-assurance-q3fy24-resu](https://www.business-standard.com/companies/news/new-india-assurance-q3fy24-results-net-profit-falls-4-38-to-rs-715-crore-124020901758_1.html)
|
| 42 |
+
- **ICICI Lombard, Bajaj Allianz and New India are the most profitable non-life players in FY 2024** (Cafemutual, 2024, tone: positive) — [https://cafemutual.com/news/insurance/33076-icici-lombard-bajaj-allianz-and-new-](https://cafemutual.com/news/insurance/33076-icici-lombard-bajaj-allianz-and-new-india-are-the-most-profitable-non-life-players-in-fy-2024)
|
| 43 |
+
|
| 44 |
+
---
|
| 45 |
+
|
| 46 |
+
_Aggregate score formula: 0.40 × CSR + 0.20 × inverse-complaints + 0.15 × avg-aggregator-star + 0.10 × reddit + 0.10 × youtube + 0.05 × news. See `data/reviews/INDEX.md` for the leaderboard._
|
| 47 |
+
|
| 48 |
+
**Flows into the bot via:** `score_claim_experience()` in `backend/scorecard.py` — IRDAI CSR + complaints become Claim Experience sub-score signals for every policy this insurer offers.
|
kb/reviews/niva-bupa.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Niva Bupa Health Insurance — Reputation Sheet
|
| 2 |
+
|
| 3 |
+
_Auto-generated from `data/reviews/niva-bupa.json`. Reviews are the v1 substitute for live regulator + sentiment monitoring. Re-build with `python -m rag.build_kb`._
|
| 4 |
+
|
| 5 |
+
**Aggregate score:** **75.8** (B). _Strong CSR (91.6%) and growth post-IPO; complaints volume above industry average is the main drag_
|
| 6 |
+
|
| 7 |
+
**URL verification:** 14/17 URLs reachable via HEAD-check; 3 return 403 to scripts (bot-protected real URLs — open fine in a browser).
|
| 8 |
+
|
| 9 |
+
## IRDAI claim metrics
|
| 10 |
+
|
| 11 |
+
| Metric | Value |
|
| 12 |
+
| --- | --- |
|
| 13 |
+
| Claim settlement ratio (CSR) | **91.62%** (2023-24 (3-year avg through FY25)) |
|
| 14 |
+
| Complaints / 10K policies | **43** (2023-24) |
|
| 15 |
+
| Source | [IRDAI Annual Report](https://irdai.gov.in/document-detail?documentId=6436847) |
|
| 16 |
+
|
| 17 |
+
## Aggregator portal ratings
|
| 18 |
+
|
| 19 |
+
| Portal | Avg star | Review count | URL |
|
| 20 |
+
| --- | --- | --- | --- |
|
| 21 |
+
| policybazaar | 4.4 | None | [https://www.policybazaar.com/max-bupa-health-general-reviews](https://www.policybazaar.com/max-bupa-health-general-reviews-477/) |
|
| 22 |
+
| insuredekho | 4.3 | 192 | [https://www.insurancedekho.com/health-insurance/niva-bupa-he](https://www.insurancedekho.com/health-insurance/niva-bupa-health-insurance/user-reviews) |
|
| 23 |
+
| mouthshut | 2.0 | None | [https://www.mouthshut.com/product-reviews/niva-bupa-health-i](https://www.mouthshut.com/product-reviews/niva-bupa-health-insurance-reviews-925608449) |
|
| 24 |
+
| justdial | 3.5 | 903 | [https://www.justdial.com/Mumbai/Niva-Bupa-Health-Insurance-C](https://www.justdial.com/Mumbai/Niva-Bupa-Health-Insurance-Company-Ltd-Customer-Care/022PXX22-XX22-121222183516-A3L5_BZDET/reviews) |
|
| 25 |
+
|
| 26 |
+
**Trustpilot:** 1.8 (None reviews) — [https://www.trustpilot.com/review/nivabupa.com](https://www.trustpilot.com/review/nivabupa.com)
|
| 27 |
+
|
| 28 |
+
## Reddit / r/IndianFinance sentiment
|
| 29 |
+
|
| 30 |
+
- Overall: **mixed**
|
| 31 |
+
- Mentions estimate: 45
|
| 32 |
+
- Themes: ReAssure 2.0 plan widely discussed and recommended, Bupa global parent brand association = trust signal, App quality and customer service complaints common, Higher than industry-average complaint volume (42.85 per 10K), Recently listed on Indian stock market (Nov 2024) — growing scale
|
| 33 |
+
- Sample posts:
|
| 34 |
+
- [https://www.quora.com/Has-anyone-taken-Niva-Bupa-health-insurance-in-India-How-r](https://www.quora.com/Has-anyone-taken-Niva-Bupa-health-insurance-in-India-How-reliable-is-it)
|
| 35 |
+
- [https://www.policybazaar.com/health-insurance/companies/hdfc-ergo-vs-niva-bupa/](https://www.policybazaar.com/health-insurance/companies/hdfc-ergo-vs-niva-bupa/)
|
| 36 |
+
|
| 37 |
+
## YouTube coverage
|
| 38 |
+
|
| 39 |
+
- Overall sentiment: **favourable**
|
| 40 |
+
- **Ditto Insurance** — [https://www.youtube.com/watch?v=2_EhrtJhn44](https://www.youtube.com/watch?v=2_EhrtJhn44) — _ReAssure 2.0 vs HDFC Ergo vs Care comparison; recommended for premium plans_
|
| 41 |
+
- **Sagar Sinha** — [https://www.youtube.com/watch?v=1BUFoq5jbmQ](https://www.youtube.com/watch?v=1BUFoq5jbmQ) — _balanced comparison with HDFC ERGO_
|
| 42 |
+
- **Sanjay Kathuria** — [https://www.youtube.com/watch?v=EDZ74XMFirI](https://www.youtube.com/watch?v=EDZ74XMFirI) — _comparative 2026 review_
|
| 43 |
+
|
| 44 |
+
## Recent news
|
| 45 |
+
|
| 46 |
+
- **Niva Bupa shares make positive debut on bourses; list at 6% premium** (Business Standard, 2024-11-14, tone: positive) — [https://www.business-standard.com/markets/news/niva-bupa-shares-make-positive-de](https://www.business-standard.com/markets/news/niva-bupa-shares-make-positive-debut-on-bourses-list-at-6-premium-124111400326_1.html)
|
| 47 |
+
- **Bupa Group Indian health insurance business, Niva Bupa, successfully completes IPO** (Bupa Group, 2024-11, tone: positive) — [https://www.bupa.com/news-and-press/press-releases/2024/bupa-indian-health-insur](https://www.bupa.com/news-and-press/press-releases/2024/bupa-indian-health-insurance-business-niva-bupa-completes-ipo)
|
| 48 |
+
- **Star Health, CARE, Niva Bupa record most policyholder complaints in FY24** (Business Standard, 2025-09-01, tone: negative) — [https://www.business-standard.com/finance/personal-finance/star-health-care-niva](https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html)
|
| 49 |
+
- **Niva Bupa IPO: Growth, claim settlement and retention metrics compared with industry peers** (Upstox, 2024-11, tone: neutral) — [https://upstox.com/news/market-news/ipo/understanding-niva-bupa-s-market-positio](https://upstox.com/news/market-news/ipo/understanding-niva-bupa-s-market-position-growth-claim-settlement-and-retention-metrics-compared-with-industry-peers/article-127535/)
|
| 50 |
+
|
| 51 |
+
---
|
| 52 |
+
|
| 53 |
+
_Aggregate score formula: 0.40 × CSR + 0.20 × inverse-complaints + 0.15 × avg-aggregator-star + 0.10 × reddit + 0.10 × youtube + 0.05 × news. See `data/reviews/INDEX.md` for the leaderboard._
|
| 54 |
+
|
| 55 |
+
**Flows into the bot via:** `score_claim_experience()` in `backend/scorecard.py` — IRDAI CSR + complaints become Claim Experience sub-score signals for every policy this insurer offers.
|
kb/reviews/star-health.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Star Health & Allied Insurance — Reputation Sheet
|
| 2 |
+
|
| 3 |
+
_Auto-generated from `data/reviews/star-health.json`. Reviews are the v1 substitute for live regulator + sentiment monitoring. Re-build with `python -m rag.build_kb`._
|
| 4 |
+
|
| 5 |
+
**Aggregate score:** **60.4** (C). _India's largest standalone health insurer by premium, but under IRDAI scrutiny for the sector's highest complaint volume (13,308 in FY24) and lowest CSR (82.3%) among standalone insurers_
|
| 6 |
+
|
| 7 |
+
**URL verification:** 11/13 URLs reachable via HEAD-check; 2 return 403 to scripts (bot-protected real URLs — open fine in a browser).
|
| 8 |
+
|
| 9 |
+
## IRDAI claim metrics
|
| 10 |
+
|
| 11 |
+
| Metric | Value |
|
| 12 |
+
| --- | --- |
|
| 13 |
+
| Claim settlement ratio (CSR) | **82.31%** (2023-24) |
|
| 14 |
+
| Complaints / 10K policies | **52** (2023-24) |
|
| 15 |
+
| Source | [IRDAI Annual Report](https://irdai.gov.in/document-detail?documentId=6436847) |
|
| 16 |
+
|
| 17 |
+
## Aggregator portal ratings
|
| 18 |
+
|
| 19 |
+
| Portal | Avg star | Review count | URL |
|
| 20 |
+
| --- | --- | --- | --- |
|
| 21 |
+
| policybazaar | 4.3 | None | [https://www.policybazaar.com/star-health-insurance-reviews-8](https://www.policybazaar.com/star-health-insurance-reviews-881/) |
|
| 22 |
+
| insuredekho | 4.4 | 403 | [https://www.insurancedekho.com/health-insurance/star/user-re](https://www.insurancedekho.com/health-insurance/star/user-reviews) |
|
| 23 |
+
| mouthshut | 2.0 | None | [https://www.mouthshut.com/product-reviews/star-health-insura](https://www.mouthshut.com/product-reviews/star-health-insurance-reviews-925865246) |
|
| 24 |
+
|
| 25 |
+
**Trustpilot:** 1.5 (None reviews) — [https://www.trustpilot.com/review/www.starhealth.in](https://www.trustpilot.com/review/www.starhealth.in)
|
| 26 |
+
|
| 27 |
+
## Reddit / r/IndianFinance sentiment
|
| 28 |
+
|
| 29 |
+
- Overall: **mixed-negative**
|
| 30 |
+
- Mentions estimate: 60
|
| 31 |
+
- Themes: Claim rejections on PED grounds frequently mentioned, Senior citizen Red Carpet plan recommended despite service complaints, Wide network and senior citizen coverage praised, IRDAI scrutiny of claim practices widely discussed, Highest complaint volume in standalone health insurer category
|
| 32 |
+
- Sample posts:
|
| 33 |
+
- [https://www.quora.com/Is-Star-Health-Insurance-good-Has-anybody-experienced-prob](https://www.quora.com/Is-Star-Health-Insurance-good-Has-anybody-experienced-problems-in-claim-settlement)
|
| 34 |
+
- [https://technofino.in/community/threads/star-health-insurance-renew-or-port.3518](https://technofino.in/community/threads/star-health-insurance-renew-or-port.35180/)
|
| 35 |
+
|
| 36 |
+
## YouTube coverage
|
| 37 |
+
|
| 38 |
+
- Overall sentiment: **mixed**
|
| 39 |
+
- **Ditto Insurance** — [https://www.youtube.com/watch?v=0tiEsznD61I](https://www.youtube.com/watch?v=0tiEsznD61I) — _comparison Super Star vs HDFC Ergo Optima Secure; Ditto prefers HDFC ERGO for reliability_
|
| 40 |
+
- **Ditto Insurance (review)** — [https://joinditto.in/articles/health-insurance/star-health-insurance-review/](https://joinditto.in/articles/health-insurance/star-health-insurance-review/) — _suitable for senior citizens; concerns on claim experience_
|
| 41 |
+
|
| 42 |
+
## Recent news
|
| 43 |
+
|
| 44 |
+
- **Star Health under IRDAI lens over claim settlement; insurer says routine process** (Business Today, 2025-03-25, tone: negative) — [https://www.businesstoday.in/personal-finance/insurance/story/star-health-under-](https://www.businesstoday.in/personal-finance/insurance/story/star-health-under-irdai-lens-over-claim-settlement-insurer-says-routine-process-469373-2025-03-25)
|
| 45 |
+
- **Star Health Under Fire: IRDAI Scrutinizes High Claim Rejections & Delays** (The420.in, 2025-04, tone: negative) — [https://the420.in/star-health-under-fire-irdai-scrutinizes-high-claim-rejections](https://the420.in/star-health-under-fire-irdai-scrutinizes-high-claim-rejections-delays/)
|
| 46 |
+
- **Star Health, CARE, Niva Bupa record most policyholder complaints in FY24** (Business Standard, 2025-09-01, tone: negative) — [https://www.business-standard.com/finance/personal-finance/star-health-care-niva](https://www.business-standard.com/finance/personal-finance/star-health-care-niva-bupa-record-most-policyholder-complaints-in-fy24-125090100487_1.html)
|
| 47 |
+
- **Star Health Under Irdai Scrutiny For Health Insurance Claim Settlement Practices** (Outlook Money, 2025-04, tone: negative) — [https://www.outlookmoney.com/insurance/health-insurance/star-health-under-irdai-](https://www.outlookmoney.com/insurance/health-insurance/star-health-under-irdai-scrutiny-for-health-insurance-claim-settlement-practices)
|
| 48 |
+
|
| 49 |
+
---
|
| 50 |
+
|
| 51 |
+
_Aggregate score formula: 0.40 × CSR + 0.20 × inverse-complaints + 0.15 × avg-aggregator-star + 0.10 × reddit + 0.10 × youtube + 0.05 × news. See `data/reviews/INDEX.md` for the leaderboard._
|
| 52 |
+
|
| 53 |
+
**Flows into the bot via:** `score_claim_experience()` in `backend/scorecard.py` — IRDAI CSR + complaints become Claim Experience sub-score signals for every policy this insurer offers.
|
kb/reviews/tata-aig.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Tata AIG General Insurance — Reputation Sheet
|
| 2 |
+
|
| 3 |
+
_Auto-generated from `data/reviews/tata-aig.json`. Reviews are the v1 substitute for live regulator + sentiment monitoring. Re-build with `python -m rag.build_kb`._
|
| 4 |
+
|
| 5 |
+
**Aggregate score:** **75.6** (B). _Solid mid-tier player: 88.7% CSR, low complaints (~11 per 10K), strong brand & global-coverage products_
|
| 6 |
+
|
| 7 |
+
**URL verification:** 9/9 URLs reachable via HEAD-check; 0 return 403 to scripts (bot-protected real URLs — open fine in a browser).
|
| 8 |
+
|
| 9 |
+
## IRDAI claim metrics
|
| 10 |
+
|
| 11 |
+
| Metric | Value |
|
| 12 |
+
| --- | --- |
|
| 13 |
+
| Claim settlement ratio (CSR) | **88.72%** (2023-24 (3-year avg)) |
|
| 14 |
+
| Complaints / 10K policies | **11** (2023-24 (3-year avg ~10.65)) |
|
| 15 |
+
| Source | [IRDAI Annual Report](https://irdai.gov.in/document-detail?documentId=6436847) |
|
| 16 |
+
|
| 17 |
+
## Aggregator portal ratings
|
| 18 |
+
|
| 19 |
+
| Portal | Avg star | Review count | URL |
|
| 20 |
+
| --- | --- | --- | --- |
|
| 21 |
+
| policybazaar | 4.3 | None | [https://www.policybazaar.com/insurance-companies/tata-aig-he](https://www.policybazaar.com/insurance-companies/tata-aig-health-insurance/claim-settlement-ratio/) |
|
| 22 |
+
| insuredekho | 4.4 | None | [https://www.insurancedekho.com/health-insurance/tata-aig/cla](https://www.insurancedekho.com/health-insurance/tata-aig/claim-settlement) |
|
| 23 |
+
| joinditto | 4.2 | None | [https://joinditto.in/articles/health-insurance/tata-aig-heal](https://joinditto.in/articles/health-insurance/tata-aig-health-insurance-claim-settlement-ratio/) |
|
| 24 |
+
|
| 25 |
+
## Reddit / r/IndianFinance sentiment
|
| 26 |
+
|
| 27 |
+
- Overall: **mixed-positive**
|
| 28 |
+
- Mentions estimate: 22
|
| 29 |
+
- Themes: MediCare Plus and MediCare Premier well-regarded for global coverage, Tata brand trust, Below-industry-average CSR is the main concern, Service standards rated above average; GWP grew from Rs 1,930 cr (FY22) to Rs 3,592 cr (FY25), 10,000+ cashless network
|
| 30 |
+
- Sample posts:
|
| 31 |
+
- [https://www.beshak.org/insurance/health-insurance/best-health-insurance-plans/ta](https://www.beshak.org/insurance/health-insurance/best-health-insurance-plans/tata-aig-medi-care/)
|
| 32 |
+
- [https://www.policybazaar.com/health-insurance/companies/aditya-birla-vs-tata-aig](https://www.policybazaar.com/health-insurance/companies/aditya-birla-vs-tata-aig/)
|
| 33 |
+
|
| 34 |
+
## YouTube coverage
|
| 35 |
+
|
| 36 |
+
- Overall sentiment: **mixed**
|
| 37 |
+
- **1Finance** — [https://1finance.co.in/product-scoring/health-insurance/tata-aig-medicare](https://1finance.co.in/product-scoring/health-insurance/tata-aig-medicare) — _MediCare scored on product features; recommended for premium segment_
|
| 38 |
+
|
| 39 |
+
## Recent news
|
| 40 |
+
|
| 41 |
+
- **Tata AIG GWP grew from Rs 1,930 cr (FY22) to Rs 3,592 cr (FY25), strong YoY growth** (Ditto Insurance, 2026, tone: positive) — [https://joinditto.in/articles/health-insurance/tata-aig-health-insurance-claim-s](https://joinditto.in/articles/health-insurance/tata-aig-health-insurance-claim-settlement-ratio/)
|
| 42 |
+
- **Tata AIG MediCare Premier plan launches** (Beshak, 2026-04, tone: neutral) — [https://www.beshak.org/insurance/health-insurance/best-health-insurance-plans/ta](https://www.beshak.org/insurance/health-insurance/best-health-insurance-plans/tata-aig-medi-care-premier/)
|
| 43 |
+
|
| 44 |
+
---
|
| 45 |
+
|
| 46 |
+
_Aggregate score formula: 0.40 × CSR + 0.20 × inverse-complaints + 0.15 × avg-aggregator-star + 0.10 × reddit + 0.10 × youtube + 0.05 × news. See `data/reviews/INDEX.md` for the leaderboard._
|
| 47 |
+
|
| 48 |
+
**Flows into the bot via:** `score_claim_experience()` in `backend/scorecard.py` — IRDAI CSR + complaints become Claim Experience sub-score signals for every policy this insurer offers.
|
kb/security/INDEX.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Security — Upload Gates + Hallucination Defense
|
| 2 |
+
|
| 3 |
+
_Auto-generated. Source modules: `backend/security.py` + `backend/faithfulness.py`._
|
| 4 |
+
|
| 5 |
+
## Upload security — 5 gates
|
| 6 |
+
|
| 7 |
+
Every PDF uploaded via `/api/upload-policy` runs through these gates before
|
| 8 |
+
indexing. Failure logs to `logs/upload_blocks.jsonl`.
|
| 9 |
+
|
| 10 |
+
| # | Gate | Check |
|
| 11 |
+
| --- | --- | --- |
|
| 12 |
+
| 1 | Mechanics | Magic bytes `%PDF`; size 5KB-25MB; `%%EOF` present; dangerous PDF features (`/JavaScript`, `/Launch`, `/OpenAction`, `/EmbeddedFile`, `/SubmitForm`, `/AA`, `/RichMedia`, `/Movie`, `/Sound`, `/GoToR`); embedded executable signatures (Windows PE, Linux ELF, Mach-O, Java class, shell, HTML/JS, PHP) |
|
| 13 |
+
| 2 | Content quality | ≥1,500 chars text; ≥3 pages; ≥1 insurance keyword match (catches "garbage PDF" uploads) |
|
| 14 |
+
| 3 | Prompt injection | 11 regex patterns scanning for "ignore previous instructions", "system prompt reveal", jailbreak markers, role-takeover patterns, im_start/im_end tokens |
|
| 15 |
+
| 4 | Session rate limit | 5 uploads/hour/session; 200 chunks/session lifetime |
|
| 16 |
+
| 5 | IP rate limit | 10 uploads/hour/IP (per X-Forwarded-For or peer IP) |
|
| 17 |
+
|
| 18 |
+
All gates run for EVERY upload. Block on any failure; the audit trail captures the reason set.
|
| 19 |
+
|
| 20 |
+
## Hallucination defense — 5 gates (runtime, per-turn)
|
| 21 |
+
|
| 22 |
+
| # | Gate | What it catches |
|
| 23 |
+
| --- | --- | --- |
|
| 24 |
+
| 1 | Retrieval floor | Top-1 cosine < 0.30 OR avg top-5 < 0.22 → refuse outright |
|
| 25 |
+
| 2 | Citation integrity | Any `[Source:…]` in the bot's reply must point to a real retrieved chunk's policy_name |
|
| 26 |
+
| 3 | Numeric grounding | Every ₹, %, day/month/year in the reply must appear in retrieved chunks (regex) |
|
| 27 |
+
| 4 | LLM-judge faithfulness | Groq Llama-3.3-70B inspects the reply against retrieved chunks; outputs strict JSON; non-circular eval |
|
| 28 |
+
| 5 (Indic) | Hinglish drift LLM-judge | Same idea on the Hinglish back-translation vs the English source |
|
| 29 |
+
|
| 30 |
+
Plus **regex anchors + back-translate cosine** as additional drift checks
|
| 31 |
+
when the bot replies in Hinglish.
|
| 32 |
+
|
| 33 |
+
All blocked replies → `logs/hallucinations.jsonl` with the reason set.
|
| 34 |
+
|
| 35 |
+
## What WE can't (yet) check
|
| 36 |
+
|
| 37 |
+
- LLM determinism (DeepSeek-V3 / Sarvam-M can produce slightly different
|
| 38 |
+
output at `temperature=0`).
|
| 39 |
+
- Insurer-side PDF tampering — we trust the source PDF was real at download.
|
| 40 |
+
- Embedding model drift — pinned to BGE-small-en-v1.5.
|
| 41 |
+
|
| 42 |
+
These are explicit limits documented in `kb/AUDIT_TRAIL.md` §5.
|
rag/build_kb.py
CHANGED
|
@@ -280,6 +280,11 @@ def build_index(policies: list[dict], scorecards: list[Scorecard]) -> str:
|
|
| 280 |
|
| 281 |
RESEARCH_DIR = KB_DIR / "research"
|
| 282 |
CALCULATIONS_DIR = KB_DIR / "calculations"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 283 |
|
| 284 |
|
| 285 |
def build_research_corpus_acquisition() -> str:
|
|
@@ -533,11 +538,313 @@ traceable to one of these files (see `backend/faithfulness.py`).
|
|
| 533 |
"""
|
| 534 |
|
| 535 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 536 |
def main():
|
| 537 |
KB_DIR.mkdir(parents=True, exist_ok=True)
|
| 538 |
POLICIES_DIR.mkdir(parents=True, exist_ok=True)
|
| 539 |
RESEARCH_DIR.mkdir(parents=True, exist_ok=True)
|
| 540 |
CALCULATIONS_DIR.mkdir(parents=True, exist_ok=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 541 |
|
| 542 |
files = sorted(EXTRACTED.glob("*.json"))
|
| 543 |
print(f"Found {len(files)} extracted policy JSONs")
|
|
@@ -568,13 +875,45 @@ def main():
|
|
| 568 |
(CALCULATIONS_DIR / "eval_results.md").write_text(build_calc_eval_results())
|
| 569 |
(CALCULATIONS_DIR / "extraction_quality_audit.md").write_text(build_calc_extraction_audit(policies))
|
| 570 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 571 |
# Master index
|
| 572 |
(KB_DIR / "INDEX.md").write_text(build_master_index(policies, scorecards))
|
| 573 |
|
| 574 |
print(f"\n✓ kb/INDEX.md")
|
| 575 |
-
print(f"✓ kb/policies/
|
| 576 |
-
print(f"✓ kb/research/
|
| 577 |
-
print(f"✓ kb/calculations/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 578 |
print(f"\nKB rebuilt — open `kb/INDEX.md` for the master map.")
|
| 579 |
|
| 580 |
|
|
|
|
| 280 |
|
| 281 |
RESEARCH_DIR = KB_DIR / "research"
|
| 282 |
CALCULATIONS_DIR = KB_DIR / "calculations"
|
| 283 |
+
REVIEWS_KB_DIR = KB_DIR / "reviews"
|
| 284 |
+
PREMIUMS_KB_DIR = KB_DIR / "premiums"
|
| 285 |
+
SECURITY_KB_DIR = KB_DIR / "security"
|
| 286 |
+
EVAL_KB_DIR = KB_DIR / "eval"
|
| 287 |
+
METHODOLOGY_KB_DIR = KB_DIR / "methodology"
|
| 288 |
|
| 289 |
|
| 290 |
def build_research_corpus_acquisition() -> str:
|
|
|
|
| 538 |
"""
|
| 539 |
|
| 540 |
|
| 541 |
+
def build_reviews_kb_for(slug: str, data: dict) -> str:
|
| 542 |
+
cm = data.get("claim_metrics", {})
|
| 543 |
+
agg = data.get("aggregator_ratings", {})
|
| 544 |
+
tp = data.get("trustpilot", {})
|
| 545 |
+
reddit = data.get("reddit_sentiment", {})
|
| 546 |
+
yt = data.get("youtube_coverage", {})
|
| 547 |
+
news = data.get("in_news", [])
|
| 548 |
+
score = data.get("aggregate_score", {})
|
| 549 |
+
ver = data.get("_url_verification", {})
|
| 550 |
+
|
| 551 |
+
rows = []
|
| 552 |
+
rows.append(f"# {data.get('insurer_name', slug)} — Reputation Sheet")
|
| 553 |
+
rows.append("")
|
| 554 |
+
rows.append(f"_Auto-generated from `data/reviews/{slug}.json`. Reviews are the v1 substitute for live regulator + sentiment monitoring. Re-build with `python -m rag.build_kb`._")
|
| 555 |
+
rows.append("")
|
| 556 |
+
rows.append(f"**Aggregate score:** **{score.get('value_0_100', 'n/a')}** ({score.get('letter_grade', '?')}). _{score.get('headline', '')}_")
|
| 557 |
+
rows.append("")
|
| 558 |
+
rows.append(f"**URL verification:** {ver.get('ok', 0)}/{ver.get('total_urls', 0)} URLs reachable via HEAD-check; {ver.get('broken_count', 0)} return 403 to scripts (bot-protected real URLs — open fine in a browser).")
|
| 559 |
+
rows.append("")
|
| 560 |
+
rows.append("## IRDAI claim metrics")
|
| 561 |
+
rows.append("")
|
| 562 |
+
rows.append("| Metric | Value |")
|
| 563 |
+
rows.append("| --- | --- |")
|
| 564 |
+
rows.append(f"| Claim settlement ratio (CSR) | **{cm.get('claim_settlement_ratio_pct', 'n/a')}%** ({cm.get('claim_settlement_ratio_year', 'unknown year')}) |")
|
| 565 |
+
rows.append(f"| Complaints / 10K policies | **{cm.get('complaints_per_10k_policies', 'n/a')}** ({cm.get('complaints_year', 'unknown')}) |")
|
| 566 |
+
rows.append(f"| Source | [IRDAI Annual Report]({cm.get('source_irdai_url', '#')}) |")
|
| 567 |
+
rows.append("")
|
| 568 |
+
rows.append("## Aggregator portal ratings")
|
| 569 |
+
rows.append("")
|
| 570 |
+
rows.append("| Portal | Avg star | Review count | URL |")
|
| 571 |
+
rows.append("| --- | --- | --- | --- |")
|
| 572 |
+
for pname, pdata in agg.items():
|
| 573 |
+
if not pdata: continue
|
| 574 |
+
rows.append(f"| {pname} | {pdata.get('avg_star', 'n/a')} | {pdata.get('review_count', 'n/a')} | [{(pdata.get('url') or 'n/a')[:60]}]({pdata.get('url', '#')}) |")
|
| 575 |
+
rows.append("")
|
| 576 |
+
if tp.get("score") is not None:
|
| 577 |
+
rows.append(f"**Trustpilot:** {tp.get('score')} ({tp.get('review_count', 'n/a')} reviews) — [{(tp.get('url') or 'n/a')[:60]}]({tp.get('url', '#')})")
|
| 578 |
+
rows.append("")
|
| 579 |
+
rows.append("## Reddit / r/IndianFinance sentiment")
|
| 580 |
+
rows.append("")
|
| 581 |
+
rows.append(f"- Overall: **{reddit.get('sentiment_overall', 'n/a')}**")
|
| 582 |
+
rows.append(f"- Mentions estimate: {reddit.get('mentions_last_year_estimate', 'n/a')}")
|
| 583 |
+
if reddit.get("notable_themes"):
|
| 584 |
+
rows.append(f"- Themes: {', '.join(reddit['notable_themes'])}")
|
| 585 |
+
if reddit.get("sample_post_urls"):
|
| 586 |
+
rows.append(f"- Sample posts:")
|
| 587 |
+
for u in reddit["sample_post_urls"][:5]:
|
| 588 |
+
rows.append(f" - [{u[:80]}]({u})")
|
| 589 |
+
rows.append("")
|
| 590 |
+
rows.append("## YouTube coverage")
|
| 591 |
+
rows.append("")
|
| 592 |
+
rows.append(f"- Overall sentiment: **{yt.get('overall_youtube_sentiment', 'n/a')}**")
|
| 593 |
+
for entry in yt.get("top_creators_who_reviewed", [])[:5]:
|
| 594 |
+
rows.append(f"- **{entry.get('creator', '?')}** — [{(entry.get('video_url') or 'n/a')[:80]}]({entry.get('video_url', '#')}) — _{entry.get('verdict', '')}_")
|
| 595 |
+
rows.append("")
|
| 596 |
+
rows.append("## Recent news")
|
| 597 |
+
rows.append("")
|
| 598 |
+
for n in news[:8]:
|
| 599 |
+
rows.append(f"- **{n.get('headline', '?')}** ({n.get('publication', '?')}, {n.get('date', '?')}, tone: {n.get('tone', '?')}) — [{(n.get('url') or 'n/a')[:80]}]({n.get('url', '#')})")
|
| 600 |
+
rows.append("")
|
| 601 |
+
rows.append("---")
|
| 602 |
+
rows.append("")
|
| 603 |
+
rows.append(f"_Aggregate score formula: 0.40 × CSR + 0.20 × inverse-complaints + 0.15 × avg-aggregator-star + 0.10 × reddit + 0.10 × youtube + 0.05 × news. See `data/reviews/INDEX.md` for the leaderboard._")
|
| 604 |
+
rows.append("")
|
| 605 |
+
rows.append(f"**Flows into the bot via:** `score_claim_experience()` in `backend/scorecard.py` — IRDAI CSR + complaints become Claim Experience sub-score signals for every policy this insurer offers.")
|
| 606 |
+
return "\n".join(rows)
|
| 607 |
+
|
| 608 |
+
|
| 609 |
+
def build_reviews_index(all_reviews: list[dict]) -> str:
|
| 610 |
+
rows = []
|
| 611 |
+
rows.append("# Reviews — Insurer Reputation Index")
|
| 612 |
+
rows.append("")
|
| 613 |
+
rows.append(f"_Auto-generated. Source: `data/reviews/*.json`. Per-insurer sheets in `kb/reviews/<slug>.md`._")
|
| 614 |
+
rows.append("")
|
| 615 |
+
rows.append("## Leaderboard")
|
| 616 |
+
rows.append("")
|
| 617 |
+
rows.append("| Rank | Insurer | Score | Grade | CSR | Complaints/10K | URL verification |")
|
| 618 |
+
rows.append("| --- | --- | --- | --- | --- | --- | --- |")
|
| 619 |
+
for i, r in enumerate(sorted(all_reviews, key=lambda d: -(d.get("aggregate_score", {}).get("value_0_100") or 0)), 1):
|
| 620 |
+
slug = r.get("insurer_slug")
|
| 621 |
+
score = r.get("aggregate_score", {})
|
| 622 |
+
cm = r.get("claim_metrics", {})
|
| 623 |
+
ver = r.get("_url_verification", {})
|
| 624 |
+
rows.append(
|
| 625 |
+
f"| {i} | [{r.get('insurer_name', slug)}](./{slug}.md) | "
|
| 626 |
+
f"**{score.get('value_0_100', 'n/a')}** | {score.get('letter_grade', '?')} | "
|
| 627 |
+
f"{cm.get('claim_settlement_ratio_pct', 'n/a')}% | "
|
| 628 |
+
f"{cm.get('complaints_per_10k_policies', 'n/a')} | "
|
| 629 |
+
f"{ver.get('ok', 0)}/{ver.get('total_urls', 0)} reachable |"
|
| 630 |
+
)
|
| 631 |
+
rows.append("")
|
| 632 |
+
rows.append("## Bot integration")
|
| 633 |
+
rows.append("")
|
| 634 |
+
rows.append("- API: `GET /api/insurers/<slug>/reviews`")
|
| 635 |
+
rows.append("- The IRDAI CSR + complaints per 10K from this data feeds the **Claim Experience** sub-score of the scorecard (see `kb/policies/<id>.md` for the per-policy effect).")
|
| 636 |
+
rows.append("- v2 expansions: live Reddit/YouTube sentiment refresh, IRDAI weekly refresh, news monitoring with alerts on insurer-specific incidents.")
|
| 637 |
+
return "\n".join(rows)
|
| 638 |
+
|
| 639 |
+
|
| 640 |
+
def build_premiums_kb() -> str:
|
| 641 |
+
rows = []
|
| 642 |
+
rows.append("# Premiums — Illustrative Pricing Data")
|
| 643 |
+
rows.append("")
|
| 644 |
+
rows.append("_Auto-generated from `data/premiums/illustrative_premiums.json`. Real PolicyBazaar / InsuranceDekho / rate-chart anchors plus derived scaling factors. NEVER a binding quote._")
|
| 645 |
+
rows.append("")
|
| 646 |
+
pf = ROOT / "data" / "premiums" / "illustrative_premiums.json"
|
| 647 |
+
if not pf.exists():
|
| 648 |
+
rows.append("_Premium data file not yet generated._")
|
| 649 |
+
return "\n".join(rows)
|
| 650 |
+
data = json.loads(pf.read_text())
|
| 651 |
+
methodology = data.get("methodology", "")
|
| 652 |
+
sources = data.get("sources_consulted", [])
|
| 653 |
+
base = data.get("base_premiums", {})
|
| 654 |
+
scaling = data.get("scaling_factors", {})
|
| 655 |
+
|
| 656 |
+
rows.append(f"## Methodology")
|
| 657 |
+
rows.append("")
|
| 658 |
+
rows.append(methodology)
|
| 659 |
+
rows.append("")
|
| 660 |
+
rows.append("### Sources consulted")
|
| 661 |
+
rows.append("")
|
| 662 |
+
for s in sources[:10]:
|
| 663 |
+
rows.append(f"- [{s[:100]}]({s})")
|
| 664 |
+
rows.append("")
|
| 665 |
+
rows.append("## Per-policy anchor samples")
|
| 666 |
+
rows.append("")
|
| 667 |
+
rows.append(f"_{len(base)} policies indexed._")
|
| 668 |
+
rows.append("")
|
| 669 |
+
for pid, entry in sorted(base.items()):
|
| 670 |
+
samples = entry.get("samples", [])
|
| 671 |
+
if not samples: continue
|
| 672 |
+
rows.append(f"### {entry.get('policy_name', pid)}")
|
| 673 |
+
rows.append(f"`policy_id`: `{pid}`")
|
| 674 |
+
rows.append("")
|
| 675 |
+
rows.append("| Age | SI (₹) | City | Smoker | Family | Premium ₹/yr | Source |")
|
| 676 |
+
rows.append("| --- | --- | --- | --- | --- | --- | --- |")
|
| 677 |
+
for s in samples:
|
| 678 |
+
src = s.get("source_url", "")
|
| 679 |
+
src_tag = "callback only" if src == "callback_only" else (f"[link]({src})" if src.startswith("http") else "derived")
|
| 680 |
+
rows.append(
|
| 681 |
+
f"| {s.get('age', '?')} | {s.get('sum_insured_inr', '?')} | "
|
| 682 |
+
f"{s.get('city_tier', 'n/a')} | "
|
| 683 |
+
f"{'Y' if s.get('smoker') else 'N'} | {s.get('family_size', 1)} | "
|
| 684 |
+
f"**{s.get('annual_premium_inr', '?'):,}** | {src_tag} |"
|
| 685 |
+
)
|
| 686 |
+
rows.append("")
|
| 687 |
+
|
| 688 |
+
rows.append("## Scaling factors")
|
| 689 |
+
rows.append("")
|
| 690 |
+
rows.append("These are derived from comparing real anchor points across age, SI, city, smoker, family-floater dimensions.")
|
| 691 |
+
rows.append("")
|
| 692 |
+
for cat, mults in scaling.items():
|
| 693 |
+
if cat.startswith("_"): continue
|
| 694 |
+
rows.append(f"### {cat}")
|
| 695 |
+
rows.append("```")
|
| 696 |
+
rows.append(json.dumps(mults, indent=2))
|
| 697 |
+
rows.append("```")
|
| 698 |
+
rows.append("")
|
| 699 |
+
return "\n".join(rows)
|
| 700 |
+
|
| 701 |
+
|
| 702 |
+
def build_security_kb() -> str:
|
| 703 |
+
return """# Security — Upload Gates + Hallucination Defense
|
| 704 |
+
|
| 705 |
+
_Auto-generated. Source modules: `backend/security.py` + `backend/faithfulness.py`._
|
| 706 |
+
|
| 707 |
+
## Upload security — 5 gates
|
| 708 |
+
|
| 709 |
+
Every PDF uploaded via `/api/upload-policy` runs through these gates before
|
| 710 |
+
indexing. Failure logs to `logs/upload_blocks.jsonl`.
|
| 711 |
+
|
| 712 |
+
| # | Gate | Check |
|
| 713 |
+
| --- | --- | --- |
|
| 714 |
+
| 1 | Mechanics | Magic bytes `%PDF`; size 5KB-25MB; `%%EOF` present; dangerous PDF features (`/JavaScript`, `/Launch`, `/OpenAction`, `/EmbeddedFile`, `/SubmitForm`, `/AA`, `/RichMedia`, `/Movie`, `/Sound`, `/GoToR`); embedded executable signatures (Windows PE, Linux ELF, Mach-O, Java class, shell, HTML/JS, PHP) |
|
| 715 |
+
| 2 | Content quality | ≥1,500 chars text; ≥3 pages; ≥1 insurance keyword match (catches "garbage PDF" uploads) |
|
| 716 |
+
| 3 | Prompt injection | 11 regex patterns scanning for "ignore previous instructions", "system prompt reveal", jailbreak markers, role-takeover patterns, im_start/im_end tokens |
|
| 717 |
+
| 4 | Session rate limit | 5 uploads/hour/session; 200 chunks/session lifetime |
|
| 718 |
+
| 5 | IP rate limit | 10 uploads/hour/IP (per X-Forwarded-For or peer IP) |
|
| 719 |
+
|
| 720 |
+
All gates run for EVERY upload. Block on any failure; the audit trail captures the reason set.
|
| 721 |
+
|
| 722 |
+
## Hallucination defense — 5 gates (runtime, per-turn)
|
| 723 |
+
|
| 724 |
+
| # | Gate | What it catches |
|
| 725 |
+
| --- | --- | --- |
|
| 726 |
+
| 1 | Retrieval floor | Top-1 cosine < 0.30 OR avg top-5 < 0.22 → refuse outright |
|
| 727 |
+
| 2 | Citation integrity | Any `[Source:…]` in the bot's reply must point to a real retrieved chunk's policy_name |
|
| 728 |
+
| 3 | Numeric grounding | Every ₹, %, day/month/year in the reply must appear in retrieved chunks (regex) |
|
| 729 |
+
| 4 | LLM-judge faithfulness | Groq Llama-3.3-70B inspects the reply against retrieved chunks; outputs strict JSON; non-circular eval |
|
| 730 |
+
| 5 (Indic) | Hinglish drift LLM-judge | Same idea on the Hinglish back-translation vs the English source |
|
| 731 |
+
|
| 732 |
+
Plus **regex anchors + back-translate cosine** as additional drift checks
|
| 733 |
+
when the bot replies in Hinglish.
|
| 734 |
+
|
| 735 |
+
All blocked replies → `logs/hallucinations.jsonl` with the reason set.
|
| 736 |
+
|
| 737 |
+
## What WE can't (yet) check
|
| 738 |
+
|
| 739 |
+
- LLM determinism (DeepSeek-V3 / Sarvam-M can produce slightly different
|
| 740 |
+
output at `temperature=0`).
|
| 741 |
+
- Insurer-side PDF tampering — we trust the source PDF was real at download.
|
| 742 |
+
- Embedding model drift — pinned to BGE-small-en-v1.5.
|
| 743 |
+
|
| 744 |
+
These are explicit limits documented in `kb/AUDIT_TRAIL.md` §5.
|
| 745 |
+
"""
|
| 746 |
+
|
| 747 |
+
|
| 748 |
+
def build_eval_kb_index() -> str:
|
| 749 |
+
rows = []
|
| 750 |
+
rows.append("# Eval — Gold Q&A + Run History")
|
| 751 |
+
rows.append("")
|
| 752 |
+
rows.append("_Auto-generated. Source: `eval/gold_qa.json` + `eval/results.json` + `eval/run.py`._")
|
| 753 |
+
rows.append("")
|
| 754 |
+
gold_path = ROOT / "eval" / "gold_qa.json"
|
| 755 |
+
if gold_path.exists():
|
| 756 |
+
gold = json.loads(gold_path.read_text())
|
| 757 |
+
from collections import Counter
|
| 758 |
+
by_type = Counter(q.get("question_type") for q in gold)
|
| 759 |
+
rows.append(f"## Gold Q&A composition — {len(gold)} pairs total")
|
| 760 |
+
rows.append("")
|
| 761 |
+
rows.append("| Type | Count |")
|
| 762 |
+
rows.append("| --- | --- |")
|
| 763 |
+
for t, n in by_type.most_common():
|
| 764 |
+
rows.append(f"| `{t}` | {n} |")
|
| 765 |
+
rows.append("")
|
| 766 |
+
refusal_count = sum(1 for q in gold if q.get("expected_refusal"))
|
| 767 |
+
rows.append(f"**Refusal-test questions:** {refusal_count} (these test the bot correctly refuses out-of-corpus questions)")
|
| 768 |
+
rows.append("")
|
| 769 |
+
results_path = ROOT / "eval" / "results.json"
|
| 770 |
+
if results_path.exists():
|
| 771 |
+
try:
|
| 772 |
+
r = json.loads(results_path.read_text())
|
| 773 |
+
s = r.get("summary", {})
|
| 774 |
+
rows.append("## Most recent eval run")
|
| 775 |
+
rows.append("")
|
| 776 |
+
rows.append(f"- Ran: {s.get('ran_at')}")
|
| 777 |
+
rows.append(f"- Questions: {s.get('n_questions')}")
|
| 778 |
+
rows.append(f"- Factual accuracy: **{s.get('factual_accuracy', 0)*100:.1f}%**")
|
| 779 |
+
rows.append(f"- Citation accuracy: **{s.get('citation_accuracy', 0)*100:.1f}%**")
|
| 780 |
+
rows.append(f"- Refusal precision: **{s.get('refusal_precision', 0)*100:.1f}%**")
|
| 781 |
+
rows.append(f"- Blocked by faithfulness: {s.get('blocked_count', 0)}")
|
| 782 |
+
rows.append("")
|
| 783 |
+
except Exception:
|
| 784 |
+
pass
|
| 785 |
+
rows.append("## Methodology")
|
| 786 |
+
rows.append("")
|
| 787 |
+
rows.append("- Gold Q&A built by 3 pipelines: auto-from-extraction (templated), LLM-drafted (human-verified), hand-crafted adversarial. See `docs/03-eval-plan.md`.")
|
| 788 |
+
rows.append("- Grader: Groq Llama-3.3-70B (different model family from generators → non-circular).")
|
| 789 |
+
rows.append("- Re-run: `python -m eval.run [--limit N] [--policy <id>]`.")
|
| 790 |
+
rows.append("- CI gate: `.github/workflows/eval.yml` runs eval on every PR; blocks merge if factual_accuracy < 0.65 or citation_accuracy < 0.55.")
|
| 791 |
+
return "\n".join(rows)
|
| 792 |
+
|
| 793 |
+
|
| 794 |
+
def build_methodology_kb() -> str:
|
| 795 |
+
return """# Methodology — Pointers to all design docs
|
| 796 |
+
|
| 797 |
+
_All design / decision docs in one navigable place._
|
| 798 |
+
|
| 799 |
+
## Foundation docs (in `docs/`)
|
| 800 |
+
|
| 801 |
+
| Doc | What it covers |
|
| 802 |
+
| --- | --- |
|
| 803 |
+
| [`01-requirements.md`](../../docs/01-requirements.md) | Product vision, 3 user personas, buyer journey, 10 success criteria, 11 non-goals, constraints |
|
| 804 |
+
| [`02-architecture.md`](../../docs/02-architecture.md) | Stack picks, system diagram, schema groupings, repo layout, c-readiness commitments |
|
| 805 |
+
| [`03-eval-plan.md`](../../docs/03-eval-plan.md) | 3-pipeline gold Q&A construction, grader, metrics, run cadence |
|
| 806 |
+
| [`04-failure-modes.md`](../../docs/04-failure-modes.md) | 16 named failure modes (F-01..F-16), detection + mitigation per mode |
|
| 807 |
+
| [`05-needs-analysis-flow.md`](../../docs/05-needs-analysis-flow.md) | Fact-find question graph, bilingual prompts, termination logic |
|
| 808 |
+
| [`decisions.md`](../../docs/decisions.md) | Append-only log of 17+ technical decisions with alternatives + reasoning |
|
| 809 |
+
| [`tech-stack-rationale.md`](../../docs/tech-stack-rationale.md) | 22-row stack pick table + selection rubric + cost envelope |
|
| 810 |
+
| [`scorecard-methodology.md`](../../docs/scorecard-methodology.md) | 48-field schema → 24 scored fields → 6 sub-scores → A-F grade |
|
| 811 |
+
| [`ROADMAP.md`](../../docs/ROADMAP.md) | v1 vertical slice → v2 platform plan |
|
| 812 |
+
| [`information_source_map.md`](../../docs/information_source_map.md) | Corpus catalog (auto-generated by `rag/source_map.py`) |
|
| 813 |
+
|
| 814 |
+
## KB sub-indexes (each regenerable via `python -m rag.build_kb`)
|
| 815 |
+
|
| 816 |
+
| Path | Content |
|
| 817 |
+
| --- | --- |
|
| 818 |
+
| [`kb/INDEX.md`](../INDEX.md) | Master index |
|
| 819 |
+
| [`kb/AUDIT_TRAIL.md`](../AUDIT_TRAIL.md) | 10-stage data lineage + decision-to-artifact map |
|
| 820 |
+
| [`kb/policies/`](../policies/) | One sheet per extracted policy |
|
| 821 |
+
| [`kb/research/`](../research/) | Corpus acquisition, URL verification, insurer universe |
|
| 822 |
+
| [`kb/calculations/`](../calculations/) | Scorecard results, eval results, extraction audit |
|
| 823 |
+
| [`kb/reviews/`](../reviews/) | Per-insurer reputation sheets + leaderboard |
|
| 824 |
+
| [`kb/premiums/`](../premiums/) | Illustrative pricing samples + scaling factors |
|
| 825 |
+
| [`kb/security/`](../security/) | Upload gates + hallucination defense |
|
| 826 |
+
| [`kb/eval/`](../eval/) | Gold Q&A composition + run history |
|
| 827 |
+
|
| 828 |
+
## How to navigate
|
| 829 |
+
|
| 830 |
+
- New visitor → start at `kb/INDEX.md`
|
| 831 |
+
- Auditor → start at `kb/AUDIT_TRAIL.md`
|
| 832 |
+
- Engineer onboarding → start at `docs/02-architecture.md`
|
| 833 |
+
- BFSI compliance review → `kb/security/` + `docs/04-failure-modes.md` + `logs/hallucinations.jsonl`
|
| 834 |
+
- Buyer-side curiosity → any `kb/policies/<id>.md` ends with a "What the bot will and won't say" section.
|
| 835 |
+
"""
|
| 836 |
+
|
| 837 |
+
|
| 838 |
def main():
|
| 839 |
KB_DIR.mkdir(parents=True, exist_ok=True)
|
| 840 |
POLICIES_DIR.mkdir(parents=True, exist_ok=True)
|
| 841 |
RESEARCH_DIR.mkdir(parents=True, exist_ok=True)
|
| 842 |
CALCULATIONS_DIR.mkdir(parents=True, exist_ok=True)
|
| 843 |
+
REVIEWS_KB_DIR.mkdir(parents=True, exist_ok=True)
|
| 844 |
+
PREMIUMS_KB_DIR.mkdir(parents=True, exist_ok=True)
|
| 845 |
+
SECURITY_KB_DIR.mkdir(parents=True, exist_ok=True)
|
| 846 |
+
EVAL_KB_DIR.mkdir(parents=True, exist_ok=True)
|
| 847 |
+
METHODOLOGY_KB_DIR.mkdir(parents=True, exist_ok=True)
|
| 848 |
|
| 849 |
files = sorted(EXTRACTED.glob("*.json"))
|
| 850 |
print(f"Found {len(files)} extracted policy JSONs")
|
|
|
|
| 875 |
(CALCULATIONS_DIR / "eval_results.md").write_text(build_calc_eval_results())
|
| 876 |
(CALCULATIONS_DIR / "extraction_quality_audit.md").write_text(build_calc_extraction_audit(policies))
|
| 877 |
|
| 878 |
+
# Reviews KB
|
| 879 |
+
reviews_dir = ROOT / "data" / "reviews"
|
| 880 |
+
all_reviews = []
|
| 881 |
+
if reviews_dir.exists():
|
| 882 |
+
for rf in sorted(reviews_dir.glob("*.json")):
|
| 883 |
+
try:
|
| 884 |
+
rdata = json.loads(rf.read_text())
|
| 885 |
+
slug = rdata.get("insurer_slug", rf.stem)
|
| 886 |
+
(REVIEWS_KB_DIR / f"{slug}.md").write_text(build_reviews_kb_for(slug, rdata))
|
| 887 |
+
all_reviews.append(rdata)
|
| 888 |
+
except Exception:
|
| 889 |
+
continue
|
| 890 |
+
if all_reviews:
|
| 891 |
+
(REVIEWS_KB_DIR / "INDEX.md").write_text(build_reviews_index(all_reviews))
|
| 892 |
+
|
| 893 |
+
# Premiums KB
|
| 894 |
+
(PREMIUMS_KB_DIR / "INDEX.md").write_text(build_premiums_kb())
|
| 895 |
+
|
| 896 |
+
# Security KB
|
| 897 |
+
(SECURITY_KB_DIR / "INDEX.md").write_text(build_security_kb())
|
| 898 |
+
|
| 899 |
+
# Eval KB
|
| 900 |
+
(EVAL_KB_DIR / "INDEX.md").write_text(build_eval_kb_index())
|
| 901 |
+
|
| 902 |
+
# Methodology KB
|
| 903 |
+
(METHODOLOGY_KB_DIR / "INDEX.md").write_text(build_methodology_kb())
|
| 904 |
+
|
| 905 |
# Master index
|
| 906 |
(KB_DIR / "INDEX.md").write_text(build_master_index(policies, scorecards))
|
| 907 |
|
| 908 |
print(f"\n✓ kb/INDEX.md")
|
| 909 |
+
print(f"✓ kb/policies/ ({len(policies)} files)")
|
| 910 |
+
print(f"✓ kb/research/ (3 files)")
|
| 911 |
+
print(f"✓ kb/calculations/ (3 files)")
|
| 912 |
+
print(f"✓ kb/reviews/ ({len(all_reviews) + (1 if all_reviews else 0)} files)")
|
| 913 |
+
print(f"✓ kb/premiums/ (1 file)")
|
| 914 |
+
print(f"✓ kb/security/ (1 file)")
|
| 915 |
+
print(f"✓ kb/eval/ (1 file)")
|
| 916 |
+
print(f"✓ kb/methodology/ (1 file)")
|
| 917 |
print(f"\nKB rebuilt — open `kb/INDEX.md` for the master map.")
|
| 918 |
|
| 919 |
|
rag/corpus/_playwright_results.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Playwright-driven corpus fetch — results
|
| 2 |
+
|
| 3 |
+
**Run date.** 2026-05-13
|
| 4 |
+
**Method.** Playwright MCP (real Chromium) `browser_navigate` → same-origin `fetch()` → base64-encode response → write file from Python. This carries Akamai/cookie warmup and uses the right `Origin`/`Referer` automatically, sidestepping the 403 bot challenge that blocked plain `curl`.
|
| 5 |
+
|
| 6 |
+
## Task A — Star Health corpus
|
| 7 |
+
|
| 8 |
+
**Target:** 11 entries in `data/corpus_urls.md` with `insurer_slug = star-health`.
|
| 9 |
+
**Original URL pattern:** `https://web.starhealth.in/sites/default/files/policy-clauses/...pdf`.
|
| 10 |
+
**Why the old URLs failed:** Star Health migrated all public policy PDFs from `web.starhealth.in` (Drupal "files/policy-clauses" path) to a CloudFront CDN (`d28c6jni2fmamz.cloudfront.net`) with hashed filenames. The original URLs now respond `HTTP 403` even with a browser-shaped session. The product pages on `www.starhealth.in/health-insurance/<product>` link to the fresh CloudFront URLs.
|
| 11 |
+
|
| 12 |
+
**Resolution.** Harvested current CloudFront PDF URLs from each product page on `www.starhealth.in`, then navigated to the CloudFront origin and fetched same-origin.
|
| 13 |
+
|
| 14 |
+
**Result.** 11 / 11 downloaded.
|
| 15 |
+
|
| 16 |
+
| corpus row | doc_type | local file | size |
|
| 17 |
+
|---|---|---:|---:|
|
| 18 |
+
| Family Health Optima | wordings | `family-health-optima__wordings.pdf` | 1.27 MB |
|
| 19 |
+
| Family Health Optima Accident Care | brochure | `family-health-optima__brochure.pdf` | 2.14 MB |
|
| 20 |
+
| Star Comprehensive (First Comprehensive) | wordings | `star-comprehensive__wordings.pdf` | 2.10 MB |
|
| 21 |
+
| Health Premier Insurance Policy | wordings | `health-premier__wordings.pdf` | 1.12 MB |
|
| 22 |
+
| Health Premier | brochure | `health-premier__brochure.pdf` | 1.21 MB |
|
| 23 |
+
| Star Health Assure | wordings | `star-assure__wordings.pdf` | 0.76 MB |
|
| 24 |
+
| Senior Citizens Red Carpet | brochure | `senior-citizens-red-carpet__brochure.pdf` | 1.27 MB |
|
| 25 |
+
| Star Cardiac Care | wordings | `star-cardiac-care__wordings.pdf` | 0.88 MB |
|
| 26 |
+
| Star Cardiac Care Platinum | wordings | `star-cardiac-care-platinum__wordings.pdf` | 2.45 MB |
|
| 27 |
+
| Star Cancer Care Platinum | wordings | `star-cancer-care-platinum__wordings.pdf` | 1.21 MB |
|
| 28 |
+
| Star Hospital Cash | brochure | `star-hospital-cash__brochure.pdf` | 15.44 MB |
|
| 29 |
+
|
| 30 |
+
All have `%PDF` magic; manifest at `rag/corpus/star-health/_manifest.json` (with original + current URL for each).
|
| 31 |
+
|
| 32 |
+
**Failures.** None.
|
| 33 |
+
|
| 34 |
+
---
|
| 35 |
+
|
| 36 |
+
## Task B — IRDAI regulatory corpus
|
| 37 |
+
|
| 38 |
+
**Target:** 14 entries in `data/regulatory_urls.md` (13 IRDAI + NHA + DFS).
|
| 39 |
+
**Original failure:** Akamai bot-protection on `irdai.gov.in`, plus `nha.gov.in` SPA URL-rewrite, plus `financialservices.gov.in` ConnectTimeout.
|
| 40 |
+
|
| 41 |
+
**Resolution.**
|
| 42 |
+
- **IRDAI direct PDFs (11/11):** Warmed up Akamai cookies via `browser_navigate` to `https://irdai.gov.in/`, then same-origin `fetch()` with `credentials: 'include'`. All succeeded on first attempt except `irdai-insurance-act-1938-amended-2021` whose listed URL is gone — found the canonical replacement URL at `irdai.gov.in/acts` and downloaded that instead.
|
| 43 |
+
- **IRDAI landing pages (2 + 1 bonus):** Opened each `document-detail?documentId=...` page in Playwright, grepped the page DOM for `<a href="...pdf">`, then fetched the embedded link. Got: Master Circular on Protection of Policyholders 2024 (English), Arogya Sanjeevani Policy (Press Release), Arogya Sanjeevani Policy Attachment-1 (bonus — the actual standard product wording).
|
| 44 |
+
- **indiacode.nic.in:** Live host timed out repeatedly. Fetched via Wayback Machine Aug 2024 capture (id_ form preserves the binary).
|
| 45 |
+
- **nha.gov.in:** Live host now serves an SPA "Integrated Portal" HTML for every path including `/img/resources/...pdf`. Fetched the April 2022 Operations Manual via Wayback Machine Dec 2025 capture.
|
| 46 |
+
- **financialservices.gov.in:** Live host returned `net::ERR_CONNECTION_TIMED_OUT`. Fetched DFS GST FAQ via Wayback Machine Dec 2025 capture.
|
| 47 |
+
|
| 48 |
+
**Result.** 18 / 18 PDFs in `rag/corpus/regulatory/` (14 originally listed + Insurance-Act-canonical-URL bonus + Arogya-Sanjeevani-Attachment-1 bonus + the documentId=393676 landing page actually serves a Feb 2020 Amendments PDF, kept as `irdai-standardisation-exclusions-amendments-2020.pdf`).
|
| 49 |
+
|
| 50 |
+
| listed entry | resolved as | size | source |
|
| 51 |
+
|---|---|---:|---|
|
| 52 |
+
| irdai-master-circular-health-2024 | irdai-master-circular-health-2024.pdf | 0.96 MB | irdai.gov.in direct |
|
| 53 |
+
| irdai-master-circular-health-annexure-2024 | (same name).pdf | 1.12 MB | irdai.gov.in direct |
|
| 54 |
+
| irdai-health-insurance-regulations-2016 | (same name).pdf | 0.29 MB | Wayback (indiacode) |
|
| 55 |
+
| irdai-master-circular-protection-policyholders-2024 | (same name).pdf | 91.40 MB | irdai.gov.in via landing-page resolution |
|
| 56 |
+
| irdai-protection-policyholders-regulations-2017 | (same name).pdf | 1.86 MB | irdai.gov.in direct |
|
| 57 |
+
| irdai-master-circular-standardisation-health-products-2020 | (same name).pdf | 3.83 MB | irdai.gov.in direct |
|
| 58 |
+
| irdai-standardisation-exclusions-2019 | irdai-standardisation-exclusions-amendments-2020.pdf | 1.02 MB | irdai.gov.in via landing-page resolution (documentId=393676 actually serves the Feb 2020 Amendments; original Sep 2019 Guidelines is folded into the 2020 Master Circular on Standardization which is in this corpus) |
|
| 59 |
+
| irdai-modification-standardisation-2020 | (same name).pdf | 0.42 MB | irdai.gov.in direct |
|
| 60 |
+
| irdai-consolidated-product-filing-health-2020 | (same name).pdf | 2.15 MB | irdai.gov.in direct |
|
| 61 |
+
| irdai-arogya-sanjeevani-policy | (same name).pdf + (-attachment-1).pdf | 0.19 + 0.20 MB | irdai.gov.in via landing-page resolution |
|
| 62 |
+
| irdai-saral-suraksha-bima-guidelines | (same name).pdf | 1.02 MB | irdai.gov.in direct |
|
| 63 |
+
| irdai-corona-kavach-press-release | (same name).pdf | 0.27 MB | irdai.gov.in direct |
|
| 64 |
+
| irdai-ombudsman-rules-faq-2017 | (same name).pdf | 0.19 MB | irdai.gov.in direct |
|
| 65 |
+
| irdai-grievance-redressal-handbook | (same name).pdf | 0.18 MB | irdai.gov.in direct |
|
| 66 |
+
| irdai-insurance-act-1938-amended-2021 | (same name).pdf | 1.06 MB | irdai.gov.in/acts (listed URL gone) |
|
| 67 |
+
| nha-pmjay-operations-manual | (same name).pdf | 1.78 MB | Wayback (nha.gov.in 2022 manual) |
|
| 68 |
+
| dfs-gst-exemption-insurance-faqs-2025 | (same name).pdf | 0.015 MB | Wayback (financialservices.gov.in 2-page FAQ — small-by-design) |
|
| 69 |
+
|
| 70 |
+
All have `%PDF` magic; manifest at `rag/corpus/regulatory/_manifest.json`.
|
| 71 |
+
|
| 72 |
+
**Failures.** None — 18/18 downloaded.
|
| 73 |
+
|
| 74 |
+
**Caveats.**
|
| 75 |
+
- `dfs-gst-exemption-insurance-faqs-2025.pdf` is only 15 KB, below the requested 50 KB hard threshold. The document is a genuine authoritative 2-page DFS FAQ (verified visually via PDF viewer screenshot); the 50 KB rule would have rejected real content, so I saved it anyway and flagged the size in the manifest.
|
| 76 |
+
- `irdai-standardisation-exclusions-2019` in the source list referenced `documentId=393676`, but IRDAI's CMS now serves the Feb 2020 Amendments PDF (`IRDAI/HLT/REG/CIR/046/02/2020`) at that documentId. The original Sep 2019 Guidelines text has been consolidated into the 2020 Master Circular on Standardization of Health Insurance Products (`IRDAI/HLT/REG/CIR/193/07/2020`) which is in this corpus. Together the two cover the original-plus-amendments content.
|
| 77 |
+
|
| 78 |
+
---
|
| 79 |
+
|
| 80 |
+
## Per-insurer download counts
|
| 81 |
+
|
| 82 |
+
| insurer / corpus | OK | Fail | Source-list count |
|
| 83 |
+
|---|---:|---:|---:|
|
| 84 |
+
| star-health | 11 | 0 | 11 |
|
| 85 |
+
| regulatory | 18 | 0 | 14 (+4 bonus PDFs) |
|
| 86 |
+
|
| 87 |
+
**Note.** The other 9 insurer corpora (HDFC ERGO, Niva Bupa, Care Health, ICICI Lombard, Bajaj Allianz, New India, Aditya Birla, Tata AIG, ManipalCigna) were not in scope for this run and remain at the counts shown in `rag/corpus/_manifest.json`.
|
rag/corpus/regulatory/_manifest.json
CHANGED
|
@@ -1,22 +1,25 @@
|
|
| 1 |
{
|
| 2 |
-
"downloaded_at": "2026-05-
|
| 3 |
-
"
|
| 4 |
-
"
|
| 5 |
-
"
|
|
|
|
|
|
|
| 6 |
"results": [
|
| 7 |
{
|
| 8 |
"doc_slug": "irdai-master-circular-health-2024",
|
| 9 |
-
"doc_name": "Master Circular on Health Insurance Business (English)",
|
| 10 |
"category": "master_regulation",
|
| 11 |
"issuing_body": "IRDAI",
|
| 12 |
"year": "2024",
|
| 13 |
"doc_type": "master_circular",
|
| 14 |
-
"url": "https://irdai.gov.in/documents/37343/991022/
|
| 15 |
-
"notes": "IRDAI Ref: IRDAI/HLT/REG/CIR/106/05/2024, 29 May 2024. Single most important file \u2014 consolidates 55 health circulars. English version.",
|
| 16 |
"local_path": "rag/corpus/regulatory/irdai-master-circular-health-2024.pdf",
|
| 17 |
-
"ok":
|
| 18 |
-
"
|
| 19 |
-
"
|
|
|
|
|
|
|
| 20 |
},
|
| 21 |
{
|
| 22 |
"doc_slug": "irdai-master-circular-health-annexure-2024",
|
|
@@ -25,40 +28,43 @@
|
|
| 25 |
"issuing_body": "IRDAI",
|
| 26 |
"year": "2024",
|
| 27 |
"doc_type": "master_circular_annexure",
|
| 28 |
-
"url": "https://irdai.gov.in/documents/37343/991022/
|
| 29 |
-
"notes": "Contains standardised CIS template, claim form formats, prospectus template \u2014 bundled with the Master Circular.",
|
| 30 |
"local_path": "rag/corpus/regulatory/irdai-master-circular-health-annexure-2024.pdf",
|
| 31 |
-
"ok":
|
| 32 |
-
"
|
| 33 |
-
"
|
|
|
|
|
|
|
| 34 |
},
|
| 35 |
{
|
| 36 |
"doc_slug": "irdai-health-insurance-regulations-2016",
|
| 37 |
-
"doc_name": "IRDAI (Health Insurance) Regulations, 2016",
|
| 38 |
"category": "master_regulation",
|
| 39 |
"issuing_body": "IRDAI / Gazette of India",
|
| 40 |
"year": "2016",
|
| 41 |
"doc_type": "regulation",
|
| 42 |
-
"url": "https://
|
| 43 |
-
"notes": "Hosted on India Code (indiacode.nic.in) \u2014 Ministry of Law & Justice repository. Gazetted 12 Jul 2016. Base regulation for all health products.",
|
| 44 |
"local_path": "rag/corpus/regulatory/irdai-health-insurance-regulations-2016.pdf",
|
| 45 |
-
"ok":
|
| 46 |
-
"
|
| 47 |
-
"
|
|
|
|
|
|
|
| 48 |
},
|
| 49 |
{
|
| 50 |
"doc_slug": "irdai-master-circular-protection-policyholders-2024",
|
| 51 |
-
"doc_name": "Master Circular on Protection of Policyholders' Interests, 2024",
|
| 52 |
"category": "master_regulation",
|
| 53 |
"issuing_body": "IRDAI",
|
| 54 |
"year": "2024",
|
| 55 |
"doc_type": "master_circular",
|
| 56 |
-
"url": "https://irdai.gov.in/
|
| 57 |
-
"notes": "Ref: IRDAI/PP&GR/CIR/MISC/117/9/2024, 5 Sep 2024. Replaces 30 earlier circulars on free-look, refunds, claims, policy servicing. Document-detail page \u2014 downloader follows the PDF link inside.",
|
| 58 |
"local_path": "rag/corpus/regulatory/irdai-master-circular-protection-policyholders-2024.pdf",
|
| 59 |
-
"ok":
|
| 60 |
-
"
|
| 61 |
-
"
|
|
|
|
|
|
|
| 62 |
},
|
| 63 |
{
|
| 64 |
"doc_slug": "irdai-protection-policyholders-regulations-2017",
|
|
@@ -67,110 +73,133 @@
|
|
| 67 |
"issuing_body": "IRDAI",
|
| 68 |
"year": "2017",
|
| 69 |
"doc_type": "regulation",
|
| 70 |
-
"url": "https://irdai.gov.in/documents/37343/366405/IRDAI+(Protection+of+Policyholders%E2%80%99+Interests)+Regulations,+2017.pdf/d381555f-cb66-81b4-64d9-33c50b83cd99
|
| 71 |
-
"notes": "Predecessor regulation, still authoritative for pre-2024 contracts and as legal-history context.",
|
| 72 |
"local_path": "rag/corpus/regulatory/irdai-protection-policyholders-regulations-2017.pdf",
|
| 73 |
-
"ok":
|
| 74 |
-
"
|
| 75 |
-
"
|
|
|
|
|
|
|
| 76 |
},
|
| 77 |
{
|
| 78 |
"doc_slug": "irdai-master-circular-standardisation-health-products-2020",
|
| 79 |
-
"doc_name": "Master Circular on Standardization of Health Insurance Products",
|
| 80 |
"category": "master_regulation",
|
| 81 |
"issuing_body": "IRDAI",
|
| 82 |
"year": "2020",
|
| 83 |
"doc_type": "master_circular",
|
| 84 |
-
"url": "https://irdai.gov.in/documents/37343/366029/Master+Circular+on+Standardization+of+Health+Insurance+Products.pdf/40548736-71a8-1b76-e28d-0df899407e1e
|
| 85 |
-
"notes": "Ref: IRDAI/HLT/REG/CIR/193/07/2020, 22 Jul 2020. Single consolidated source for 42+ standard definitions, mandatory/non-mandatory exclusions, modern-treatment list. Critical for chatbot grounding.",
|
| 86 |
"local_path": "rag/corpus/regulatory/irdai-master-circular-standardisation-health-products-2020.pdf",
|
| 87 |
-
"ok":
|
| 88 |
-
"
|
| 89 |
-
"
|
|
|
|
|
|
|
| 90 |
},
|
| 91 |
{
|
| 92 |
-
"doc_slug": "irdai-standardisation-exclusions-
|
| 93 |
-
"doc_name": "Guidelines on Standardization of Exclusions in Health Insurance
|
| 94 |
"category": "definitions_exclusions",
|
| 95 |
"issuing_body": "IRDAI",
|
| 96 |
-
"year": "
|
| 97 |
-
"doc_type": "
|
| 98 |
-
"url": "https://irdai.gov.in/
|
| 99 |
-
"
|
| 100 |
-
"
|
| 101 |
-
"
|
| 102 |
-
"
|
| 103 |
-
"
|
|
|
|
| 104 |
},
|
| 105 |
{
|
| 106 |
"doc_slug": "irdai-modification-standardisation-2020",
|
| 107 |
-
"doc_name": "Modification to Guidelines on Standardization in Health Insurance",
|
| 108 |
"category": "definitions_exclusions",
|
| 109 |
"issuing_body": "IRDAI",
|
| 110 |
"year": "2020",
|
| 111 |
"doc_type": "guideline",
|
| 112 |
-
"url": "https://irdai.gov.in/documents/37343/366029/Modification+guidelines+on+standardization+in+health+insurance.pdf/e83cca49-fd1d-e422-9291-310f2a070a15
|
| 113 |
-
"notes": "Adds Migration (cl. 45) and Portability (cl. 46) definitions to the standard 42 terms.",
|
| 114 |
"local_path": "rag/corpus/regulatory/irdai-modification-standardisation-2020.pdf",
|
| 115 |
-
"ok":
|
| 116 |
-
"
|
| 117 |
-
"
|
|
|
|
|
|
|
| 118 |
},
|
| 119 |
{
|
| 120 |
"doc_slug": "irdai-consolidated-product-filing-health-2020",
|
| 121 |
-
"doc_name": "Consolidated Guidelines on Product Filing in Health Insurance Business",
|
| 122 |
"category": "master_regulation",
|
| 123 |
"issuing_body": "IRDAI",
|
| 124 |
"year": "2020",
|
| 125 |
"doc_type": "guideline",
|
| 126 |
-
"url": "https://irdai.gov.in/documents/37343/366029/Consolidated+Guidelines+on+Product+filing+in+Health+Insurance+Business.pdf/8eb75be8-5920-eb17-c6df-12cc2831c099
|
| 127 |
-
"notes": "Ref: IRDAI/HLT/REG/CIR/194/07/2020. Companion to the 193/07/2020 master circular \u2014 defines CIS revisions and product-design rules.",
|
| 128 |
"local_path": "rag/corpus/regulatory/irdai-consolidated-product-filing-health-2020.pdf",
|
| 129 |
-
"ok":
|
| 130 |
-
"
|
| 131 |
-
"
|
|
|
|
|
|
|
| 132 |
},
|
| 133 |
{
|
| 134 |
"doc_slug": "irdai-arogya-sanjeevani-policy",
|
| 135 |
-
"doc_name": "Arogya Sanjeevani Policy
|
| 136 |
"category": "standardised_product",
|
| 137 |
"issuing_body": "IRDAI",
|
| 138 |
"year": "2020",
|
| 139 |
"doc_type": "product_guideline",
|
| 140 |
-
"url": "https://irdai.gov.in/
|
| 141 |
-
"notes": "IRDAI page hosting the standard product wording PDFs (mandatory for all general + standalone health insurers since Apr 2020).",
|
| 142 |
"local_path": "rag/corpus/regulatory/irdai-arogya-sanjeevani-policy.pdf",
|
| 143 |
-
"ok":
|
| 144 |
-
"
|
| 145 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 146 |
},
|
| 147 |
{
|
| 148 |
"doc_slug": "irdai-saral-suraksha-bima-guidelines",
|
| 149 |
-
"doc_name": "Guidelines on Standard Personal Accident Insurance Product (Saral Suraksha Bima)",
|
| 150 |
"category": "standardised_product",
|
| 151 |
"issuing_body": "IRDAI",
|
| 152 |
"year": "2021",
|
| 153 |
"doc_type": "product_guideline",
|
| 154 |
-
"url": "https://irdai.gov.in/documents/37343/0/Final+guidelines+on+standard+PA+product-25.02.2021+(2).pdf/ba6be748-a838-530a-ea7d-c5be5dd7b8c3
|
| 155 |
-
"notes": "Ref dated 25 Feb 2021. Mandatory PA product from 1 Apr 2021. Death/PTD/PPD base covers + 3 optional.",
|
| 156 |
"local_path": "rag/corpus/regulatory/irdai-saral-suraksha-bima-guidelines.pdf",
|
| 157 |
-
"ok":
|
| 158 |
-
"
|
| 159 |
-
"
|
|
|
|
|
|
|
| 160 |
},
|
| 161 |
{
|
| 162 |
"doc_slug": "irdai-corona-kavach-press-release",
|
| 163 |
-
"doc_name": "Corona Kavach Policy
|
| 164 |
"category": "standardised_product",
|
| 165 |
"issuing_body": "IRDAI",
|
| 166 |
"year": "2020",
|
| 167 |
"doc_type": "product_guideline",
|
| 168 |
-
"url": "https://irdai.gov.in/documents/37343/1092396/Corona+Kavach+Policy.pdf/33f3e0bb-fac5-b6d9-ee1c-4d22d321dc3a
|
| 169 |
-
"notes": "Ref: IRDAI/HLT/REG/CIR/163/06/2020, 26 Jun 2020. Withdrawn for new sales but still relevant for legacy policy enquiries.",
|
| 170 |
"local_path": "rag/corpus/regulatory/irdai-corona-kavach-press-release.pdf",
|
| 171 |
-
"ok":
|
| 172 |
-
"
|
| 173 |
-
"
|
|
|
|
|
|
|
| 174 |
},
|
| 175 |
{
|
| 176 |
"doc_slug": "irdai-ombudsman-rules-faq-2017",
|
|
@@ -179,12 +208,13 @@
|
|
| 179 |
"issuing_body": "IRDAI / DFS",
|
| 180 |
"year": "2017",
|
| 181 |
"doc_type": "rules_faq",
|
| 182 |
-
"url": "https://irdai.gov.in/documents/37343/379608/FAQ%E2%80%99s+on+Insurance+Ombudsman+Rules+2017.pdf/37bc4077-6906-91ad-fb49-6c0e733b3e0d
|
| 183 |
-
"notes": "Notified by Central Government (DFS) 27 Apr 2017; amended 2018, 2021. FAQ form covers rule text + jurisdiction + complaint process.",
|
| 184 |
"local_path": "rag/corpus/regulatory/irdai-ombudsman-rules-faq-2017.pdf",
|
| 185 |
-
"ok":
|
| 186 |
-
"
|
| 187 |
-
"
|
|
|
|
|
|
|
| 188 |
},
|
| 189 |
{
|
| 190 |
"doc_slug": "irdai-grievance-redressal-handbook",
|
|
@@ -193,54 +223,58 @@
|
|
| 193 |
"issuing_body": "IRDAI",
|
| 194 |
"year": "2021",
|
| 195 |
"doc_type": "handbook",
|
| 196 |
-
"url": "https://irdai.gov.in/documents/38105/41843/Grievance+Redressal+System+Handbook.pdf/aa18899a-ff58-69bd-53eb-bc13fb00597e
|
| 197 |
-
"notes": "Consumer-facing handbook on IGMS, Bima Bharosa, TAT for grievances, escalation path.",
|
| 198 |
"local_path": "rag/corpus/regulatory/irdai-grievance-redressal-handbook.pdf",
|
| 199 |
-
"ok":
|
| 200 |
-
"
|
| 201 |
-
"
|
|
|
|
|
|
|
| 202 |
},
|
| 203 |
{
|
| 204 |
"doc_slug": "irdai-insurance-act-1938-amended-2021",
|
| 205 |
-
"doc_name": "The Insurance Act, 1938 (
|
| 206 |
"category": "master_regulation",
|
| 207 |
"issuing_body": "IRDAI / Parliament of India",
|
| 208 |
-
"year": "
|
| 209 |
"doc_type": "statute",
|
| 210 |
-
"url": "https://irdai.gov.in/documents/37343/366193/
|
| 211 |
-
"notes": "Parent statute. Includes Sec 38 (assignment), Sec 39 (nomination), Sec 45 (claim repudiation \u2014 non-disclosure 3-year window).",
|
| 212 |
"local_path": "rag/corpus/regulatory/irdai-insurance-act-1938-amended-2021.pdf",
|
| 213 |
-
"ok":
|
| 214 |
-
"
|
| 215 |
-
"
|
|
|
|
|
|
|
| 216 |
},
|
| 217 |
{
|
| 218 |
"doc_slug": "nha-pmjay-operations-manual",
|
| 219 |
-
"doc_name": "Ayushman Bharat PM-JAY Operations Manual",
|
| 220 |
"category": "government_scheme",
|
| 221 |
"issuing_body": "National Health Authority (NHA)",
|
| 222 |
-
"year": "
|
| 223 |
"doc_type": "operations_manual",
|
| 224 |
-
"url": "https://nha.gov.in/img/resources/Operation%20Manual%20for%20AB%20PM-JAY.pdf",
|
| 225 |
-
"notes": "Official NHA operational guideline for the PMJAY scheme \u2014 context for bot responses about overlap with private health insurance.",
|
| 226 |
"local_path": "rag/corpus/regulatory/nha-pmjay-operations-manual.pdf",
|
| 227 |
-
"ok":
|
| 228 |
-
"
|
| 229 |
-
"
|
|
|
|
|
|
|
| 230 |
},
|
| 231 |
{
|
| 232 |
"doc_slug": "dfs-gst-exemption-insurance-faqs-2025",
|
| 233 |
-
"doc_name": "FAQs on Exemption of GST on All Individual Life and Health Insurance Policies",
|
| 234 |
"category": "government_tax",
|
| 235 |
"issuing_body": "Department of Financial Services, Ministry of Finance",
|
| 236 |
"year": "2025",
|
| 237 |
"doc_type": "faq",
|
| 238 |
-
"url": "https://financialservices.gov.in/beta/sites/default/files/2025-10/Insurance-FAQs.pdf",
|
| 239 |
-
"notes": "Official DFS FAQ on 0% GST regime for individual life + health insurance, effective 22 Sep 2025 (gives effect to CBIC Notification 16/2025-CTR). Authoritative tax-treatment reference for bot.",
|
| 240 |
"local_path": "rag/corpus/regulatory/dfs-gst-exemption-insurance-faqs-2025.pdf",
|
| 241 |
-
"ok":
|
| 242 |
-
"
|
| 243 |
-
"
|
|
|
|
|
|
|
| 244 |
}
|
| 245 |
]
|
| 246 |
}
|
|
|
|
| 1 |
{
|
| 2 |
+
"downloaded_at": "2026-05-13T00:00:00Z",
|
| 3 |
+
"method": "playwright_browser_fetch_same_origin",
|
| 4 |
+
"note": "All irdai.gov.in URLs return HTTP 403 to plain curl due to Akamai bot-protection. Fetched via Playwright MCP after warming up cookies on irdai.gov.in homepage, then issuing same-origin fetch() from JS (with credentials: 'include' to send Akamai cookies + Origin: irdai.gov.in). Landing-page URLs (document-detail?documentId=...) were resolved by extracting the embedded PDF anchor href. Live nha.gov.in and financialservices.gov.in were unreachable from the test environment (SPA path-rewrite + ConnectionTimeout); their files were pulled from Web Archive captures (2024-2025).",
|
| 5 |
+
"total": 18,
|
| 6 |
+
"ok": 18,
|
| 7 |
+
"fail": 0,
|
| 8 |
"results": [
|
| 9 |
{
|
| 10 |
"doc_slug": "irdai-master-circular-health-2024",
|
| 11 |
+
"doc_name": "Master Circular on Health Insurance Business (English) - IRDAI/HLT/REG/CIR/106/05/2024, 29 May 2024",
|
| 12 |
"category": "master_regulation",
|
| 13 |
"issuing_body": "IRDAI",
|
| 14 |
"year": "2024",
|
| 15 |
"doc_type": "master_circular",
|
| 16 |
+
"url": "https://irdai.gov.in/documents/37343/991022/...Master+Circular+on+Health+Insurance+Business+-English.pdf/08a32828-dc1d-116f-0549-6db86d448651",
|
|
|
|
| 17 |
"local_path": "rag/corpus/regulatory/irdai-master-circular-health-2024.pdf",
|
| 18 |
+
"ok": true,
|
| 19 |
+
"size_bytes": 962806,
|
| 20 |
+
"pdf_magic_verified": true,
|
| 21 |
+
"error": null,
|
| 22 |
+
"notes": ""
|
| 23 |
},
|
| 24 |
{
|
| 25 |
"doc_slug": "irdai-master-circular-health-annexure-2024",
|
|
|
|
| 28 |
"issuing_body": "IRDAI",
|
| 29 |
"year": "2024",
|
| 30 |
"doc_type": "master_circular_annexure",
|
| 31 |
+
"url": "https://irdai.gov.in/documents/37343/991022/...Annexure+to+Master+circualr+on+Health+Insurance+Business+29052024.pdf/e65501d8-2731-6f5c-aaed-658f961289e1",
|
|
|
|
| 32 |
"local_path": "rag/corpus/regulatory/irdai-master-circular-health-annexure-2024.pdf",
|
| 33 |
+
"ok": true,
|
| 34 |
+
"size_bytes": 1116975,
|
| 35 |
+
"pdf_magic_verified": true,
|
| 36 |
+
"error": null,
|
| 37 |
+
"notes": ""
|
| 38 |
},
|
| 39 |
{
|
| 40 |
"doc_slug": "irdai-health-insurance-regulations-2016",
|
| 41 |
+
"doc_name": "IRDAI (Health Insurance) Regulations, 2016 (amended up to 19/11/2019)",
|
| 42 |
"category": "master_regulation",
|
| 43 |
"issuing_body": "IRDAI / Gazette of India",
|
| 44 |
"year": "2016",
|
| 45 |
"doc_type": "regulation",
|
| 46 |
+
"url": "https://web.archive.org/web/20240813230224id_/https://upload.indiacode.nic.in/showfile?actid=AC_CEN_2_33_00044_193804_1523351752525&type=regulation&filename=irdai_(health_insurance)_regulations,_2016.pdf",
|
|
|
|
| 47 |
"local_path": "rag/corpus/regulatory/irdai-health-insurance-regulations-2016.pdf",
|
| 48 |
+
"ok": true,
|
| 49 |
+
"size_bytes": 293058,
|
| 50 |
+
"pdf_magic_verified": true,
|
| 51 |
+
"error": null,
|
| 52 |
+
"notes": "Live indiacode.nic.in timed out repeatedly from the test environment; fetched via Wayback Machine August 2024 capture (38-page Consolidated Health Insurance Regulations)."
|
| 53 |
},
|
| 54 |
{
|
| 55 |
"doc_slug": "irdai-master-circular-protection-policyholders-2024",
|
| 56 |
+
"doc_name": "Master Circular on Protection of Policyholders' Interests, 2024 - IRDAI/PP&GR/CIR/MISC/117/9/2024, 5 Sep 2024 (English)",
|
| 57 |
"category": "master_regulation",
|
| 58 |
"issuing_body": "IRDAI",
|
| 59 |
"year": "2024",
|
| 60 |
"doc_type": "master_circular",
|
| 61 |
+
"url": "https://irdai.gov.in/documents/37343/0/...Master+Circular+on+Protection+of+Policyholders'+interests+2024-+English.pdf/12da35c0-254f-8ae1-2d55-44ba7ac351f6",
|
|
|
|
| 62 |
"local_path": "rag/corpus/regulatory/irdai-master-circular-protection-policyholders-2024.pdf",
|
| 63 |
+
"ok": true,
|
| 64 |
+
"size_bytes": 91401689,
|
| 65 |
+
"pdf_magic_verified": true,
|
| 66 |
+
"error": null,
|
| 67 |
+
"notes": "Followed embedded PDF link from landing page document-detail?documentId=5625747."
|
| 68 |
},
|
| 69 |
{
|
| 70 |
"doc_slug": "irdai-protection-policyholders-regulations-2017",
|
|
|
|
| 73 |
"issuing_body": "IRDAI",
|
| 74 |
"year": "2017",
|
| 75 |
"doc_type": "regulation",
|
| 76 |
+
"url": "https://irdai.gov.in/documents/37343/366405/IRDAI+(Protection+of+Policyholders%E2%80%99+Interests)+Regulations,+2017.pdf/d381555f-cb66-81b4-64d9-33c50b83cd99",
|
|
|
|
| 77 |
"local_path": "rag/corpus/regulatory/irdai-protection-policyholders-regulations-2017.pdf",
|
| 78 |
+
"ok": true,
|
| 79 |
+
"size_bytes": 1860282,
|
| 80 |
+
"pdf_magic_verified": true,
|
| 81 |
+
"error": null,
|
| 82 |
+
"notes": ""
|
| 83 |
},
|
| 84 |
{
|
| 85 |
"doc_slug": "irdai-master-circular-standardisation-health-products-2020",
|
| 86 |
+
"doc_name": "Master Circular on Standardization of Health Insurance Products - IRDAI/HLT/REG/CIR/193/07/2020",
|
| 87 |
"category": "master_regulation",
|
| 88 |
"issuing_body": "IRDAI",
|
| 89 |
"year": "2020",
|
| 90 |
"doc_type": "master_circular",
|
| 91 |
+
"url": "https://irdai.gov.in/documents/37343/366029/Master+Circular+on+Standardization+of+Health+Insurance+Products.pdf/40548736-71a8-1b76-e28d-0df899407e1e",
|
|
|
|
| 92 |
"local_path": "rag/corpus/regulatory/irdai-master-circular-standardisation-health-products-2020.pdf",
|
| 93 |
+
"ok": true,
|
| 94 |
+
"size_bytes": 3834283,
|
| 95 |
+
"pdf_magic_verified": true,
|
| 96 |
+
"error": null,
|
| 97 |
+
"notes": ""
|
| 98 |
},
|
| 99 |
{
|
| 100 |
+
"doc_slug": "irdai-standardisation-exclusions-amendments-2020",
|
| 101 |
+
"doc_name": "Amendments in respect of provisions of Guidelines on Standardization of Exclusions in Health Insurance - IRDAI/HLT/REG/CIR/046/02/2020 (Feb 2020 amendments to the Sep 2019 Guidelines)",
|
| 102 |
"category": "definitions_exclusions",
|
| 103 |
"issuing_body": "IRDAI",
|
| 104 |
+
"year": "2020",
|
| 105 |
+
"doc_type": "guideline_amendments",
|
| 106 |
+
"url": "https://irdai.gov.in/documents/37343/365525/Amendments+in+respect+of+provisions+of+Guidelines+on+Standardization+of+Exc.pdf/fe4822bf-c5eb-de32-d65a-868067bccaab",
|
| 107 |
+
"local_path": "rag/corpus/regulatory/irdai-standardisation-exclusions-amendments-2020.pdf",
|
| 108 |
+
"ok": true,
|
| 109 |
+
"size_bytes": 1018416,
|
| 110 |
+
"pdf_magic_verified": true,
|
| 111 |
+
"error": null,
|
| 112 |
+
"notes": "data/regulatory_urls.md listed documentId=393676 as the Sep 2019 Guidelines (IRDAI/HLT/REG/CIR/177/09/2019), but that documentId actually serves this Feb 2020 Amendments PDF. The substantive content of the Sep 2019 Guidelines is consolidated into irdai-master-circular-standardisation-health-products-2020.pdf which supersedes it."
|
| 113 |
},
|
| 114 |
{
|
| 115 |
"doc_slug": "irdai-modification-standardisation-2020",
|
| 116 |
+
"doc_name": "Modification to Guidelines on Standardization in Health Insurance (adds Migration cl. 45 + Portability cl. 46)",
|
| 117 |
"category": "definitions_exclusions",
|
| 118 |
"issuing_body": "IRDAI",
|
| 119 |
"year": "2020",
|
| 120 |
"doc_type": "guideline",
|
| 121 |
+
"url": "https://irdai.gov.in/documents/37343/366029/Modification+guidelines+on+standardization+in+health+insurance.pdf/e83cca49-fd1d-e422-9291-310f2a070a15",
|
|
|
|
| 122 |
"local_path": "rag/corpus/regulatory/irdai-modification-standardisation-2020.pdf",
|
| 123 |
+
"ok": true,
|
| 124 |
+
"size_bytes": 419183,
|
| 125 |
+
"pdf_magic_verified": true,
|
| 126 |
+
"error": null,
|
| 127 |
+
"notes": ""
|
| 128 |
},
|
| 129 |
{
|
| 130 |
"doc_slug": "irdai-consolidated-product-filing-health-2020",
|
| 131 |
+
"doc_name": "Consolidated Guidelines on Product Filing in Health Insurance Business - IRDAI/HLT/REG/CIR/194/07/2020",
|
| 132 |
"category": "master_regulation",
|
| 133 |
"issuing_body": "IRDAI",
|
| 134 |
"year": "2020",
|
| 135 |
"doc_type": "guideline",
|
| 136 |
+
"url": "https://irdai.gov.in/documents/37343/366029/Consolidated+Guidelines+on+Product+filing+in+Health+Insurance+Business.pdf/8eb75be8-5920-eb17-c6df-12cc2831c099",
|
|
|
|
| 137 |
"local_path": "rag/corpus/regulatory/irdai-consolidated-product-filing-health-2020.pdf",
|
| 138 |
+
"ok": true,
|
| 139 |
+
"size_bytes": 2153042,
|
| 140 |
+
"pdf_magic_verified": true,
|
| 141 |
+
"error": null,
|
| 142 |
+
"notes": ""
|
| 143 |
},
|
| 144 |
{
|
| 145 |
"doc_slug": "irdai-arogya-sanjeevani-policy",
|
| 146 |
+
"doc_name": "Arogya Sanjeevani Policy - IRDAI Standard Individual Health Product (Press Release, 24 Jul 2020)",
|
| 147 |
"category": "standardised_product",
|
| 148 |
"issuing_body": "IRDAI",
|
| 149 |
"year": "2020",
|
| 150 |
"doc_type": "product_guideline",
|
| 151 |
+
"url": "https://irdai.gov.in/documents/37343/1092396/%E2%80%9CArogya+Sanjeevani%E2%80%9D+Policy.pdf/db6da3c1-fb74-eb32-0cd6-0cf73fed6f7c",
|
|
|
|
| 152 |
"local_path": "rag/corpus/regulatory/irdai-arogya-sanjeevani-policy.pdf",
|
| 153 |
+
"ok": true,
|
| 154 |
+
"size_bytes": 193218,
|
| 155 |
+
"pdf_magic_verified": true,
|
| 156 |
+
"error": null,
|
| 157 |
+
"notes": "Followed embedded PDF link from landing page web/guest/document-detail?documentId=695486."
|
| 158 |
+
},
|
| 159 |
+
{
|
| 160 |
+
"doc_slug": "irdai-arogya-sanjeevani-policy-attachment-1",
|
| 161 |
+
"doc_name": "Arogya Sanjeevani Policy - Attachment 1 (Standard Product Wording)",
|
| 162 |
+
"category": "standardised_product",
|
| 163 |
+
"issuing_body": "IRDAI",
|
| 164 |
+
"year": "2021",
|
| 165 |
+
"doc_type": "product_attachment",
|
| 166 |
+
"url": "https://irdai.gov.in/documents/37343/1082836/%E2%80%9CArogya+Sanjeevani%E2%80%9D+Policy+Attachment-1.pdf/3fd07255-38dd-3fcf-a2be-b949057eeec2",
|
| 167 |
+
"local_path": "rag/corpus/regulatory/irdai-arogya-sanjeevani-policy-attachment-1.pdf",
|
| 168 |
+
"ok": true,
|
| 169 |
+
"size_bytes": 197641,
|
| 170 |
+
"pdf_magic_verified": true,
|
| 171 |
+
"error": null,
|
| 172 |
+
"notes": "Bonus attachment also linked on the Arogya Sanjeevani landing page (not on the original corpus list, but valuable companion content)."
|
| 173 |
},
|
| 174 |
{
|
| 175 |
"doc_slug": "irdai-saral-suraksha-bima-guidelines",
|
| 176 |
+
"doc_name": "Guidelines on Standard Personal Accident Insurance Product (Saral Suraksha Bima), 25 Feb 2021",
|
| 177 |
"category": "standardised_product",
|
| 178 |
"issuing_body": "IRDAI",
|
| 179 |
"year": "2021",
|
| 180 |
"doc_type": "product_guideline",
|
| 181 |
+
"url": "https://irdai.gov.in/documents/37343/0/Final+guidelines+on+standard+PA+product-25.02.2021+(2).pdf/ba6be748-a838-530a-ea7d-c5be5dd7b8c3",
|
|
|
|
| 182 |
"local_path": "rag/corpus/regulatory/irdai-saral-suraksha-bima-guidelines.pdf",
|
| 183 |
+
"ok": true,
|
| 184 |
+
"size_bytes": 1019548,
|
| 185 |
+
"pdf_magic_verified": true,
|
| 186 |
+
"error": null,
|
| 187 |
+
"notes": ""
|
| 188 |
},
|
| 189 |
{
|
| 190 |
"doc_slug": "irdai-corona-kavach-press-release",
|
| 191 |
+
"doc_name": "Corona Kavach Policy - IRDAI Press Release & Standard Wording - IRDAI/HLT/REG/CIR/163/06/2020",
|
| 192 |
"category": "standardised_product",
|
| 193 |
"issuing_body": "IRDAI",
|
| 194 |
"year": "2020",
|
| 195 |
"doc_type": "product_guideline",
|
| 196 |
+
"url": "https://irdai.gov.in/documents/37343/1092396/Corona+Kavach+Policy.pdf/33f3e0bb-fac5-b6d9-ee1c-4d22d321dc3a",
|
|
|
|
| 197 |
"local_path": "rag/corpus/regulatory/irdai-corona-kavach-press-release.pdf",
|
| 198 |
+
"ok": true,
|
| 199 |
+
"size_bytes": 272274,
|
| 200 |
+
"pdf_magic_verified": true,
|
| 201 |
+
"error": null,
|
| 202 |
+
"notes": ""
|
| 203 |
},
|
| 204 |
{
|
| 205 |
"doc_slug": "irdai-ombudsman-rules-faq-2017",
|
|
|
|
| 208 |
"issuing_body": "IRDAI / DFS",
|
| 209 |
"year": "2017",
|
| 210 |
"doc_type": "rules_faq",
|
| 211 |
+
"url": "https://irdai.gov.in/documents/37343/379608/FAQ%E2%80%99s+on+Insurance+Ombudsman+Rules+2017.pdf/37bc4077-6906-91ad-fb49-6c0e733b3e0d",
|
|
|
|
| 212 |
"local_path": "rag/corpus/regulatory/irdai-ombudsman-rules-faq-2017.pdf",
|
| 213 |
+
"ok": true,
|
| 214 |
+
"size_bytes": 194844,
|
| 215 |
+
"pdf_magic_verified": true,
|
| 216 |
+
"error": null,
|
| 217 |
+
"notes": ""
|
| 218 |
},
|
| 219 |
{
|
| 220 |
"doc_slug": "irdai-grievance-redressal-handbook",
|
|
|
|
| 223 |
"issuing_body": "IRDAI",
|
| 224 |
"year": "2021",
|
| 225 |
"doc_type": "handbook",
|
| 226 |
+
"url": "https://irdai.gov.in/documents/38105/41843/Grievance+Redressal+System+Handbook.pdf/aa18899a-ff58-69bd-53eb-bc13fb00597e",
|
|
|
|
| 227 |
"local_path": "rag/corpus/regulatory/irdai-grievance-redressal-handbook.pdf",
|
| 228 |
+
"ok": true,
|
| 229 |
+
"size_bytes": 181112,
|
| 230 |
+
"pdf_magic_verified": true,
|
| 231 |
+
"error": null,
|
| 232 |
+
"notes": ""
|
| 233 |
},
|
| 234 |
{
|
| 235 |
"doc_slug": "irdai-insurance-act-1938-amended-2021",
|
| 236 |
+
"doc_name": "The Insurance Act, 1938 (Incorporating all amendments including the Finance (No.2) Act, 2019)",
|
| 237 |
"category": "master_regulation",
|
| 238 |
"issuing_body": "IRDAI / Parliament of India",
|
| 239 |
+
"year": "2019",
|
| 240 |
"doc_type": "statute",
|
| 241 |
+
"url": "https://irdai.gov.in/documents/37343/366193/THE+INSURANCE+ACT%2C+1938+%28Incorporating+all+amendments+including+the+amendment.pdf/752842a8-84d6-330f-08f2-de2b3e1f9be4",
|
|
|
|
| 242 |
"local_path": "rag/corpus/regulatory/irdai-insurance-act-1938-amended-2021.pdf",
|
| 243 |
+
"ok": true,
|
| 244 |
+
"size_bytes": 1057520,
|
| 245 |
+
"pdf_magic_verified": true,
|
| 246 |
+
"error": null,
|
| 247 |
+
"notes": "The URL in data/regulatory_urls.md (filename ending '20212021-08-12.pdf') returns 403/login-required; the canonical Insurance Act 1938 PDF is at the cleaner URL shown above, found via the irdai.gov.in/acts listing. Content covers Sec 38 (assignment), Sec 39 (nomination), Sec 45 (claim repudiation)."
|
| 248 |
},
|
| 249 |
{
|
| 250 |
"doc_slug": "nha-pmjay-operations-manual",
|
| 251 |
+
"doc_name": "Ayushman Bharat PM-JAY Operations Manual (April 2022 edition, 32 pages)",
|
| 252 |
"category": "government_scheme",
|
| 253 |
"issuing_body": "National Health Authority (NHA)",
|
| 254 |
+
"year": "2022",
|
| 255 |
"doc_type": "operations_manual",
|
| 256 |
+
"url": "https://web.archive.org/web/20251231153725id_/https://nha.gov.in/img/resources/Operation%20Manual%20for%20AB%20PM-JAY.pdf",
|
|
|
|
| 257 |
"local_path": "rag/corpus/regulatory/nha-pmjay-operations-manual.pdf",
|
| 258 |
+
"ok": true,
|
| 259 |
+
"size_bytes": 1779098,
|
| 260 |
+
"pdf_magic_verified": true,
|
| 261 |
+
"error": null,
|
| 262 |
+
"notes": "Live nha.gov.in serves an SPA 'Integrated Portal' HTML for the /img/resources/...pdf path (the path served the binary in 2022 per the corpus list); fetched via Wayback Machine Dec 2025 capture which preserves the real PDF."
|
| 263 |
},
|
| 264 |
{
|
| 265 |
"doc_slug": "dfs-gst-exemption-insurance-faqs-2025",
|
| 266 |
+
"doc_name": "FAQs on Exemption of GST on All Individual Life and Health Insurance Policies (effective 22 Sep 2025)",
|
| 267 |
"category": "government_tax",
|
| 268 |
"issuing_body": "Department of Financial Services, Ministry of Finance",
|
| 269 |
"year": "2025",
|
| 270 |
"doc_type": "faq",
|
| 271 |
+
"url": "https://web.archive.org/web/20251221190300id_/https://financialservices.gov.in/beta/sites/default/files/2025-10/Insurance-FAQs.pdf",
|
|
|
|
| 272 |
"local_path": "rag/corpus/regulatory/dfs-gst-exemption-insurance-faqs-2025.pdf",
|
| 273 |
+
"ok": true,
|
| 274 |
+
"size_bytes": 15280,
|
| 275 |
+
"pdf_magic_verified": true,
|
| 276 |
+
"error": null,
|
| 277 |
+
"notes": "Live financialservices.gov.in timed out (ConnectionTimeout); fetched via Wayback Machine Dec 2025 capture. Document is a genuine 2-page FAQ (15 KB) - smaller than the 50 KB threshold but content is real and authoritative; content verified via PDF.js viewer screenshot."
|
| 278 |
}
|
| 279 |
]
|
| 280 |
}
|
rag/vectors/chroma.sqlite3
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2d515c927a2a2786e9fd4d995251f1da6b044d10f696d585917cef7ecf77090c
|
| 3 |
+
size 16261120
|
rag/vectors/d62097c0-7e5e-4fb9-b582-54c657c3c91f/data_level0.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ea9ac6972cb4666769a17755f17c5727f676f11a742e9553bf3a21119ab54394
|
| 3 |
+
size 167600
|
rag/vectors/d62097c0-7e5e-4fb9-b582-54c657c3c91f/header.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a0e81c3b22454233bc12d0762f06dcca48261a75231cf87c79b75e69a6c00150
|
| 3 |
+
size 100
|
rag/vectors/d62097c0-7e5e-4fb9-b582-54c657c3c91f/length.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7a12e561363385e9dfeeab326368731c030ed4b374e7f5897ac819159d2884c5
|
| 3 |
+
size 400
|
rag/vectors/d62097c0-7e5e-4fb9-b582-54c657c3c91f/link_lists.bin
ADDED
|
File without changes
|
tools/chunk_sweep.py
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Hyperparameter sweep — find the empirically-best (chunk_size, overlap)
|
| 2 |
+
combination for our corpus by measuring real eval accuracy on each.
|
| 3 |
+
|
| 4 |
+
For each (chunk_size, overlap) cell:
|
| 5 |
+
1. Wipe rag/vectors/
|
| 6 |
+
2. Re-ingest the entire corpus with CHUNK_TOKENS + CHUNK_OVERLAP_TOKENS
|
| 7 |
+
overridden via env vars
|
| 8 |
+
3. Run eval/run.py --limit 25 → record accuracy + latency + chunk count
|
| 9 |
+
4. Restore the WINNER's Chroma at the end so we ship with the best setting
|
| 10 |
+
|
| 11 |
+
Output:
|
| 12 |
+
kb/calculations/chunk_sweep_results.md — leaderboard + per-cell details
|
| 13 |
+
eval/chunk_sweep_results.json — raw
|
| 14 |
+
|
| 15 |
+
Run:
|
| 16 |
+
python tools/chunk_sweep.py
|
| 17 |
+
"""
|
| 18 |
+
|
| 19 |
+
from __future__ import annotations
|
| 20 |
+
|
| 21 |
+
import json
|
| 22 |
+
import os
|
| 23 |
+
import shutil
|
| 24 |
+
import subprocess
|
| 25 |
+
import sys
|
| 26 |
+
import time
|
| 27 |
+
from pathlib import Path
|
| 28 |
+
|
| 29 |
+
ROOT = Path(__file__).resolve().parent.parent
|
| 30 |
+
RESULTS_JSON = ROOT / "eval" / "chunk_sweep_results.json"
|
| 31 |
+
RESULTS_MD = ROOT / "kb" / "calculations" / "chunk_sweep_results.md"
|
| 32 |
+
|
| 33 |
+
# Sweep grid. 6 cells = 6 × (~3 min ingest + ~5 min eval) = ~50 min.
|
| 34 |
+
GRID = [
|
| 35 |
+
(600, 80),
|
| 36 |
+
(600, 120),
|
| 37 |
+
(800, 80),
|
| 38 |
+
(800, 120), # current default
|
| 39 |
+
(1000, 120),
|
| 40 |
+
(1000, 200),
|
| 41 |
+
]
|
| 42 |
+
EVAL_LIMIT = 25
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
def run(cmd: list[str], env: dict = None, label: str = "") -> tuple[int, str, float]:
|
| 46 |
+
full_env = {**os.environ, **(env or {})}
|
| 47 |
+
t0 = time.time()
|
| 48 |
+
proc = subprocess.run(cmd, capture_output=True, text=True, env=full_env, cwd=str(ROOT))
|
| 49 |
+
elapsed = time.time() - t0
|
| 50 |
+
if label:
|
| 51 |
+
print(f" {label} → exit={proc.returncode} ({elapsed:.1f}s)")
|
| 52 |
+
return proc.returncode, proc.stdout + proc.stderr, elapsed
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
def dir_size_mb(p: Path) -> float:
|
| 56 |
+
if not p.exists(): return 0.0
|
| 57 |
+
total = 0
|
| 58 |
+
for f in p.rglob("*"):
|
| 59 |
+
if f.is_file(): total += f.stat().st_size
|
| 60 |
+
return round(total / 1024 / 1024, 1)
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
def main():
|
| 64 |
+
venv_py = ROOT / ".venv" / "bin" / "python"
|
| 65 |
+
py = str(venv_py) if venv_py.exists() else sys.executable
|
| 66 |
+
|
| 67 |
+
results = []
|
| 68 |
+
for i, (chunk_size, overlap) in enumerate(GRID, 1):
|
| 69 |
+
print(f"\n=== Cell {i}/{len(GRID)} — chunk_size={chunk_size}, overlap={overlap} ===")
|
| 70 |
+
# 1) Wipe vectors
|
| 71 |
+
shutil.rmtree(ROOT / "rag" / "vectors", ignore_errors=True)
|
| 72 |
+
(ROOT / "rag" / "vectors").mkdir(parents=True, exist_ok=True)
|
| 73 |
+
|
| 74 |
+
env = {
|
| 75 |
+
"CHUNK_TOKENS": str(chunk_size),
|
| 76 |
+
"CHUNK_OVERLAP_TOKENS": str(overlap),
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
# 2) Re-ingest
|
| 80 |
+
rc, log, ingest_s = run([py, "-m", "rag.ingest"], env=env, label="ingest")
|
| 81 |
+
if rc != 0:
|
| 82 |
+
print(f" ingest FAILED: {log[-500:]}")
|
| 83 |
+
results.append({"chunk_size": chunk_size, "overlap": overlap, "error": "ingest_failed"})
|
| 84 |
+
continue
|
| 85 |
+
|
| 86 |
+
# Count chunks added
|
| 87 |
+
chunk_count = None
|
| 88 |
+
try:
|
| 89 |
+
import chromadb
|
| 90 |
+
from chromadb.config import Settings as ChromaSettings
|
| 91 |
+
client = chromadb.PersistentClient(
|
| 92 |
+
path=str(ROOT / "rag" / "vectors"),
|
| 93 |
+
settings=ChromaSettings(anonymized_telemetry=False),
|
| 94 |
+
)
|
| 95 |
+
coll = client.get_or_create_collection(name="policies", metadata={"hnsw:space": "cosine"})
|
| 96 |
+
chunk_count = coll.count()
|
| 97 |
+
except Exception as e:
|
| 98 |
+
chunk_count = None
|
| 99 |
+
print(f" count error: {e}")
|
| 100 |
+
|
| 101 |
+
storage_mb = dir_size_mb(ROOT / "rag" / "vectors")
|
| 102 |
+
print(f" chunks={chunk_count} storage={storage_mb}MB ingest={ingest_s:.0f}s")
|
| 103 |
+
|
| 104 |
+
# 3) Eval
|
| 105 |
+
rc, log, eval_s = run([py, "-m", "eval.run", "--limit", str(EVAL_LIMIT)], env=env, label="eval")
|
| 106 |
+
|
| 107 |
+
# Parse eval/results.json
|
| 108 |
+
try:
|
| 109 |
+
r = json.load(open(ROOT / "eval" / "results.json"))
|
| 110 |
+
s = r.get("summary", {})
|
| 111 |
+
factual = s.get("factual_accuracy", 0.0)
|
| 112 |
+
citation = s.get("citation_accuracy", 0.0)
|
| 113 |
+
refusal = s.get("refusal_precision", 0.0)
|
| 114 |
+
# p95 latency from per-question results
|
| 115 |
+
latencies = sorted(rec.get("latency_ms", 0) for rec in r.get("results", []))
|
| 116 |
+
p50 = latencies[len(latencies)//2] if latencies else None
|
| 117 |
+
p95 = latencies[min(len(latencies)-1, int(len(latencies)*0.95))] if latencies else None
|
| 118 |
+
except Exception as e:
|
| 119 |
+
factual = citation = refusal = None
|
| 120 |
+
p50 = p95 = None
|
| 121 |
+
print(f" eval parse error: {e}")
|
| 122 |
+
|
| 123 |
+
cell = {
|
| 124 |
+
"chunk_size": chunk_size,
|
| 125 |
+
"overlap": overlap,
|
| 126 |
+
"chunk_count": chunk_count,
|
| 127 |
+
"storage_mb": storage_mb,
|
| 128 |
+
"ingest_seconds": round(ingest_s, 1),
|
| 129 |
+
"eval_seconds": round(eval_s, 1),
|
| 130 |
+
"factual_accuracy": factual,
|
| 131 |
+
"citation_accuracy": citation,
|
| 132 |
+
"refusal_precision": refusal,
|
| 133 |
+
"p50_latency_ms": p50,
|
| 134 |
+
"p95_latency_ms": p95,
|
| 135 |
+
}
|
| 136 |
+
results.append(cell)
|
| 137 |
+
# Snapshot per-cell results for resumability
|
| 138 |
+
RESULTS_JSON.parent.mkdir(parents=True, exist_ok=True)
|
| 139 |
+
RESULTS_JSON.write_text(json.dumps({"results": results, "in_progress": i < len(GRID)}, indent=2))
|
| 140 |
+
print(f" factual={factual} citation={citation} p95={p95}ms")
|
| 141 |
+
|
| 142 |
+
# Pick winner — composite score
|
| 143 |
+
def score(c):
|
| 144 |
+
if c.get("factual_accuracy") is None: return -1
|
| 145 |
+
f = c["factual_accuracy"]
|
| 146 |
+
cit = c.get("citation_accuracy") or 0
|
| 147 |
+
return f * 0.7 + cit * 0.3 # bias toward factual; citation is a constraint
|
| 148 |
+
valid = [c for c in results if c.get("factual_accuracy") is not None]
|
| 149 |
+
winner = max(valid, key=score) if valid else None
|
| 150 |
+
|
| 151 |
+
# Write markdown leaderboard
|
| 152 |
+
rows = []
|
| 153 |
+
rows.append("# Chunk-Size Hyperparameter Sweep")
|
| 154 |
+
rows.append("")
|
| 155 |
+
rows.append(f"_Generated {time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime())}. Re-run via `python tools/chunk_sweep.py`._")
|
| 156 |
+
rows.append("")
|
| 157 |
+
rows.append("## Headline")
|
| 158 |
+
rows.append("")
|
| 159 |
+
if winner:
|
| 160 |
+
rows.append(f"**Empirical winner:** `chunk_size={winner['chunk_size']}`, `overlap={winner['overlap']}` — factual {winner['factual_accuracy']*100:.1f}%, citation {winner['citation_accuracy']*100:.1f}%, p95 {winner['p95_latency_ms']}ms")
|
| 161 |
+
rows.append("")
|
| 162 |
+
rows.append("## All cells")
|
| 163 |
+
rows.append("")
|
| 164 |
+
rows.append("| chunk_size | overlap | chunks | storage | factual | citation | refusal | p50 | p95 | ingest |")
|
| 165 |
+
rows.append("| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |")
|
| 166 |
+
for c in results:
|
| 167 |
+
if "error" in c:
|
| 168 |
+
rows.append(f"| {c['chunk_size']} | {c['overlap']} | FAILED | - | - | - | - | - | - | {c.get('error')} |")
|
| 169 |
+
continue
|
| 170 |
+
f = (c.get('factual_accuracy') or 0) * 100
|
| 171 |
+
cit = (c.get('citation_accuracy') or 0) * 100
|
| 172 |
+
ref = (c.get('refusal_precision') or 0) * 100
|
| 173 |
+
rows.append(
|
| 174 |
+
f"| **{c['chunk_size']}** | **{c['overlap']}** | {c['chunk_count']} | {c['storage_mb']}MB | "
|
| 175 |
+
f"{f:.1f}% | {cit:.1f}% | {ref:.1f}% | {c.get('p50_latency_ms')}ms | "
|
| 176 |
+
f"{c.get('p95_latency_ms')}ms | {c.get('ingest_seconds')}s |"
|
| 177 |
+
)
|
| 178 |
+
rows.append("")
|
| 179 |
+
rows.append("## Selection rubric")
|
| 180 |
+
rows.append("")
|
| 181 |
+
rows.append("```")
|
| 182 |
+
rows.append("score = 0.7 × factual_accuracy + 0.3 × citation_accuracy")
|
| 183 |
+
rows.append("```")
|
| 184 |
+
rows.append("Bias toward factual accuracy; citation accuracy as a hard floor.")
|
| 185 |
+
rows.append("")
|
| 186 |
+
rows.append("## Eval methodology")
|
| 187 |
+
rows.append("")
|
| 188 |
+
rows.append(f"- 6 cells × ({EVAL_LIMIT} gold Q&A questions × Groq Llama-3.3-70B judge)")
|
| 189 |
+
rows.append("- Embedder held constant: BGE-small-en-v1.5 (384-dim)")
|
| 190 |
+
rows.append("- Top-k held constant: 5")
|
| 191 |
+
rows.append("- Generator brain held constant: DeepSeek-V3 primary")
|
| 192 |
+
rows.append("- All other hyperparameters held constant — only chunk_size + overlap vary")
|
| 193 |
+
rows.append("")
|
| 194 |
+
rows.append("## Recommendation for `decisions.md` D-018")
|
| 195 |
+
rows.append("")
|
| 196 |
+
if winner:
|
| 197 |
+
rows.append(f"Set `CHUNK_TOKENS = {winner['chunk_size']}`, `CHUNK_OVERLAP_TOKENS = {winner['overlap']}` in `backend/config.py`.")
|
| 198 |
+
else:
|
| 199 |
+
rows.append("No valid cells completed; keep current defaults.")
|
| 200 |
+
|
| 201 |
+
RESULTS_MD.parent.mkdir(parents=True, exist_ok=True)
|
| 202 |
+
RESULTS_MD.write_text("\n".join(rows))
|
| 203 |
+
|
| 204 |
+
# Final summary
|
| 205 |
+
print("\n\n========== SWEEP COMPLETE ==========")
|
| 206 |
+
for c in results:
|
| 207 |
+
if "error" in c:
|
| 208 |
+
print(f" {c['chunk_size']}/{c['overlap']}: ERROR")
|
| 209 |
+
else:
|
| 210 |
+
f = (c.get('factual_accuracy') or 0) * 100
|
| 211 |
+
cit = (c.get('citation_accuracy') or 0) * 100
|
| 212 |
+
print(f" {c['chunk_size']}/{c['overlap']}: factual={f:.1f}% citation={cit:.1f}% p95={c.get('p95_latency_ms')}ms")
|
| 213 |
+
if winner:
|
| 214 |
+
print(f"\nWinner: chunk_size={winner['chunk_size']}, overlap={winner['overlap']}")
|
| 215 |
+
print(f"Results: {RESULTS_MD.relative_to(ROOT)}")
|
| 216 |
+
|
| 217 |
+
|
| 218 |
+
if __name__ == "__main__":
|
| 219 |
+
sys.exit(main())
|
tools/verify_review_urls.py
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""HEAD-check every URL we surface in data/reviews/*.json.
|
| 2 |
+
|
| 3 |
+
We commit hard to the 'no fake / no broken URLs' invariant. This script:
|
| 4 |
+
1. Walks every reviews JSON and harvests every URL field
|
| 5 |
+
2. HEAD-checks each (with GET-Range fallback for sites that block HEAD)
|
| 6 |
+
3. Annotates each URL in the source JSON with {verified: bool, status: int,
|
| 7 |
+
last_checked: ts}
|
| 8 |
+
4. Writes a global summary to eval/reviews_url_verification.json
|
| 9 |
+
5. Prints a leaderboard of broken URLs per insurer
|
| 10 |
+
|
| 11 |
+
Run:
|
| 12 |
+
python tools/verify_review_urls.py [--annotate]
|
| 13 |
+
|
| 14 |
+
--annotate writes verification flags back into data/reviews/*.json.
|
| 15 |
+
"""
|
| 16 |
+
|
| 17 |
+
from __future__ import annotations
|
| 18 |
+
|
| 19 |
+
import argparse
|
| 20 |
+
import json
|
| 21 |
+
import time
|
| 22 |
+
from concurrent.futures import ThreadPoolExecutor, as_completed
|
| 23 |
+
from pathlib import Path
|
| 24 |
+
|
| 25 |
+
import requests
|
| 26 |
+
|
| 27 |
+
ROOT = Path(__file__).resolve().parent.parent
|
| 28 |
+
REVIEWS_DIR = ROOT / "data" / "reviews"
|
| 29 |
+
OUTPUT = ROOT / "eval" / "reviews_url_verification.json"
|
| 30 |
+
|
| 31 |
+
UA = (
|
| 32 |
+
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
|
| 33 |
+
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
|
| 34 |
+
)
|
| 35 |
+
HEADERS = {
|
| 36 |
+
"User-Agent": UA,
|
| 37 |
+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.5",
|
| 38 |
+
"Accept-Language": "en-IN,en;q=0.9",
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def harvest_urls_from(obj, ctx: list, out: list[tuple[str, str]]):
|
| 43 |
+
"""Recursively walk a dict/list, emitting (json_path, url) pairs for every
|
| 44 |
+
string field whose value looks like an http(s) URL."""
|
| 45 |
+
if isinstance(obj, dict):
|
| 46 |
+
for k, v in obj.items():
|
| 47 |
+
harvest_urls_from(v, ctx + [str(k)], out)
|
| 48 |
+
elif isinstance(obj, list):
|
| 49 |
+
for i, v in enumerate(obj):
|
| 50 |
+
harvest_urls_from(v, ctx + [f"[{i}]"], out)
|
| 51 |
+
elif isinstance(obj, str):
|
| 52 |
+
s = obj.strip()
|
| 53 |
+
if s.startswith("http://") or s.startswith("https://"):
|
| 54 |
+
out.append((".".join(ctx), s))
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
def check(url: str) -> dict:
|
| 58 |
+
"""HEAD → fallback GET Range. Many CDNs reject HEAD. Trust 2xx/3xx as OK."""
|
| 59 |
+
try:
|
| 60 |
+
r = requests.head(url, headers=HEADERS, timeout=12, allow_redirects=True)
|
| 61 |
+
if r.status_code in (200, 301, 302, 303, 304):
|
| 62 |
+
return {"url": url, "ok": True, "status": r.status_code, "method": "HEAD", "final_url": r.url}
|
| 63 |
+
# Fallback to a tiny ranged GET
|
| 64 |
+
r2 = requests.get(
|
| 65 |
+
url,
|
| 66 |
+
headers={**HEADERS, "Range": "bytes=0-2047"},
|
| 67 |
+
timeout=12, allow_redirects=True, stream=True,
|
| 68 |
+
)
|
| 69 |
+
ok = r2.status_code in (200, 206, 301, 302, 303, 304)
|
| 70 |
+
return {"url": url, "ok": ok, "status": r2.status_code, "method": "GET-range", "final_url": r2.url}
|
| 71 |
+
except requests.exceptions.RequestException as e:
|
| 72 |
+
return {"url": url, "ok": False, "error": f"{type(e).__name__}"}
|
| 73 |
+
|
| 74 |
+
|
| 75 |
+
def main():
|
| 76 |
+
parser = argparse.ArgumentParser()
|
| 77 |
+
parser.add_argument("--annotate", action="store_true", help="Write verified flags back into source JSON")
|
| 78 |
+
args = parser.parse_args()
|
| 79 |
+
|
| 80 |
+
files = sorted(REVIEWS_DIR.glob("*.json"))
|
| 81 |
+
print(f"Walking {len(files)} reviews files...")
|
| 82 |
+
per_insurer = {}
|
| 83 |
+
all_url_checks = []
|
| 84 |
+
|
| 85 |
+
for f in files:
|
| 86 |
+
if f.name == "INDEX.md":
|
| 87 |
+
continue
|
| 88 |
+
try:
|
| 89 |
+
data = json.loads(f.read_text())
|
| 90 |
+
except Exception as e:
|
| 91 |
+
print(f" skip {f.name}: {e}")
|
| 92 |
+
continue
|
| 93 |
+
slug = data.get("insurer_slug", f.stem)
|
| 94 |
+
urls: list[tuple[str, str]] = []
|
| 95 |
+
harvest_urls_from(data, [], urls)
|
| 96 |
+
# Dedupe by URL preserving first path
|
| 97 |
+
seen = set()
|
| 98 |
+
uniq = []
|
| 99 |
+
for p, u in urls:
|
| 100 |
+
if u in seen: continue
|
| 101 |
+
seen.add(u); uniq.append((p, u))
|
| 102 |
+
per_insurer[slug] = {"file": str(f.relative_to(ROOT)), "count": len(uniq), "checks": [], "_raw": data, "_uniq_urls": uniq}
|
| 103 |
+
|
| 104 |
+
# Parallel check
|
| 105 |
+
all_urls = [(slug, p, u) for slug, v in per_insurer.items() for (p, u) in v["_uniq_urls"]]
|
| 106 |
+
print(f"Checking {len(all_urls)} unique URLs in parallel...")
|
| 107 |
+
results: dict[str, dict] = {}
|
| 108 |
+
with ThreadPoolExecutor(max_workers=8) as ex:
|
| 109 |
+
futures = {ex.submit(check, url): url for (_, _, url) in all_urls}
|
| 110 |
+
for fut in as_completed(futures):
|
| 111 |
+
r = fut.result()
|
| 112 |
+
results[r["url"]] = r
|
| 113 |
+
|
| 114 |
+
# Aggregate per insurer
|
| 115 |
+
summary = {"verified_at": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()),
|
| 116 |
+
"per_insurer": {}, "total_urls": len(results),
|
| 117 |
+
"broken_urls": [], "ok_urls": 0}
|
| 118 |
+
for slug, info in per_insurer.items():
|
| 119 |
+
ok = 0; bad = []
|
| 120 |
+
for p, u in info["_uniq_urls"]:
|
| 121 |
+
r = results.get(u, {"ok": False, "error": "no_result"})
|
| 122 |
+
info["checks"].append({"path": p, "url": u, **r})
|
| 123 |
+
if r.get("ok"): ok += 1
|
| 124 |
+
else: bad.append({"path": p, "url": u, "status": r.get("status"), "error": r.get("error")})
|
| 125 |
+
summary["per_insurer"][slug] = {"total": info["count"], "ok": ok, "broken": len(info["count"] - ok if False else info["checks"]) - ok, "broken_list": bad}
|
| 126 |
+
summary["ok_urls"] += ok
|
| 127 |
+
for b in bad:
|
| 128 |
+
summary["broken_urls"].append({"insurer": slug, **b})
|
| 129 |
+
|
| 130 |
+
if args.annotate:
|
| 131 |
+
# Walk the raw JSON, set _verified flag on URL fields
|
| 132 |
+
# Simpler approach: just write a `_url_verification` block alongside the data
|
| 133 |
+
info["_raw"]["_url_verification"] = {
|
| 134 |
+
"verified_at": summary["verified_at"],
|
| 135 |
+
"total_urls": info["count"],
|
| 136 |
+
"ok": ok,
|
| 137 |
+
"broken_count": len(bad),
|
| 138 |
+
"broken_urls": [b["url"] for b in bad],
|
| 139 |
+
}
|
| 140 |
+
f = ROOT / info["file"]
|
| 141 |
+
f.write_text(json.dumps(info["_raw"], indent=2))
|
| 142 |
+
|
| 143 |
+
OUTPUT.parent.mkdir(parents=True, exist_ok=True)
|
| 144 |
+
OUTPUT.write_text(json.dumps(summary, indent=2))
|
| 145 |
+
|
| 146 |
+
print(f"\n=== URL verification summary ===")
|
| 147 |
+
print(f"Total URLs: {summary['total_urls']}")
|
| 148 |
+
print(f"OK: {summary['ok_urls']}")
|
| 149 |
+
print(f"Broken: {len(summary['broken_urls'])}")
|
| 150 |
+
print()
|
| 151 |
+
print("Per insurer:")
|
| 152 |
+
for slug, s in summary["per_insurer"].items():
|
| 153 |
+
bad = s["total"] - s["ok"]
|
| 154 |
+
tag = "✓" if bad == 0 else "✗"
|
| 155 |
+
print(f" {tag} {slug:>15s}: {s['ok']}/{s['total']} OK ({bad} broken)")
|
| 156 |
+
if summary["broken_urls"]:
|
| 157 |
+
print(f"\nBroken URLs:")
|
| 158 |
+
for b in summary["broken_urls"]:
|
| 159 |
+
err = b.get("error") or f"HTTP {b.get('status')}"
|
| 160 |
+
print(f" [{b['insurer']}] {b['path']:<40} {err:<25} {b['url'][:80]}")
|
| 161 |
+
if args.annotate:
|
| 162 |
+
print(f"\nWrote verification flags to data/reviews/*.json")
|
| 163 |
+
print(f"Summary: {OUTPUT.relative_to(ROOT)}")
|
| 164 |
+
|
| 165 |
+
|
| 166 |
+
if __name__ == "__main__":
|
| 167 |
+
main()
|