Barcode Betty 8718f33083
CI / lint (push) Successful in 5s
CI / test (push) Successful in 9s
CI / build-and-push (push) Successful in 1m26s
CI / grype (push) Failing after 25s
CI / deploy-uat (push) Has been skipped
CI / deploy-dev (push) Failing after 43s
CI / lint (pull_request) Successful in 4s
CI / test (pull_request) Successful in 9s
CI / build-and-push (pull_request) Has been skipped
CI / grype (pull_request) Has been skipped
CI / deploy-uat (pull_request) Has been skipped
CI / deploy-dev (pull_request) Has been skipped
Merge pull request 'fix: move python-multipart to runtime deps (CAR-1422)' (#18) from betty/car-1422-multipart-runtime-dep into dev
fix: move python-multipart to runtime deps (CAR-1422)

Moves python-multipart from dev extras to main dependencies so the
production wheel install includes it. Fixes POST /inbound/email 500.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-22 22:02:21 +00:00

ReceiptWitness

Purchase data ingestion service for CartSnitch. Authenticates with grocery retailer web portals (Meijer, Kroger, Target) via Playwright, scrapes purchase history, and writes structured records to the shared PostgreSQL database.

Quick Start

# Install dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/ -v

# Local dev with Docker Compose
docker-compose up

Architecture

  • Scrapers: Playwright-based browser automation for each retailer
  • Parsers: Converts raw receipt data to structured Purchase / PurchaseItem records
  • Database: SQLAlchemy 2.0 async; models inlined under src/receiptwitness/shared/
  • Events: Publishes cartsnitch.receipts.ingested to Redis after ingestion

Branches

  • dev — development, auto-deploys to dev cluster
  • uat — user acceptance testing
  • main — production, auto-deploys to prod cluster
S
Description
CartSnitch ReceiptWitness — purchase data ingestion and pipeline
Readme 1.2 MiB
Languages
Python 99.3%
Dockerfile 0.5%
Mako 0.2%