Snipe - Auction Sniping & Listing Intelligence https://circuitforge.tech/software/snipe
Find a file
pyr0ball 8ba07b9766
Some checks are pending
CI / Python tests (push) Waiting to run
CI / Frontend typecheck + tests (push) Waiting to run
Mirror / mirror (push) Waiting to run
docs(screenshots): retake hero after CSS theme fix — consistent warm light theme throughout
2026-05-06 09:58:39 -07:00
.forgejo/workflows feat: snipe beta backlog batch (tickets #22/#28/#30/#34/#35/#36/#37/#38) 2026-04-13 19:32:50 -07:00
.github/workflows ci: add GitHub Actions CI for public credibility badge 2026-04-15 20:20:13 -07:00
api feat(mercari): Phase 2 — MercariAdapter with Xvfb stability fixes 2026-05-03 18:39:25 -07:00
app fix(browser-pool): replace queue with thread-local storage to fix Playwright cross-thread crash (#53) 2026-05-04 09:27:20 -07:00
config docs(config): add cf_text trunk service backend to llm.yaml.example 2026-04-20 10:56:23 -07:00
docker/web feat(monitor): background saved-search monitoring with watch alerts (#12) 2026-05-04 08:24:56 -07:00
docs docs(screenshots): retake hero after CSS theme fix — consistent warm light theme throughout 2026-05-06 09:58:39 -07:00
scripts feat(mercari): Phase 2 — MercariAdapter with Xvfb stability fixes 2026-05-03 18:39:25 -07:00
tests fix(browser-pool): replace queue with thread-local storage to fix Playwright cross-thread crash (#53) 2026-05-04 09:27:20 -07:00
web feat(monitor): background saved-search monitoring with watch alerts (#12) 2026-05-04 08:24:56 -07:00
.cliff.toml feat: snipe beta backlog batch (tickets #22/#28/#30/#34/#35/#36/#37/#38) 2026-04-13 19:32:50 -07:00
.env.example feat(config): add CF_APP_NAME for cf-orch analytics attribution 2026-04-20 07:03:18 -07:00
.gitignore chore: ignore .worktrees/ directory 2026-04-20 10:45:39 -07:00
CHANGELOG.md chore: bump changelog for v0.5.1 2026-04-16 13:37:03 -07:00
compose.cloud.yml feat: add CF_APP_NAME=snipe to cloud compose for cf-orch pipeline attribution 2026-04-21 10:58:52 -07:00
compose.override.yml feat: infra/devops batch — CI/CD, installer, nginx docs, cf-orch agent (v0.3.0) 2026-04-14 06:19:25 -07:00
compose.yml fix: self-hosted install — network_mode, cf-core bind mount, install script 2026-04-05 22:02:50 -07:00
Dockerfile feat(snipe): FastAPI layer, Playwright+Xvfb scraper, caching, tests 2026-03-25 20:09:30 -07:00
install.sh feat: infra/devops batch — CI/CD, installer, nginx docs, cf-orch agent (v0.3.0) 2026-04-14 06:19:25 -07:00
LICENSE Initial commit 2026-03-10 20:52:28 -07:00
manage.sh fix: self-hosted install — network_mode, cf-core bind mount, install script 2026-04-05 22:02:50 -07:00
mkdocs.yml feat: add Plausible analytics to Vue SPA and docs 2026-04-16 21:15:56 -07:00
PRIVACY.md feat: Snipe MVP v0.1 — eBay trust scorer with faceted filter UI 2026-03-25 13:09:49 -07:00
pyproject.toml ci: register browser pytest marker 2026-04-15 20:30:26 -07:00
README.md docs(readme): landing page rewrite — corrected tagline, hero screenshot, platform table, sniping engine roadmap, split license 2026-05-06 08:51:37 -07:00
streamlit_app.py feat: preferences store, community signals, a11y + API fixes 2026-04-14 16:15:09 -07:00

Snipe logo

Snipe

Auction intelligence and sniping for people who don't trust the platform.

License: MIT / BSL 1.1 Status: Beta Forgejo Docs

Part of the Circuit Forge LLC suite — "AI for the tasks the system made hard on purpose."


Snipe hero screenshot — search results with trust score badges, STEAL price flags, and red flag indicators


Why Snipe?

Auction platforms are designed to make you act fast and trust blindly. The closing countdown, the hidden price history, the new-account seller with one feedback — all of it is structured against the buyer.

Snipe inverts that. Before you place a bid, you get a trust score built from five independently sourced signals: seller account age, feedback volume, feedback ratio, price versus recent completed sales, and category history. A hard-coded red flag for new accounts or bad actors overrides the composite. Soft flags surface buried damage disclosures, duplicate photos, and listings that have been sitting unsold for weeks. When the listing is priced well below market, you see a STEAL badge — sourced from eBay Marketplace Insights, not from the seller's description.

The sniping engine — precise last-second bid submission with NTP (network time protocol) synchronization and soft-close handling — is next on the roadmap. The intelligence layer is live now.


Features

Listing intelligence (live)

  • Trust scoring — five-signal composite score (0100) per listing: account age, feedback count, feedback ratio, price vs. market, category history
  • Red flag detection — hard flags for new accounts and established bad actors; soft flags for damage keywords, evasive language, duplicate photos, long-on-market listings, and significant price drops
  • Price vs. market — listing price compared against completed-sale medians via eBay Marketplace Insights API (Browse API fallback)
  • Keyword filtering — must-include (AND / ANY / OR-groups), must-exclude, category, price range; OR-groups expand into multiple targeted queries so eBay relevance doesn't silently drop variants
  • Saved searches — one-click re-run that restores all filter settings
  • Background enrichment — seller account age scraped via Playwright + Xvfb (Kasada/Cloudflare-safe headed Chromium); on-demand re-score per listing without re-searching
  • LLM query builder — describe what you want in plain language; an LLM builds the search terms (paid tier)
  • Vision photo assessment — condition scoring from listing photos via moondream2 locally or Claude vision (paid/cloud); VRAM-aware scheduling via circuitforge-core task scheduler
  • Affiliate link builder — eBay Partner Network wrapping with user BYOK support and per-retailer disclosure

Platforms

Platform Search Trust scoring Completed-sale comps
eBay Browse API + Playwright fallback All 5 signals Marketplace Insights + Browse fallback
Mercari Playwright scraper 3/5 signals (partial) Phase 3
CT Bids, HiBid, AuctionZip, Invaluable, GovPlanet, Bidsquare, Proxibid Planned Planned Planned

Auction sniping engine (roadmap)

  • NTP-synchronized last-second bid submission
  • Soft-close detection and strategy adjustment
  • Proxy bid ladder with configurable max
  • Human approval gate before any bid executes
  • Post-win workflow: payment routing, shipping coordination, provenance documentation

Quick Start

Requirements: Docker with Compose plugin, Git. No API keys required to get started.

# One-line install — clones to ~/snipe by default
bash <(curl -fsSL https://git.opensourcesolarpunk.com/Circuit-Forge/snipe/raw/branch/main/install.sh)

Then open http://localhost:8509.

Manual setup

Snipe's API image builds from a parent context that includes circuitforge-core. Both repos must sit as siblings:

workspace/
├── snipe/               ← this repo
└── circuitforge-core/   ← required sibling
mkdir snipe-workspace && cd snipe-workspace
git clone https://git.opensourcesolarpunk.com/Circuit-Forge/snipe.git
git clone https://git.opensourcesolarpunk.com/Circuit-Forge/circuitforge-core.git
cd snipe
cp .env.example .env   # add eBay API credentials if you have them (optional)
./manage.sh start

Optional: eBay API credentials

Snipe works without credentials using its Playwright scraper fallback. Adding credentials unlocks faster searches and inline seller account age without an extra scrape:

  1. Register at developer.ebay.com
  2. Copy your Production App ID and Cert ID into .env
  3. ./manage.sh restart

Tiers

Tier What you get
Free eBay + Mercari search, full trust scoring, keyword filtering, saved searches — local LLM only
Paid LLM query builder, background saved-search monitoring with alerts, cloud LLM option
Premium Vision photo condition assessment, fine-tuned trust models, multi-user
Ultra Human-in-the-loop operator — handles CAPTCHAs, phone calls, anything automation can't

License key format: CFG-SNPE-XXXX-XXXX-XXXX


Running

./manage.sh start         # start all services
./manage.sh stop          # stop
./manage.sh restart       # restart
./manage.sh logs          # tail logs
./manage.sh open          # open in browser

Stack

Layer Technology Port
Frontend Vue 3 + Pinia + UnoCSS + Vite (served via nginx) 8509
API FastAPI (uvicorn) 8510
Scraper Playwright + playwright-stealth + Xvfb (Kasada/Cloudflare-safe headed Chromium)
Database SQLite (data/snipe.db)
Core circuitforge-core (editable install)

The scraper stack uses headed Chromium via Xvfb (X virtual framebuffer) with playwright-stealth for all platform access. Headless and requests-based approaches are blocked by eBay and Mercari.


Documentation

Full documentation at docs.circuitforge.tech/snipe — setup guide, trust scoring algorithm, platform adapter reference, API docs, and self-hosting notes.


Forgejo-primary

Snipe is developed and maintained on Forgejo at git.opensourcesolarpunk.com/Circuit-Forge/snipe. GitHub and Codeberg are read-only mirrors. File issues and submit pull requests on Forgejo.


Contributing

Bug reports and feature requests: open an issue on Forgejo. The discovery pipeline (scrapers, adapters, signal extraction) is MIT-licensed — pull requests welcome. AI trust-scoring features are BSL 1.1 — contributions are accepted but the license terms apply.


License

Snipe uses a dual license:

Component License
Discovery pipeline — scrapers, platform adapters, search, keyword filtering MIT
LLM trust-scoring, query builder, vision assessment, AI features BSL 1.1 — free for personal non-commercial self-hosting; commercial use requires a paid license; converts to MIT after 4 years

Privacy · Safety · Accessibility — co-equal, non-negotiable.

circuitforge.tech