Skip to content
View likalight's full-sized avatar

Block or report likalight

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
likalight/README.md
ASCII portrait of Kalairaajan Thiagarajan, typing itself out row by row

Kalairaajan Thiagarajan

applied computing (fintech) · singapore institute of technology · singapore

linkedin · email · repositories


I work on the operations side of software — incident automation, retrieval systems, and the evaluation harnesses that decide whether either of them is actually working.


about

Third year of a BSc (Honours) in Applied Computing (FinTech) at the Singapore
Institute of Technology, graduating August 2027. Before that, two years as an
intelligence analyst, which is where the habit of trusting measurement over
intuition comes from.

Most of what I build is unglamorous by design: a runbook that fires before the
on-call engineer wakes up, an ETL job that turns ten gigabytes of chat logs into
twelve categories worth acting on, an eval harness that blocks a release. The
interesting part is never the model. It is what happens when the model is wrong.


now

 →  Finishing my degree at SIT, and building in the open
 →  Available for a full-time internship, January to August 2027
 →  Currently reading about agent evaluation and failure taxonomies


work

Systems Engineer Intern — Visa, Operations & Infrastructure (Containers)
may 2026 – jul 2026 · kubernetes, bash, linux, python, mcp, rag

Analysed 3,500 historical Kubernetes incidents, found that 18% were recurring
failures, and wrote the Bash remediation workflows for them. Built an AI triage
agent that diagnoses each incoming incident and hands the on-call engineer a
remediation plan before they engage — 40% off time-to-resolution. Shipped
read-only kubectl diagnostics and auto-healing runbooks to 12 production
clusters with zero disruption to live workloads, and tuned Prometheus and
Grafana alert rules down by 25% of their false positives.

Machine Learning Engineer Intern — NVIDIA, SIT × NVIDIA AI Centre
may 2025 – aug 2025 · pytorch, hugging face, mlflow, graph-rag

Built a graph-RAG pipeline over public rail safety reports that surfaces prior
incidents and their mitigations, at 85% accuracy on hazard-factor detection.
Fine-tuned TranSent-X, a RoBERTa model for Singapore transport sentiment, 32%
more accurate than off-the-shelf baselines. Wrote the LLM evaluation framework —
response-quality checks, behavioural tests, a failure taxonomy — that caught the
regressions and cut pilot defect rates by 40%.

Intelligence Research Analyst — Digital Intelligence Service
jul 2022 – jul 2024 · python, sql, arcgis, opencv, azure

Ingestion pipelines across AIS vessel tracking, ADS-B, satellite imagery and
geotagged social media, feeding 700+ intelligence products a year. Fused those
streams into GEOINT movement-anomaly workflows, cutting manual data-fusion time
by 25% across ten cross-unit teams.

Business Analyst Intern — Scoot, Cabin Services
oct 2021 – jun 2022 · sql, python, tableau, power bi, sharepoint

Took the Cabin Crew Assist App from requirements through UAT to production, and
built the compliance dashboards behind a 15% improvement in monitored outcomes.


builds

FinSight AI — financial intelligence platform
fastapi · next.js · postgresql · pgvector · docker · github actions

Agentic RAG over the annual filings of 20+ SGX companies. Decomposes a
multi-step question into sub-queries and answers with page-level citations.
Retrieval is full-text plus pgvector, fused by reciprocal rank and reranked by a
cross-encoder. A RAGAS pipeline in CI holds it to 87% answer faithfulness and
blocks the merge when it slips.

Rezonate — chatbot evaluation platform
aws (ec2, s3) · pyspark · hdfs · fastapi · grafana

An LLM-as-judge framework scoring 5,000+ patient-chatbot conversations for
response quality, hallucination rate, intent resolution and escalation need.
Distributed PySpark ETL over 10+ GB of raw logs, with anomaly detection to
surface the twelve intent categories that needed retraining.

GlossRide — driver payments app
react native · node.js · express · stripe

Onboarding, job allocation, invoicing and Stripe payouts, in production with 33
private-hire drivers on iOS and Android.

Two-time hackathon runner-up
agent forge ai · smu ai club × agnes ai

Second place at both: an insurance-claim adjudication system that turns dashcam
evidence into approve/review/reject decisions, and a rental-inspection platform
that generates evidence-backed damage reports.


stack

languages       python, sql, bash, typescript, javascript, java, c++
ai                pytorch, hugging face, scikit-learn, langchain, mcp, rag, llm eval
web & data       fastapi, next.js, react, node, postgresql, pgvector, pyspark
infrastructure   kubernetes, docker, aws, azure, linux, github actions
observability    prometheus, grafana, mlflow


activity

contribution totals for the last 365 days current and longest contribution streaks top languages across public repositories a year of contributions, one character per day

how this page works

Every graphic above is drawn inside this repository. There are no third-party
cards, no external image hosts, and no requests leaving GitHub — so there is
nothing here that can rate-limit, 503, or quietly go dark.

 →  scripts/make_ascii_svg.py — photo to self-typing portrait. rembg cut-out,
     bilateral filter, CLAHE, a darkening curve, then 13 characters of ramp.
     The typing is SMIL — a clip rect per row, staggered, fill="freeze".
 →  scripts/generate_stats.py — the four data cards, from the GitHub GraphQL
     API using only the standard library. Runs nightly, commits only on change.
 →  scripts/make_headings.py — the section headings, so they can be set in a
     typeface GitHub would otherwise strip.
 →  scripts/fontkit.py — subsets JetBrains Mono and inlines it as base64. An
     external font URL cannot work: these load through <img>, and browsers
     refuse subresource fetches for image documents.

Two details keep the nightly job honest. The contribution window is pinned to
whole UTC days, or every run would re-bucket the weeks and commit a changed
sparkline forever. And repositories are filtered to public only, so the numbers
do not depend on whose token asked.

Full write-up of the approach:
A GitHub profile that generates itself.
Portrait pipeline adapted from the
ASCII Portrait README Guide.
Typeface: JetBrains Mono, SIL OFL 1.1.


contact

 →  kalairaajan@gmail.com
 →  linkedin.com/in/kalairaajan
 →  Singapore

Pinned Loading

  1. apisentry apisentry Public

    Dependabot for APIs. Reads a vendor's change feed, finds the affected code in your repo, writes the fix, and opens the PR. Zero dependencies. A product of Retia Labs.

    JavaScript 1

  2. smallcloud smallcloud Public

    A cloud for small software — deploy a folder and get sign-in, permissions, storage, scheduling and limits. Zero dependencies. A product of Retia Labs.

    JavaScript 1