Combat Illusory Discounts with P2P Price Intelligence & AI
A Windows desktop application for tracking and comparing grocery prices across Australian supermarkets, powered by peer-to-peer data sharing and artificial intelligence.
Fight misleading "sale" prices and illusory discounts by building a transparent, community-driven grocery price tracking network. Share real-time price data across a P2P network and leverage AI to automatically extract pricing from supermarket catalogues.
- Decentralized Network: Share grocery prices directly with other users without central servers
- Server Discovery: Use
servers.jsonconfiguration to find and connect to P2P nodes - Regional Filtering: Connect to price-sharing nodes in your region (NSW, VIC, QLD, etc.)
- Real-time Sync: Automatic synchronization of price updates across the network
- Privacy-Focused: Direct peer connections, no central data collection
- Scalable Storage: For large-scale data, use AdvGenNoSqlServer (sister project)
- LLM Integration: Automatically extract pricing from PDF catalogues using Large Language Models
- ML.Net Support: Machine learning capabilities for price prediction and analysis (planned)
- Smart Matching: AI-assisted product matching across different supermarket chains
- OCR Processing: Extract text from image-based catalogue PDFs
- Historical Tracking: Track price changes over time to identify genuine vs. fake discounts
- Multi-Store Comparison: Compare prices across Coles, Woolworths, IGA, Aldi, and other chains
- Price Alerts & Notifications: Get notified when prices drop or deals are about to expire
- Discount Analysis: Identify illusory discounts by comparing current "sale" prices with historical data
- Reports & Analytics: Weekly specials digest and best deals tracking
- Import/Export: JSON import from Coles/Woolworths/Drakes, export with filters and compression
- Shopping Lists: Create, manage, and track progress of your shopping lists
- Global Search: Search across all items, stores, and price records instantly
- Favorites: Pin your frequently purchased items for quick access
- Settings & Customization: Configure your experience and preferences
- Coles
- Woolworths
- IGA
- Aldi
- Drakes
- Other Australian supermarkets
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β WPF Desktop App (WPF-UI Fluent Design) β
β (UI Layer - .NET 9) β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββ β
β β Views β β ViewModels β β Converters β β
β β β’ ItemsPage β β β’ MainWindowβ β β’ BoolToVisibility β β
β β β’ StoresPageβ β β’ ItemVM β β β’ InverseBool β β
β β β’ Dashboard β β β’ ImportVM β β β β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββ β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββ
β AdvGenPriceComparer.Data.LiteDB β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββ β
β β Repositories β β Services β β Entities β β
β β β’ Items β β β’ JsonImportβ β β’ ItemEntity β β
β β β’ Places β β β’ Database β β β’ PlaceEntity β β
β β β’ Prices β β β’ Export β β β’ PriceRecordEntityβ β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββ β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββ
β AdvGenPriceComparer.Core β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββ β
β β Models β β Interfaces β β NetworkManager β β
β β β’ Item β β β’ IGrocery β β β’ P2P Server β β
β β β’ Place β β β’ IRepos β β β’ P2P Client β β
β β β’ PriceRec β β β’ Services β β β’ Discovery β β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββ β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββ
β LiteDB Embedded Database β
β β’ Items Collection β’ Places Collection β’ PriceRecords β
β β’ Categories β’ Alerts β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Python AI Processing β
β β’ PDF Catalogue Extraction (LLM-powered) β
β β’ OCR Processing (pdfplumber, PyPDF2) β
β β’ Product Categorization β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
As your pricing data grows beyond the capacity of the embedded LiteDB database, you can seamlessly migrate to AdvGenNoSqlServer, our sister project designed for large-scale data management.
When to Use AdvGenNoSqlServer:
- Millions of price records: LiteDB is great for personal use, but enterprise deployments need more
- Multi-region deployments: Centralized NoSQL database for regional P2P hub servers
- Advanced analytics: Run complex queries across massive historical datasets
- Community hubs: Power community-run price-sharing nodes serving hundreds of users
- API services: Build public APIs for price data access
Features:
- High-performance NoSQL database (MongoDB, Cassandra, or CosmosDB)
- RESTful API for data access
- Horizontal scaling for millions of records
- Advanced indexing and query optimization
- Backup and replication support
- Docker deployment ready
Migration Path:
// Export from LiteDB
var exporter = new PriceDataExporter(groceryDataService);
await exporter.ExportToJson("price_data_export.json");
// Import to AdvGenNoSqlServer
var importer = new NoSqlImporter("https://your-nosql-server.com");
await importer.ImportFromJson("price_data_export.json");Architecture with AdvGenNoSqlServer:
Desktop App (LiteDB) ββP2Pββ> Regional Hub (AdvGenNoSqlServer) ββP2Pββ> Other Hubs
β β β
Personal Data Regional Aggregation National Network
This hybrid approach lets individuals use lightweight P2P sharing while community leaders can run powerful regional hubs with AdvGenNoSqlServer for aggregated price intelligence.
For a comprehensive guide on how to use all features of AdvGenPriceComparer, please refer to our User Guide. It covers everything from navigating the dashboard and managing your shopping lists to importing/exporting data and troubleshooting common issues.
For C# Application:
- Windows 10/11
- .NET 9.0 SDK
- Visual Studio 2022 (recommended)
For Python Scripts:
- Python 3.8+
- pip (Python package manager)
-
Clone the repository
git clone https://github.com/yourusername/AdvGenPriceComparer.git cd AdvGenPriceComparer -
Build the C# application
cd AdvGenPriceComparer dotnet restore dotnet build -p:Platform=x64 -
Setup Python environment
pip install -r requirements.txt
Option 1: Visual Studio (Recommended)
- Open
AdvGenPriceComparer.slnin Visual Studio 2022 - Set platform to
x64 - Press
F5to run with debugging orCtrl+F5to run without debugging
Option 2: Packaged Deployment
cd AdvGenPriceComparer
dotnet publish -c Release -p:Platform=x64 --self-contained true
# Run from: bin\Release\net9.0-windows10.0.19041.0\win-x64\publish\The application uses a servers.json configuration file to discover and connect to P2P price-sharing nodes. The file is stored at:
%AppData%\AdvGenPriceComparer\servers.json
Example Configuration:
[
{
"name": "AusPriceShare-Sydney",
"host": "price.aus.example.com",
"port": 8080,
"isSecure": false,
"region": "NSW",
"description": "Australian grocery price sharing - Sydney region",
"isActive": true
},
{
"name": "LocalTestServer",
"host": "localhost",
"port": 8081,
"isSecure": false,
"region": "Local",
"description": "Local testing server",
"isActive": false
}
]var networkManager = new NetworkManager(groceryDataService);
await networkManager.StartServer(port: 8081);// Connect to specific server
await networkManager.ConnectToServer("AusPriceShare-Sydney");
// Auto-discover and connect to all active servers in region
await networkManager.DiscoverAndConnectToServers("NSW");await networkManager.SharePrice(
itemId: "item123",
placeId: "place456",
price: 3.99m,
isOnSale: true,
originalPrice: 5.99m,
saleDescription: "50% Off - Special"
);The Python scripts use LLM APIs to automatically extract product information and pricing from supermarket catalogue PDFs:
python pdf_catalog_extractor.py --input coles_catalogue.pdf --output coles_prices.jsonSupported Catalogue Sources:
- Coles weekly specials
- Woolworths catalogues
- Aldi special buys
- IGA local catalogues
- PDF Processing: Extract text and images from catalogue PDFs
- LLM Analysis: Send pages to LLM (GPT-4, Claude, etc.) to identify products and prices
- Structured Output: Generate JSON with product names, prices, brands, and categories
- Import to Database: Load extracted data into LiteDB for tracking
Future ML.NET capabilities for Phase 9-11:
- Auto-Categorization: ML-powered product categorization during import
- Price Prediction: Forecast future price trends based on historical data
- Anomaly Detection: Identify suspicious price changes or fake discounts
- Smart Buying Recommendations: "Buy Now" vs "Wait" based on price forecasting
Items Collection
{
"id": "item_001",
"name": "Milk Full Cream",
"brand": "Dairy Farmers",
"category": "Dairy",
"packageSize": "2L",
"barcode": "9300632123456"
}Places Collection
{
"id": "place_001",
"name": "Coles Chermside",
"chain": "Coles",
"suburb": "Chermside",
"state": "QLD",
"latitude": -27.3853,
"longitude": 153.0356
}PriceRecords Collection
{
"id": "record_001",
"itemId": "item_001",
"placeId": "place_001",
"price": 3.99,
"isOnSale": true,
"originalPrice": 5.99,
"dateRecorded": "2026-02-25T10:30:00Z",
"source": "p2p-network"
}Database location: %AppData%\AdvGenPriceComparer\GroceryPrices.db
π‘ Need More Scale? For large-scale deployments with millions of records, migrate to AdvGenNoSqlServer for enterprise-grade performance and scalability.
AdvGenPriceComparer/
βββ AdvGenPriceComparer.WPF/ # WPF Application (.NET 9, WPF-UI)
β βββ Views/ # XAML Views (Items, Stores, Dashboard)
β βββ ViewModels/ # MVVM ViewModels
β βββ Services/ # WPF-specific services
β βββ Converters/ # XAML value converters
βββ AdvGenPriceComparer.Core/ # Core Models & Interfaces
β βββ Models/ # Item, Place, PriceRecord
β βββ Interfaces/ # Repository interfaces
β βββ Helpers/ # NetworkManager
βββ AdvGenPriceComparer.Data.LiteDB/ # Data Access Layer
β βββ Repositories/ # LiteDB implementations
β βββ Services/ # JsonImportService, ExportService
β βββ Entities/ # LiteDB entity classes
βββ AdvGenPriceComparer.Tests/ # xUnit Test Suite (217+ tests)
β βββ Services/ # JsonImport, ServerConfig tests
β βββ Repositories/ # Repository layer tests
β βββ ViewModels/ # ViewModel tests
β βββ Integration/ # End-to-end tests
βββ TestConsole/ # Console test application
βββ NetworkTest/ # P2P network testing
βββ pdf_catalog_extractor.py # LLM-powered PDF extraction
βββ coles_catalogue_scraper.py # Coles-specific scraper
βββ woolworths_catalogue_parser.py # Woolworths-specific parser
βββ requirements.txt # Python dependencies
βββ servers.json # Server configuration
# Windows x64 (default)
dotnet publish -c Release -r win-x64
# Windows x86
dotnet publish -c Release -r win-x86
# Windows ARM64
dotnet publish -c Release -r win-arm64dotnet test AdvGenPriceComparer.Tests# Install dependencies
pip install -r requirements.txt
# Key Python packages:
# - PyPDF2, pdfplumber: PDF processing
# - openai, anthropic: LLM API clients
# - pytesseract: OCR processingContributions are welcome! This is a community-driven project to combat deceptive pricing practices.
Ways to contribute:
- Add support for more supermarket chains
- Improve AI extraction accuracy
- Set up regional P2P nodes with AdvGenNoSqlServer
- Add price alert features
- Enhance the UI/UX
- Report bugs and request features
- Help build community price-sharing hubs
-
WinUI 3Migrated to WPF with Fluent Design (WPF-UI) - LiteDB integration with repository pattern
- JSON Import/Export (Coles, Woolworths, Drakes formats)
- 217+ xUnit tests with CI/CD pipeline
- P2P networking with server discovery
- LLM-powered catalogue extraction
- Sister project: AdvGenNoSqlServer for large-scale deployments
- Settings Service with JSON persistence
- Global Search functionality
- Price drop notifications and Deal expiration reminders
- Favorite items list
- Shopping list integration
- Reports and analytics (Best deals, weekly digest)
- ML.NET Auto-Categorization (Phase 9)
- ML.NET Price Prediction & Forecasting (Phase 11)
- AdvGenNoSqlServer integration and migration tools
- Mobile app (Android/iOS)
- Barcode scanning
- Browser extension for online shopping
- Public P2P node infrastructure with regional hubs
If you encounter this error, use .NET 8.0 or run via Visual Studio. See CLAUDE.md for detailed troubleshooting.
[Add your license here]
- Built to combat misleading pricing practices in Australian supermarkets
- Inspired by consumer advocacy groups fighting illusory discounts
- Community-driven approach to transparent pricing
Enterprise-scale NoSQL server for large pricing datasets. When your price data grows beyond embedded database limits, AdvGenNoSqlServer provides:
- Scalable storage for millions of price records
- RESTful API for distributed access
- Regional hub deployment for P2P networks
- Advanced analytics and reporting
Repository: AdvGenNoSqlServer
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with π for Australian shoppers
Help us build a transparent grocery pricing network - because you deserve to know the real price!