Work / Case study

FlipFinder

A deal-finding and stock-tracking web app for people who buy and resell PC parts and phones. It checks eBay every 15 minutes, works out what each listing is really worth, and scores it out of 100.

Type
Self-initiated web app
Timeline
About six weeks, 2026
My role
Design, build, security, hosting
The FlipFinder dashboard, showing profit this month, cash tied up, live deal alerts and watchlist movement
555
automated tests, run on every change
15 min
between each sweep of eBay UK
0–100
deal score on every listing, fully explained
£0
running cost beyond the server

The problem

A good listing is gone within the hour.

Reselling used PC parts means making fast decisions with accurate numbers. Deciding whether a listing is worth buying means finding what that exact model has recently sold for, taking off fees, postage and travel, and judging how fast it will sell and how risky the seller is.

Most resellers do that with browser tabs and a spreadsheet. FlipFinder does it automatically for every listing it finds, then keeps track of everything that gets bought, what it cost and what it actually made.

What it does

From first sighting to money in the bank.

The FlipFinder listings feed with asking price, estimated resale, net profit, margin and deal score for each item
01

A live feed, priced against reality

Active eBay UK listings for graphics cards, desktop PCs and phones, refreshed every 15 minutes. Each row shows the asking price, the estimated resale value, the profit after fees and a deal score.

  • Filter by category, score and price
  • Auctions scored at a projected finishing price
  • Sold and ended listings drop out of the feed
An item page showing resale price history and the Why 85? breakdown of the five scoring factors
02

A score you can question

Every listing gets a score from 0 to 100, built from five weighted factors. Nothing is hidden: the item page shows each factor, its weight and what it contributed, alongside the sold-price history behind the estimate.

  • Estimates from real completed sales
  • Confidence rating on every estimate
  • Old scores stay reproducible when the formula changes
The FlipFinder inventory page listing stock with status, cost, fees, sale price, return and days held
03

Stock, costs and real profit

Each item bought moves through repair, ready, listed and sold. Extra costs are logged against it, and recording a sale works out the fees and the profit that was actually made.

  • Stock value, projected profit and days to sell
  • Flags stock ageing past 60 days
  • CSV import and export
The alerts drawer open over the dashboard, listing hot deals with asking price, estimate and net profit
04

Alerts, teams and a safe demo

Watch a listing or a whole product and get alerted to hot deals and price drops. Invite teammates with different levels of access. Anyone can try the full product in one click, in a private copy filled with sample data.

  • Four roles, from owner to viewer
  • Demo copies are deleted after 24 hours
  • Installable on a phone like an app

The front door

A sign-in portal people can trust.

The portal is the first thing a visitor sees, and the part that guards everyone’s data. There are no usernames to remember: your email address is your account.

The FlipFinder sign-in form with email, password and a Try the demo button
1 Sign in, or try the demo without an account
The Verify your email screen, with a reminder to check the junk or spam folder
2 New accounts must confirm their email address
The branded FlipFinder verification email with a single Verify email button
3 A branded email with one button, not a long link

How an account works

  1. Sign upWith an email address and a password. The password rules are shown up front.
  2. VerifyOne click on the emailed button confirms the address and signs you in.
  3. Land in a workspaceEvery new account gets its own private workspace, so nobody arrives at an empty screen.
  4. Invite a teamTeammates are invited by email with a role. Each link works once, expires after seven days and only for the address it was sent to.

Protection built in

  • Five wrong passwords in five minutes locks out further tries
  • Passwords need ten or more characters, and common ones are rejected
  • Passwords are stored scrambled, never in readable form
  • The portal never reveals whether an email address has an account
  • No access to anything until the email address is verified
  • Limits on sign-ups, password resets and verification emails
  • Sign-in with Google supported

How it works

Eight steps, every 15 minutes.

  1. Collect

    Pull active listings from eBay UK.

  2. Price

    Fetch recent sold prices for matching products.

  3. Check

    See which listings have sold or ended.

  4. Identify

    Match each messy title to one exact product.

  5. Read

    Fetch full descriptions for the best deals.

  6. Attach

    Add listing photos to stock that was bought.

  7. Score

    Rescore every listing from 0 to 100.

  8. Alert

    Tell each team about its hot deals.

What goes into a score

Five factors, each scored out of 100 and weighted. A listing scoring 78 or more is marked hot, 55 or more is fair, and anything below is a pass.

  • Margin40%
  • How fast it sells20%
  • Profit in pounds15%
  • Confidence in the estimate15%
  • Risk10%

The hard parts

Where the real work was.

The “3080 vs 3080 Ti” trap

A real listing: a plain RTX 3080 whose title also said “3080 Ti shroud”. Simple matching links it to the more valuable 3080 Ti and invents a profit that isn’t there.

FlipFinder only accepts a match when every mention of the model number carries the right variant. If a title is ambiguous, the listing stays unmatched instead of being guessed.

Sold prices you can trust

An average of everything that matched a search is misleading. A £40 “no display” card drags down the value of a working one.

So only genuine, like-for-like sales count: used, UK, sold on its own. Faulty units, empty boxes, bundles and offers with an unknown final price are all left out.

Listings that only look like bargains

A £40 “RTX 3070” is usually a fan, a box or a dead card. Those are flagged and deliberately given no score, so they can never appear as a hot deal.

Three flagged listings marked spares or repair, part or accessory, and locked, each shown without a score

Living inside free limits

eBay allows 5,000 requests a day, and the sold-price source just 100 a month. Every step has a budget.

Checks are spent where they matter most: auctions about to end first, then the best deals, then whatever has waited longest.

On a phone

Money first, not a squeezed desktop.

The phone version was designed separately. On a listing, the profit is the biggest thing on the screen with the score beside it. Tables become cards, filters slide up from the bottom, and the main actions stay within thumb reach.

A FlipFinder listing on a phone, with net profit and deal score at the top and actions fixed at the bottom
The FlipFinder listings feed on a phone, shown as cards with a bottom tab bar

Security & quality

Built to be trusted with other people’s data.

Teams keep their stock, sales and fees private from each other, so security was designed in from the first day rather than added at the end.

  • 555 automated tests, run on every change
  • Every protected page tested against every role
  • Each team’s data separated at the database layer
  • Verified email sign-in, Google sign-in and strong password hashing
  • Strict browser security policy with no inline scripts
  • Rate limits on sign-in, invitations and the demo
  • Uploaded photos re-encoded, with location data removed
  • Nothing exposed to the internet except the web server
  • Nightly database backups, checked and kept for seven days

Under the hood

Simple, proven tools.

See the full technical stack
Language & framework
Python 3.12 and Django 5.2 LTS
Front end
Server-rendered templates with HTMX and under 200 lines of JavaScript. No build step.
Styling & charts
Plain CSS with design tokens; charts drawn as inline SVG with no chart library
Database
PostgreSQL 16
Background jobs
Celery and Redis, scheduled by Celery Beat
Sign-in
django-allauth with mandatory email verification, Google sign-in and Argon2 hashing
Data sources
eBay Browse API for live listings; SoldComps API for completed sales
Hosting
One Ubuntu server running five Docker containers behind Caddy, with Cloudflare for DNS
Quality
pytest, ruff and pip-audit, run by GitHub Actions on every push

How it is put together. One codebase split into eight modules, run as three kinds of process from a single Docker image: the website, a background worker and a scheduler. Each marketplace sits behind one interface, so adding another means writing one adapter. Every sweep keeps a raw copy of what the marketplace returned, so matching and scoring rules can be changed and replayed without calling eBay again.

Honest scope. FlipFinder is a working proof of concept, not a business: it has no paying customers. It covers eBay UK only, and tracks graphics cards, desktop PCs and phones. Sold prices come from a third-party source of completed eBay sales, and coverage grows gradually because the project runs entirely on free service tiers.

Need a website that does more than a brochure?

Tell me about your business and what you need. I'll reply personally, with no obligation.