Work / personal

DropScout

Competition-intelligence dashboard that scrapes three marketplaces in parallel and rolls listings into a 0–100 product competition score.

Kind
personal
Status
complete
Role
solo
Period
Jan 2026 – May 2026
domains
tabular web-systems information-retrieval
methods
weighted-scoring async-scraping browser-automation
stack
python fastapi postgresql react typescript tailwind docker playwright recharts

Problem

Deciding whether a product is worth selling means answering “how crowded is this already?” That answer is scattered across marketplace listings, ad spend and seller counts, none of which talk to each other. DropScout collapses that into a single number a person can act on in a few seconds.

Data

  • Sources: eBay API, Facebook Ad Library API, Google Shopping (scraped via Playwright)
  • Shape: listing-level records: price, seller, ad presence, timestamps
  • Storage: PostgreSQL, structured columns plus JSONB for the raw scrape payloads
  • Known biases:

Approach

An async FastAPI backend fans out to all three sources in parallel, so a query costs roughly the latency of the slowest source rather than the sum of all three. Listings are then rolled into a weighted 0–100 competition score across three axes:

  • price: spread and floor across active listings
  • ad density: how much paid acquisition is already pointed at the product
  • seller count: how many distinct sellers hold inventory

A React + TypeScript frontend renders scores and competitor trends over time with Recharts. The whole stack is containerized so a run is reproducible.

Experiments

What didn’t work

Artifacts