Pricecious logo

(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.

SCR-20251120-sdky

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

  1. Create a docker-compose.yml file: Save the following content to a file named docker-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:
    
  2. Start the Application: Run the following command in the same directory:

    docker compose up -d
    
  3. 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.

S
Description
No description provided
Readme GPL-3.0
18 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 68%
JavaScript 30.8%
PowerShell 0.6%
CSS 0.2%
Dockerfile 0.2%