Skip to content

iCanHeal

Full Stack Engineer

1 yr 4 mo Mumbai

On record

  • Built Django/DRF services with Celery + Redis background jobs.
  • Ran production: AWS, Nginx, Gunicorn, Postgres — including the 2am debugging.
  • Shipped AI-powered features on LLM and agent workflows.

The system

I joined as the second backend engineer, when the product was a Django monolith serving one mobile client. Over sixteen months it became the platform I now own: DRF for the API, Celery and Redis for anything that could not happen inside a request, Postgres underneath.

I ran production as well as writing it — AWS, Nginx, Gunicorn, Ubuntu — including the 2am debugging.

What was hard

Background work that could not be lost. Appointment reminders, claim submissions and record exports all moved to Celery. The naive version dropped tasks on redeploy. Making them durable — idempotent handlers, retries with backoff, a dead-letter queue, and a task table we could actually query — took three attempts.

LLM features that had to be boring. We shipped clinical-summary drafting and an intake assistant on OpenAI models. The hard part was never the prompt; it was the envelope around it. Timeouts, token budgets, a defined answer for when the model is slow or wrong, and a rule that generated text never reaches a record without a human accepting it first.

Deploys nobody dreaded. Deployment was a shell script and optimism when I arrived. Moving to GitHub Actions, with migrations behind a deliberate manual gate, took a release from a 40-minute event to about six minutes.

What I would do differently

I optimised queries before measuring them. Two of the three indexes I added in my first month were never used, and one measurably slowed writes. Nothing gets an index now without an EXPLAIN in the pull request.