Computing

AI applications, research workflows, machine learning, and software development.

Enterprise knowledge RAG and MCP tool-service platform

2026-04 – 2026-07Independent development

AI / AgentRAG / RetrievalDatabases

Built private knowledge retrieval for specialist PDFs, connecting document processing, hybrid retrieval, ranking evaluation, and citation-bearing tool services so AI IDEs and agents can access traceable knowledge results.

Work and methods: Enterprise knowledge RAG and MCP tool-service platform
  • Hybrid retrieval: Implemented dense and BM25 retrieval, RRF fusion, and cross-encoder reranking. Logged candidates, rankings, and latency at each stage to diagnose retrieval failures and iterate on strategies.
  • Document ingestion: Built an end-to-end pipeline for PDF parsing, Markdown conversion, semantic chunking, metadata enrichment, embeddings, and upserts. Created over 8,000 Chroma chunks from NIST AI governance documents and BioASQ biomedical and clinical research material.
  • Data quality: Added quality detection, rule-based repairs, and auditing for joined and broken English words. Repaired 468 text instances in the test documents, reducing joined-word strings by 61.1% and chunks requiring manual review by 19.9%.
  • Isolated evaluation: Created golden sets of 40 manually reviewed items for NIST AI and 60 officially expert-annotated items for BioASQ. With separate development/test sets and strict relevance annotations, blind-test Hit Rate@5 reached 92.5% and 93.33%, respectively, with reported relative improvements of 37.5% and 21.66% over baselines on the same test sets.
  • Service delivery: Exposed citation-bearing tools such as query_knowledge_hub, list_collections, and get_document_summary via MCP stdio/JSON-RPC, with a Streamlit console and Ragas/custom evaluation entry points.

Python, RAG, MCP, BM25, RRF, Cross-Encoder, ChromaDB, SQLite, Streamlit, Ragas

Streamlit system-overview console for the enterprise RAG platform
The Streamlit console presents LLM, embedding, vector-store, hybrid-retrieval, vision-model, and document-ingestion configuration, with entry points for data browsing, traces, and evaluation.

C10: A multi-agent workflow system for biological research

2025-08 – 2026-04UC Berkeley · Chris Anderson Synthetic Biology Lab

AI / AgentBioinformaticsSoftware engineering

For synthetic biology researchers with limited programming experience, the system turns natural-language analysis requests into tool retrieval, capability creation, validated execution, and result delivery, making research tasks across tools more accessible.

Work and methods: C10: A multi-agent workflow system for biological research
  • Multi-source evidence collection: Owned the Scraper sub-agent, combining GitHub, PubMed/arXiv, and web search to assemble structured evidence on algorithms, code, dependencies, and licenses for downstream tool generation.
  • Workflow reliability: Owned missing-tool recovery, agent evaluation, and test-state isolation. Implemented recovery as a five-node LangGraph state machine with at most three generation attempts and explicit failure and completion states.
  • Retrieval and task evaluation: Contributed to tool-retrieval evaluation and analysis. In a controlled team evaluation of 1,127 tools and 3,321 queries, Recall@1 reached 86.3% and Recall@5 reached 97.4%, with mean retrieval latency of 39.3 ms. Identified mismatches on out-of-domain queries.
  • Regression and traceability: Used execution traces, structured results, and file/state postconditions to diagnose failures. Isolated test contamination through tool-library snapshots and rollback; all 56 non-network cases passed in two regression rounds.
  • Tool reuse: Analyzed end-to-end benefits using the team tool-library reuse mechanism. Across 15 tool-oriented test prompts, mean task time fell from 222.2 s for initial generation to 6.3 s for reuse and execution, reducing tool-preparation overhead for recurring research tasks.

Python, LangGraph, FastAPI, Pydantic, FAISS, BM25, PubMed, MCP, pytest, SSE

C10 system components and tool-generation chain
The C10 architecture connects the tool library, Orchestrator, Scraper/Generator/Validator, and GitHub, Web, and Paper retrieval sub-agents.

PSPNet for endoscopic polyp segmentation: Multi-scale features and label standardization

2023-10 – 2023-11Independent project

Machine learningBioinformatics

Built a pixel-level polyp segmentation pipeline using 1,000 gastrointestinal endoscopy image-mask pairs from Kvasir-SEG. Adapted the data for varying lesion scales and label formats to support reproducible training and evaluation.

Work and methods: PSPNet for endoscopic polyp segmentation: Multi-scale features and label standardization
  • Data adaptation: Thresholded JPEG masks into lossless binary PNGs, checked image-mask pairing, and fixed the random seed for an 800-image training / 200-image validation split, aligning binary labels with the loss function and evaluation definitions.
  • Training implementation: Implemented a ResNet-50 backbone and PSPNet pyramid pooling in PyTorch, aggregating context over 1/2/3/6 grids. Applied synchronized geometric augmentation to images and masks, with cross-entropy losses on primary and auxiliary heads.
  • Training and evaluation: Applied synchronized augmentation, grouped learning rates, and a polynomial schedule. Training converged after fixes; validation reached 83.52% mIoU, 71.38% foreground polyp IoU, and 79.07% Dice.
  • Experiment archiving: Saved the fixed split, training curves, checkpoints, and final metrics. Reported foreground IoU, Dice, and pixel accuracy together to distinguish lesion performance from the influence of background-pixel proportions.

Python, PyTorch, ResNet-50, PSPNet, OpenCV, NumPy

Softened Kvasir-SEG endoscopic polyp image and corresponding ground-truth mask
The upper half shows the softened endoscopic image; the lower half shows the corresponding pixel-level polyp mask, illustrating segmentation inputs and supervision targets.

Diversify: Portfolio diversity analysis

2023-09 – 2023-11Independent development

Machine learningData visualization

Combined company text and market features with soft clustering to build an interpretable portfolio-structure diversity score, addressing the limits of holding count as a measure of attribute dispersion.

Work and methods: Diversify: Portfolio diversity analysis
  • Multi-source modeling: Collected descriptions and market metrics for approximately 500 S&P 500 companies. Aligned Word2Vec representations with relative volume, market capitalization, P/E, and volatility, handling primary keys, missing values, and scale differences.
  • Distribution diagnostics: Applied a log transform to address sample concentration caused by long-tailed market capitalization. Compared 2–19 GMM components using BIC, silhouette scores, and PCA visualization, selecting a five-component model and retaining hierarchical clustering as a comparison.
  • Portfolio scoring: Aggregated stock cluster probabilities by position value and compared the exposure vector with uniform exposure. In predefined high- and low-diversity portfolio tests, mean GMM scores were 2.916 and 1.067, a separation ratio of approximately 2.73×; score separation was more pronounced than with hierarchical clustering.

Python, Pandas, Word2Vec, scikit-learn, GMM, hierarchical clustering, PCA, Matplotlib

Two- and three-dimensional silhouette clustering scatterplots for Diversify
Two- and three-dimensional feature spaces show stock-cluster distributions, overlap, and outliers, revealing data structure after feature selection.

Interactive automotive data visualization

2023-03 – 2023-05Course project

Data visualization

Presented multidimensional automotive data through an interactive scatterplot, allowing users to switch variables, inspect vehicle models, and observe changes in distributions.

Work and methods: Interactive automotive data visualization
  • Interactive charts: Used the D3.js enter/update/exit pattern to manage scatterplot elements, updating attributes, axes, and styles according to user selections.
  • Exploration experience: Used event listeners for vehicle-model tooltips and transitions for smooth coordinate and element updates, helping users compare relationships across dimensions.

JavaScript, D3.js, HTML, CSS, SVG

Interactive automotive scatterplot and vehicle tooltip panel
The automotive dashboard lets users switch X/Y dimensions and hover to inspect model, year, cylinders, fuel economy, displacement, power, and weight; the right panel summarizes cylinder counts.

The Conqueror: An iOS resource and community app for teachers

2022-09 – 2023-04Blessed Newbie, a US NGO · Backend development intern

Backend developmentDatabases

Developed database and backend interfaces for a resource and community app for Christian teachers, with primary database responsibility, community-content APIs, and iOS integration.

Work and methods: The Conqueror: An iOS resource and community app for teachers
  • Relational data design: Modeled users, posts, comments, interactions, announcements, and resources in MySQL. Maintained a data layer of 20 tables and 33 stored procedures, using keys and procedure calls to organize related reads and writes.
  • Community APIs: Built posting, commenting, upvote/downvote, and announcement endpoints with Node.js / Express, using UUIDs and stored procedures for persistence to support grouped forums and user-center requirements.
  • Client collaboration: Worked with Swift / SwiftUI teammates to align URLSession, JSON fields, and JWT conventions. Connected forum, announcement, and personal-center data flows and fixed interface issues across iterations.

JavaScript, Node.js, Express, MySQL, REST API, JWT, Swift/SwiftUI, Git

Relational database entity and relationship diagram for The Conqueror teacher-community app
The relational database connects users, accounts, videos, podcasts, forum posts, and store entities to support the app’s content and community interactions.

Java desktop game collection: 2048 / 24 Game / Snake

2022-06 – 2022-08Georgia Tech · Video Game Club workshop

Software engineering

Integrated classic game rules, state updates, and graphical interactions in a single desktop entry point, practicing event-driven programming, expression evaluation, and integration across GUI frameworks.

Work and methods: Java desktop game collection: 2048 / 24 Game / Snake
  • Module integration: Built a collection homepage and scene navigation with JavaFX, embedded Swing/AWT 2048 through SwingNode, and implemented return, full-screen, and exit interactions.
  • Rules and algorithms: Implemented 24 Game expression evaluation with two stacks and a precedence matrix, validating the input-number multiset against the cards. Used a two-dimensional board and merge markers for 2048 movement rules.
  • Real-time interaction: Implemented Snake direction controls, timed movement, food generation, growth and scoring, and collision detection, connecting game state with keyboard events, graphics refreshes, and restart interactions.

Java, JavaFX, Swing/AWT, SwingNode, event listeners, data structures

Java desktop interfaces for 24 Game, 2048, and Snake
The combined view shows 24 Game expression validation, the 2048 board, and Snake gameplay, illustrating interaction design and integration across three desktop games.