Coin collecting has been a passion of mine since I was five years old. To turn this hobby into a business, I developed CoinLister, a tool to solve the most time-consuming part of selling online: creating listings.
I built this full-stack MVP in six weeks with a Java Spring Boot backend and a React frontend. It successfully reduced my listing time from 15 minutes per item down to approximately 3 minutes, including photography.



Fig. 1 The image pipeline: original photo, AI bounding box detection, and the final cropped result.
The backend uses the Google Vision API for intelligent cropping and OpenAI for description generation. It then connects to the eBay Developer API to publish listings automatically. All credentials and API keys are securely managed using Google Secret Manager.

Fig. 2 The app's confirmation screen (left) and the resulting live eBay listing (right).
Coin collecting has been a passion of mine since I was five years old. To turn this hobby into a business, I developed CoinLister, a tool to solve the most time-consuming part of selling online: creating listings.
I built this full-stack MVP in six weeks with a Java Spring Boot backend and a React frontend. This application streamlined my entire workflow, reducing the listing time from 15 minutes per item down to approximately 3 minutes, including photography.
The tool connects to the eBay Developer API to publish listings automatically—the most challenging part of the project was navigating its complex documentation. The application is hosted on Google Cloud Platform, utilizing a serverless architecture with Cloud Run, Firestore, and Storage. This design is highly efficient, with total operational costs under $1 per month. All credentials are securely stored using Google Secret Manager.
I am now developing version 2.0 with an Angular frontend, expanding it into a complete inventory management system with profit/loss reporting and AI-driven value estimation.

The application's confirmation UI (left) and the final, live eBay listing it generated (right).

1. Original Photo

2. Bounding Box Detection

3. Final Cropped Image