Hi, I'm Sang.
Finance major turned self-taught engineer. One CS class in my final semester changed everything — now I build systems that answer from real documents and data and show their work, and the production automation behind them at Citi.
Business Impact
Projects
A controls-testing platform that catches and escalates payment control failures across 52 of Citi’s global payment applications — checking ~25M records and roughly $1.5 trillion in payment value every cycle. I designed and built it alone: a config-driven Python system running four pipeline types — Threshold Validation, Duplicate Detection, Dual Blind Rekey, and GPOC executive reporting — each with its own business rules per application. It replaced a manual process that took over 150 hours a cycle and cut roughly 90% of that effort. The code is internal to Citi; the architecture and the outcomes are mine to discuss.
Internal tool — codebase confidential per Citi policy
A question-answering workspace for a team’s own files. Upload documents and spreadsheets, ask in plain English, and every answer comes back one of two ways: quoted, with the source documents listed underneath it, or computed — Avocado writes Python, runs it against your data in a locked-down container, and shows you the code behind the number.
It is careful about what it does not know. Asked what policies a workspace defines, it lists the three it found, flags that two of them are titles with nothing behind them, and closes with what is missing — the actual rules, effective dates and scope are not in these documents. Ask for an executive summary and it charts every spreadsheet in the workspace, then ends the same way.
Capabilities are switches rather than magic: each integration shows what it will cost in context before anyone turns it on. The sandbox is the part I would defend in review. Generated code runs with no network, a read-only filesystem, and hard memory and CPU caps — applied to every run, never set per request, because a caller that can choose its own limits can choose none. Every query is scoped to one workspace in SQL, so no team can read another’s data.
A service that reads a 200-page commercial credit agreement and returns the terms a credit team actually needs — borrower, facility amount, maturity, pricing, covenants, events of default — as structured data. Every value arrives cited, with the page and the exact sentence it came from. Each citation is then checked in code against the source text, so anything that cannot be traced comes back not found rather than invented.
Search runs in two passes: vector similarity over pgvector to gather candidates, then a cross-encoder re-ranker running locally to narrow them. Ingestion is queued through Kafka with an idempotent worker, so uploading the same document twice is safe.
Accuracy is measured, not assumed. An evaluation harness scores answers against hand-labeled keys — it took a real SEC filing from 57% to 71%, and it also disproved a change I expected to help, which turned out to make no difference at all.
A monitoring service that tracks three U.S. economic indicators — the federal funds rate, CPI and unemployment — pulling them daily from the FRED API, storing them in PostgreSQL, and raising an alert when a value moves further than its configured threshold.
I built it to close gaps I knew I had rather than to add another project. The whole environment is defined in Terraform — EC2 instance, firewall rules, key pair — so it stands up from nothing with one command instead of being a machine nobody dares touch. Deploys are gated on the test suite: the deploy job declares a dependency on the tests, so a failing push cannot reach production. And I ran a security audit before the first public deployment, which found six issues I fixed before anyone else could see them.
It ran live on AWS for five months. I took it down deliberately: the
infrastructure code is the artefact worth keeping, and leaving a t2.micro
running to serve a demo nobody is querying is a bill, not a portfolio piece.
terraform apply brings it back.
An ELT pipeline that turns daily stock prices into a dashboard without anyone touching it. Every weekday at 6 PM Airflow starts the run: prices land in PostgreSQL from Yahoo Finance, dbt rebuilds a star schema across three layers (Bronze → Silver → Gold), 26 data quality tests check the output, and the Metabase dashboard picks up the result. The whole stack runs in Docker.
I built it to learn how data actually moves inside a team that does this properly, so it follows the medallion pattern rather than the shortest path from source to chart.
A full-stack PWA that helps parents track and support a child’s development: 12 feature modules, JWT authentication with refresh token rotation, a timezone-aware recurring event engine, and WHO percentile growth charts. I built it as a first-time parent who could not find one app that did all of it.
Clean Architecture across a 3-layer .NET 8 backend, a React 19 TypeScript frontend on Vercel, Docker multi-stage builds and GitHub Actions CI. It went through two full code reviews with a senior engineer — 25+ issues raised and resolved, including a 13-issue security audit before launch. This is the project that taught me what good engineering actually looks like.
About Me
I studied Finance at USF and didn't write a single line of code until my final semester — then one Computer Science class rewired how I think. I taught myself Python, started automating everything I could, and never looked back.
That pivot took me from Wells Fargo to Raymond James to Citibank, where I now build automation infrastructure for the Operational Risk team. Along the way I created ATLAS — a Python-based platform I designed and built from scratch as the sole developer. It runs 4 controls-testing pipelines processing ~25M records/month, cutting ~90% of manual effort and saving 150+ hours per cycle.
Outside Citi I've been building the systems I most want to work on. Avocado is a team knowledge and analysis copilot: it answers from your own documents with the sources attached, or writes and runs code in an isolated sandbox and shows you the program behind the number. credit-rag reads 200-page credit agreements and returns structured terms with every value traced to the sentence it came from — verified in code, not taken on trust. Before those came SENTINEL, a financial data pipeline whose AWS environment is defined entirely in Terraform, and ThriveKid, a React and C# PWA my own family uses. Avocado, credit-rag and SENTINEL are open source; ThriveKid is deployed and clickable. I'm also pursuing an M.S. in Artificial Intelligence in Business & Enterprise Integration at the University of South Florida (expected December 2027) and playing soccer whenever I can.
My Toolkit
AI & Retrieval
Languages
Frameworks & Libraries
Data & Automation
Tools & Infrastructure
Experience & Education
Experience
Designed and built ATLAS from scratch — a centralized Python-based workflow platform with a Flask web UI that runs 4 controls-testing pipelines. Architected a modular, config-driven framework processing ~25M records/month across 52 global applications, reducing ~90% of manual effort per monthly cycle.
Executed SQL-based validation and supported UAT workflows for DTCC data pipelines — post-trade settlement data for U.S. securities markets. Designed 4 relational schemas in SQL Server for Valuation Records datasets and built process flows in Visio for stakeholder alignment. Used Control-M for enterprise batch job scheduling and worked with Genesis — Jett AI's GenAI-powered advisor for Control-M SaaS.
Resolved client onboarding and data integrity issues across legacy and modern wealth management platforms. First role out of university — where I realized operations work at financial institutions runs on data quality, and that I wanted to be the person fixing it at the source.
Education
Self-funded, mentor-led curriculum taken alongside my finance degree: hands-on coursework with 1:1 industry mentor oversight, ~20 case studies, and two capstone projects. Covered Python, SQL, statistical inference, data wrangling and visualization, and supervised machine learning — regression, tree ensembles, clustering, and time series.
Coursework CompletedLet's build
something real.
Open to engineering roles, dev-adjacent opportunities, and builders who ship.