Projects

Things I’ve built

Machine learning & NLP

Graduate capstone · UC Berkeley

VolunteerlyMatching people with the causes they love

A volunteer-nonprofit matching system.

  • Cleaned and integrated 4,600 nonprofit records from IRS, NCCS, DataSF, and the California Registry of Charities into a curated set of 1,500 organizations.
  • Used Claude to write mission statements for organizations with incomplete descriptions, prompting the model to search their websites and summarize them.
  • Deployed the team’s BERT-based recommendation model to an AWS SageMaker serverless endpoint and integrated it with backend services.
  • BERT
  • AWS SageMaker
  • Data integration
Graduate school project

Poetic Form ClassificationLearning the patterns of fixed form poetry

A hybrid deep learning model that names a poem’s form.

  • Built a BERT-BiLSTM architecture in TensorFlow/Keras that classifies poems into nine forms, reaching a weighted-average F1 of 0.86.
  • Assembled a 2,270-poem dataset from multiple sources, with cleaning, parsing, and metadata standardization.
  • Used class weights to address the significant class imbalance while preserving all poems and their potentially unique linguistic patterns.
  • TensorFlow
  • BERT
  • BiLSTM
  • NLP

Data analysis

Independent project · live

Napa County Crash AnalysisAnalyzing a decade of crash reports with SQL

An analysis of California Highway Patrol crash records for Napa County, 2016–2026.

  • Loaded statewide California Crash Reporting System files into PostgreSQL, then filtered, cleaned, and joined crash, party, and injury tables into an analysis view.
  • Used window functions, CTEs, and CASE bucketing to analyze when crashes happen, how yearly totals changed, and how often someone under the influence was involved.
  • Built a dashboard that reads the notebook’s exported results, so the charts and figures update whenever the analysis is rerun.
  • PostgreSQL
  • SQL
  • Jupyter
  • Plotly.js

AI-native engineering

Independent project · live

PursuitDocsWriting standards-compliant letters

An LLM pipeline that turns an RFP for audit services into a compliant proposal letter.

  • Parses RFPs, drafts proposal letters with Claude, and reviews them for PCAOB independence issues in a LangGraph pipeline.
  • Keeps drafting and reviewing as separate, testable steps; the reviewer flags problematic language, then retrieves PCAOB standards from a Chroma vector store to cite the relevant rule.
  • Runs a bounded revision loop that produces a final letter, a structured change log, and a human-review status.
  • Claude API
  • LangGraph
  • Chroma
  • RAG
Independent project · live

StyleGuideBotMaintaining a consistent editorial approach

A RAG-based editorial chatbot that answers style questions from the Wikipedia Manual of Style.

  • Built with AWS Bedrock (Claude), LangChain, and a Chroma vector database; deployed serverless on AWS.
  • Designed and ran adversarial tests for prompt injection, role manipulation, and capability expansion, and documented the defenses and trade-offs.
  • AWS Bedrock
  • LangChain
  • Chroma
  • Security testing
Independent project · in progress

Cellar DoorKeeping things organized

A full-stack app that catalogs items from photos.

  • Runs each photo through a Claude-powered LangGraph pipeline: six nodes across five stages (category routing, parallel identification and OCR, description, structured extraction, validation), with human-in-the-loop confirmation via graph interrupts and SSE streaming.
  • Defines explicit node contracts against hallucination, including a three-state OCR output (text present / unreadable / none) that stops vision models from inventing label text.
  • Gates the repo with automated PR review through Claude Code Action and real-Postgres integration tests; per-node evaluation against fixture images is underway.
  • Expo / React Native
  • FastAPI
  • Supabase
  • LangGraph
Independent project · hardware

PurrserpinaTelling spooky fortunes

A talking cat that greets visitors from a Raspberry Pi 4.

  • A MobileNet-SSD vision gate wakes her when a person appears; faster-whisper transcribes speech offline; Claude writes an in-character reply; Piper speaks it while a servo moves her jaw in time with the audio.
  • A producer/consumer synthesis pipeline starts playback on the first sentence to hide latency.
  • The conversation limit and child-safety rules are enforced in code, not left to the prompt.
  • Raspberry Pi
  • Computer vision
  • Speech
  • Claude API

Writing & editing

Writing and editing samples

Writing/Editing PortfolioAdvocating for the Oxford comma

Writing and editing samples from ML research reports to technical communication coursework at UC Berkeley.

  • A 33-page internal proposal for adding push notifications and dunning management to a fictional SaaS payments platform, with my own layout and Tableau visualizations.
  • A substantive edit of a college website’s technical description of 3D printing, shown side by side with the original.
  • A process description of how a hurricane forms at sea, written for general readers.
  • Two statistical reports, on voting difficulty (ANES 2022 Pilot Study) and on leisure time and age (2022 American Time Use Survey). I co-wrote both and did the final edit.
  • The research report behind my poetic form classification model.
  • Technical writing
  • Substantive editing
  • Proposals
  • Statistical reports