ST
Sang Thai
AI / Backend Engineer · Tampa, FL
Sang Thai

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

~90%
Manual Effort Reduced
~25M
Records / Month
150+
Hours Saved per Cycle
Let's Connect →

Projects

ATLAS
Sole Application Developer — Citi, Operational Risk
Live · Internal

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.

~90% Effort Reduced
~25M Records / Mo
150+ Hrs Saved / Cycle
Python Flask Dash Socket.IO Pandas Data Pipelines

Internal tool — codebase confidential per Citi policy

Avocado
Solo Developer — Team Knowledge & Analysis Copilot
Open source · Docker

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.

757 Tests · CI Green
110,064 Row Dataset, Computed In Full
Zero Network Access In The Sandbox
Python FastAPI SQLAlchemy PostgreSQL pgvector RAG Claude API Redis Docker React TypeScript Tailwind
credit-rag
Solo Developer — AI Document Extraction Service
Open source · Docker

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.

229 Page Filing Evaluated
100% Values Cited or Abstained
64 Tests · CI Green
Python FastAPI RAG pgvector Claude API Kafka Redis Docker Kubernetes Angular
SENTINEL
Solo Developer — Production Data Pipeline
Open source · Terraform

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.

3 FRED Series Tracked
Gated Deploys Blocked By A Failed Test
6 Vulns Fixed
Python FastAPI PostgreSQL SQLAlchemy Docker Terraform AWS EC2 GitHub Actions pytest
Portfolio Analytics Pipeline
Solo Developer — End-to-End Data Engineering Project
Open source · Docker
Portfolio Analytics Dashboard

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.

5 dbt Models
26 Data Quality Tests
Weekdays Unattended 6 PM Run
Python dbt Core Apache Airflow PostgreSQL Docker Metabase SQL
ThriveKid
Solo Developer — PWA Side Project
Live

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.

React C# ASP.NET Core Entity Framework Core RESTful API Swagger Docker GitHub Actions Vercel Azure

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.

RAG / LLM integration Vector search & embeddings Sandboxed code execution Multi-tenant data isolation Infrastructure as code / Terraform Observability / OpenTelemetry Event-driven architecture / Kafka FastAPI / async Python Python / Flask / Dash Socket.IO / Real-time systems C# / ASP.NET Core React / TypeScript Entity Framework Core RESTful API design Data pipeline architecture SQL / SQL Server / SQLite Pandas / NumPy Docker / Git / Postman Control-M / Genesis Financial operations domain

My Toolkit

AI & Retrieval

Anthropic Claude
Claude API
Hugging Face
Hugging Face
scikit-learn
scikit-learn
Deepgram speech-to-text
Deepgram

Languages

Python
Python
C#
C#
JavaScript
JavaScript
HTML5
HTML5
CSS3
CSS3
SQL
SQL
TypeScript
TypeScript

Frameworks & Libraries

Flask
Flask
FastAPI
FastAPI
.NET Core
.NET Core
Socket.IO
Socket.IO
Dash / Plotly
Dash / Plotly
Pandas
Pandas
React
React
NumPy
NumPy
Swagger
Swagger
Angular
Angular
Pydantic
Pydantic
Tailwind CSS
Tailwind CSS
Vite
Vite

Data & Automation

SQL Server
SQL Server
PostgreSQL
PostgreSQL
dbt Core
Apache Airflow
Apache Airflow
SQLAlchemy
SQLAlchemy
SQLite
SQLite
RESTful APIs
RESTful APIs
Control-M
Data Pipelines
Metabase
Apache Kafka
Apache Kafka
Redis
Redis
pgvector (PostgreSQL)
pgvector

Tools & Infrastructure

Docker
Docker
AWS
AWS
Terraform
Terraform
GitHub Actions
GitHub Actions
Git
Git
GitHub
GitHub
VS Code
VS Code
Linux
Linux
Postman
Postman
Kubernetes
Kubernetes
pytest
pytest
Playwright
Playwright
Nginx
Nginx
Vitest
Vitest
Ruff
Ruff
uv
uv
OpenTelemetry
OpenTelemetry
Azure
Azure
Vercel
Vercel

Experience & Education

Experience

Citibank, N.A. Aug 2024 — Present
Sole Software Developer · Operational Risk · Tampa, FL

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.

Raymond James Financial Jan 2024 — Jul 2024
IT Business Analyst · St. Petersburg, FL

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.

Wells Fargo Jun 2023 — Nov 2023
Wealth & Investment Management Ops Analyst · Charlotte, NC

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

University of South Florida
M.S. Artificial Intelligence in Business & Enterprise Integration — Candidate
Expected December 2027
In Progress
University of South Florida
B.S. Finance — May 2023
GPA: 3.63
Completed
Springboard
Data Science Career Track

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.

2023 · Coursework and both capstones completed
Coursework Completed

Let's build
something real.

Open to engineering roles, dev-adjacent opportunities, and builders who ship.