Madhav Suri

Hi, I'm

Madhav Suri

Computer Science & Mathematics Student | Software Engineer

The University of Texas at Dallas

I like finding practical problems and turning them into usable software. I build full-stack web applications with thoughtful product flows, backend APIs, data-driven systems, and AI integrations where they make the experience more useful. My focus is on building products that are clear to use, technically grounded, and designed around real workflows.

Building practical web applications across developer tools, fintech risk systems, and AI-assisted workflows.

Madhav Suri smiling at a restaurant table with string-light window decorations behind him
Madhav Suri, a portrait taken in a car on a sunny day
Madhav Suri presenting with his team at a competition, standing in a suit while a teammate speaks into a microphone

About Me

I'm a Computer Science and Mathematics student at UT Dallas interested in backend engineering, distributed systems, AI systems, developer tools, and machine learning. I like projects where the API layer, data model, AI logic, and frontend experience connect into one usable product. Recently, I've been building systems like StreamForge, RepoPulse Agent, RiskOS AI, and D.I.Y.A to strengthen my full-stack engineering, product thinking, and applied AI skills.

Outside of my own projects, I've worked on frontend features for a student platform at ACM UTD, built edge AI and computer vision systems at SoftBank Robotics, analyzed sensor data at Riddell, and led undergraduate research on LLM applications.

Based in Richardson, Texas
Studying B.S. CS & Mathematics
Graduating December 2027
Focus Backend · AI · Dev Tools
Open to SWE Internships

Academics

The University of Texas at Dallas

B.S. in Computer Science and Mathematics

Expected Graduation: December 2027 Richardson, TX

In Progress

Relevant Coursework

  • Data Structures and Algorithms
  • Object-Oriented Programming
  • Discrete Mathematics
  • Database Systems
  • Software Engineering
  • Operating Systems

Certifications

  • AWS Cloud Practitioner
  • Google Project Management Certificate
  • CAPM In Progress

Projects

Each one built end to end — from distributed infrastructure and data models to AI logic and product interfaces.

Project 01

StreamForge

Distributed Stream Processing Engine

A from-scratch distributed stream processing engine in Go with coordinator-managed workers, event-time windows, durable checkpoint recovery, and effectively-once output under crash.

~40k/sSustained throughput
≤25 msp99 latency
~2.8 sCrash recovery
3Distributed workers
System Design & Feature ImplementationProject story, technical decisions, core features, and stack

The Story

I wanted to understand what makes systems like Flink and Spark Structured Streaming dependable, so I built the core engine mechanics myself instead of wrapping an existing processor. StreamForge consumes Kafka events, partitions keyed state across workers, and coordinates the cluster over gRPC and Protobuf.

The hard part was not moving messages; it was making recovery correct. Workers checkpoint BadgerDB state and Kafka offsets at aligned barriers, stage Parquet output by checkpoint, and restore ownership after heartbeat-based failure detection. An automated chaos test kills a worker while the stream is active and reconciles committed output against deterministic ground truth.

The result is a defensible miniature stream processor with real distribution, event-time watermarks, fault-tolerant state, Prometheus/Grafana observability, and an Apache Iceberg sink that creates one time-travelable table snapshot per completed checkpoint.

Problem

Stateful stream processing must keep offsets, distributed state, and output in agreement when workers fail. If those advance independently, recovery either loses events or counts them twice. StreamForge treats all three as one checkpointed unit and makes the remaining crash-boundary behavior explicit.

Technical Depth

  • Distributed engine: coordinator-managed workers with keyed gRPC/Protobuf shuffle, so every key aggregates on exactly one owner
  • Fault tolerance: heartbeat detection, epoch-based reassignment, filtered state restore, and Kafka resume from checkpoint-owned offsets
  • Correctness: aligned two-phase checkpoints and staged output commits verified by an automated crash reconciliation test
  • Event-time processing: tumbling windows close from watermarks rather than wall-clock time, keeping replay assignments stable
  • Measured limits: ~40k events/s at p99 ≤ 25 ms; the benchmark exposes the CPU/shuffle saturation knee instead of hiding it

Key Features

  • Kafka source with engine-owned offsets and keyed state in BadgerDB
  • Parquet output staged in S3-compatible MinIO and committed with checkpoints
  • Worker crash injection plus no-loss and duplicate-window reconciliation
  • Prometheus metrics for throughput, latency, checkpoints, lag, recovery, and shuffle traffic
  • Provisioned Grafana dashboard for live workload and recovery monitoring
  • Apache Iceberg sink with one snapshot per checkpoint and time-travel queries

Why It Matters

StreamForge demonstrates the systems work hidden behind a streaming API: coordination, partition ownership, replay-stable time semantics, durable state, and transactional output. The benchmark and failure tests make its guarantees inspectable rather than leaving them as architecture-diagram claims.

Honest scope: output is bit-exact exactly-once without failures. Under a mid-stream crash, it is effectively-once: zero lost keys and zero duplicate windows, with a small aggregate residual on windows that straddle recovery. Closing that residual requires Chandy-Lamport barrier snapshotting.

Tech Stack

  • Go
  • Kafka
  • gRPC
  • Protobuf
  • BadgerDB
  • Parquet
  • S3 / MinIO
  • Apache Iceberg
  • Prometheus
  • Grafana
  • Docker
Architecture & Fault Recovery DocumentationSystem architecture, checkpoint flow, and measured crash recovery
System Documentation

How StreamForge Moves, Commits, and Recovers Data

These diagrams connect the repository structure to the runtime path shown in the demo: a replayable Kafka source, coordinator-managed workers, checkpoint-coupled state and output, and recovery from durable offsets after a process failure.

Diagram 01
End-to-End System Architecture

Read from top to bottom: ingestion feeds the distributed engine, and only completed checkpoints expose lakehouse output.

StreamForge architecture showing Kafka ingestion, a Go coordinator, three stateful workers, BadgerDB window state, staged commits, MinIO storage, Apache Iceberg, Prometheus, Grafana, and Docker
The implemented core runs from Kafka/Redpanda through the Go worker cluster to checkpoint-referenced Parquet and Iceberg storage.
1
Data ingestion and replay

Kafka/Redpanda is the durable front door. The generator writes keyed records across six partitions; retaining those records lets a reassigned worker resume from checkpoint-owned offsets instead of trusting volatile in-memory progress.

2
Coordinator control plane

The Go coordinator manages membership, assigns six Kafka partitions and 64 key buckets, receives heartbeats, advances cluster epochs, and drives aligned checkpoint barriers. It controls ownership but does not process event payloads itself.

3
Worker data plane

Each worker consumes its assigned partitions and hashes every key into one authoritative bucket. Local keys enter that worker's aggregation loop; remote keys cross the gRPC shuffle to their owner, which updates event-time tumbling windows in BadgerDB.

4
Aligned checkpoint and staged commit

Prepare pauses sources and drains in-flight work. Commit snapshots BadgerDB state with Kafka offsets and stages pending Parquet. Only after every worker ACKs does one checkpoint metadata write make those staged files part of committed output.

5
Lakehouse and time travel

MinIO provides the S3-compatible object store for snapshots and staged Parquet. The verifier reads files referenced by completed checkpoints, while the Iceberg sink creates one table snapshot per checkpoint for atomic reads and time-travel queries.

6
Operations and observability

Prometheus collects throughput, latency, lag, checkpoint, recovery, and shuffle metrics; Grafana turns them into the operational view. Docker Compose supplies the repeatable local cluster used by the benchmark and chaos tests.

Diagram 02
Fault Recovery Storyboard

The recovery path protects progress by treating worker state, source offsets, and visible output as one checkpointed unit.

Three-step StreamForge recovery storyboard showing normal operation, a worker heartbeat timeout, and state restoration with partition reassignment from the last completed checkpoint
The storyboard shows the recovery phases conceptually; the measured chaos test restores ownership onto the two surviving workers rather than restarting the killed process.
1
Normal operation

Three workers process disjoint partitions and buckets in epoch 1. Checkpoint 3 records all worker snapshots, partition offsets, and staged Parquet paths, giving the cluster one durable point from which every component can agree to resume.

2
Crash detection

The Phase 6 test sends SIGKILL to worker w0 while the generator is active. An in-progress prepare aborts instead of publishing partial metadata; after 2.168 seconds without a heartbeat, the coordinator declares w0 dead and advances to epoch 2.

3
Restore and rebalance

Workers w1 and w2 take ownership of partitions [1, 3, 5] and [0, 2, 4], with 32 key buckets each. They scan all three checkpoint snapshots, restore only their newly owned buckets, and resume Kafka from checkpoint 3 offsets.

4
Resume and verify

The first post-rebalance checkpoint completes with both survivors and all six partitions. The recorded run reconciles 200 keys, zero keys below baseline, and zero duplicate committed windows; its 20,017 aggregate count makes the 17-event replay boundary explicit.

Project 02

RepoPulse Agent

AI Codebase Intelligence & Safe Change Planning

Connect a GitHub repo, ask grounded questions, plan a change, review the AI's diff, and generate a final engineering report — nothing is applied without human approval.

System Design & Feature ImplementationGrounded retrieval, safe planning, approval gates, and stack

The Story

GitHub sits on top of millions of repositories — practically the entire open-source world — yet I was only ever using it the boring way: cloning code, scrolling through files, hunting through pull requests. One night, trying to ramp up on an unfamiliar codebase, I caught myself wishing I could just ask the repo what it did instead of reading it line by line.

That frustration turned into a goal: make GitHub something you could point real intelligence at — and not just my projects, but any repository on GitHub — without ever blindly trusting what an AI handed back.

So I built RepoPulse Agent. You connect a repo and it indexes the codebase, answers grounded questions with cited source context, plans changes, generates reviewable diffs, and routes everything through a human approval gate — all backed by 170+ unit tests over a deterministic core.

The result is a platform where you can interrogate any GitHub repo and trust the output: it never auto-merges code, every answer traces back to the files it came from, and each run turns into a shareable engineering report.

At its simplest, RepoPulse Agent lets you point an AI at a GitHub repository and trust what comes back. It is an AI codebase intelligence and safe change-planning platform: it indexes a repository, answers grounded questions with source context, plans code changes, generates reviewable diffs, requires human approval, and produces stakeholder-facing engineering reports — without ever automatically merging code.

Problem

AI coding tools either hallucinate answers about code they haven't read or silently apply changes nobody reviewed. RepoPulse Agent does neither: every answer cites the indexed source files it came from, and every proposed change passes a safety gate and an approve/reject workflow before anything happens.

Technical Depth

  • Deterministic repository indexing first, AI second — file classification, framework detection, and architecture mapping are rule-based and unit-tested, so answers ground in facts
  • Grounded Q&A with cited source context: multi-stage retrieval over the indexed tree, with confidence scores per answer
  • Safety gate that classifies and refuses destructive or review-bypassing requests before any AI call
  • Multi-provider AI layer (OpenAI gpt-4o-mini, Groq, Anthropic, deterministic mock) with budget guard, prompt caching, and per-call cost tracking

Key Features

  • End-to-end agent workflow: Index → Ask → Plan → Diff Review → Verify → Approve → Report
  • Change planner producing risk/test/rollback plans and per-file proposed diffs with approve/reject decisions
  • Sandbox verification that trial-runs only human-approved patches in an isolated clone, comparing baseline vs patched results — the original repository is never modified
  • Final Engineering Report summarizing the whole run (plan, diffs, approvals, verification, conclusion) with exportable Markdown
  • Agent run history and audit logging of every plan, diff, refusal, and approval decision
  • 170+ unit tests (Vitest) over the deterministic core: classification, retrieval, safety, sandbox, and cost controls

Why It Matters

Teams want AI leverage on unfamiliar codebases without losing review control. RepoPulse keeps humans responsible for every decision, makes weak AI output visible through verification gates, and turns each run into a shareable engineering record — the safe-workflow pattern real engineering orgs need before trusting AI with code.

Tech Stack

  • Next.js
  • TypeScript
  • React
  • GitHub API
  • OpenAI
  • Tailwind CSS
  • Vitest
Architecture & Workflow DocumentationEnd-to-end architecture and the human-approved safe change lifecycle
System Documentation

How RepoPulse Reads a Repo, Plans a Change, and Keeps a Human in the Loop

This diagram connects the product you see in the demo to what runs underneath: a GitHub source, a deterministic indexer, a grounded multi-stage retrieval and planning engine over a cost-guarded AI provider chain, and an approval gate that ensures nothing is applied silently.

Diagram 01
End-to-End System Architecture

Read top to bottom: a repository is fetched and indexed, the engine retrieves and plans against real code, and only human-approved results reach the outputs.

RepoPulse architecture: GitHub repository source via Octokit, a Next.js orchestration layer, an indexer/classifier, a multi-stage retrieval pipeline, a planner and diff generator over an OpenAI to Groq to Anthropic to mock provider chain with a cost guard and prompt cache, a safety and human-approval gate, and grounded outputs with a replayable run store
From a GitHub repo through grounded retrieval and planning to approval-gated, cited outputs — deployed on Next.js / Vercel.
1
Source & indexing

Any public or private GitHub repo is connected as owner/name. The Octokit REST client pulls metadata, commit history, the recursive git tree, and file contents; RepoPulse then builds a deterministic file map and detects the stack — no AI needed to know what the repo contains.

2
Grounded retrieval

A multi-stage pipelinelexical keyword scan, structural ranking, then optional AI rerank of the top candidates — selects the most relevant files. Every answer and plan is grounded in real code and cites the exact source files it used.

3
Planning, diffs & the AI chain

The engine classifies task intent, proposes a change plan with risks and a unified diff, and verifies it. All model calls run behind a provider fallback chain — OpenAI gpt-4o-mini → Groq → Anthropic → deterministic mock — guarded by a daily cost budget and a prompt cache.

4
Safety & human approval

A safety gate validates file paths and blocks destructive or approval-bypassing requests. The agent never applies a change on its own — a proposed diff always waits for explicit human approval before anything is considered done.

5
Outputs & audit trail

Grounded answers, change plans, proposed diffs, verification results, and a shareable final engineering report are produced for the UI. Every agent run is written to a replayable run store, so each result stays inspectable and reproducible.

Diagram 02
The Safe Change Workflow — Human in the Loop

RepoPulse's defining feature: a change request is safety-classified, planned, turned into a verified diff, and gated behind explicit human approval — and the whole run is logged.

RepoPulse safe change workflow: a change request passes a safety gate that refuses unsafe intent, then task classification, grounded retrieval, a change plan (planned), a proposed diff (diff_generated), diff verification (pass/warn/fail), a required human approval gate (approve or reject), an optional sandbox trial-run, and an approved, logged, reported result — with every step appended to a replayable run store
The lifecycle of one change request — refusal and rejection branches in red, gate decisions in amber, the approved path in green. Run states (planned → diff_generated → verified → approved) are the engine's real status values.
1
Safety gate runs first

Every request is classified before any retrieval or model call. Attempts to delete the repo, exfiltrate secrets, bypass review, or weaken quality gates are refused up front with a reason and a safer suggestion — they never reach planning or an AI call.

2
Classify, then ground

A safe task is typed — bug fix, refactor, UI/API/backend, or config — with constraints and an initial risk level. Grounded retrieval (lexical → structural → AI rerank) then selects the actual files the change will touch, so the plan is rooted in real code.

3
Plan → diff, nothing applied

The agent emits a change plan (status planned), then a reviewable unified diff per file (status diff_generated). At no point is anything written to the repository — the diff is a proposal, not an action.

4
Verify, then the human gate

Automated diff verification runs as a quality gate — fail blocks approval, warn flags for review, pass proceeds. A person then approves or rejects per file. The agent cannot apply a change itself, and the request text cannot talk its way past the gate.

5
Trial-run, log, report

Approved patches can be trial-run in a sandbox (passed / failed / skipped). Every step is appended to a replayable run store and rolled into a shareable final engineering report, so each result stays inspectable and reproducible.

Project 03

RiskOS AI

AI-Assisted Fraud Operations Console for Fintech Risk Teams

A fraud operations console that simulates transaction risk review: deterministic risk rules and an ML scoring pipeline flag suspicious activity, and human analysts review, approve, or override every decision.

111Reliability tests
0.901Model ROC-AUC
82.6%Fraud detection recall
94.3%Automation coverage
System Design & Feature ImplementationHybrid scoring, investigations, auditability, and stack

The Story

RiskOS AI was built at PaySim, a fintech hackathon where every team was handed the same starting point: a raw dataset of roughly 6.3 million simulated financial transactions and one open-ended prompt — build an application from it.

Most teams reached straight for charts and dashboards. I kept circling back to a different question: what does this data actually represent? It's the bloodstream of a bank — and somewhere in those millions of rows, fraud is hiding in plain sight. I wanted to build something that mirrors how bank fraud detection really works, not just visualize it.

So instead of another analytics view, I built an end-to-end fraud operations console: a deterministic rules engine and an ML risk-scoring pipeline flag suspicious activity, and a human analyst reviews, approves, or overrides every decision.

The result is an explainable, auditable system — every score traces back to the rules and features behind it, every action is logged, and it reflects how a real bank actually defends against fraud rather than treating it as a black box.

At its simplest, RiskOS AI watches a stream of transactions and helps a fraud team decide which ones to trust. Under the hood it is a full risk orchestration system: every transaction is scored by a deterministic fraud rules engine and a Logistic Regression model, combined into a hybrid score that routes flagged cases into an analyst investigation workflow.

Problem

Financial institutions need to detect suspicious transactions without relying on fully automated black-box decisions. Rule-only systems create false positives; AI-only systems are hard to audit. RiskOS AI is designed around explainability, human-in-the-loop review, and operational safety — the system recommends, people decide.

Technical Depth

  • Hybrid scoring: rule-based signals and ML predictions are combined rather than replaced — every score is traceable to the rules and features that produced it
  • RBAC-protected FastAPI endpoints with distinct Analyst and Manager roles, so overrides and approvals are permission-gated
  • Audit logging on every decision and workflow action — investigations are reconstructable after the fact
  • Model evaluation built into the product: confusion matrix, ROC-AUC, precision/recall, and false-positive analysis views (precision 55.4%, F1 0.663 on the seeded dataset — reported honestly, tuned for recall)
  • Data modeling with SQLAlchemy ORM over SQLite; 94.3% seeded automation rate for repeatable demos
  • CI/CD test workflow on GitHub Actions running the 111-test Pytest suite

Key Features

  • Deterministic fraud rules engine and ML risk-scoring pipeline for transaction monitoring
  • Investigation workflow for flagged transactions with approve/override decisions
  • Fraud analytics dashboard with KPI, trend, and review-queue views
  • Notification workflow with Twilio SMS integration
  • Developer console for scenario testing against the rules engine

Why It Matters

Fraud operations live or die on auditability and trust. RiskOS AI shows how a real fintech risk console balances rule-based and ML signals while keeping analysts in control, logging every decision, and gating actions behind role-based access — the kind of explainable, reviewable system financial teams can actually defend.

Tech Stack

  • Python
  • FastAPI
  • React
  • SQLAlchemy
  • SQLite
  • Machine Learning
  • Pytest
  • GitHub Actions
  • Twilio
  • REST APIs
Architecture & Workflow DocumentationRisk engine architecture and the transaction-to-decision lifecycle
System Documentation

How RiskOS Scores a Transaction, Decides a Response, and Keeps a Human in Charge

These diagrams connect the console you see in the demo to what runs underneath: a PaySim-style transaction stream, a hybrid rules-plus-ML risk engine inside a FastAPI backend, an automated response orchestrator, and a role-based, fully audited human review loop — where the AI explains but never decides.

Diagram 01
End-to-End System Architecture

Read top to bottom: transactions are ingested and enriched, scored and decided by the FastAPI risk backend, then persisted and served to a role-scoped Next.js console.

RiskOS architecture in three layers: a transaction event stream (simulated / PaySim) with ingestion sources feeds a FastAPI processing engine — a risk orchestrator coordinating a rules-based risk engine, case management, an AI evidence agent, a policy agent, and the reviewer workflow, plus an audit and metrics pipeline — which commits to an operational and audit data store; infrastructure spans Kafka/Redpanda, PostgreSQL, S3/MinIO, Redis, Prometheus, Grafana, and Docker
Three layers — ingestion, the FastAPI processing engine (orchestrator + risk engine, case management, AI evidence, policy agent, reviewer workflow), and a durable operational/audit data store — with the supporting infrastructure called out.
1
Ingestion & enrichment

PaySim-style transactions — generated synthetically or ingested from a real PaySim CSV — are enriched with behavioral and contextual signals: amount versus the customer's average, device, geo distance, velocity, merchant risk, card-not-present, and the dataset's own fraud signal.

2
Hybrid risk scoring

A FastAPI backend scores every transaction with seven deterministic, explainable rules (R-001…R-007), then blends in a scikit-learn model for learned patterns. The rules set the score — the LLM never does — and the system degrades gracefully to rules-only if the model artifact is missing.

3
Automated response

A response orchestrator maps the score to a band and an action — approve, monitor, customer verification, hold, or escalate — so low-risk traffic clears automatically and only genuine risk ever reaches a person.

4
Auth, RBAC & AI evidence

JWT auth and role-based permissions gate every endpoint. Anthropic Claude writes grounded evidence packets that explain the triggered signals — with a deterministic mock fallback so the demo never breaks, and SMS step-up (Twilio) kept off in deployment.

5
Persistence & console

SQLAlchemy persists transactions, investigations, scores, rules, reviewer decisions, and the audit log to SQLite/Postgres. A Next.js console on Vercel renders role-scoped dashboards, live metrics, and the investigation queue — with a cold-start demo fallback.

Diagram 02
The Transaction-to-Decision Pipeline — Human in the Loop

RiskOS's defining feature: every transaction is scored by explainable rules plus ML, auto-handled when it's safe, and routed to an audited human review when it isn't.

RiskOS closed-loop fraud operations lifecycle: a transaction arrives, explainable risk scoring (7 deterministic rules plus optional ML) and a response orchestrator assign a decision band — Low auto-approve, Medium monitor, Elevated step-up, High customer verification, Critical open investigation — which flows to an investigation case, AI evidence and policy check, and human review; decision outcomes feed an audit log, metrics, and a continuous-improvement loop back into scoring
The closed-loop lifecycle — ~94% of Low/Medium/Elevated traffic is automated while every Critical case goes to a human, and outcomes feed metrics and rule performance back into the engine (continuous improvement).
1
Score on arrival

Every transaction is enriched and scored the moment it lands. Seven deterministic rules produce an explainable 0–100 score with reasons — the score is never produced by the LLM.

2
Hybrid score & band

A scikit-learn model blends learned patterns into a hybrid score, which is mapped to a risk band (Low → Critical). The model assists but is never the authority, and Critical always involves a human.

3
Decide the response

The orchestrator auto-clears Low/Medium, triggers customer verification for Elevated (60–74), holds High (75–84), and escalates Critical (85+) to human review — automating the easy calls and reserving people for the hard ones.

4
Investigate with grounded evidence

Flagged transactions open an investigation; Claude writes an evidence packet explaining the triggered signals and policy checks. It's context for the reviewer — never a verdict — and falls back to a deterministic mock if the API is unavailable.

5
Human decides, everything logged

An analyst or manager confirms, dismisses, escalates, or — with permission — overrides. Every action is written to the audit log and rolls into reviewer-agreement, false-positive, and automation metrics.

Project 04

D.I.Y.A

AI Academic Workflow Platform with Human-in-the-Loop Review

An AI platform that triages student questions through a human-in-the-loop pipeline — classifying, deduplicating, RAG-grounding and confidence-scoring each one, then escalating only the uncertain ones to the professor.

42Reliability tests
7AI workflow stages
13Secure data models
$2/moCost-controlled AI
System Design & Feature ImplementationSecure AI workflow, RAG grounding, cost controls, and stack

The Story

I didn't start D.I.Y.A — I inherited it. I was brought onto the project after an intern stepped away mid-build, and what I picked up was a half-finished codebase I hadn't written: a strong idea wrapped around real problems. The task was simple to say and hard to do — make it production-ready, and earn the team's trust while doing it.

So I started where trust is earned fastest: the truth. Before changing a line, I ran a full audit, and it surfaced things that mattered — a critical access-control hole where any logged-in user could read or write any class's data, a fresh clone that crashed on the very first setup step, raw database errors leaking to the browser, and zero tests anywhere.

Then I delivered, in priority order. I locked authorization down so professors reach only their own classes and students only the ones they joined, replaced the leaking errors with a clean handler, and got the project running from a fresh clone in one command. From there I hardened the AI: every model call now runs through a guarded pipeline with deterministic fallbacks and real spend caps, so the public demo can't burn API credits.

The result is a platform that went from inherited-and-unrunnable to deployed, tested, and cost-capped — with a one-click demo a recruiter can open and use. I earned trust the only way that lasts: by shipping something that works.

Problem

Professors drown in repetitive questions while the ones that actually need a human get buried. Fully automating answers is unsafe and unauditable; doing it all by hand doesn't scale. D.I.Y.A is built around human-in-the-loop review — the AI drafts an answer, scores its own confidence, and only escalates what it's unsure about; the professor approves, rejects, or overrides, and every AI answer stays marked "pending review" until they do.

Technical Depth

  • Role-based access control enforced on every group-scoped route — professors are scoped to classes they own, students to classes they joined (this closed a critical cross-tenant data hole)
  • AI workflow orchestration: each question is classified → checked for duplicates → grounded with RAG → drafted → confidence-scored → routed or escalated → recorded as a workflow item
  • Retrieval-augmented generation over uploaded course documents using local 384-dim embeddings (all-MiniLM-L6-v2) — no external vector database
  • Defense-in-depth AI cost controls: a master enable switch, daily/monthly USD budget caps computed from a usage ledger, and per-user/per-IP rate caps — the deployed demo is bounded to ~$2/month
  • Observability: every model call logs latency, tokens, and estimated cost to an admin dashboard with live spend-vs-cap
  • 42-test node:test suite + GitHub Actions CI; a central error handler that never leaks stack traces; graceful keyless fallback so the app still works with no API key

Key Features

  • Student forum with AI-drafted answers held for professor review
  • Professor workflow queue surfacing only escalated, low-confidence questions with their scores
  • Confusion-cluster detection with interventions and tracked effectiveness
  • Approved-answer reuse library that auto-serves future duplicates
  • RAG knowledge base: upload PDFs/DOCX/notes; answers cite the source file
  • AI self-check grading and a live observability / cost dashboard

Why It Matters

D.I.Y.A is the pattern real teams need before they trust AI in production: human-in-the-loop review, role-based access, full auditability, and hard cost governance. But the part I'm proudest of isn't a feature — it's that I took over someone else's unfinished project, found the uncomfortable problems first, and turned it into something live and dependable. That's how you earn trust on a team.

Tech Stack

  • React
  • Vite
  • TypeScript
  • Node.js
  • Express
  • SQLite
  • JWT
  • Anthropic Claude
  • RAG
  • Transformers.js
  • GitHub Actions
  • REST APIs
Architecture & Workflow DocumentationCloud system design and the professor-reviewed AI workflow
System Documentation

How D.I.Y.A Answers Students, Grounds Itself in Course Material, and Escalates to Professors

These diagrams connect the D.I.Y.A product to its design: a cloud-ready system architecture, and the AI Workflow Engine that classifies questions, removes duplicates, answers them grounded in the course's own materials via RAG, scores its own confidence, and routes anything uncertain to a professor. The current build runs this logic on an Express + SQLite backend; the architecture diagram shows how it maps onto a serverless AWS deployment.

Diagram 01
System Design — Cloud Architecture

Read left to right: users hit a CDN-fronted SPA and an authenticated API, a serverless backend runs the workflow, and the DIYA intelligence and RAG layers ground every AI answer.

D.I.Y.A AWS architecture: university users reach a React SPA via CloudFront and S3, authenticate through Cognito, and call an API Gateway; a serverless backend uses Lambda, Aurora PostgreSQL, SNS, and Step Functions; a DIYA Intelligence Layer runs the AI Workflow Engine behind a swappable Model Provider Layer (Claude / self-hosted LLM / OpenAI); a RAG and Knowledge Layer uses S3, Lambda, and OpenSearch for vector retrieval; and an observability layer adds CloudWatch, QuickSight, EventBridge, Backup, and WAF
The cloud-deployment topology — CDN-delivered SPA, authenticated serverless backend, a swappable AI intelligence layer, RAG-backed knowledge retrieval, and full observability. The implemented build runs the same intelligence and RAG logic on Express + SQLite.
1
Delivery & auth

The React SPA is delivered through CloudFront + S3. Students, professors, TA/staff, and admins authenticate via Cognito and reach the backend through a REST/GraphQL API Gateway — one secure front door for every role.

2
Serverless backend

Lambda runs business logic and routing; Aurora PostgreSQL holds users, groups, questions, and workflow data; SNS sends notifications and announcements; and Step Functions orchestrate the asynchronous AI workflow so long-running steps never block a request.

3
DIYA Intelligence Layer

The AI Workflow Engine performs topic classification, duplicate detection, answer orchestration, confidence scoring, and professor escalation — all behind a swappable Model Provider Layer (Claude API / self-hosted LLM / OpenAI), so no single vendor is load-bearing.

4
RAG & Knowledge Layer

Course documents — syllabi, lecture notes, assignments — land in S3; a Lambda ingests, chunks, and embeds them; and OpenSearch provides vector search and semantic retrieval that grounds every AI answer in the course's own material rather than the open internet.

5
Observability & analytics

CloudWatch (logs, metrics, alarms), QuickSight (dashboards), EventBridge (events & scheduling), AWS Backup (retention), and WAF (security) make the platform operable and safe — the production-grade scaffolding around the product.

Diagram 02
The DIYA AI Workflow Engine — How the AI Model Works

Internal orchestration for question answering, professor escalation, and course-grounded interventions — the engine that makes D.I.Y.A more than a forum.

D.I.Y.A AI Workflow Engine: a student question flows through topic classification, duplicate detection, RAG retrieval, answer draft generation, confidence scoring, and routing/escalation; high-confidence answers go to the student while low-confidence ones go to a professor review queue; a parallel track does cluster detection, intervention recommendation, announcement drafting, and outcome tracking; all behind a swappable Model Provider Layer and backed by a workflow DB, approved-answers store, vector index, and AI metrics/audit logs
The engine pipeline — green is a high-confidence answer served instantly, orange is escalation to the professor queue, and the lower track turns repeated confusion into proactive interventions. State persists to a workflow DB, an approved-answers store, a vector index, and audit logs.
1
Classify the question

A student question (alongside course materials and professor actions) enters the engine, which classifies it into one of 12 academic topics, with a keyword-rule fallback when the model is unavailable — so routing keeps working even with no API key.

2
Kill duplicates instantly

Jaccard similarity over the last 80 questions in the group (threshold 0.45) catches the same question asked differently. If it matches one that already has a professor-verified answer, that answer is served immediately — bypassing the queue and incrementing its usage count.

3
Answer, grounded in course material (RAG)

For new questions the engine embeds the text with all-MiniLM-L6-v2, runs cosine similarity over the course's chunked materials, injects the top-4 chunks into Claude, and drafts a course-grounded answer that cites its source files — not generic internet knowledge.

4
Score confidence & route

Claude self-rates the answer 0.0–1.0. At or above 0.55 it's served to the student immediately; below the threshold — or if generation fails — it's routed to the professor review queue. Humans stay in charge of every uncertain case.

5
Turn confusion into interventions

In parallel, cluster detection finds repeated confusion, recommends an intervention (review session / office hours / resource), drafts a professor-ready announcement, and tracks the outcome — all persisted to the workflow DB, approved-answers store, vector index, and AI metrics/audit logs.

Research

Undergraduate research in secure and efficient AI systems — read the full paper and conference poster below.

Research Paper

Confidential ML Inference at the Untrusted Edge

EnclaveSplit — Low-Overhead Trusted Execution with ARM TrustZone & Intel SGX

Preprint Published on Zenodo · doi.org/10.5281/zenodo.20840404

EnclaveSplit research poster — Confidential ML Inference at the Untrusted Edge: abstract, background, threat model, confidential inference pipeline, per-workload latency overhead chart (~12% mean), comparison with prior systems, related and future work Conference poster — click to open full-size PDF

In Plain Terms

When an AI model runs on a device you don't fully trust — a phone, an IoT sensor, or a shared cloud server — both the user's input data and the company's model are exposed to whoever controls that hardware. You can lock the entire model inside a hardware-protected "vault" (a Trusted Execution Environment), but that vault has very little memory, so doing so makes the model painfully slow.

EnclaveSplit is my research prototype that asks a simple question: what if you only protect the most sensitive part of the model instead of all of it? It splits each neural network so that the privacy-critical "decision-level" layers run inside the secure vault, while the rest runs at full speed outside it. The result is private, verifiable AI inference at only ~12% extra cost — and the same code runs on both Intel SGX (servers) and ARM TrustZone (edge devices) without changes.

~12%Latency overhead
0%Accuracy loss
5Edge-AI workloads
2Hardware TEE platforms

Highlights

  • Selective partitioning — only the sensitive decision-level layers run inside the hardware enclave, keeping the trusted code base small
  • One unified codebase targets both server-class Intel SGX and edge-class ARM TrustZone via the Open Enclave SDK — no source changes
  • "Golden Partition Zone" split point, validated with a model-inversion attack (~4.5× higher reconstruction error vs. a shallow split)
  • Remote attestation makes the privacy guarantee verifiable, not just asserted, before any private data is sent
  • Evaluated on MobileNetV2, ResNet-18, YOLOv8n, DeepLabV3, and TinyBERT with zero retraining

Topics

  • Secure ML Inference
  • Model Partitioning
  • ARM TrustZone
  • Intel SGX
  • Edge Computing
  • Open Enclave SDK
  • Privacy

The full research paper — background, threat model, cross-platform design, implementation, and evaluation.

Your browser can't display the embedded PDF. Open the paper in a new tab.

Research Team Lead — URAP

January 2026 — July 2026

Undergraduate Research Assistant Program, UT Dallas

Richardson, TX

  • Led research work involving LLM applications, sensor data, and real-world analysis.
  • Supported applied machine learning research in efficient AI systems and cross-domain human activity recognition.
  • Worked with Python, experimentation, implementation, and machine learning workflows.
  • Presented preliminary research findings at CTURC 2026 at UT Austin.

Experience

Frontend Developer

January 2026 — Present

ACM UTD

Richardson, TX

  • Built the React/TypeScript frontend of an AI-powered academic-support platform across 5+ product workflows, including office-hour scheduling, forum Q&A, self-check grading, and professor analytics, scaling to 350+ live users.
  • Integrated the Anthropic Claude API with prompt-engineering techniques for query triage and automated review, achieving 92% tier-1 automated resolution.
  • Developed 45+ reusable UI components and validated backend REST APIs with Postman while collaborating with ACM engineering teams and academic stakeholders.

Software & AI Engineering Intern

August 2025 — December 2025

SoftBank Robotics America

Southlake, TX

  • Developed EdgeSight, a real-time assistive vision system running fully on a resource-constrained NVIDIA Jetson Orin Nano with 8GB unified memory, Linux/JetPack 6.2, and CUDA 12.6.
  • Integrated YOLOv8 OIV7 600-class detection, multi-object tracking, a multimodal VLM assistant, and a FastAPI dashboard, sustaining 15+ FPS under CPU/GPU memory, power, and thermal limits.
  • Reduced on-device VLM query latency by ~8x from 74s to ~7–9s by benchmarking 5 VLMs, including Gemma-4B, Qwen2.5-VL-3B, moondream, and Gemma-4 E4B/E2B, across Ollama, vLLM, and llama.cpp.
  • Deployed a 4-bit-quantized Gemma-4 E2B model on llama.cpp with FlashAttention and q8_0 KV-cache, while accelerating detection through TensorRT, FP16 mixed precision, and MAXN SUPER clock tuning.
  • Profiled GPU-memory contention with tegrastats, identified vLLM's ~2.7GB overhead as infeasible for the 8GB edge device, and designed a hybrid YOLO + on-demand VLM + dynamic question-routing pipeline.

Data Engineering Intern

May 2025 — August 2025

Riddell

Irving, TX

  • Engineered automated ETL pipelines in Python using pandas, NumPy, and SQL to process 5,000+ helmet-impact sensor readings per session into AWS S3, automating a previously manual data-preparation process.
  • Built scikit-learn-powered telemetry reconciliation workflows against performance baselines, improving reporting and accelerating product-iteration evaluation cycles.

Skills

Strongest first — the badges are what I reach for daily.

Backend

  • Node.js
  • PostgreSQL
  • Java
  • C++
  • Go
  • Bash
  • API Design
  • Microservices

Frontend

  • JavaScript
  • HTML
  • Firebase
  • Dart

AI & Data

  • Data Analysis
  • Tableau
  • Power BI
  • Matplotlib
  • Excel VBA

Tools & Systems

  • Kubernetes
  • Jenkins
  • Linux/Unix
  • Cloud Computing
  • Agile/Scrum
  • Data Structures & Algorithms

Resume

My full resume, embedded below. You can scroll through it here, or open it full-screen / download a copy.

Your browser can't display the embedded PDF. Open the resume in a new tab.

Contact

Open to software engineering internships and interesting problems. Email is the fastest way to reach me.