Juncheng Zhu

2A Honours Computer Science Student @ University of Waterloo

Seeking Software Engineering Co-op

About

I'm a second-year Computer Science student at the University of Waterloo, with four years of competitive programming behind me (USACO Gold, CMO Qualifier). These days I build AI‑powered systems end to end, with a current focus on LLM infrastructure — hierarchical memory, retrieval, and agentic tool design.

Selected Projects

Dreamory: three-tier memory architecture with a code-only emotion state machine and an agentic tool layer
Python (FastAPI) PostgreSQL + pgvector Agentic Tools

Dreamory: Memory Infrastructure for AI Companions

An async FastAPI backend that keeps a companion chatbot's emotional state and long-term memory outside the model: an LLM call classifies each message into discrete events, a code-only rule table updates a six-mode state machine, and the resulting state is compiled into the prompt every turn. Memory is a three-tier hierarchy on PostgreSQL + pgvector — two HNSW-indexed embeddings per message (content and emotion axes), a time-decayed hot zone of ids, and a token-budgeted context assembler. A bounded tool-calling loop (memory search, grep, timers, notes) forces an answer after 3 rounds and falls back to plain generation on failure, and every model output is schema-validated. Covered by 183 pytest tests that need no database or API key.

Onyx: time-tracking and session analytics platform
Python (Flask) Redis + SSE PostgreSQL Docker/Nginx

Onyx: Personal Analytics Platform

A time-tracking and session-analytics app I run on a Linux VPS — a three-service Docker Compose stack (Flask on Gunicorn/gevent, PostgreSQL, Redis) behind Nginx, with every push to master deployed by GitHub Actions over SSH. Real-time cross-tab and cross-device sync runs on Server-Sent Events over Redis pub/sub, so an update handled by one of four Gunicorn workers reaches clients held open by any other; heartbeats keep proxies from closing streams, and the app degrades gracefully when Redis is unavailable. The schema evolves in place on the live database under a Postgres advisory lock, and 161 pytest tests run against a throwaway SQLite database and a fake Redis.

Sakura Rain Effect Demo
React 18 Vite Value Noise Canvas API

Sakura Rain Extension

(Published on the Chrome Web Store) A Chrome extension, built with React and Vite, that animates falling petals over any page on a Canvas. Wind is modeled with a custom 1D value noise algorithm and tuned live from a React popup.

Fireworks Game Screenshot
Vanilla JS HTML5 Canvas Physics Engine

Fireworks Vs Ango

A lightweight browser-based action game. Engineered a high-performance particle system from scratch without external engines, creating custom physics simulations for entity interactions.

Technical Skills

LanguagesPython, JavaScript / TypeScript, C/C++, SQL; familiar with Java and Node.js
BackendFlask, FastAPI, SQLAlchemy, Pydantic, REST APIs, Server-Sent Events, Gunicorn, Nginx, Docker Compose, Linux
DataPostgreSQL, pgvector, Redis, SQLite; familiar with NumPy and Pandas
AILLM integration via OpenAI-compatible and Anthropic APIs (tool calling, JSON mode, schema-validated outputs), RAG, vector search, embeddings, prompt engineering; familiar with LangGraph, LangChain, MCP, local model serving with Ollama
FrontendHTML/CSS, Canvas API, Vite, Chart.js; some React and WebSocket
Tools & CloudGit, GitHub Actions (CI/CD), pytest, Claude Code; familiar with AWS and Kubernetes

Education

University of Waterloo Sept. 2025 – Jun. 2030 (expected)

Honours Computer Science, Co-op. René Descartes National Scholarship ($25,000) · USACO Gold Division (3rd of 4 divisions) · Canadian Mathematical Olympiad (CMO) Qualifier.

Bayview Secondary School 2021 – 2025

Math Club President — ran weekly problem-solving sessions for 30+ students; the team placed 13th in the HMMT November 2024 Team Guts round.