Projects

Spending Insights

May 2026 - Jun 2026
Next.jsReactTypeScriptPostgreSQLFastAPIOpenAI APINotion API
Spending Insights Dashboard

Ingests a credit-card statement PDF, extracts and normalizes every line item, classifies spending, computes analytics, generates AI insights, and publishes a shareable Monthly Wrapped report to Notion. Two-runtime system: a TypeScript Next.js app that owns classification, storage, analytics, and the dashboard, and a Python FastAPI service that turning messy PDF bytes into clean, validated transaction JSON over localhost HTTP.

Privacy is structural rather than bolted on: the raw statement lives only as in-memory bytes for the lifetime of a single request and is never written to disk, account numbers are never extracted, and only normalized spending is persisted.

c-shell

May 2026 - Jun 2026
CGNU ReadlinePOSIXUnixSystems Programming

A POSIX-style Unix Shell in C. The Shell reads a line, parses it through a hand-written quote-aware tokenizer, expands variables, and dispatches either to a builtin or to a forked child process by walking $PATH.

For pipelines and I/O redirection, it's cool to think about about which process closes which file descriptor and when. For instance, if you leave a write end open in the parent, the next stage’s fgets never seed EOF and hang. Redirection taught me that file descriptors are just integers the kernel maps to open files, and dup/dup2 lets you swap what those integers point to and restore them after.

Out-of-Order PARCv2 Processor with Speculation

Mar 2026 – May 2026
Computer ArchitectureVerilogHDL
Out-of-order PARCv2 pipeline diagram and reorder buffer table

Extended a 5-stage pipelined PARCv2 processor into a single-issue, out-of-order machine in Verilog. Built a 16-entry reorder buffer that lets three execution pipes of different latencies (ALU, memory, multiply) finish out of order while still committing in program order, and bypasses not-yet-committed results back into decode. Exposed a latent writeback-ordering bug in the baseline by designing a targeted WAW hazard test the original suite missed.

A second variant speculates past unresolved branches, with the ROB tracking which instructions are speculative and rolling back on a mispredict. Against the in-order baseline, it cut cycle counts by up to 6× on a matrix-multiply kernel.

inki: Real-time Annotating with Friends

Sep 2025 – Dec 2025
Next.jsReactTypeScriptSupabaseAgileCI/CD

Scalable web platform for real-time collaborative annotation and discussion, integrating Supabase Realtime for live updates and presence tracking.

Designed RESTful APIs and enforced role-based access control for secure document sharing and multi-user editing on a cloud-hosted Supabase backend.