feat: Rebranding PriceFlow + OpenRouter + i18n FR + Docker
(My) Pricecious
Price tracking using A-Eyes 🤦
Warning
This is 100% vibe-coded.
Pricecious is a self-hosted, AI-powered price tracking application. It uses GenAI Vision Models (OpenAI, Anthropic, Ollama, etc.) to visually analyze product pages, detect prices, and monitor stock status.
Features
- AI-Powered Analysis: Uses GenAI Vision Models to "see" the price and stock status on any webpage, bypassing complex HTML structures.
- Confidence Scoring: AI provides confidence scores (0-1) for each extraction, enabling smart business rules and quality monitoring.
- Robust JSON Parsing: Hardened parsing pipeline with automatic JSON repair fallback when primary extraction fails.
- Provider-Specific Optimization: Leverages native JSON modes and structured output features for OpenAI, Ollama, and other providers.
- Visual History: Keeps a screenshot history of every check with full AI metadata (model, provider, confidence, etc.).
- Smart Scrolling: Automatically scrolls pages to load lazy-loaded content before capturing.
- Text Context: Optionally extracts page text to improve AI accuracy.
- Notifications: Supports multi-channel notifications (Discord, Telegram, Email, etc.) via Apprise.
- Dark Mode: Beautiful UI with full dark/light mode support.
- Dockerized: Easy to deploy with Docker Compose.
Prerequisites
- Docker and Docker Compose
- AI Provider: An API key for OpenAI, Anthropic, Gemini, OR a local Ollama instance.
- PostgreSQL: A database for storing items and history (handled via Docker Compose).
- Browserless: A headless browser service for scraping (handled via Docker Compose).
Quick Start
-
Create a
docker-compose.ymlfile: Save the following content to a file nameddocker-compose.yml:services: app: image: ghcr.io/ds-sebastian/pricecious:latest container_name: pricecious-app ports: - "8000:8000" environment: - DATABASE_URL=postgresql://user:password@db:5432/pricewatch - BROWSERLESS_URL=ws://browserless:3000 depends_on: - db - browserless extra_hosts: - "host.docker.internal:host-gateway" volumes: - screenshots_data:/app/screenshots db: image: postgres:15-alpine environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: pricewatch volumes: - postgres_data:/var/lib/postgresql/data browserless: image: browserless/chrome:latest ports: - "3000:3000" environment: - MAX_CONCURRENT_SESSIONS=10 volumes: postgres_data: screenshots_data: -
Start the Application: Run the following command in the same directory:
docker compose up -d -
Access the Dashboard: Open your browser and navigate to
http://localhost:8000.
Configuration
Environment Variables
The following environment variables can be configured in your docker-compose.yml:
| Variable | Description | Default | Example |
|---|---|---|---|
DATABASE_URL |
PostgreSQL connection string | postgresql://user:password@db:5432/pricewatch |
postgresql://u:p@localhost:5432/db |
BROWSERLESS_URL |
WebSocket URL for Browserless | ws://browserless:3000 |
ws://browserless:3000 |
LOG_LEVEL |
Application logging level | INFO |
DEBUG |
SQL_ECHO |
Log all SQL queries to console | false |
true |
CORS_ORIGINS |
Allowed CORS origins (comma-separated) | * |
http://localhost:3000,https://myapp.com |
Tip
LiteLLM environment variables should work too to prepopulate AI model default settings
Scraper Settings
All scraper settings are configured via the Settings page in the UI:
- Smart Scroll: Enable to handle infinite scroll pages.
- Text Context: Enable to send page text to the AI for better accuracy.
- Scraper Timeout: Maximum time to wait for page load.
AI Configuration
All AI settings are configured via the Settings page in the UI. No environment variables are required.
Provider Settings:
- Provider: Choose between OpenAI, Anthropic, Gemini, Ollama, or Custom.
- Model: Specify the model name (e.g.,
gpt-4o,claude-3-5-sonnet,gemma3:4b). - API Key: Enter your API key (not required for Ollama).
- Base URL: Required for Ollama or custom OpenAI-compatible endpoints.
Advanced AI Settings:
- Temperature: Controls output randomness (0.0-1.0).
- Max Tokens: Maximum tokens for AI responses.
- Price/Stock Confidence Thresholds: Minimum confidence required to update values.
- Enable JSON Repair: Automatically attempt to repair malformed JSON responses.
How Confidence Works:
- The AI provides a confidence score (0.0 to 1.0) for each extracted value
- Scores represent the AI's subjective probability that the extraction is correct
- If confidence is below the threshold, the value is logged but doesn't overwrite the current value
- Large price changes (>20%) with low confidence (<0.7) are flagged for manual review
- All extractions are saved in history with their confidence scores for analysis
Notifications
Create Notification Profiles in the Settings page using Apprise URLs.
- Example Discord:
discord://webhook_id/webhook_token - Example Telegram:
tgram://bot_token/chat_id
License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
