
Software & Data Engineer
Sankar Kalyanakumar
I build systems where bad data can't hide.
6 years designing pipelines that validate before they propagate, fail loud instead of silent, and let humans approve before anything irreversible runs.
// how I think about engineering
Validate at the boundary
Bad data shouldn't travel far. Catch it at ingestion, log exactly what failed and why, and stop the pipeline before the corruption spreads downstream.
Pause before irreversible
Automation is most dangerous right before it does something permanent. Build the gate first — approval, confirmation, timeout — then build the action.
Fail loud, not silent
A pipeline that swallows errors and marks rows 'processed' is worse than one that crashes. If something is wrong, scream and stop. Silent failures cost weeks.
$ ls ~/projects
Open source
Ops Copilot
FAISS · sentence-transformers · Ollama · Bedrock · Step Functions · SNS · ECS
RAG over Markdown runbooks. Ask it what the alarm means and it quotes the exact runbook section — with the filename, so you can verify in 30 seconds, not 10 minutes.
For incidents needing action: a Step Functions pipeline proposes an ECS rollback, then stops. Operator gets an email with Approve/Reject. Nothing runs until someone clicks.
// RAG path
// Approval-gated remediation
Ledger Reconciler
Python · SQLite · pandas · Streamlit · pytest
Multi-pass engine that compares internal ledger exports against bank statement feeds. Four match strategies — exact, amount+date, reference+amount, fuzzy — tackle SWIFT truncation, FX rounding, and posting-day drift in that order.
Every unmatched transaction is root-cause classified before a human sees it. Break aging, daily match-rate trends, and open break drill-down in a live Streamlit dashboard.
// 4-pass matching pipeline
// live monitoring dashboard
Match Rate
94.7%
Matched
341
Breaks
37
daily match rate — 30 days
open breaks by category