VC.
ProjectsAboutContact

Varun Cumbamangalam.

Senior IoT and Edge AI Engineer, AI Product Manager at OraLens Healthcare

ProjectsAboutContactPrivacy

© 2026 Varun Cumbamangalam. Built with Next.js and Tailwind CSS.

// Node.js - AWS Rekognition dental image analysis pipeline 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) })); }
All Projects
ArogyaLens - Unified Health Platform logo
BackendFrontendMobileAI/ML

ArogyaLens - Unified Health Platform

One multilingual platform for patients, doctors, and hospital teams.

Explore interactive demoArogyaLens Website
0

Languages Supported

0+

Hospital Modules

AI-Powered

Oral Screening

Tech Stack

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

The problem

Patient information and day-to-day hospital work were split across departments, paper records, and disconnected tools. Patients could not carry one coherent record between appointments, while doctors and operations teams lacked a shared view across consultations, beds, pharmacy, labs, billing, and follow-up care.

The challenge

ArogyaLens had to behave like one health platform without forcing every user into the same interface. I shaped a shared healthcare data spine with purpose-built patient, doctor, hospital, and administration surfaces, covering OPD/IPD care, appointments, pharmacy, labs, HR/payroll, machine management, e-commerce, and telemedicine. Oral-health screening remained one integrated capability: mobile capture, AI-assisted analysis, and structured reports. The whole system also needed RTL-compatible internationalisation across 13 languages including Hindi, Tamil, Arabic, and Japanese.

Architecture & System Design

ArogyaLens - Unified Health 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 appear above each block.

  1. 01

    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. 02

    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. 03

    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 now brings more than 15 hospital and patient-facing modules into one platform, with production support for 13 languages. Patients can move from appointments and consultations to results and follow-up in one record; hospital teams manage OPD/IPD journeys, beds, pharmacy, labs, and administration from connected portals. The oral-screening workflow adds mobile capture and automated reporting as one module inside that broader health system.

Explore the product system

This case study covers the main product surfaces. Use the buttons to move between the dashboard, app, website, and brand work.

Open Patient + hospital platforms

Product surfaces

ArogyaLens Website
Patient + hospital platforms

The complete patient phone experience followed by the full web dashboard.

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

Live Demos

ArogyaLens Website

https://arogyalens.com/

OraLens Healthcare Pvt. Ltd.

More from OraLens Healthcare Pvt. Ltd.

OraScan - Oral Disease Detection

End-to-end ownership

An oral disease classifier built with a custom EfficientNet-B0 model trained on 78,000+ dental images. It reaches 94.7% accuracy across 11 disease categories and runs through ONNX on kiosk hardware.

PythonPyTorchONNX

OraScan - AI Oral Screening Platform

Product Owner

Product definition and ownership for OraScan, an oral disease classifier designed for dental kiosks. Set per-class accuracy targets, defined the dataset strategy for 78K+ images, and specified the kiosk hardware integration.

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

OraScan H - Connected Halitosis Device

Product Owner

Product ownership of OraScan H, a consumer IoT halitosis detector built with a Raspberry Pi Zero 2W, H2S gas sensors, and a Flutter mobile app. Defined the BLE pairing flow and sprint milestones through 92% software completion.

PRD AuthoringHardware Requirements SpecBLE UX Definition

ArogyaLens - Unified Health Platform

Product Owner

Product ownership for a health platform spanning 15+ modules, 13 languages, telemedicine, and oral-health screening. Authored the 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

LuxySmile - Oral Care Brand & Operations

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?

I can walk through the architecture and code during an interview.

Get in Touch All Projects