Machine learning engineer · Coimbatore, India

ArwindhC N

I build machine learning for messy, connected data. Recently: a heterogeneous graph neural network that ranks obesity drugs for patients with comorbidities, and an entity-resolution pipeline that matched 10 million business records on an 8 GB laptop.

  • Open to ML internships
  • B.Tech CSE, Amrita Vishwa Vidyapeetham · graduating June 2028
  • Patient
  • Comorbidity
  • Gene
  • Protein
  • Reactome pathway
  • Drug

The graph shape behind my GNN work. Pulses trace message passing from a patient, through comorbidities, genes and shared pathways, to a candidate drug. Hover or tap a node.

0.979F0.5

Held-out macro F0.5 on business entity resolution across 10M records, up from a 0.799 rules baseline.

Amazon ML Challenge 2026

100%vs 89.4%

Agreement with RCT-established treatment guidelines across four cohorts, against an XGBoost baseline.

Heterogeneous GNN · n = 5,605

178,138edges

Relationships across 50,957 nodes from six biomedical sources, with zero orphan nodes.

BioPrecision-AI knowledge graph

Selected work

3 case studies

Match each of 1.7M businesses to every record of the same business among 10M records from two other sources. Names arrive with typos, abbreviations, reordered addresses and Indian scripts, and one test country (France) never appears in training. The metric is macro F0.5, so a false match costs twice as much as a missed one.

Nine versions, each one measured

Held-out macro F0.5 by pipeline version. v1 (hand-tuned rules) scored 0.799, below this axis. *v9 trained, test run not finished.

A learned filter before the expensive model

Candidate pairs on the test set

After bidirectional blocking93.4M
After LightGBM cascade, p ≥ 0.037.2M

13× fewer pairs, about 4.2 per business, with no loss in F0.5.

Fitting 10M records into 8 GB

Peak memory of the blocking stage

Python string keys8.6 GB
Packed uint64 index3.7 GB

Dashed line: the laptop's 8 GB of RAM. Scale 0 to 10 GB.

What moved the score

  • Rarity-based blocking over a packed index. Keys come from each record's rarest words. A 40-bit key hash and a 24-bit record ID share one sorted uint64 array per country, so every lookup is a binary search.
  • Bidirectional blocking with a hub cap. Searching backwards from every S2/S3 record lifted candidate recall from 0.953 to 0.971. The cap stopped one business from collecting 142,645 candidates through the word "com".
  • A fine-tuned transformer as one feature. A 22.7M-parameter MiniLM cross-encoder, fine-tuned in folds split by entity so it never scores entities it trained on. Alone it scored 0.961; as a LightGBM feature it added +0.005.
  • Learned transliteration. A 1,305-word Indian-script to Latin dictionary learned only from training pairs. Median name similarity on true pairs went from 0.10 to 1.00.
  • An expected-F0.5 decision layer. Each record goes to at most one business, then each business keeps the candidate subset that maximises expected F0.5, including predicting nothing.

I logged what failed too. A three-model LightGBM ensemble scored 0.9660 against 0.9661 for one model. Half precision on the Apple GPU was slower (435 vs 548 pairs/s). Error analysis on v7 showed 41.5% of remaining errors were true matches that never reached the candidate set, which is why later versions went after recall in blocking.

All nine versions
Ver.Main changeCand. / businessVal F0.5Held-out F0.5

Five anti-obesity drugs (semaglutide, liraglutide, tirzepatide, orlistat, phentermine) do not suit every patient equally. Type 2 diabetes, cardiovascular disease or chronic kidney disease changes which one is safest and most effective. The model has to rank them for each patient and agree with what large clinical trials established.

  1. Heterogeneous graphpatient, gene, protein, drug, disease nodes
  2. Pathway edgesgenes linked by Reactome co-membership
  3. Type projectionsper-type linear layers to one hidden space
  4. 2 × HANConvmulti-head attention over meta-paths
  5. Drug–disease scoressample-weighted BCE loss

Agreement with RCT-established guidelines

Rankings checked against SUSTAIN-6, SURPASS and related trials. 4 cohorts, n = 5,605. Scale 0 to 100%.

Heterogeneous GNN (HAN)100%
XGBoost, flat features89.4%

Auditing my own pipeline

A perfect score is a reason to look harder. Before trusting it, I audited the labels and features for ways the model could be learning my assumptions instead of the evidence.

FoundHand-written base scores ranked one drug first in every cohort before any patient was seen. The GNN was learning an opinion.
FixedBase scores derived from trial outcomes: weight loss, HbA1c change, adverse events and discontinuation, weighted equally.
FoundTextbook lab thresholds almost never fired. 98.6% of patients sat below the HbA1c cut-off, so lab features barely affected labels.
FixedThresholds calibrated to the cohort's own percentiles, so labs can change a ranking for edge cases.
FoundSynthetic HbA1c values below 4.0%, which is not possible in a living person.
FixedPhysiological clamping to 4.5–15.0% before any computation.
FoundImputed trial rows counted as much as real RCT results, and a contraindicated drug still scored as an option for CVD.
FixedImputed rows down-weighted in the loss, contraindications enforced, and every output labelled RCT, imputed or contraindicated.

Ablation studies on within-group personalization then set the boundaries of what graph-based decision support can claim here. Research prototype on synthetic patients, not for clinical use.

Given a patient's medications, conditions and genetic variants, flag the risks a prescriber should see, and show the graph path that explains each flag. Six public biomedical datasets are normalised and loaded into one Neo4j graph, which a FastAPI service queries for a React dashboard.

50,957nodes
178,138relationships
0orphan nodes
8 · 10node · edge types

Graph schema

Node labels with counts where the graph reports them, and the ten relationship types.

What the engine flags

  • Drug–drug interactionsHarmful co-prescribed combinations
  • ContraindicationsDrugs ruled out by an existing condition
  • PolypharmacyRisk from many concurrent drugs
  • Duplicate therapyTwo drugs on the same receptor
  • PharmacogenomicsVariants that change drug response
  • Side-effect riskSevere effects matched to the patient

More projects

Tools, coursework and side builds
Shell plugin · Python, zsh

zsh-next

Predicts the command you will run after this one, not just the one you are typing. A bigram model over your shell history runs as a background daemon on a Unix socket and answers in about 1 ms, using only the Python standard library.

zsh-next on GitHub ↗
~/ml $ git commit -m "fix typo" → git push
ghost text · press → to accept
Framework · TypeScript

NitroStack

Worked on a TypeScript framework for production MCP servers and AI-native apps: dependency injection, middleware pipelines, JWT and OAuth 2.1 auth, Zod validation end to end, and React widgets attached to tool outputs.

Capstone · scikit-learn

Classification and regression tracks

Malware detection from memory dumps (CIC-MalMem-2022) and superconductor critical-temperature regression, comparing ten model families with tuning, residual analysis and 5-fold cross-validation.

Security · Python

Phishing URL detector

Hand-engineered lexical features from raw URLs feeding a trained classifier that separates phishing links from legitimate ones.

Learning log · Jupyter

my-ml-journey

44 notebooks written chapter by chapter, from linear algebra and classical ML through neural networks in Keras and PyTorch, now on knowledge graphs and Neo4j.

Experience

Most recent first
  1. Head Student Coordinator

    Gokulashtami 2026, Amrita Vishwa Vidyapeetham, Coimbatore

    Led student coordination for the campus-wide cultural festival, where departments compete in art, literature, theatre, performing arts and sports.

  2. Machine Learning Intern, Graph Neural Networks

    Amrita Vishwa Vidyapeetham, Coimbatore

    Built the heterogeneous GNN for comorbidity-aware drug ranking described above. Fixed pipeline instability and label-normalisation bugs, and ran the ablations that set the model's limits.

  3. Co-Head, Security and Discipline

    Anokha 2026, 13th national-level techfest, Coimbatore

    Co-led security, discipline and human resources for Amrita's national techfest: 5,500+ registered participants, 4,200+ visitors and more than 500 student volunteers.

  4. Team Lead and Student Researcher

    Live-in-Labs®, Amrita Vishwa Vidyapeetham

    Led a multidisciplinary team doing field research on water access in coastal Tamil Nadu. Ran data collection and community interviews, turned field data into findings, and wrote up a study on community resilience that became a conference publication.

Skills, with evidence

Where each tool was used

Graph ML

PyTorch Geometric · Neo4j · Cypher

HAN drug ranking; 178k-relationship knowledge graph

Tabular ML

LightGBM · XGBoost · scikit-learn

Entity-resolution cascade; GNN baseline; Random Forest response model

Deep learning and NLP

PyTorch · TensorFlow · Hugging Face Transformers · OpenCV · NLTK

Fine-tuned MiniLM cross-encoder; learned transliteration

Data at scale

pandas · NumPy · Parquet · SQL

10M-record pipeline held under 8 GB of RAM

Apps and serving

FastAPI · React · TypeScript · Node.js · Docker · Linux · Bash

BioPrecision-AI stack; NitroStack

Education

B.Tech, Computer Science and Engineering

Amrita Vishwa Vidyapeetham, Coimbatore
Graduating June 2028

8.41/ 10 CGPA

Coursework: Machine Learning, Deep Learning, Linear Algebra, Probability and Statistics, Data Structures and Algorithms, Database Management Systems.

Contact

Email · GitHub · LinkedIn

Hiring ML interns?

I'm looking for machine learning internships where models have to work on real, messy data. Email is the fastest way to reach me.