MG monogram

Projects

Photo Library Organizer

Stack

  • Python
  • OpenCV
  • MediaPipe
  • FastAPI
  • SQLite

A computer vision system for organizing near-duplicate photo libraries. Clusters visually similar images using perceptual hashing and Union-Find, then ranks photos in each cluster by subject-aware sharpness, exposure, and eyes-open detection from MediaPipe facial landmarks to recommend the strongest photos. Runs entirely on-device with a local FastAPI backend and JavaScript interface, supporting sortable grid and swipe review modes before exporting selections or cleaning folders in place without automatically deleting files.

Ranking output for a 12-shot burst of a castle at dusk. The winning frame is shown large with a green KEEP badge and the note 'sharpest of 12 · well exposed'. Below it sit the four runners-up at reduced size, each labelled with the signal that cost it — narrow miss, out of focus, underexposed, underexposed — above focus and exposure score bars ranging from 0.00 to 1.00.
The top-ranked photo from a 12-shot burst, with four other candidates and rejection reasons for each.

PlanMyTrip

Stack

  • Java
  • Spring Boot
  • React
  • A* search
  • Google Maps API

A sightseeing planner that builds an efficient walking or sightseeing route through a city's attractions based on user preferences (attractions, route type, time). Routing uses A* search with density-aware heuristics to stay tractable at city scale. A two-layer cache cut Google Maps API costs 5.6x at an 83.8% hit rate, holding complex international routes under 20 seconds. The React frontend does click-to-set endpoints, POI photo tooltips on hover and auto-zoom, with structured JSON error responses when the upstream APIs fail.

PlanMyTrip interface: a sightseeing plan for Manhattan with starting point and time-window controls on the left, and a map on the right showing the generated walking route through seven attractions — Times Square scheduled 9:01–9:31 AM, seven attractions over 7 hours 54 minutes.
A generated day plan: seven attractions ordered into a 7h 54m walking route, with per-stop time windows.

RSVP Platform

Stack

  • React
  • Node.js
  • PostgreSQL

Registration system for the private events 11Scientific hosts. Proposed and pitched the system in a team meeting, then led its implementation with the firm's IT team. Guests register once, receive a confirmation email with a calendar invite, registrations are stored in a searchable database, and operations receives automated attendee summaries.

Invitation page built for the RSVP platform: a split layout with the invitation on a dark field — serif headline reading 'An Evening for Leaders in Biotech, Investments & Innovations' — and the RSVP panel on the right showing a closed registration state.
Invitation page with the RSVP panel in its closed-registration state.

LangSpace

Stack

  • Next.js
  • TypeScript
  • Tailwind CSS
  • Firebase

Language learning platform with AI-powered feedback across four skill modules — listening, reading, writing, and speaking. A weekly planner tracks streaks; the model sets quizzes by proficiency level, grades written submissions, and explains vocabulary with generated images.

This Site

Stack

  • Next.js
  • TypeScript
  • Tailwind CSS

Built to show things that excite me.

Learn more