LICENSE
MANIFEST.in
README.md
pyproject.toml
src/dealwatch/__init__.py
src/dealwatch/__main__.py
src/dealwatch/builder_contract.py
src/dealwatch/cli.py
src/dealwatch/runtime_preflight.py
src/dealwatch/server.py
src/dealwatch.egg-info/PKG-INFO
src/dealwatch.egg-info/SOURCES.txt
src/dealwatch.egg-info/dependency_links.txt
src/dealwatch.egg-info/entry_points.txt
src/dealwatch.egg-info/requires.txt
src/dealwatch.egg-info/top_level.txt
src/dealwatch/api/__init__.py
src/dealwatch/api/app.py
src/dealwatch/api/deps.py
src/dealwatch/api/schemas.py
src/dealwatch/application/__init__.py
src/dealwatch/application/ai_integration.py
src/dealwatch/application/compare_evidence.py
src/dealwatch/application/runtime_attention.py
src/dealwatch/application/runtime_notifications.py
src/dealwatch/application/runtime_watch_groups.py
src/dealwatch/application/services.py
src/dealwatch/application/store_onboarding.py
src/dealwatch/application/urls.py
src/dealwatch/compare/__init__.py
src/dealwatch/compare/matching.py
src/dealwatch/core/__init__.py
src/dealwatch/core/ai_analyzer.py
src/dealwatch/core/artifacts.py
src/dealwatch/core/models.py
src/dealwatch/core/pipeline.py
src/dealwatch/core/rules.py
src/dealwatch/core/validator.py
src/dealwatch/domain/__init__.py
src/dealwatch/domain/enums.py
src/dealwatch/infra/__init__.py
src/dealwatch/infra/browser_debug.py
src/dealwatch/infra/config.py
src/dealwatch/infra/mailer.py
src/dealwatch/infra/migrations.py
src/dealwatch/infra/output_redaction.py
src/dealwatch/infra/playwright_client.py
src/dealwatch/infra/retry_budget.py
src/dealwatch/infra/obs/__init__.py
src/dealwatch/infra/obs/health_check.py
src/dealwatch/jobs/__init__.py
src/dealwatch/jobs/artifact_audit.py
src/dealwatch/jobs/artifact_report.py
src/dealwatch/jobs/failure_replay.py
src/dealwatch/jobs/maintenance.py
src/dealwatch/jobs/recommendation_evaluation.py
src/dealwatch/jobs/run_index.py
src/dealwatch/jobs/run_report.py
src/dealwatch/jobs/schema_audit.py
src/dealwatch/legacy/__init__.py
src/dealwatch/legacy/db_repo.py
src/dealwatch/mcp/__init__.py
src/dealwatch/mcp/__main__.py
src/dealwatch/mcp/server.py
src/dealwatch/persistence/__init__.py
src/dealwatch/persistence/base.py
src/dealwatch/persistence/models.py
src/dealwatch/persistence/session.py
src/dealwatch/persistence/store_bindings.py
src/dealwatch/providers/cashback/__init__.py
src/dealwatch/providers/cashback/base.py
src/dealwatch/providers/cashback/cashback_monitor.py
src/dealwatch/providers/compare/__init__.py
src/dealwatch/providers/compare/matcher.py
src/dealwatch/providers/email/__init__.py
src/dealwatch/providers/email/base.py
src/dealwatch/providers/email/postmark.py
src/dealwatch/providers/email/smtp.py
src/dealwatch/stores/__init__.py
src/dealwatch/stores/base_adapter.py
src/dealwatch/stores/manifest.py
src/dealwatch/stores/ranch99/__init__.py
src/dealwatch/stores/ranch99/adapter.py
src/dealwatch/stores/ranch99/discovery.py
src/dealwatch/stores/ranch99/parser.py
src/dealwatch/stores/safeway/__init__.py
src/dealwatch/stores/safeway/adapter.py
src/dealwatch/stores/safeway/discovery.py
src/dealwatch/stores/safeway/parser.py
src/dealwatch/stores/target/__init__.py
src/dealwatch/stores/target/adapter.py
src/dealwatch/stores/target/discovery.py
src/dealwatch/stores/target/parser.py
src/dealwatch/stores/walmart/__init__.py
src/dealwatch/stores/walmart/adapter.py
src/dealwatch/stores/walmart/discovery.py
src/dealwatch/stores/walmart/parser.py
src/dealwatch/stores/weee/__init__.py
src/dealwatch/stores/weee/adapter.py
src/dealwatch/stores/weee/discovery.py
src/dealwatch/stores/weee/parser.py
src/dealwatch/worker/__init__.py
src/dealwatch/worker/main.py