ST
Sang Thai
AI & Data Engineer · Tampa, FL
Sang Thai

Sang Thai.

AI and data engineer with 3+ years in financial services at Citi, Raymond James and Wells Fargo. I build production-grade data pipelines and AI systems that show their work — ATLAS, the controls-testing platform I designed and built at Citi, and Avenotes, the live AI meeting assistant I founded.

Business Impact

100 → <5 hrs
Monthly Testing
$1.5T
Monthly Payment Value Tested
50+
Apps in the Program

Projects

Each project opens with its full architecture as a live map. Tap a branch to zoom in, or use Highlight to see where AI, agents, testing and security show up.

Avenotes
Founder & AI Engineer — Live AI Meeting Assistant
Live · Paid plans

A meeting assistant that listens while the meeting is still happening and answers in the moment. Speech streams through the Deepgram API with speaker labels; the Anthropic API turns it into live answers, recaps, and answers across past meetings that name the meetings they came from.

I launched it on my own, with paid plans. Margin is protected in code: each plan has a usage allowance and a daily spend breaker caps total model cost, and paid access is granted only by a signature-verified Stripe webhook. The backend is FastAPI on Render, the frontend React and TypeScript on Vercel, and the data lives in Supabase Postgres with row-level security. pytest and Playwright end-to-end suites run in CI, which gates every backend deploy.

Python FastAPI Anthropic API Deepgram API React TypeScript Supabase PostgreSQL Stripe API Playwright
ATLAS
Data & AI Engineer — Citi, Global Processing Risk Oversight
Internal · Handed off

I designed and built ATLAS end to end, a production-grade Python platform for a 50+ application payment-controls program at Citi. It automates approval-threshold, duplicate-payment and dual-blind-rekey control tests, each with its own business rules per application. Shared modules ingest, validate and export Excel, CSV and JSON files, and each new application needs only a JSON config entry plus template scripts. Monthly testing went from about 100 hours to under 5, and full-population tests now cover about $1.5T in monthly payment value on top of the manual monthly samples. After a reorg, ATLAS is now owned by another team. The code is internal to Citi; the architecture and the outcomes are mine to discuss.

100 → <5 hrs Monthly Testing
$1.5T Monthly Payment Value Tested
50+ Apps in the Program
Python Flask Dash Socket.IO Pandas Data Pipelines

Internal tool — codebase confidential per Citi policy

Avocado
Designer & 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, and 16 container-escape tests attack it to prove it. Role-based access and tenant isolation are enforced in code, checked by 9 cross-tenant tests, so no team can read another’s data. Tools are called over MCP, and a model router works across LLM providers (Anthropic, OpenAI, Ollama).

9 Cross-Tenant Tests
16 Container-Escape Tests
Zero Network Access In The Sandbox
Python FastAPI SQLAlchemy PostgreSQL pgvector RAG Anthropic API OpenAI API Ollama MCP Redis Docker React TypeScript Tailwind
credit-rag
Designer & 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. Code then checks that every citation points at a passage that was actually retrieved, 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 — on a real SEC filing, accuracy measured 71%, up from a 57% baseline, and it also disproved a change I expected to help, which turned out to make no difference at all.

credit-rag extraction results: eight attribute cards, each showing the extracted value above the page number and exact sentence it was quoted from
Extraction run against the synthetic demo agreement — a fixed regression document, not the SEC filing. Every value carries the page and the sentence it came from; anything unsupported is abstained rather than guessed.
71% Accuracy Measured
57% Baseline It Beat
229 Page Filing Evaluated
Python FastAPI RAG pgvector Anthropic API Kafka Redis Docker Docling Angular
LAYERS
Designer & Developer — AML Detection Benchmark on Synthetic Data
Private repo · On request

A statistical comparison of two anti-money-laundering detectors — a rule-based baseline and a graph-based method — on IBM’s synthetic AML dataset (HI-Small): 5 million simulated transactions across 515,000 accounts. It is a research benchmark on synthetic data, not production AML work. The question is not which number is bigger but whether the difference is real, so every metric comes with a bootstrap confidence interval, AUC is compared with DeLong tests, and p-values are corrected across metrics.

The honest answer is unflattering to both. At a matched flag rate the graph method catches 48% of laundering against 29% for the rules, yet both flag hundreds of innocent transactions for every real one. The stack is built like production: PostgreSQL with least-privilege roles, a job queue and worker, a FastAPI API, a React and D3 network view, non-root Docker images, and CI with pip-audit, Bandit and 209 tests.

5M Transactions Scored
48% vs 29% Recall at a Matched Flag Rate
209 Tests · CI Green
Python PostgreSQL NetworkX scikit-learn SciPy FastAPI React D3.js Docker
SENTINEL
Designer & Developer — Financial Data API on AWS
Retired · ran ~5 months on AWS

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.

It is built the way production services should be. 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 on AWS EC2 for about five months, until August 2026. 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
Designer & Developer — End-to-End Data Engineering Project
Runs locally · 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.

It follows the medallion pattern rather than the shortest path from source to chart, and SQL window functions with ROW_NUMBER() de-duplication make every rerun idempotent.

5 dbt Models
26 Data Quality Tests
Weekdays Unattended 6 PM Run
Python dbt Core Apache Airflow PostgreSQL Docker Metabase SQL
ThriveKid
Full-Stack 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.

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

AI, broken down. Diagrams included.

Detailed breakdowns of AI and data architecture. Every post has an end-to-end diagram you can click through and links to its sources.

Experience

Citigroup Aug 2024 — Present
Data & AI Engineer · Global Processing Risk Oversight · Tampa, FL

Designed and built ATLAS end to end, a production-grade Python platform that automates approval-threshold, duplicate-payment and dual-blind-rekey control tests, cutting monthly testing from about 100 hours to under 5 and adding full-population tests on about $1.5T in monthly payment value. Rebuilt the weekly Manager’s Control Assessment (MCA) snapshot from undocumented Power Query into a Python and Parquet pipeline with a live Flask/HTML/JavaScript dashboard, reconciled row by row, cutting 6–8 hours to minutes. Rewrote weekly remediation forecasts in Polars (4 min to 38 s, 112 Pytest tests), fixing a lookup that understated open issues by about 30%. Also fixed a silent parsing bug that under-flagged high-value payments, replaced a manual deck build with weekly HTML decks for senior managers and executives, and use GitHub Copilot daily to write and test Python.

Avenotes Aug 2026 — Present
Founder & AI Engineer · Remote

Run a live AI meeting assistant with paid plans that answers questions in the moment and searches past meetings. Designed and built it end to end: a real-time Python pipeline (Deepgram, Claude) for live answers and recaps, per-plan usage limits and a daily spending cap, on a React/TypeScript, FastAPI, Supabase and Stripe stack.

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

Validated DTCC securities data with Oracle SQL reconciliation queries (source-to-target joins, control totals, and null, duplicate and referential-integrity checks) for operations and audit, and delivered audit-ready class-action settlement extracts used by external auditors. Created four SQL Server tables to store valuation records for the reconciliation platform, monitored Control-M batch jobs, and supported releases through UAT, ServiceNow and Genesis, the internal deployment tool.

Wells Fargo Jun 2023 — Dec 2023
Operations Analyst · Wealth & Investment Management · Charlotte, NC

Updated client documentation to resolve onboarding and data issues across legacy and modern wealth management platforms — the role that showed me operations at financial institutions run on data quality, and that the fix belongs at the source.

My Toolkit

AI & Retrieval

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

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
pytest
pytest
Playwright
Playwright
Vitest
Vitest
Ruff
Ruff
uv
uv
OpenTelemetry
OpenTelemetry
Azure
Azure
Vercel
Vercel

Education

University of South Florida
M.S. Artificial Intelligence in Business & Digital Transformation — Candidate
Expected December 2027
In Progress
University of South Florida
B.S. Finance, Cum Laude — 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

About Me

Since 2024 I've been a Data & AI Engineer at Citigroup, in Global Processing Risk Oversight. There I designed and built ATLAS end to end — a production-grade, config-driven Python platform for a 50+ application payment controls program that cut monthly testing from about 100 hours to under 5. Its code and documentation now belong to another team after a reorg.

Outside Citi I've been building the systems I most want to work on. Avenotes is a live AI meeting assistant with paid plans that I launched on my own. 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, with tenant isolation checked by 9 cross-tenant tests. 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, LAYERS, a statistical benchmark of anti-money-laundering detectors on synthetic data, and ThriveKid, a React and C# PWA my own family uses. Avocado, credit-rag and SENTINEL are open source; ThriveKid is deployed and clickable. Alongside full-time work I'm completing an M.S. in Artificial Intelligence in Business & Digital Transformation at the University of South Florida (expected December 2027), and I play 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

Let's build
something real.

Open to Data Engineer and AI / LLM Engineer roles — Tampa Bay or remote.