← All work

Case study

A prescription tool doctors actually finish

Better Health is Celloscope's own product: a doctor-first, voice-enabled prescription and telemedicine platform for Bangladesh. I own product and platform delivery.

Company Celloscope LtdPeriod Oct 2025 to presentRole Senior Software Engineer, product and platform ownerTeam about 20 engineers, five boards

Context

The product began as bdEMR, became Niramoy, and was rebranded Better Health in July 2026. The thesis is a flywheel: a free, voice-enabled prescription tool wins doctors, patients follow, and telemedicine and a patient-owned record come next. The prescription and telemedicine modules are live, with appointments, a doctor dashboard and patient records in the same portal.

Constraint

A digital prescription must be faster than handwriting or doctors leave. Speech arrives in Bangla, English and a mix of both. Clinical safety is non-negotiable: no autonomous diagnosis, no dosing suggestions, and nothing prints unless the doctor has confirmed it on screen. Patient data stays in Bangladesh under the 2025 data protection ordinance, and anything sent to an external model is de-identified first.

What I owned

Product: the prescription-first strategy, a 300-page doctor portal requirements document across 14 modules, the speech-to-text specification, and a consolidated backlog of 60 epics and 215 stories. Engineering: the change-data-capture analytics pipeline, the Angular and Agora video consultation feature, the Bengali-first clinical encounter interface, the migration from Docker Swarm to K3s, and the security and compliance track. Delivery: Scrum across four to five streams, Jira administration, embedded QA and the accuracy test plan for speech. Business: market sizing, pricing and cost models, investor reporting, and a hospital-wide go-live programme for about 200 doctors.

Architecture

Angular portalsdoctor · patient · admin GatewayAI tracing · PHI redaction Keycloak OIDC Domain servicesprescription · appointment · video Speech platformPython · LLM extraction 5 PostgreSQL clustersphysically separate Debezium → Kafka Analytics PostgreSQLPHI excluded at source

Decisions and trade-offs

  • Change data capture with PHI excluded at source. Debezium streams five clusters through Kafka into one analytics database. Identifying columns never enter the connector, so the analytics side is safe by construction. I also debugged the Kafka Connect memory, TOAST and JSONB issues that come with it.
  • Hexagonal, reactive-only services on Java 21. Spring Boot 3 WebFlux and R2DBC with no blocking calls, an idempotency framework built on a claim-check with a unique index, and effectively-once Kafka consumers via at-least-once delivery plus idempotent handlers and publish-after-commit.
  • The gateway is the mother service for AI. It traces every model input and output, captures the doctor's edits before and after, and redacts PHI at the boundary. Every AI decision is auditable.
  • A zero-tolerance error gate. Transcription and extraction are measured separately, with word error rate and precision, recall and F1 across six language and difficulty groups. Any wrong drug, dose, side or negation fails the release. An in-house 30M-parameter extraction model is A/B tested against a hosted model per section.
  • K3s over Docker Swarm. Helm, Traefik, a web application firewall, Vault with dynamic database credentials, and GitLab CI/CD. Cheaper to run and easier to reason about than the Swarm it replaced.

Outcome

  • 2 modules liveprescription and telemedicine, with appointments and records
  • 27,000+regulator-verified medicines, 18 dosage-form classes, Bangla dosing
  • 45,000+chief-complaint terms with an AI standardisation layer
  • 7 sectionsof the prescription driven by speech, Bangla and English

Definition of done for the team: a real doctor completes a prescription unassisted, on production.

Stack

Java 21, Spring Boot 3 WebFlux, R2DBC, Liquibase, .NET Core, Python, Angular, Agora, Keycloak, PostgreSQL, Debezium, Kafka, MinIO, HashiCorp Vault, K3s, Helm, Traefik, Cloudflare, GitLab CI/CD, Graylog, Elasticsearch, Prometheus, Grafana, Tempo, Zipkin, OpenTelemetry, Locust, Jira.