Andy Wu

Software & infrastructure.

I build Kubernetes platforms, workload identity, and infrastructure automation at Oracle. A few side projects got out of hand.

  • CKACertified Kubernetes Administrator
  • OCI Foundations AssociateOracle Cloud Infrastructure
  • OCI Architect ProfessionalOracle Cloud Infrastructure
The villa is imaginary. The projects are real. Scroll to explore ↓

Selected work.

GitHub
Cloud infrastructure

A read-only Kubernetes console, backed by an EKS platform I built and tested on AWS.

  • Go
  • React
  • Kubernetes
  • Terraform
View source
AI & education

A college admissions platform for researching schools, reviewing essays, and building a college list.

  • Multi-agent AI
  • Python
  • XGBoost
Visit site
Product engineering

A shared ledger that helps club treasurers match payment emails to dues. Fewer spreadsheet detective stories.

  • Next.js
  • NestJS
  • PostgreSQL
View source

A few more things I built.

Creative tools

Recipes with an interactive kitchen counter. The ingredients have actual physics.

  • Next.js
  • FastAPI
  • Matter.js
View source
AI & education

An AP study app that answers questions from the selected course material.

  • React
  • FastAPI
  • RAG
View source
Product engineering

Films, television, ratings, and saved collections—with live catalog data from TMDB.

  • React
  • Express
  • OCI
View source
Client work

A working website for a tutoring center, with schedules the staff can update themselves.

  • React
  • Google Sheets
  • DreamHost
Earlier projects & coursework

AnimalCalendar, Ants, Ngordnet, MazeGame, and the original FilmVault predate my use of AI coding tools. The Berkeley projects build on course-provided frameworks.

KubeVista
KubeVista operations console showing its validated deployment snapshot

Cloud infrastructure

KubeVista

I built the Go API and React dashboard, then the platform around them: networking, identity, GitOps, telemetry, and failure tests. The API can inspect workloads, but cannot change them or read Secrets.

  • Go
  • React
  • Kubernetes
  • Terraform
Role
Solo builder
Owned
Product, Go API, React interface, AWS platform, delivery, and operations
Status
Recorded demo; paid AWS environment retired

System map

Architecture

KubeVista architecture from GitHub Actions through Argo CD into a private EKS node group, with AWS ingress, pod identity, secrets, and an observability stack
The representative AWS deployment: one EKS cluster, private workers, GitOps delivery, and a deliberately read-only dashboard API.

How it works

Terraform builds the VPC, EKS control plane, managed node group, KMS keys, and AWS integrations. GitHub Actions publishes a scanned and signed image; Argo CD reconciles the manifests. Traffic enters through an AWS load balancer, while the Go API reads Kubernetes inventory under a restricted service account and emits telemetry through OpenTelemetry.

Engineering decisions

  1. Workers stay private; one NAT gateway reduced demo cost, accepting an Availability Zone dependency that a long-running production setup would remove.
  2. EKS Pod Identity and External Secrets replace long-lived AWS credentials inside pods.
  3. The dashboard has read-only RBAC and cannot read Secrets, turning the product boundary into a security control.

Live testTwelve Argo CD applications were Synced and Healthy, and all 896 requests returned HTTP 200 while an API pod was replaced. The paid AWS environment was then torn down and checked for leftovers.

A controlled pod replacement

I used the dashboard as a real workload, kept the temporary AWS footprint cost-aware, and checked whether the platform controls behaved together under a small failure.

  1. ProvisionTerraform created the three-AZ VPC, EKS cluster, private worker subnets, identity, and integrations.
  2. DeliverGitHub Actions published a scanned and signed release; Argo CD reconciled 12 healthy applications.
  3. DisruptFortio sent traffic while a running API pod was deliberately removed.
  4. VerifyThe replacement became ready in two seconds and all 896 requests returned HTTP 200.
  5. RetireI destroyed the paid environment and audited DNS, volumes, load balancers, and tagged AWS resources for leftovers.

Screenshot from the representative demo. The paid AWS deployment has been intentionally taken down.

Illuma
Illuma college admissions platform homepage

AI & education

Illuma

I founded Illuma and built its AI tools and admissions probability model. The tools share state and validate their outputs before passing results to the next step.

  • Multi-agent AI
  • Python
  • XGBoost
Role
Founder and lead engineer
Owned
Product direction, agent system, admissions model, and platform implementation
Status
Live product

System map

Architecture

Illuma architecture showing a student workspace, an agent coordinator, research and writing tools, shared state and validation, and admissions data and prediction services
A coordinated tool system: each specialist works against the same student context instead of producing isolated chat responses.

How it works

A student request enters a coordinator that selects typed tools for school research, college-list planning, or essay review. Every tool reads and updates shared application state, and deterministic checks gate what can move to the next step. The prediction path combines a student profile with historical applicant outcomes and university data.

Engineering decisions

  1. Typed tool inputs and outputs make handoffs inspectable and reject malformed results early.
  2. Shared state keeps recommendations consistent across research, essays, and the evolving college list.
  3. Admissions prediction is kept as a separate data pipeline rather than hidden inside an unconstrained language-model answer.

ScaleThe product grew to more than 5,000 users, with 39 typed tools and admissions modeling across 130 universities using 79,000 applicant outcomes.

Product figures are from my September 2026 résumé.

Ledgly
Ledgly financial dashboard with charges, payments, and membership balances

Product engineering

Ledgly

I built the member ledger, payment reconciliation, and review workflow. Charges, payments, expenses, and allocations are separate records, so partial payments and split allocations have somewhere sensible to go.

  • Next.js
  • NestJS
  • PostgreSQL
Role
Solo full-stack engineer
Owned
Architecture, ledger model, reconciliation, permissions, and audit workflow
Status
Source available; public deployment protected

System map

Architecture

Ledgly architecture showing the Next.js interface, NestJS API, PostgreSQL ledger, Gmail ingestion, and a review gate before financial records are changed
Incoming payment email becomes a proposed ledger match, not an automatic financial fact.

How it works

The Next.js client calls an organization-scoped NestJS API backed by Prisma and PostgreSQL. A Gmail worker reads payment notices, extracts candidate transactions, and proposes member matches with confidence. Treasurers review ambiguous matches before payments are allocated to charges; the API records the before-and-after state in the audit log.

Engineering decisions

  1. Charges, payments, expenses, and allocations are separate records so partial and split payments remain representable.
  2. Gmail is read-only, and low-confidence matches stop at a human review queue.
  3. AI write tools require confirmation and use the same role checks and audit path as ordinary API actions.

TradeoffThe extra review step gives up fully automatic reconciliation in exchange for traceable financial changes, reversible batches, and fewer silent misallocations.

Dashboard image from the project repository.

Sizzle

Creative tools

Sizzle

A dish name or a few ingredients become a saved recipe and a step-by-step cooking view. I built structured recipe generation, background illustration jobs, and the Matter.js counter.

  • Next.js
  • FastAPI
  • Matter.js
Role
Solo builder
Owned
Recipe pipeline, FastAPI service, interactive cooking view, and OCI deployment
Status
Source available

System map

Architecture

Sizzle pipeline from a dish or ingredient prompt through recipe lookup and structured generation to Supabase, image jobs, OCI Object Storage, and a Matter.js cooking view
The recipe is usable before the slower illustration jobs finish.

How it works

A natural-language request first searches saved recipes. If nothing fits, FastAPI creates structured ingredients, equipment, and steps, persists them in Supabase, and starts illustration work in the background. The Next.js cooking view renders each step and uses Matter.js to place the relevant objects on a virtual counter.

Engineering decisions

  1. Recipe generation produces a fixed structure so the interface does not have to parse prose.
  2. Image work runs after the recipe is saved, keeping the main request independent of slower media generation.
  3. Matter.js owns placement and collision behavior while React owns the recipe and step state.

TradeoffA recipe can still load when image generation or object storage fails; the cost is accepting partially illustrated recipes and reporting those jobs separately.

Academis

AI & education

Academis

I built subject-scoped retrieval and a study interface for textbooks, questions, quizzes, and graphs. Microeconomics and Macroeconomics are the most complete courses; science content is partial.

  • React
  • FastAPI
  • RAG
Role
Solo builder
Owned
Document ingestion, retrieval, tutoring API, and study interface
Status
Local demo and source available

System map

Architecture

Academis retrieval architecture showing PDF ingestion into subject-tagged chunks and MongoDB Atlas Vector Search, then a student question retrieving context for answer generation
Ingestion and question answering meet at the subject-scoped vector index.

How it works

An upload script extracts textbook PDFs, splits them into chunks, creates embeddings, and stores subject metadata with each record in MongoDB Atlas. At question time, FastAPI searches only the selected course, assembles the closest passages, and sends that context into the tutoring answer path used by the React interface.

Engineering decisions

  1. Subject metadata constrains retrieval so a macroeconomics answer cannot silently borrow biology context.
  2. Ingestion is a separate command-line pipeline, keeping expensive document processing out of student requests.
  3. Tutoring, quizzes, graphs, and textbook routes remain separate FastAPI modules even though they share course data.

ScopeMicroeconomics and Macroeconomics have the most complete material. Science course shells remain visible but are described as partial rather than overstated as finished.

FilmVault

Product engineering

FilmVault

I built the original FilmVault before using generative-AI coding tools, and have since revisited the interface and local setup. TMDB supplies catalog data; the app owns accounts, ratings, and collections.

  • React
  • Express
  • OCI
Role
Solo full-stack engineer
Owned
React client, Express API, member data, TMDB integration, and original OCI design
Status
Recorded local demo; historical cloud design

System map

Architecture

FilmVault architecture showing a React client calling an Express API that combines TMDB catalog data with member accounts, ratings, collections, email, and OCI storage
Catalog metadata stays external; FilmVault owns the social layer around it.

How it works

The React client uses one Express API for searches, people, authentication, profiles, ratings, and collections. The API enriches member-owned records with TMDB movie and television metadata, sends account email, and can process profile images before writing them to OCI Object Storage.

Engineering decisions

  1. TMDB remains the catalog source while the application database owns users, ratings, and saved collections.
  2. Authentication and admin checks live in API middleware rather than being inferred from client state.
  3. The current SQLite demo path improves repeatability; the original OCI design retains MySQL and broader infrastructure.

TradeoffThe local demo is cheap and reproducible, while the checked-in OCI design shows the original production boundary. That history also leaves dependency upgrades and fresh deployment validation as explicit maintenance work.

Summit Tutoring Center

Client work

Summit Tutoring Center

I built this for a tutoring business owned by family friends. It covers classes, staff, counseling, and inquiries, and fits the hosting setup they already had.

  • React
  • Google Sheets
  • DreamHost
Role
Designer and developer
Owned
Information architecture, frontend, staff-managed content flow, and deployment
Status
Live client website

System map

Architecture

Summit Tutoring Center publishing flow from staff-managed Google Sheets through CSV parsing and browser caching to the React website on DreamHost
A deliberately small publishing system that the business can operate without a CMS.

How it works

Staff edit schedules, seminars, and posts in familiar Google Sheets. The React site fetches the published CSV, parses quoted and multiline fields, and keeps the latest good response in browser storage. The production build stays on the business's existing DreamHost account.

Engineering decisions

  1. Google Sheets serves as the editing interface, avoiding a custom CMS and new staff accounts.
  2. A five-minute cache limits repeat fetches while stale-data fallback keeps the last valid schedule visible.
  3. The inquiry form uses Web3Forms when configured and can fall back to an email draft.

ResultThe site is live for a real tutoring business, and nontechnical staff can update frequently changing information without asking for a code deployment.

About me.

Andy smiling in a suit on the UC Berkeley campus
Berkeley, California.

I'm Andy. I graduated from Berkeley in 2024 and now work at Oracle, where I build around Kubernetes, infrastructure automation, workload identity, and backend services.

Most of my side projects start with a problem I have run into myself: applying to college, managing club finances, studying, cooking, or keeping track of movies. I like building the infrastructure, but I care just as much about whether the finished thing is pleasant to use.

Away from the keyboard, I read fantasy, draw and paint, and take an unreasonable number of cat photos. That is how this portfolio ended up inside an imaginary villa.

Oracle

Oracle

Software Engineer · OCI

I work across Kubernetes platform services, workload identity, infrastructure generation, and backend APIs. My contributions include an Elasticsearch-to-OpenSearch migration and work carried from implementation through rollout and operational support.

Recognized with Oracle Platinum and SaaS Engineering & OAL Gold awards.

University of California, Berkeley

B.S. Computer Science · 2024

Andy with two friends in graduation stoles at UC Berkeley
Graduation day with friends, 2024.

UC Berkeley

I graduated in 2024 with a B.S. in Computer Science. A lot of my earliest work here came from Berkeley courses: graph-backed word tools, simulations, and procedurally generated games.

I keep those projects in the archive because they show the point where software stopped feeling abstract and started feeling like something I could shape.

Say hello.

andyw98@berkeley.edu

I am always happy to talk about infrastructure, useful products, Berkeley, or the fantasy novel currently keeping you up too late.