hi, Tam here

i'm a cs senior at Minerva University. you can find me claude'ing, coffee-hopping, philosophizing, or reading something on my kindle!

Experience

LinkedIn

Summer 2026

Software Engineer Intern

LinkedIn Pages - shipping full-stack codes for LinkedIn's Post Collaboration feature.

Rakuna

Summer 2025

Software Engineer Intern

Built full-stack features that support recruiters on the Rakuna platform with Ruby on Rails and React.

Projects

Local Taste homepage featuring local dining experiences and hosts

Local Taste

A full-stack platform that connects travelers with local hosts through food experiences, bookings, and conversation.

ReactTypeScriptNode.jsMongoDBSocket.IO

Local Taste brings discovery, booking, and communication into one experience for travelers and hosts. The team built event browsing, maps, payments, chat, and social features.

The stack spans a React and TypeScript client, a Node.js server, MongoDB, and real-time messaging with Socket.IO.

Paper Research chat with model settings and a prompt for asking research questions

Paper Research Agent

A local research assistant that searches academic literature, reads papers, follows citation trails, and builds source-grounded answers in a streaming chat.

PythonStreamlitLLM toolsarXiv

Paper Research Agent turns an open-ended question into an iterative research workflow. The model decides when to search arXiv, read page-addressable text from a PDF, trace references or later citations through Semantic Scholar, and use optional web search to find supporting code and project pages. Its final response distinguishes sourced evidence from interpretation and cites specific paper versions and PDF pages.

I built both a command-line workflow and a local Streamlit chat. The chat streams the answer, shows each tool call with its status and result preview, and retains context for follow-up questions within a conversation. Research artifacts are cached in a shared workspace, so the agent can inspect full extracted text without pushing an entire paper into the model context on every turn.

The implementation separates model-facing LangChain tools from provider integrations and multi-step services. That boundary keeps arXiv retrieval, PDF extraction, citation lookup, and Tavily search independently testable while letting the agent combine them dynamically. It also makes partial coverage explicit: the interface surfaces missing credentials, provider errors, and incomplete citation data instead of quietly presenting a confident but under-sourced answer.

Diagram showing how Netty matches a user query with relevant people

Netty AI

A full-stack networking assistant for live events, built around a chat experience that helps people make useful connections.

ReactTypeScriptNode.jsMongoDB

Netty AI combines a chat interface with a separate backend to support networking at live events. The frontend and backend are available in separate repositories.

Slack thread where HC-bot replies that an unknown HC is not in the catalog and asks a clarifying question

Minerva HC Agent

An LLM agent that explains, compares, and suggests Minerva's HCs by reading the full description docs, with every answer citing the HCs it used.

PythonOpenAILLM agentsSlack

Minerva HC Agent answers questions about Minerva’s Habits of Mind and Foundational Concepts. It can explain a single HC, compare two, suggest HCs that fit a situation, and say plainly when the HC descriptions don’t cover a question before giving a clearly labelled general answer.

The corpus is small (76 docs of roughly 3k tokens each), so most questions are really a routing problem: which HC is this about? Instead of chunking and vector search, the agent gets a one-line-per-HC catalog in its system prompt, reads the whole docs it picks through a sandboxed read_file tool, and finishes with a structured answer that lists its cited HCs. The code then checks that every cited HC was actually read.

There is no vector database or agent framework, just a plain Python loop over the OpenAI Responses API. Domain knowledge lives in a skill file, so new domains can be added as new skill folders. The agent runs from a CLI or as a Slack bot that replies in threads, and an eval harness tracks routing recall, status match, tokens, and latency across dev and holdout question sets.

Step through a recorded run to see how it routes three sample questions, what it reads, and what the eval measured.

Education

Minerva University

B.S. Computer Science · Expected 2027