VC.
ArogyaLens — Dental AI Platform logo
AI/MLFrontendBackendMobile

ArogyaLens — Dental AI Platform

Intraoral image capture → AI analysis → patient report — the full dental diagnostics loop.

0

Languages Supported

0+

Hospital Modules

AI-Powered

Oral Screening

Tech Stack

Node.jsNext.jsFlutterAWS RekognitionTFLiteFirebaseMySQLMongoDBSentiSight APIi18n (13 Languages)Razorpay

The Challenge

Dental clinics in tier-2 and tier-3 cities lack access to specialist radiologists for routine intraoral image review. ArogyaLens needed to bridge that gap by allowing a clinic's staff to capture intraoral images on a mobile device, route them through AI analysis, and produce a structured diagnostic report — all without requiring on-site specialist involvement. The backend had to handle video frame extraction (FFmpeg), multi-image batch analysis via AWS Rekognition, and generate professionally formatted PDF reports with embedded findings. Beyond the AI pipeline, the platform grew into a comprehensive hospital management system — OPD/IPD bed management, pharmacy, labs, HR/payroll, machine management, and e-commerce — all with full RTL-compatible internationalisation across 13 languages including Hindi, Tamil, Arabic, and Japanese.

Architecture & System Design

ArogyaLens — Dental AI Platform system architecture

Mobile app captures intraoral images and uploads to cloud storage. Backend service processes images through AI analysis pipeline, generates written findings reports, and creates branded PDFs. Web portal displays patient results and appointment history. Authentication and payment processing integrated. Full support for 13 languages with right-to-left script rendering.

Full system schematic available upon request

The Flutter mobile app handles camera capture with real-time preview, Bluetooth accessory integration, and on-device TFLite pre-screening before upload. The Node.js/Express backend manages the full analysis pipeline: S3 upload → Rekognition label detection → OpenAI-assisted finding narration → PDF generation (html-pdf/pdfkit). Firebase handles authentication and push notifications. The Next.js portal (SSR for SEO) provides patients and clinicians with a calendar-based appointment view, diagnostic history, and full-report download. Payment is handled via Razorpay for premium report unlocks.

Code Walkthrough

3-step walk-through of the production implementation — file paths and intent shown above each block.

  1. Step 1 of 3

    Rekognition with a dental label allowlist

    arogyalens-api/src/services/rekognition.js

    Rekognition returns hundreds of generic labels per image (furniture, lighting, etc.). We narrow it to a curated dental allowlist before anything hits the database, so only clinically meaningful findings are stored and billed.

    javascript
    async function analyzeIntraoralImage(s3Key) {
        const params = {
            Image: { S3Object: { Bucket: process.env.S3_BUCKET, Name: s3Key } },
            Features: ['GENERAL_LABELS', 'IMAGE_PROPERTIES'],
            Settings: {
                GeneralLabels: {
                    LabelInclusionFilters: DENTAL_LABEL_ALLOWLIST
                }
            }
        };
    
        const { Labels } = await rekognition.detectLabels(params).promise();
    
        return Labels
            .filter(l => l.Confidence > CONFIDENCE_THRESHOLD)
            .map(l => ({ name: l.Name, confidence: l.Confidence.toFixed(1) }));
    }
    Takeaway

    The allowlist isn't a post-filter — it's passed to Rekognition's `LabelInclusionFilters`, so irrelevant categories are never scored at all. Cheaper, faster, cleaner.

  2. Step 2 of 3

    Turning raw labels into patient-facing narrative

    arogyalens-api/src/services/narrate.js

    Raw labels like 'CARIES_MODERATE 87.3%' aren't useful to a patient. An OpenAI call rewrites them at a Grade-8 reading level with a strict prompt: only describe findings from the input list, never invent a diagnosis.

    javascript
    const NARRATE_SYSTEM_PROMPT = `
    You are a dental hygienist explaining findings to a patient.
    Rules:
    1. Only describe findings present in the input list.
    2. Grade 8 reading level.
    3. Never use the words "diagnosis" or "treatment plan".
    4. End with: "Please consult your dentist to discuss these findings."
    `;
    
    async function narrateFindings(findings) {
        const input = findings
            .map(f => `- ${f.name} (confidence ${f.confidence}%)`)
            .join('\n');
    
        const { choices } = await openai.chat.completions.create({
            model: 'gpt-4o-mini',
            temperature: 0.2,
            messages: [
                { role: 'system', content: NARRATE_SYSTEM_PROMPT },
                { role: 'user', content: `Findings:\n${input}` },
            ],
        });
    
        return choices[0].message.content.trim();
    }
    Takeaway

    Low temperature + a tight system prompt keeps the narration deterministic enough for a medical-adjacent context, without hard-coding boilerplate strings.

  3. Step 3 of 3

    Branded PDF report with embedded findings

    arogyalens-api/src/services/report.js

    The final artefact is a PDF the clinic hands to the patient. We render it server-side from an HTML template so the finding table, narration, and clinic logo all stay consistent with the web report — no drifting designs.

    javascript
    async function generateReportPdf({ patient, findings, narration, clinic }) {
        const html = await renderTemplate('report.hbs', {
            patient,
            findings,
            narration,
            clinic,
            generatedAt: new Date().toISOString(),
        });
    
        const pdf = await htmlPdf.create(html, {
            format: 'A4',
            border: { top: '20mm', right: '15mm', bottom: '25mm', left: '15mm' },
            header: { height: '18mm', contents: clinic.headerHtml },
            footer: {
                height: '15mm',
                contents: { default: clinic.footerHtml },
            },
        });
    
        const key = `reports/${patient.id}/${Date.now()}.pdf`;
        await s3.putObject({
            Bucket: process.env.S3_BUCKET,
            Key: key,
            Body: pdf,
            ContentType: 'application/pdf',
        }).promise();
    
        return key;
    }
    Takeaway

    One Handlebars template, one PDF, one S3 key — the report is a first-class deliverable, not a screenshot of a web page.

Results

ArogyaLens is actively used in pilot dental clinics. The platform supports full-cycle patient journeys from mobile capture to downloaded PDF report. Razorpay integration enables monetisation of premium diagnostic tiers. The Next.js portal's SSR architecture achieves strong SEO scores, driving organic clinic sign-ups. The platform now supports 15+ hospital management modules beyond the original diagnostics scope, with production multi-language support across 13 languages. The admin portal provides cross-department analytics, and the hospital portal handles full OPD/IPD patient lifecycle management.

Gallery & Demos

Admin Dashboard

Admin Dashboard

Overview of all clinic operations: patient appointments, test results, and team performance metrics.

Hospital Portal

Hospital Portal

Staff view for managing patient beds, treatments, and medical records across the entire hospital.

Multi-Language Support

Multi-Language Support

Language selector showing Tamil and other supported languages for accessibility across regions.

Patient Bed Management Overview

Patient Bed Management Overview

Real-time view of occupied and available beds in OPD (outpatient) and IPD (inpatient) departments.

Multi-Language IPD View

Multi-Language IPD View

Inpatient department management interface showing patient details in Hindi and other local languages.

Patient Consultation

Patient Consultation

Doctor view showing patient history, test results, and treatment plan during consultation.

Medicine Management

Medicine Management

Pharmacy interface to add and manage medicines prescribed to patients.

Click any image or video to expand · ← → keys navigate

OraLens Healthcare Pvt. Ltd.

More from OraLens Healthcare Pvt. Ltd.

OraScan — Oral Disease Detection

End-to-end ownership

AI-powered oral disease classification system: a custom EfficientNet-B0 model trained on 78,000+ dental images achieving 94.7% accuracy across 11 disease categories, deployed via ONNX to kiosk hardware.

PythonPyTorchONNX

Product Management — OraScan AI Platform

Product Owner

Product definition and ownership for OraScan — an AI oral disease classification system targeting dental kiosk deployment. Defined accuracy targets per disease class, dataset curation strategy across 78K+ images, and the kiosk hardware integration spec.

PRD AuthoringDataset StrategyModel Evaluation Criteria

OraScan H — Halitosis IoT Device

End-to-end ownership

Full-stack IoT device for halitosis (bad breath) detection: a Raspberry Pi Zero 2W with H2S gas sensors communicates via BLE to a Flutter mobile app, with on-device TFLite AI classification and PHP backend.

PythonFlutterRaspberry Pi

Product Management — OraScan H IoT Device

Product Owner

Product ownership of OraScan H — a consumer IoT halitosis detection device combining a Raspberry Pi Zero 2W, H2S gas sensors, and a Flutter mobile app. Defined the BLE UX flow, consumer-grade pairing experience, and sprint milestones from concept to 92% software completion.

PRD AuthoringHardware Requirements SpecBLE UX Definition

Product Management — ArogyaLens Dental Platform

Product Owner

Product ownership of ArogyaLens — a comprehensive hospital management + AI diagnostics platform spanning 15+ modules (OPD/IPD, pharmacy, labs, HR/payroll, e-commerce, telemedicine), multi-language support across 13 languages, AI-powered oral screening, and a Flutter mobile capture app. Authored full PRD, SRS, and technology specification.

PRD AuthoringSRS DocumentationClinical Workflow Mapping

LuxySmile Oral Care — Product Website & Dashboard

End-to-end ownership

Full product suite for LuxySmile Oral Care (Oralens Healthcare): a React + Vite marketing site targeting B2B dental wellness programs for schools and corporates, plus an internal case management dashboard with direct-to-S3 uploads and CSV bulk import.

React 18ViteTypeScript

Product Management — LuxySmile Oral Care Brand

Product Owner

Product and go-to-market ownership for LuxySmile Oral Care — OraLens Healthcare's B2B wellness brand. Defined the dual B2B/B2C positioning strategy, school and corporate wellness program inquiry flow, and the AI kiosk upsell path on a premium product website.

PRD AuthoringB2B GTM StrategyBrand Positioning

Interested in this work?

Full architecture walkthrough and code review available during interviews.