type: custom

customType: model-snapshot

provider: zai

modelApi: openai-completions


type: message

role: user

type: text

text:
[cron:6b53d58f-d26f-4c35-9c16-5f083480d817 CannaDeals Deal Scraper (Hourly)] Run the CannaDeals deal scraper.

## Command
```bash
ssh carl "cd ~/cannadealsfl && node unified-scraper-orchestrator.mjs"
```

## What it does
- Scrapes all dispensary deals
- Inserts new deals into database
- Logs results to ~/cannadealsfl/logs/

## Report
Brief summary of deals found/inserted.

Current time: {{current_time}}
Current time: Friday, March 6th, 2026 — 11:05 PM (UTC)

Return your summary as plain text; it will be delivered automatically. If the task explicitly calls for messaging a specific external recipient, note who/where it should go instead of sending it yourself.


role: assistant

type: thinking

thinking:
The user is asking me to run the CannaDeals deal scraper as a cron job. Let me execute the command provided.

According to the protocol:
1. I should report BEFORE starting work
2. Execute the scraper
3. Report AFTER completion with results

The command is:
```bash
ssh carl "cd ~/cannadealsfl && node unified-scraper-orchestrator.mjs"
```

Let me run this and see what happens.

text: Running the hourly deal scraper now.

exec

type: toolCall

api: openai-completions

stopReason: toolUse


role: toolResult

toolName: exec

text: Command still running (session nimble-prairie, pid 3739409). Use process (list/poll/log/write/kill/clear/remove) for follow-up.

status: running

sessionId: nimble-prairie

tail:
_headers.started request=<Request [b'GET']>
2026-03-06 23:05:52,826 - DEBUG - send_request_headers.complete
2026-03-06 23:05:52,826 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-06 23:05:52,826 - DEBUG - send_request_body.complete
2026-03-06 23:05:52,826 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-06 23:05:52,928 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Fri, 06 Mar 2026 23:05:52 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d8501f92bdaa646-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?moderation_status=eq.archived&select=id%2Ctitle%2Cupdated_at&updated_at=lt.2026-02-27T23%3A05%3A52.825130%2B00%3A00'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019cc566-77c2-70e7-81d6-480ba2db7d42'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'68'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-06 23:05:52,928 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?select=id%2Ctitle%2Cupdated_at&moderation_status=eq.archived&updated_at=lt.2026-02-27T23%3A05%3A52.825130%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-06 23:05:52,929 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-06 23:05:52,929 - DEBUG - receive_response_body.complete
2026-03-06 23:05:52,929 - DEBUG - response_closed.started
2026-03-06 23:05:52,929 - DEBUG - response_closed.complete
2026-03-06 23:05:53,328 - INFO - 🌐 Navigating to https://flcannabisdeals.org/todays-florida-dispensary-deals/


thinking: The scraper is running. Let me poll for the results with a timeout to wait for completion.

process

action: poll


toolName: process

text:
[dotenv@17.2.3] injecting env (13) from .env.local -- tip: ⚙  override existing env vars with { override: true }
✅ Loaded scraper configuration from /home/crogers2287/cannadealsfl/.scraper-config.json
🚀 Starting Unified Scraper Orchestrator
🐍 Running Python engine: /home/crogers2287/cannadealsfl/venv/bin/python3 /home/crogers2287/cannadealsfl/unified-scraper-engine.py --verbose
❌ Enhanced text extractor not available
❌ Fallback extractor not available
2026-03-06 23:05:51,499 - DEBUG - Using selector: EpollSelector
2026-03-06 23:05:51,500 - INFO - 🚀 Starting Unified Scraper Engine
2026-03-06 23:05:51,611 - INFO - ✅ Supabase client initialized (HTTP/1.1 mode)
2026-03-06 23:05:51,613 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-06 23:05:51,621 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f0e8da406d0>
2026-03-06 23:05:51,621 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f0e8ddb2040> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-06 23:05:51,629 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f0e8da406a0>
2026-03-06 23:05:51,629 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-06 23:05:51,629 - DEBUG - send_request_headers.complete
2026-03-06 23:05:51,629 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-06 23:05:51,629 - DEBUG - send_request_body.complete
2026-03-06 23:05:51,629 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-06 23:05:51,721 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Fri, 06 Mar 2026 23:05:51 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-9/*'), (b'CF-Ray', b'9d8501f1bdc8a646-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/product_categories?is_active=eq.True&select=id%2Cname%2Cslug'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019cc566-7316-7fc9-9343-f6fdbb58fa86'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'42'), (b'Set-Cookie', b'__cf_bm=9KexqS9r57gRUabTvBCP3q40Tc1rbRVDzZ8rwKhsBuY-1772838351-1.0.1.1-UsVSeObWXSUcHMlbaEQ4Sv90AQnz1OSOZRnJtyTt_RsmuCM38M9loe0RjsIbrQIQcXJ5abXRq8593v..LXkYPnJ6SfrdRxiOtSoKH0MLedo; path=/; expires=Fri, 06-Mar-26 23:35:51 GMT; domain=.supabase.co; HttpOnly; Secure; SameSite=None'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-06 23:05:51,722 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/product_categories?select=id%2Cname%2Cslug&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-06 23:05:51,722 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-06 23:05:51,722 - DEBUG - receive_response_body.complete
2026-03-06 23:05:51,722 - DEBUG - response_closed.started
2026-03-06 23:05:51,722 - DEBUG - response_closed.complete
2026-03-06 23:05:51,723 - INFO - ✅ Loaded 10 product categories for mapping
2026-03-06 23:05:51,723 - INFO - ✅ Gemini AI initialized with model: gemini-2.5-flash-lite
2026-03-06 23:05:52,578 - INFO - ✅ Gemini AI test successful
2026-03-06 23:05:52,579 - INFO - 🗄 Archiving old deals...
2026-03-06 23:05:52,580 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-06 23:05:52,580 - DEBUG - send_request_headers.complete
2026-03-06 23:05:52,580 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-06 23:05:52,580 - DEBUG - send_request_body.complete
2026-03-06 23:05:52,580 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-06 23:05:52,664 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Fri, 06 Mar 2026 23:05:52 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d8501f7a909a646-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?created_at=lt.2026-03-04T23%3A05%3A52.579177%2B00%3A00&is_active=eq.True&select=id%2Ctitle%2Ccreated_at'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019cc566-76cd-7a11-ae54-3b1c34aed8bb'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'43'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-06 23:05:52,665 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?select=id%2Ctitle%2Ccreated_at&is_active=eq.True&created_at=lt.2026-03-04T23%3A05%3A52.579177%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-06 23:05:52,665 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-06 23:05:52,665 - DEBUG - receive_response_body.complete
2026-03-06 23:05:52,665 - DEBUG - response_closed.started
2026-03-06 23:05:52,665 - DEBUG - response_closed.complete
2026-03-06 23:05:52,666 - DEBUG - send_request_headers.started request=<Request [b'PATCH']>
2026-03-06 23:05:52,667 - DEBUG - send_request_headers.complete
2026-03-06 23:05:52,667 - DEBUG - send_request_body.started request=<Request [b'PATCH']>
2026-03-06 23:05:52,667 - DEBUG - send_request_body.complete
2026-03-06 23:05:52,667 - DEBUG - receive_response_headers.started request=<Request [b'PATCH']>
2026-03-06 23:05:52,822 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Fri, 06 Mar 2026 23:05:52 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d8501f82a06a646-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019cc566-7725-75a3-93cb-c02f784b1d04'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'112'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-06 23:05:52,822 - INFO - HTTP Request: PATCH https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?is_active=eq.True&created_at=lt.2026-03-04T23%3A05%3A52.579177%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-06 23:05:52,822 - DEBUG - receive_response_body.started request=<Request [b'PATCH']>
2026-03-06 23:05:52,823 - DEBUG - receive_response_body.complete
2026-03-06 23:05:52,823 - DEBUG - response_closed.started
2026-03-06 23:05:52,823 - DEBUG - response_closed.complete
2026-03-06 23:05:52,825 - INFO - 📦 Archived 1 old deals (older than 48 hours)
2026-03-06 23:05:52,825 - INFO - 🗑 Deleting old archived deals...
2026-03-06 23:05:52,825 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-06 23:05:52,826 - DEBUG - send_request_headers.complete
2026-03-06 23:05:52,826 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-06 23:05:52,826 - DEBUG - send_request_body.complete
2026-03-06 23:05:52,826 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-06 23:05:52,928 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Fri, 06 Mar 2026 23:05:52 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d8501f92bdaa646-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?moderation_status=eq.archived&select=id%2Ctitle%2Cupdated_at&updated_at=lt.2026-02-27T23%3A05%3A52.825130%2B00%3A00'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019cc566-77c2-70e7-81d6-480ba2db7d42'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'68'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-06 23:05:52,928 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?select=id%2Ctitle%2Cupdated_at&moderation_status=eq.archived&updated_at=lt.2026-02-27T23%3A05%3A52.825130%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-06 23:05:52,929 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-06 23:05:52,929 - DEBUG - receive_response_body.complete
2026-03-06 23:05:52,929 - DEBUG - response_closed.started
2026-03-06 23:05:52,929 - DEBUG - response_closed.complete
2026-03-06 23:05:53,328 - INFO - 🌐 Navigating to https://flcannabisdeals.org/todays-florida-dispensary-deals/
2026-03-06 23:06:07,884 - INFO - 📸 Found 30 potential deal images
2026-03-06 23:06:07,885 - INFO - 🔄 Processing batch 1/3 (10 images)
2026-03-06 23:06:07,885 - INFO - 🔄 Processing image: image_3_716938862
2026-03-06 23:06:07,886 - INFO - 🔄 Processing image: image_4_283026642
2026-03-06 23:06:07,886 - INFO - 🔄 Processing image: image_5_725973623
2026-03-06 23:06:07,886 - INFO - 🔄 Processing image: image_6_868795887
2026-03-06 23:06:07,886 - INFO - 🔄 Processing image: image_7_1379210405
2026-03-06 23:06:07,886 - INFO - 🔄 Processing image: image_8_975854079
2026-03-06 23:06:07,887 - INFO - 🔄 Processing image: image_9_234266716
2026-03-06 23:06:07,887 - INFO - 🔄 Processing image: image_10_237960800
2026-03-06 23:06:07,887 - INFO - 🔄 Processing image: image_11_955109348
2026-03-06 23:06:07,887 - INFO - 🔄 Processing image: image_12_233343195
2026-03-06 23:06:07,962 - INFO - ✅ Downloaded: image_11_955109348.jpg
2026-03-06 23:06:07,962 - INFO - ⏭ Skipping image_11_955109348: Already processed
2026-03-06 23:06:07,962 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_11_955109348.jpg
2026-03-06 23:06:07,966 - INFO - ✅ Downloaded: image_3_716938862.webp
2026-03-06 23:06:07,967 - INFO - ⏭ Skipping image_3_716938862: Already processed
2026-03-06 23:06:07,967 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_3_716938862.webp
2026-03-06 23:06:07,968 - INFO - ✅ Downloaded: image_4_283026642.webp
2026-03-06 23:06:07,968 - INFO - ⏭ Skipping image_4_283026642: Already processed
2026-03-06 23:06:07,968 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_4_283026642.webp
2026-03-06 23:06:07,975 - INFO - ✅ Downloaded: image_7_1379210405.jpg
2026-03-06 23:06:07,976 - INFO - ⏭ Skipping image_7_1379210405: Already processed
2026-03-06 23:06:07,977 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_7_1379210405.jpg
2026-03-06 23:06:07,978 - INFO - ✅ Downloaded: image_5_725973623.webp
2026-03-06 23:06:07,978 - INFO - ⏭ Skipping image_5_725973623: Already processed
2026-03-06 23:06:07,979 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_5_725973623.webp
2026-03-06 23:06:07,982 - INFO - ✅ Downloaded: image_10_237960800.jpg
2026-03-06 23:06:07,983 - INFO - ⏭ Skipping image_10_237960800: Already processed
2026-03-06 23:06:07,983 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_10_237960800.jpg
2026-03-06 23:06:07,984 - INFO - ✅ Downloaded: image_9_234266716.jpg
2026-03-06 23:06:07,984 - INFO - ⏭ Skipping image_9_234266716: Already processed
2026-03-06 23:06:07,985 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_9_234266716.jpg
2026-03-06 23:06:07,987 - INFO - ✅ Downloaded: image_6_868795887.jpg
2026-03-06 23:06:07,988 - INFO - ⏭ Skipping image_6_868795887: Already processed
2026-03-06 23:06:07,989 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_6_868795887.jpg
2026-03-06 23:06:07,990 - INFO - ✅ Downloaded: image_8_975854079.jpg
2026-03-06 23:06:07,990 - INFO - ⏭ Skipping image_8_975854079: Already processed
2026-03-06 23:06:07,990 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_8_975854079.jpg
2026-03-06 23:06:07,993 - INFO - ✅ Downloaded: image_12_233343195.jpg
2026-03-06 23:06:07,993 - INFO - ⏭ Skipping image_12_233343195: Already processed
2026-03-06 23:06:07,994 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_12_233343195.jpg
2026-03-06 23:06:07,994 - INFO - ✅ Batch 1 completed: 0 processed, 0 deals inserted
2026-03-06 23:06:07,994 - INFO - 🔄 Processing batch 2/3 (10 images)
2026-03-06 23:06:07,994 - INFO - 🔄 Processing image: image_13_230572632
2026-03-06 23:06:07,995 - INFO - 🔄 Processing image: image_14_725973623
2026-03-06 23:06:07,995 - INFO - 🔄 Processing image: image_15_236113758
2026-03-06 23:06:07,996 - INFO - 🔄 Processing image: image_16_235190237
2026-03-06 23:06:07,996 - INFO - 🔄 Processing image: image_17_1725888082
2026-03-06 23:06:07,996 - INFO - 🔄 Processing image: image_18_258278262
2026-03-06 23:06:07,996 - INFO - 🔄 Processing image: image_19_367122568
2026-03-06 23:06:07,997 - INFO - 🔄 Processing image: image_20_2066027360
2026-03-06 23:06:07,997 - INFO - 🔄 Processing image: image_21_781112938
2026-03-06 23:06:07,997 - INFO - 🔄 Processing image: image_22_1058600028
2026-03-06 23:06:08,027 - INFO - ✅ Downloaded: image_21_781112938.jpg
2026-03-06 23:06:08,028 - INFO - ⏭ Skipping image_21_781112938: Already processed
2026-03-06 23:06:08,028 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_21_781112938.jpg
2026-03-06 23:06:08,036 - INFO - ✅ Downloaded: image_14_725973623.webp
2026-03-06 23:06:08,036 - INFO - ⏭ Skipping image_14_725973623: Already processed
2026-03-06 23:06:08,037 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_14_725973623.webp
2026-03-06 23:06:08,037 - INFO - ✅ Downloaded: image_20_2066027360.jpg
2026-03-06 23:06:08,038 - INFO - ⏭ Skipping image_20_2066027360: Already processed
2026-03-06 23:06:08,038 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_20_2066027360.jpg
2026-03-06 23:06:08,045 - INFO - ✅ Downloaded: image_22_1058600028.jpg
2026-03-06 23:06:08,045 - INFO - ⏭ Skipping image_22_1058600028: Already processed
2026-03-06 23:06:08,046 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_22_1058600028.jpg
2026-03-06 23:06:08,049 - INFO - ✅ Downloaded: image_19_367122568.jpg
2026-03-06 23:06:08,049 - INFO - ⏭ Skipping image_19_367122568: Already processed
2026-03-06 23:06:08,049 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_19_367122568.jpg
2026-03-06 23:06:08,050 - INFO - ✅ Downloaded: image_18_258278262.jpg
2026-03-06 23:06:08,050 - INFO - ⏭ Skipping image_18_258278262: Already processed
2026-03-06 23:06:08,050 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_18_258278262.jpg
2026-03-06 23:06:08,052 - INFO - ✅ Downloaded: image_17_1725888082.jpg
2026-03-06 23:06:08,052 - INFO - ⏭ Skipping image_17_1725888082: Already processed
2026-03-06 23:06:08,052 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_17_1725888082.jpg
2026-03-06 23:06:08,052 - INFO - ✅ Downloaded: image_15_236113758.jpg
2026-03-06 23:06:08,054 - INFO - ⏭ Skipping image_15_236113758: Already processed
2026-03-06 23:06:08,055 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_15_236113758.jpg
2026-03-06 23:06:08,056 - INFO - ✅ Downloaded: image_16_235190237.jpg
2026-03-06 23:06:08,056 - INFO - ⏭ Skipping image_16_235190237: Already processed
2026-03-06 23:06:08,056 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_16_235190237.jpg
2026-03-06 23:06:08,057 - INFO - ✅ Downloaded: image_13_230572632.jpg
2026-03-06 23:06:08,057 - INFO - ⏭ Skipping image_13_230572632: Already processed
2026-03-06 23:06:08,057 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_13_230572632.jpg
2026-03-06 23:06:08,057 - INFO - ✅ Batch 2 completed: 0 processed, 0 deals inserted
2026-03-06 23:06:08,057 - INFO - 🔄 Processing batch 3/3 (10 images)
2026-03-06 23:06:08,057 - INFO - 🔄 Processing image: image_23_1358497160
2026-03-06 23:06:08,058 - INFO - 🔄 Processing image: image_24_2146199388
2026-03-06 23:06:08,058 - INFO - 🔄 Processing image: image_25_1329197011
2026-03-06 23:06:08,058 - INFO - 🔄 Processing image: image_26_810399351
2026-03-06 23:06:08,059 - INFO - 🔄 Processing image: image_27_852658791
2026-03-06 23:06:08,059 - INFO - 🔄 Processing image: image_28_300195207
2026-03-06 23:06:08,059 - INFO - 🔄 Processing image: image_29_1278795828
2026-03-06 23:06:08,059 - INFO - 🔄 Processing image: image_31_1539164129
2026-03-06 23:06:08,060 - INFO - 🔄 Processing image: image_32_67182334
2026-03-06 23:06:08,060 - INFO - 🔄 Processing image: image_33_2024940956
2026-03-06 23:06:08,089 - INFO - ✅ Downloaded: image_28_300195207.jpg
2026-03-06 23:06:08,089 - INFO - ⏭ Skipping image_28_300195207: Already processed
2026-03-06 23:06:08,089 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_28_300195207.jpg
2026-03-06 23:06:08,092 - INFO - ✅ Downloaded: image_23_1358497160.jpg
2026-03-06 23:06:08,092 - INFO - ⏭ Skipping image_23_1358497160: Already processed
2026-03-06 23:06:08,092 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_23_1358497160.jpg
2026-03-06 23:06:08,095 - INFO - ✅ Downloaded: image_33_2024940956.webp
2026-03-06 23:06:08,095 - INFO - ⏭ Skipping image_33_2024940956: Already processed
2026-03-06 23:06:08,095 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_33_2024940956.webp
2026-03-06 23:06:08,097 - INFO - ✅ Downloaded: image_31_1539164129.webp
2026-03-06 23:06:08,097 - INFO - ⏭ Skipping image_31_1539164129: Already processed
2026-03-06 23:06:08,097 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_31_1539164129.webp
2026-03-06 23:06:08,098 - INFO - ✅ Downloaded: image_29_1278795828.jpg
2026-03-06 23:06:08,098 - INFO - ⏭ Skipping image_29_1278795828: Already processed
2026-03-06 23:06:08,099 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_29_1278795828.jpg
2026-03-06 23:06:08,100 - INFO - ✅ Downloaded: image_26_810399351.jpg
2026-03-06 23:06:08,100 - INFO - ⏭ Skipping image_26_810399351: Already processed
2026-03-06 23:06:08,101 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_26_810399351.jpg
2026-03-06 23:06:08,102 - INFO - ✅ Downloaded: image_32_67182334.webp
2026-03-06 23:06:08,102 - INFO - ⏭ Skipping image_32_67182334: Already processed
2026-03-06 23:06:08,102 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_32_67182334.webp
2026-03-06 23:06:08,104 - INFO - ✅ Downloaded: image_27_852658791.jpg
2026-03-06 23:06:08,105 - INFO - ⏭ Skipping image_27_852658791: Already processed
2026-03-06 23:06:08,105 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_27_852658791.jpg
2026-03-06 23:06:08,105 - INFO - ✅ Downloaded: image_24_2146199388.jpg
2026-03-06 23:06:08,105 - INFO - ⏭ Skipping image_24_2146199388: Already processed
2026-03-06 23:06:08,106 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_24_2146199388.jpg
2026-03-06 23:06:08,109 - INFO - ✅ Downloaded: image_25_1329197011.jpg
2026-03-06 23:06:08,109 - INFO - ⏭ Skipping image_25_1329197011: Already processed
2026-03-06 23:06:08,109 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_25_1329197011.jpg
2026-03-06 23:06:08,110 - INFO - ✅ Batch 3 completed: 0 processed, 0 deals inserted
2026-03-06 23:06:08,220 - INFO - ✅ Unified Scraper Engine completed successfully
==================================================
📊 SCRAPER SUMMARY
==================================================
Images Found: 30
Images Processed: 0
Deals Extracted: 0
Deals Inserted: 0
Duplicates Skipped: 30
Blacklisted: 0
Errors: 0
Success Rate: 0.0%
Duration: 16.7s
2026-03-06 23:06:08,224 - DEBUG - close.started
2026-03-06 23:06:08,224 - DEBUG - close.complete
2026-03-06 23:06:08,225 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-06 23:06:08,229 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f0e8453f100>
2026-03-06 23:06:08,230 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f0e8ddb2040> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-06 23:06:08,238 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f0e8453f850>
2026-03-06 23:06:08,238 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-06 23:06:08,239 - DEBUG - send_request_headers.complete
2026-03-06 23:06:08,239 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-06 23:06:08,239 - DEBUG - send_request_body.complete
2026-03-06 23:06:08,239 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-06 23:06:08,321 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Fri, 06 Mar 2026 23:06:08 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-50/51'), (b'CF-Ray', b'9d85025989464cc3-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?is_active=eq.True&moderation_status=eq.approved&select=id'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'count=exact'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019cc566-b3fa-7348-983e-830273254331'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'37'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-06 23:06:08,322 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?select=id&is_active=eq.True&moderation_status=eq.approved "HTTP/1.1 200 OK"
2026-03-06 23:06:08,322 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-06 23:06:08,322 - DEBUG - receive_response_body.complete
2026-03-06 23:06:08,323 - DEBUG - response_closed.started
2026-03-06 23:06:08,323 - DEBUG - response_closed.complete
2026-03-06 23:06:08,323 - INFO - ✅ Deal count OK: 51 active deals
==================================================
🐍 Python process exited with code: 0
✅ Unified Scraper Orchestrator completed successfully

==================================================
📊 SCRAPER SUMMARY
==================================================
Images Found: 30
Images Processed: 0
Deals Extracted: 0
Deals Inserted: 0
Duplicates Skipped: 30
Blacklisted: 0
Errors: 0
==================================================
Warning: Permanently added 'carl' (ED25519) to the list of known hosts.
/home/crogers2287/cannadealsfl/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:266: FutureWarning: You are using a Python version (3.10.12) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date.
  warnings.warn(message, FutureWarning)

Process exited with code 0.

ssh carl

status: completed

aggregated:
Warning: Permanently added 'carl' (ED25519) to the list of known hosts.
[dotenv@17.2.3] injecting env (13) from .env.local -- tip: ⚙  override existing env vars with { override: true }
✅ Loaded scraper configuration from /home/crogers2287/cannadealsfl/.scraper-config.json
🚀 Starting Unified Scraper Orchestrator
🐍 Running Python engine: /home/crogers2287/cannadealsfl/venv/bin/python3 /home/crogers2287/cannadealsfl/unified-scraper-engine.py --verbose
/home/crogers2287/cannadealsfl/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:266: FutureWarning: You are using a Python version (3.10.12) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date.
  warnings.warn(message, FutureWarning)
❌ Enhanced text extractor not available
❌ Fallback extractor not available
2026-03-06 23:05:51,499 - DEBUG - Using selector: EpollSelector
2026-03-06 23:05:51,500 - INFO - 🚀 Starting Unified Scraper Engine
2026-03-06 23:05:51,611 - INFO - ✅ Supabase client initialized (HTTP/1.1 mode)
2026-03-06 23:05:51,613 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-06 23:05:51,621 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f0e8da406d0>
2026-03-06 23:05:51,621 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f0e8ddb2040> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-06 23:05:51,629 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f0e8da406a0>
2026-03-06 23:05:51,629 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-06 23:05:51,629 - DEBUG - send_request_headers.complete
2026-03-06 23:05:51,629 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-06 23:05:51,629 - DEBUG - send_request_body.complete
2026-03-06 23:05:51,629 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-06 23:05:51,721 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Fri, 06 Mar 2026 23:05:51 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-9/*'), (b'CF-Ray', b'9d8501f1bdc8a646-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/product_categories?is_active=eq.True&select=id%2Cname%2Cslug'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019cc566-7316-7fc9-9343-f6fdbb58fa86'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'42'), (b'Set-Cookie', b'__cf_bm=9KexqS9r57gRUabTvBCP3q40Tc1rbRVDzZ8rwKhsBuY-1772838351-1.0.1.1-UsVSeObWXSUcHMlbaEQ4Sv90AQnz1OSOZRnJtyTt_RsmuCM38M9loe0RjsIbrQIQcXJ5abXRq8593v..LXkYPnJ6SfrdRxiOtSoKH0MLedo; path=/; expires=Fri, 06-Mar-26 23:35:51 GMT; domain=.supabase.co; HttpOnly; Secure; SameSite=None'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-06 23:05:51,722 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/product_categories?select=id%2Cname%2Cslug&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-06 23:05:51,722 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-06 23:05:51,722 - DEBUG - receive_response_body.complete
2026-03-06 23:05:51,722 - DEBUG - response_closed.started
2026-03-06 23:05:51,722 - DEBUG - response_closed.complete
2026-03-06 23:05:51,723 - INFO - ✅ Loaded 10 product categories for mapping
2026-03-06 23:05:51,723 - INFO - ✅ Gemini AI initialized with model: gemini-2.5-flash-lite
2026-03-06 23:05:52,578 - INFO - ✅ Gemini AI test successful
2026-03-06 23:05:52,579 - INFO - 🗄 Archiving old deals...
2026-03-06 23:05:52,580 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-06 23:05:52,580 - DEBUG - send_request_headers.complete
2026-03-06 23:05:52,580 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-06 23:05:52,580 - DEBUG - send_request_body.complete
2026-03-06 23:05:52,580 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-06 23:05:52,664 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Fri, 06 Mar 2026 23:05:52 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d8501f7a909a646-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?created_at=lt.2026-03-04T23%3A05%3A52.579177%2B00%3A00&is_active=eq.True&select=id%2Ctitle%2Ccreated_at'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019cc566-76cd-7a11-ae54-3b1c34aed8bb'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'43'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-06 23:05:52,665 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?select=id%2Ctitle%2Ccreated_at&is_active=eq.True&created_at=lt.2026-03-04T23%3A05%3A52.579177%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-06 23:05:52,665 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-06 23:05:52,665 - DEBUG - receive_response_body.complete
2026-03-06 23:05:52,665 - DEBUG - response_closed.started
2026-03-06 23:05:52,665 - DEBUG - response_closed.complete
2026-03-06 23:05:52,666 - DEBUG - send_request_headers.started request=<Request [b'PATCH']>
2026-03-06 23:05:52,667 - DEBUG - send_request_headers.complete
2026-03-06 23:05:52,667 - DEBUG - send_request_body.started request=<Request [b'PATCH']>
2026-03-06 23:05:52,667 - DEBUG - send_request_body.complete
2026-03-06 23:05:52,667 - DEBUG - receive_response_headers.started request=<Request [b'PATCH']>
2026-03-06 23:05:52,822 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Fri, 06 Mar 2026 23:05:52 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d8501f82a06a646-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'return=representation'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019cc566-7725-75a3-93cb-c02f784b1d04'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'112'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-06 23:05:52,822 - INFO - HTTP Request: PATCH https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?is_active=eq.True&created_at=lt.2026-03-04T23%3A05%3A52.579177%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-06 23:05:52,822 - DEBUG - receive_response_body.started request=<Request [b'PATCH']>
2026-03-06 23:05:52,823 - DEBUG - receive_response_body.complete
2026-03-06 23:05:52,823 - DEBUG - response_closed.started
2026-03-06 23:05:52,823 - DEBUG - response_closed.complete
2026-03-06 23:05:52,825 - INFO - 📦 Archived 1 old deals (older than 48 hours)
2026-03-06 23:05:52,825 - INFO - 🗑 Deleting old archived deals...
2026-03-06 23:05:52,825 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-06 23:05:52,826 - DEBUG - send_request_headers.complete
2026-03-06 23:05:52,826 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-06 23:05:52,826 - DEBUG - send_request_body.complete
2026-03-06 23:05:52,826 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-06 23:05:52,928 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Fri, 06 Mar 2026 23:05:52 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'*/*'), (b'CF-Ray', b'9d8501f92bdaa646-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?moderation_status=eq.archived&select=id%2Ctitle%2Cupdated_at&updated_at=lt.2026-02-27T23%3A05%3A52.825130%2B00%3A00'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019cc566-77c2-70e7-81d6-480ba2db7d42'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'68'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-06 23:05:52,928 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?select=id%2Ctitle%2Cupdated_at&moderation_status=eq.archived&updated_at=lt.2026-02-27T23%3A05%3A52.825130%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-06 23:05:52,929 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-06 23:05:52,929 - DEBUG - receive_response_body.complete
2026-03-06 23:05:52,929 - DEBUG - response_closed.started
2026-03-06 23:05:52,929 - DEBUG - response_closed.complete
2026-03-06 23:05:53,328 - INFO - 🌐 Navigating to https://flcannabisdeals.org/todays-florida-dispensary-deals/
2026-03-06 23:06:07,884 - INFO - 📸 Found 30 potential deal images
2026-03-06 23:06:07,885 - INFO - 🔄 Processing batch 1/3 (10 images)
2026-03-06 23:06:07,885 - INFO - 🔄 Processing image: image_3_716938862
2026-03-06 23:06:07,886 - INFO - 🔄 Processing image: image_4_283026642
2026-03-06 23:06:07,886 - INFO - 🔄 Processing image: image_5_725973623
2026-03-06 23:06:07,886 - INFO - 🔄 Processing image: image_6_868795887
2026-03-06 23:06:07,886 - INFO - 🔄 Processing image: image_7_1379210405
2026-03-06 23:06:07,886 - INFO - 🔄 Processing image: image_8_975854079
2026-03-06 23:06:07,887 - INFO - 🔄 Processing image: image_9_234266716
2026-03-06 23:06:07,887 - INFO - 🔄 Processing image: image_10_237960800
2026-03-06 23:06:07,887 - INFO - 🔄 Processing image: image_11_955109348
2026-03-06 23:06:07,887 - INFO - 🔄 Processing image: image_12_233343195
2026-03-06 23:06:07,962 - INFO - ✅ Downloaded: image_11_955109348.jpg
2026-03-06 23:06:07,962 - INFO - ⏭ Skipping image_11_955109348: Already processed
2026-03-06 23:06:07,962 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_11_955109348.jpg
2026-03-06 23:06:07,966 - INFO - ✅ Downloaded: image_3_716938862.webp
2026-03-06 23:06:07,967 - INFO - ⏭ Skipping image_3_716938862: Already processed
2026-03-06 23:06:07,967 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_3_716938862.webp
2026-03-06 23:06:07,968 - INFO - ✅ Downloaded: image_4_283026642.webp
2026-03-06 23:06:07,968 - INFO - ⏭ Skipping image_4_283026642: Already processed
2026-03-06 23:06:07,968 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_4_283026642.webp
2026-03-06 23:06:07,975 - INFO - ✅ Downloaded: image_7_1379210405.jpg
2026-03-06 23:06:07,976 - INFO - ⏭ Skipping image_7_1379210405: Already processed
2026-03-06 23:06:07,977 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_7_1379210405.jpg
2026-03-06 23:06:07,978 - INFO - ✅ Downloaded: image_5_725973623.webp
2026-03-06 23:06:07,978 - INFO - ⏭ Skipping image_5_725973623: Already processed
2026-03-06 23:06:07,979 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_5_725973623.webp
2026-03-06 23:06:07,982 - INFO - ✅ Downloaded: image_10_237960800.jpg
2026-03-06 23:06:07,983 - INFO - ⏭ Skipping image_10_237960800: Already processed
2026-03-06 23:06:07,983 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_10_237960800.jpg
2026-03-06 23:06:07,984 - INFO - ✅ Downloaded: image_9_234266716.jpg
2026-03-06 23:06:07,984 - INFO - ⏭ Skipping image_9_234266716: Already processed
2026-03-06 23:06:07,985 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_9_234266716.jpg
2026-03-06 23:06:07,987 - INFO - ✅ Downloaded: image_6_868795887.jpg
2026-03-06 23:06:07,988 - INFO - ⏭ Skipping image_6_868795887: Already processed
2026-03-06 23:06:07,989 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_6_868795887.jpg
2026-03-06 23:06:07,990 - INFO - ✅ Downloaded: image_8_975854079.jpg
2026-03-06 23:06:07,990 - INFO - ⏭ Skipping image_8_975854079: Already processed
2026-03-06 23:06:07,990 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_8_975854079.jpg
2026-03-06 23:06:07,993 - INFO - ✅ Downloaded: image_12_233343195.jpg
2026-03-06 23:06:07,993 - INFO - ⏭ Skipping image_12_233343195: Already processed
2026-03-06 23:06:07,994 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_12_233343195.jpg
2026-03-06 23:06:07,994 - INFO - ✅ Batch 1 completed: 0 processed, 0 deals inserted
2026-03-06 23:06:07,994 - INFO - 🔄 Processing batch 2/3 (10 images)
2026-03-06 23:06:07,994 - INFO - 🔄 Processing image: image_13_230572632
2026-03-06 23:06:07,995 - INFO - 🔄 Processing image: image_14_725973623
2026-03-06 23:06:07,995 - INFO - 🔄 Processing image: image_15_236113758
2026-03-06 23:06:07,996 - INFO - 🔄 Processing image: image_16_235190237
2026-03-06 23:06:07,996 - INFO - 🔄 Processing image: image_17_1725888082
2026-03-06 23:06:07,996 - INFO - 🔄 Processing image: image_18_258278262
2026-03-06 23:06:07,996 - INFO - 🔄 Processing image: image_19_367122568
2026-03-06 23:06:07,997 - INFO - 🔄 Processing image: image_20_2066027360
2026-03-06 23:06:07,997 - INFO - 🔄 Processing image: image_21_781112938
2026-03-06 23:06:07,997 - INFO - 🔄 Processing image: image_22_1058600028
2026-03-06 23:06:08,027 - INFO - ✅ Downloaded: image_21_781112938.jpg
2026-03-06 23:06:08,028 - INFO - ⏭ Skipping image_21_781112938: Already processed
2026-03-06 23:06:08,028 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_21_781112938.jpg
2026-03-06 23:06:08,036 - INFO - ✅ Downloaded: image_14_725973623.webp
2026-03-06 23:06:08,036 - INFO - ⏭ Skipping image_14_725973623: Already processed
2026-03-06 23:06:08,037 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_14_725973623.webp
2026-03-06 23:06:08,037 - INFO - ✅ Downloaded: image_20_2066027360.jpg
2026-03-06 23:06:08,038 - INFO - ⏭ Skipping image_20_2066027360: Already processed
2026-03-06 23:06:08,038 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_20_2066027360.jpg
2026-03-06 23:06:08,045 - INFO - ✅ Downloaded: image_22_1058600028.jpg
2026-03-06 23:06:08,045 - INFO - ⏭ Skipping image_22_1058600028: Already processed
2026-03-06 23:06:08,046 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_22_1058600028.jpg
2026-03-06 23:06:08,049 - INFO - ✅ Downloaded: image_19_367122568.jpg
2026-03-06 23:06:08,049 - INFO - ⏭ Skipping image_19_367122568: Already processed
2026-03-06 23:06:08,049 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_19_367122568.jpg
2026-03-06 23:06:08,050 - INFO - ✅ Downloaded: image_18_258278262.jpg
2026-03-06 23:06:08,050 - INFO - ⏭ Skipping image_18_258278262: Already processed
2026-03-06 23:06:08,050 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_18_258278262.jpg
2026-03-06 23:06:08,052 - INFO - ✅ Downloaded: image_17_1725888082.jpg
2026-03-06 23:06:08,052 - INFO - ⏭ Skipping image_17_1725888082: Already processed
2026-03-06 23:06:08,052 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_17_1725888082.jpg
2026-03-06 23:06:08,052 - INFO - ✅ Downloaded: image_15_236113758.jpg
2026-03-06 23:06:08,054 - INFO - ⏭ Skipping image_15_236113758: Already processed
2026-03-06 23:06:08,055 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_15_236113758.jpg
2026-03-06 23:06:08,056 - INFO - ✅ Downloaded: image_16_235190237.jpg
2026-03-06 23:06:08,056 - INFO - ⏭ Skipping image_16_235190237: Already processed
2026-03-06 23:06:08,056 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_16_235190237.jpg
2026-03-06 23:06:08,057 - INFO - ✅ Downloaded: image_13_230572632.jpg
2026-03-06 23:06:08,057 - INFO - ⏭ Skipping image_13_230572632: Already processed
2026-03-06 23:06:08,057 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_13_230572632.jpg
2026-03-06 23:06:08,057 - INFO - ✅ Batch 2 completed: 0 processed, 0 deals inserted
2026-03-06 23:06:08,057 - INFO - 🔄 Processing batch 3/3 (10 images)
2026-03-06 23:06:08,057 - INFO - 🔄 Processing image: image_23_1358497160
2026-03-06 23:06:08,058 - INFO - 🔄 Processing image: image_24_2146199388
2026-03-06 23:06:08,058 - INFO - 🔄 Processing image: image_25_1329197011
2026-03-06 23:06:08,058 - INFO - 🔄 Processing image: image_26_810399351
2026-03-06 23:06:08,059 - INFO - 🔄 Processing image: image_27_852658791
2026-03-06 23:06:08,059 - INFO - 🔄 Processing image: image_28_300195207
2026-03-06 23:06:08,059 - INFO - 🔄 Processing image: image_29_1278795828
2026-03-06 23:06:08,059 - INFO - 🔄 Processing image: image_31_1539164129
2026-03-06 23:06:08,060 - INFO - 🔄 Processing image: image_32_67182334
2026-03-06 23:06:08,060 - INFO - 🔄 Processing image: image_33_2024940956
2026-03-06 23:06:08,089 - INFO - ✅ Downloaded: image_28_300195207.jpg
2026-03-06 23:06:08,089 - INFO - ⏭ Skipping image_28_300195207: Already processed
2026-03-06 23:06:08,089 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_28_300195207.jpg
2026-03-06 23:06:08,092 - INFO - ✅ Downloaded: image_23_1358497160.jpg
2026-03-06 23:06:08,092 - INFO - ⏭ Skipping image_23_1358497160: Already processed
2026-03-06 23:06:08,092 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_23_1358497160.jpg
2026-03-06 23:06:08,095 - INFO - ✅ Downloaded: image_33_2024940956.webp
2026-03-06 23:06:08,095 - INFO - ⏭ Skipping image_33_2024940956: Already processed
2026-03-06 23:06:08,095 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_33_2024940956.webp
2026-03-06 23:06:08,097 - INFO - ✅ Downloaded: image_31_1539164129.webp
2026-03-06 23:06:08,097 - INFO - ⏭ Skipping image_31_1539164129: Already processed
2026-03-06 23:06:08,097 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_31_1539164129.webp
2026-03-06 23:06:08,098 - INFO - ✅ Downloaded: image_29_1278795828.jpg
2026-03-06 23:06:08,098 - INFO - ⏭ Skipping image_29_1278795828: Already processed
2026-03-06 23:06:08,099 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_29_1278795828.jpg
2026-03-06 23:06:08,100 - INFO - ✅ Downloaded: image_26_810399351.jpg
2026-03-06 23:06:08,100 - INFO - ⏭ Skipping image_26_810399351: Already processed
2026-03-06 23:06:08,101 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_26_810399351.jpg
2026-03-06 23:06:08,102 - INFO - ✅ Downloaded: image_32_67182334.webp
2026-03-06 23:06:08,102 - INFO - ⏭ Skipping image_32_67182334: Already processed
2026-03-06 23:06:08,102 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_32_67182334.webp
2026-03-06 23:06:08,104 - INFO - ✅ Downloaded: image_27_852658791.jpg
2026-03-06 23:06:08,105 - INFO - ⏭ Skipping image_27_852658791: Already processed
2026-03-06 23:06:08,105 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_27_852658791.jpg
2026-03-06 23:06:08,105 - INFO - ✅ Downloaded: image_24_2146199388.jpg
2026-03-06 23:06:08,105 - INFO - ⏭ Skipping image_24_2146199388: Already processed
2026-03-06 23:06:08,106 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_24_2146199388.jpg
2026-03-06 23:06:08,109 - INFO - ✅ Downloaded: image_25_1329197011.jpg
2026-03-06 23:06:08,109 - INFO - ⏭ Skipping image_25_1329197011: Already processed
2026-03-06 23:06:08,109 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_25_1329197011.jpg
2026-03-06 23:06:08,110 - INFO - ✅ Batch 3 completed: 0 processed, 0 deals inserted
2026-03-06 23:06:08,220 - INFO - ✅ Unified Scraper Engine completed successfully
==================================================
📊 SCRAPER SUMMARY
==================================================
Images Found: 30
Images Processed: 0
Deals Extracted: 0
Deals Inserted: 0
Duplicates Skipped: 30
Blacklisted: 0
Errors: 0
Success Rate: 0.0%
Duration: 16.7s
2026-03-06 23:06:08,224 - DEBUG - close.started
2026-03-06 23:06:08,224 - DEBUG - close.complete
2026-03-06 23:06:08,225 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-06 23:06:08,229 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f0e8453f100>
2026-03-06 23:06:08,230 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f0e8ddb2040> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-06 23:06:08,238 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f0e8453f850>
2026-03-06 23:06:08,238 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-06 23:06:08,239 - DEBUG - send_request_headers.complete
2026-03-06 23:06:08,239 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-06 23:06:08,239 - DEBUG - send_request_body.complete
2026-03-06 23:06:08,239 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-06 23:06:08,321 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Fri, 06 Mar 2026 23:06:08 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-50/51'), (b'CF-Ray', b'9d85025989464cc3-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?is_active=eq.True&moderation_status=eq.approved&select=id'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Accept-Encoding'), (b'X-Content-Type-Options', b'nosniff'), (b'content-profile', b'public'), (b'preference-applied', b'count=exact'), (b'sb-gateway-version', b'1'), (b'sb-project-ref', b'mrngdyllepreqkxxmvqn'), (b'sb-request-id', b'019cc566-b3fa-7348-983e-830273254331'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'37'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-06 23:06:08,322 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals?select=id&is_active=eq.True&moderation_status=eq.approved "HTTP/1.1 200 OK"
2026-03-06 23:06:08,322 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-06 23:06:08,322 - DEBUG - receive_response_body.complete
2026-03-06 23:06:08,323 - DEBUG - response_closed.started
2026-03-06 23:06:08,323 - DEBUG - response_closed.complete
2026-03-06 23:06:08,323 - INFO - ✅ Deal count OK: 51 active deals
==================================================
🐍 Python process exited with code: 0
✅ Unified Scraper Orchestrator completed successfully

==================================================
📊 SCRAPER SUMMARY
==================================================
Images Found: 30
Images Processed: 0
Deals Extracted: 0
Deals Inserted: 0
Duplicates Skipped: 30
Blacklisted: 0
Errors: 0
==================================================


thinking:
The scraper ran successfully. Summary:
- Found 30 deal images
- All 30 were duplicates (already processed)
- 0 new deals inserted
- 1 old deal archived
- 51 active deals in database (healthy count)

This is a normal run — no new deals because the source site hasn't updated since last run. All systems working correctly.

text:
**Deal Scraper Complete** 🌿

| Metric | Value |
|--------|-------|
| Images Found | 30 |
| New Deals | 0 |
| Duplicates Skipped | 30 |
| Old Deals Archived | 1 |
| Total Active Deals | 51 |
| Duration | 16.7s |
| Status | ✅ Success |

No new deals this hour — all 30 images were already processed. The source site hasn't updated since the last run. Database is healthy with 51 active deals.

stopReason: stop