AI-powered parametric insurance for food delivery workers.
- SHRESTHA VERDHAN
- ARPIT SINGH
- RAMYA PATHAK
- ARYABRATA KUNDU
RakshaRide is a Guidewire-aligned, IRDAI-compliant micro-insurance platform designed for gig workers, enabling automatic compensation when external disruptions materially impact their earning ability.
Unlike traditional parametric insurance systems that rely solely on environmental triggers, RakshaRide combines:
-
Environmental signals (weather, AQI)
-
Platform activity (delivery engagement)
-
Behavioral patterns
To detect actual income disruption and trigger payouts.
The system is built as an event-driven insurance architecture, inspired by Guidewire-style insurance architecture, where policy, claims, and billing flows are modeled in a modular, event-driven system, while microservices handle real-time event ingestion and risk computation
Delivery partners rely on consistent daily activity for income. External disruptions such as:
-
Heavy rainfall and flooding
-
Extreme heat
-
Hazardous air quality
-
Fuel shortages and curfews
This directly reduces their earning potential.
Traditional insurance fails because it:
-
Does not cover short-term income loss
-
Requires manual claims
-
Has slow settlement cycles
-
Cannot verify real income disruption
RakshaRide introduces a micro-duration (weekly) income protection system.
How It Works:
-
User subscribes to a weekly policy
-
System continuously monitors disruption signals
-
Multi-factor engine evaluates:
-
weather conditions
-
platform activity
-
user engagement
-
-
Claims are triggered automatically
-
Claim confidence scoring determines:
-
instant payout
-
manual review
-
| Persona Segment | Monthly Earnings (INR) | Typical Daily Earnings (INR) | Risk Context |
|---|---|---|---|
| Entry-level | 15,000 - 22,000 | 700 | Limited buffer against missed work days |
| Mid-tier | 22,000 - 32,000 | 1,000 | Moderate stability with periodic disruption risk |
| High-activity | 32,000 - 45,000 | 1,400 | Higher income-at-risk during disruption windows |
- UI flow:
frontend/src/pages/Register.jsx - API:
POST /api/delivery-partners/register - Stores profile, city, platform, earnings band, risk category
- Subscribe plan (payment-disabled hackathon mode):
POST /api/insurance-policies/subscribe - Policy by ID:
GET /api/insurance-policies/:policyId - Partner policy history:
GET /api/insurance-policies/partner/:partnerId - Cancel policy:
PATCH /api/insurance-policies/:policyId/cancel
Implemented in backend/services/weeklyPremiumCalculator.js using:
- location risk multiplier
- platform multiplier
- earnings-band context
- seasonality multiplier
- loss-ratio guardrails
Subscription API returns transparent pricingJustification.
Example plans:
| Plan | Weekly Premium (INR) | Coverage (INR) |
|---|---|---|
| Basic | 25 | 300 |
| Standard | 40 | 500 |
| Premium | 60 | 700 |
Let:
B= base weekly premium of selected planL= location risk multiplierP= average platform multiplierS= seasonal multiplierk= loss-ratio loading factor
Then the contextual weekly premium is:
Premium = round(B × L × P × S × (1 + k))
From current config values:
k = 0.10S = 1.15(monsoon),1.10(summer heat),1.00(default)
Example (Standard plan in monsoon):
B = 40,L = 1.2,P = 1.05,S = 1.15,k = 0.10Premium = round(40 × 1.2 × 1.05 × 1.15 × 1.10)Premium = round(63.756) = 64
Projected loss ratio shown in pricingJustification is:
Let:
C= maximum weekly coverage of selected plane= expected payout amount as a fraction ofCin a qualifying disruption week (not the probability of a disruption)
Then:
Projected Loss Ratio = (C × e) / Premium
Current config source: backend/config/parametricInsuranceConstants.js (PREMIUM_MODEL_ASSUMPTIONS.EXPECTED_PAYOUT_SEVERITY_RATIO = 0.30).
Using the same example with Standard plan coverage:
C = 500,e = 0.15,Premium = 64Projected Loss Ratio = (500 × 0.15) / 64 = 75 / 64 = 1.17(rounded to 1.2 decimals)
Note: the resulting loss ratio of 1.2 in this worked example is included only
to show the calculation path. In the current model, it is classified as
above_sustainable_band and surfaced in pricingJustification.lossRatioAssessment.
AI-assisted risk hint during registration:
- UI calls
POST /ai/quick-risk-assess - city mapped to risk score/category
- Submit claim:
POST /api/insurance-claims/submit - Claim detail:
GET /api/insurance-claims/:claimId - Partner claims list:
GET /api/insurance-claims/partner/:partnerId - Flagged queue:
GET /api/insurance-claims/flagged - Review decision:
PATCH /api/insurance-claims/:claimId/review
Supported triggers:
- heavy_rainfall
- extreme_heat
- hazardous_air_quality
- lpg_shortage
- flooding (mock/event-driven)
- area_curfew (mock/event-driven)
Trigger threshold snapshot:
| Event | Trigger |
|---|---|
| Heavy Rain | Rainfall > 50 mm |
| Extreme Heat | Temperature > 42 C |
| Hazardous Air Quality | AQI > 300 |
| LPG Shortage | Severity Index > 70 |
Trigger APIs:
- Threshold preview:
POST /api/disruption-events/check-threshold - Create disruption event:
POST /api/disruption-events - Auto-trigger claims for event:
POST /api/disruption-events/:eventId/trigger-claims - Weather monitor run-now endpoint:
POST /api/admin/trigger-weather-check
- automatic claim trigger for eligible active policies
- automatic fraud scoring
- instant auto-approval path for low-risk claims
- manual review fallback for suspicious claims
Admin panel exists for judge/demo operations:
- route:
/admin - frontend gate via
VITE_ADMIN_ACCESS_KEY - supports weather checks, disruption event creation, event-level auto-claim trigger, and flagged-claim review
Premium checkout is intentionally disabled by default.
ENABLE_PREMIUM_PAYMENT_FLOW=false- users can subscribe directly via
/subscribeand access coverage immediately - Razorpay endpoints remain available for future enablement
RakshaRide leverages Guidewire as a coordinated insurance execution engine:
- Dynamic underwriting using behavioral + environmental risk inputs
- Weekly policy issuance with configurable product definitions
- Rule-based eligibility validation
- Event-driven FNOL (First Notice of Loss)
- Automated claim triage via confidence scoring
- SLA-based claim lifecycle enforcement
- Fraud flags routed to manual adjuster queues
- Subscription-based billing (weekly cycles)
- Payment retries and policy suspension logic
- Integration with Razorpay for reconciliation
- User registers -> KYC validation
- Policy created -> PolicyCenter
- Premium calculated -> rating engine
- Payment processed -> BillingCenter
- Event detected -> ClaimCenter FNOL
- Fraud scoring -> ML service
- Payout executed -> payment gateway
RakshaRide enforces compliance at the system level, ensuring auditability and regulatory alignment.
| Regulation Area | System Enforcement | Implementation |
|---|---|---|
| KYC / AML | Mandatory verification before policy issuance | Aadhaar/PAN API + pre-bind validation |
| Claim Settlement | Automated SLA timers and escalation workflows | ClaimCenter lifecycle rules |
| Auditability | Traceable logs for every claim decision | Event logs + audit trails |
| Pricing Governance | Actuarial justification for premiums | Rating engine with loss ratio tracking |
| Data Privacy | Secure storage and access control | Encryption + role-based access |
- Frontend: React + Vite
- Backend: Node.js + Express + Mongoose
- AI service: Python Flask
- Data: MongoDB
- External data: Weather + AQI APIs
- Node.js 18+
- Python 3.10+
- MongoDB (local or Atlas)
cd backend
npm install
cp .env.example .env
npm run devcd ai
pip install -r requirements.txt
python app.pycd frontend
npm install
cp .env.example .env
npm run devFor local development with all services on localhost:
- Frontend:
VITE_API_BASE_URL=/api,VITE_AI_BASE_URL=/ai(relative paths via proxy) - Backend:
FRONTEND_URL=http://localhost:5173,AI_SERVICE_URL=http://localhost:5001 - AI Service:
FRONTEND_URL=http://localhost:5173
When frontend, backend, and AI are deployed on different hosts (e.g., Vercel, Netlify, Render):
- Frontend: Set
VITE_API_BASE_URLto full backend URL (e.g.,https://api.example.com),VITE_AI_BASE_URLto full AI service URL - Backend:
FRONTEND_URL=https://frontend-domain.com(will auto-accept Vercel, Netlify, Render domains) - AI Service:
FRONTEND_URL=https://frontend-domain.com(CORS patterns auto-configured for major platforms)
The backend and AI service automatically accept requests from:
- Configured
FRONTEND_URL - Vercel deployments (
*.vercel.app) - Netlify deployments (
*.netlify.app) - Render deployments (
*.onrender.com)
- Frontend: https://raksha-ride.vercel.app/
- AI Service: https://origin-x-shield-parametric-protecti-five.vercel.app/
PORTNODE_ENVMONGODB_URIJWT_SECRET_KEYENFORCE_AUTHAUTH_DEMO_USERNAMEAUTH_DEMO_PASSWORD_HASHorAUTH_DEMO_PASSWORDFRONTEND_URL- single URL or comma-separated list for CORS allowlistAI_SERVICE_URL- URL for internal AI service callsWEATHER_API_KEYPOLLUTION_API_KEYWEATHER_API_BASE_URLPOLLUTION_API_BASE_URLPAYOUT_MODEENABLE_PREMIUM_PAYMENT_FLOWRAZORPAY_KEY_IDRAZORPAY_KEY_SECRETRAZORPAY_ACCOUNT_NUMBER
VITE_API_BASE_URL-/apifor local proxy or full backend URL for separate deploymentVITE_AI_BASE_URL-/aifor local proxy or full AI service URL for separate deploymentVITE_RAZORPAY_KEY_IDVITE_ADMIN_ACCESS_KEY
FRONTEND_URL- single URL or comma-separated list of frontend originsAI_SERVICE_PUBLIC_BASE_URL- public URL for frontend to reach AI servicePORT- service port (default 5001)
POST /api/delivery-partners/registerGET /api/delivery-partners/:partnerId
POST /api/insurance-policies/subscribeGET /api/insurance-policies/partner/:partnerIdGET /api/insurance-policies/:policyIdPATCH /api/insurance-policies/:policyId/cancel
POST /api/insurance-claims/submitGET /api/insurance-claims/partner/:partnerIdGET /api/insurance-claims/:claimIdGET /api/insurance-claims/flaggedPATCH /api/insurance-claims/:claimId/review
POST /api/disruption-eventsGET /api/disruption-eventsPOST /api/disruption-events/check-thresholdPOST /api/disruption-events/:eventId/trigger-claims
POST /api/admin/trigger-weather-check
cd backend
npm testcd frontend
npm run buildMail - guidewire@gmail.com
Password - guide123- Website: https://raksha-ride.vercel.app/
- Demo video:https://youtu.be/UCE6xzRXyTQ
- Architecture diagram: https://github.com/user-attachments/assets/9107d99c-d7ef-4b40-bc98-940dc99d9e12
- Workflow diagram: https://github.com/user-attachments/assets/97824b2b-dddb-4aa1-9db9-ee80a4e600ad