A few of the things I've built — tagged as coursework or independent below, solo unless noted.
CV Reviewer
React (Vite), Flask, Google Gemini
Live
Independent project
Upload a CV as a PDF and get structured, AI-generated feedback — a score, strengths, weaknesses, missing keywords and suggestions — aimed at students and junior developers. JWT authentication with bcrypt-hashed passwords, and five persisted themes on the frontend.
Role — Solo. Built the Flask backend and React frontend end to end.
Process — Built the backend and Gemini integration first to confirm the feedback was actually useful, then added auth and theming once the core loop worked. Ran it against CVs with known weak points to check Gemini's feedback actually caught them before trusting the prompt.
Proof — Deployed and live — try it with your own CV at the link below.
AI's role — I designed the scoring rubric and prompt structure; Gemini generates the written feedback from it, which I validated rather than shipped blind.
SymptomJournal
AI-powered medical companion · React Native, FastAPI, Supabase, NVIDIA NIM
Coursework project
A mobile app that replaces anxious symptom-Googling with structured self-tracking: log symptoms, spot patterns over time, and generate a clear summary to bring to a doctor's appointment. AI analysis runs through the FastAPI backend rather than calling the model straight from the app, and the frontend uses a centralized theme system with light and dark modes built in from the start.
Role — Solo. Built the mobile app, backend, and AI integration.
Process — Backend-first, so the AI call and its key stay server-side rather than in the mobile client. Built light/dark theming early, since symptom logging needed to work comfortably at any hour.
Proof — Backend deployed and live — API docs linked below.
AI's role — I built the symptom-logging model and defined what gets summarised; NVIDIA NIM, serving a Llama 3.2 vision-instruct model, generates the written summary, which I check against the raw logged data for omissions.
MonoFact
React Native, Expo, Firebase
Coursework project
A swipe-to-judge "fact or myth" quiz game across six knowledge decks, with XP, streak bonuses, an exponential level curve and 27 achievements.
Role — Solo, including the full gamification layer.
Process — Built the swipe mechanic and data model first, then layered gamification on once the core loop was fun on its own. Chose Firestore over a custom backend to move faster on a single-semester timeline.
Proof — Demo video + code linked below.
Projello
React/Electron, ASP.NET Core, PostgreSQL, SignalR
Coursework project
Team of 4
A lightweight project management system for construction site crews — a 30-second daily check-in instead of Jira-style cards, milestone tracking, photo-verified updates, a client portal, and one-click voice/video calls for on-site issues.
Role — Integration between the Electron/React client and the ASP.NET Core API, as one of four developers.
Proof — Code linked below; not independently deployable outside the team's environment.
Budget Tracker CLI
Python, SQLite, Rich, Matplotlib
Independent project
A command-line income and expense tracker — add transactions, see totals and balance, and generate a category breakdown chart. Kept deliberately small and modular (a db layer, a Transaction model, and a CLI layer), using Rich for readable terminal tables instead of a GUI.
Role — Solo.
Process — Built the SQLite layer and transaction model first, then added Rich-formatted output and the Matplotlib chart once the core logic worked. Used Python's built-in sqlite3 rather than an ORM to keep it dependency-light.
Proof — Code linked below — clone and run to see the terminal output and generated chart.