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: Saturday, March 7th, 2026 — 3:03 AM (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 triggering a cron job for the CannaDeals deal scraper. This is a scheduled task that:
1. SSH's to carl (the production server)
2. Runs the unified-scraper-orchestrator.mjs script
3. Scrapes dispensary deals and inserts them into the database
4. I need to report a brief summary

According to my SOUL.md and AGENTS.md, I need to:
1. Report BEFORE starting work
2. Execute the task
3. Report AFTER completion with results

This is a straightforward execution task. I should run the command and report the results.

Let me execute the scraper command via SSH to carl.

exec

type: toolCall

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

api: openai-completions

stopReason: toolUse


role: toolResult

toolName: exec

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

status: running

sessionId: young-claw

tail:
_headers.started request=<Request [b'GET']>
2026-03-07 03:03:38,609 - DEBUG - send_request_headers.complete
2026-03-07 03:03:38,609 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 03:03:38,609 - DEBUG - send_request_body.complete
2026-03-07 03:03:38,609 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 03:03:38,702 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 03:03:38 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'9d865e425a7b903e-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-28T03%3A03%3A38.607656%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'019cc640-257c-7923-936a-93b08865d1b5'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'57'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 03:03:38,702 - 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-28T03%3A03%3A38.607656%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-07 03:03:38,703 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 03:03:38,703 - DEBUG - receive_response_body.complete
2026-03-07 03:03:38,703 - DEBUG - response_closed.started
2026-03-07 03:03:38,703 - DEBUG - response_closed.complete
2026-03-07 03:03:39,178 - INFO - 🌐 Navigating to https://flcannabisdeals.org/todays-florida-dispensary-deals/


thinking: The scraper is running. It's taking some time (which is normal for scraping). Let me poll for the results.

process

action: poll


toolName: process

text:
[dotenv@17.2.3] injecting env (13) from .env.local -- tip: 🔄 add secrets lifecycle management: https://dotenvx.com/ops
✅ 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-07 03:03:37,461 - DEBUG - Using selector: EpollSelector
2026-03-07 03:03:37,462 - INFO - 🚀 Starting Unified Scraper Engine
2026-03-07 03:03:37,587 - INFO - ✅ Supabase client initialized (HTTP/1.1 mode)
2026-03-07 03:03:37,589 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 03:03:37,597 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f1270e286d0>
2026-03-07 03:03:37,598 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f127119a040> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 03:03:37,607 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f1270e286a0>
2026-03-07 03:03:37,607 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 03:03:37,608 - DEBUG - send_request_headers.complete
2026-03-07 03:03:37,608 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 03:03:37,608 - DEBUG - send_request_body.complete
2026-03-07 03:03:37,608 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 03:03:37,833 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 03:03:37 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'9d865e3c1df4903e-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'019cc640-2192-7104-a0af-aee7e5942806'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'78'), (b'Set-Cookie', b'__cf_bm=DxWe0onbYTq2znr_Owml_pZ4ipJlEifLDjjoFRxZC0Q-1772852617-1.0.1.1-PGs9ghj9XCV94SIwONK2USUxmD0jtUiLQvGsogZVN97YcwBIvu7x9ML5DwD.C0jy_hM9InFLTOnPkZ34xwzq1uzp.g2YmY8idiWTPyhEbXU; path=/; expires=Sat, 07-Mar-26 03:33:37 GMT; domain=.supabase.co; HttpOnly; Secure; SameSite=None'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 03:03:37,834 - 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-07 03:03:37,835 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 03:03:37,835 - DEBUG - receive_response_body.complete
2026-03-07 03:03:37,836 - DEBUG - response_closed.started
2026-03-07 03:03:37,836 - DEBUG - response_closed.complete
2026-03-07 03:03:37,838 - INFO - ✅ Loaded 10 product categories for mapping
2026-03-07 03:03:37,838 - INFO - ✅ Gemini AI initialized with model: gemini-2.5-flash-lite
2026-03-07 03:03:38,478 - INFO - ✅ Gemini AI test successful
2026-03-07 03:03:38,478 - INFO - 🗄 Archiving old deals...
2026-03-07 03:03:38,479 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 03:03:38,480 - DEBUG - send_request_headers.complete
2026-03-07 03:03:38,480 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 03:03:38,480 - DEBUG - send_request_body.complete
2026-03-07 03:03:38,480 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 03:03:38,606 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 03:03:38 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'9d865e4189de903e-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?created_at=lt.2026-03-05T03%3A03%3A38.478874%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'019cc640-24fc-7229-9ef8-9a6b651e9da1'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'78'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 03:03:38,606 - 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-05T03%3A03%3A38.478874%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-07 03:03:38,607 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 03:03:38,607 - DEBUG - receive_response_body.complete
2026-03-07 03:03:38,607 - DEBUG - response_closed.started
2026-03-07 03:03:38,607 - DEBUG - response_closed.complete
2026-03-07 03:03:38,607 - INFO - 🗑 Deleting old archived deals...
2026-03-07 03:03:38,608 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 03:03:38,609 - DEBUG - send_request_headers.complete
2026-03-07 03:03:38,609 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 03:03:38,609 - DEBUG - send_request_body.complete
2026-03-07 03:03:38,609 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 03:03:38,702 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 03:03:38 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'9d865e425a7b903e-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-28T03%3A03%3A38.607656%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'019cc640-257c-7923-936a-93b08865d1b5'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'57'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 03:03:38,702 - 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-28T03%3A03%3A38.607656%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-07 03:03:38,703 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 03:03:38,703 - DEBUG - receive_response_body.complete
2026-03-07 03:03:38,703 - DEBUG - response_closed.started
2026-03-07 03:03:38,703 - DEBUG - response_closed.complete
2026-03-07 03:03:39,178 - INFO - 🌐 Navigating to https://flcannabisdeals.org/todays-florida-dispensary-deals/
2026-03-07 03:03:53,703 - INFO - 📸 Found 30 potential deal images
2026-03-07 03:03:53,703 - INFO - 🔄 Processing batch 1/3 (10 images)
2026-03-07 03:03:53,704 - INFO - 🔄 Processing image: image_3_716938862
2026-03-07 03:03:53,704 - INFO - 🔄 Processing image: image_4_67182334
2026-03-07 03:03:53,704 - INFO - 🔄 Processing image: image_5_2024940956
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_6_868795887
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_7_1379210405
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_8_975854079
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_9_234266716
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_10_237960800
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_11_955109348
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_12_233343195
2026-03-07 03:03:53,772 - INFO - ✅ Downloaded: image_6_868795887.jpg
2026-03-07 03:03:53,772 - INFO - ⏭ Skipping image_6_868795887: Already processed
2026-03-07 03:03:53,772 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_6_868795887.jpg
2026-03-07 03:03:53,777 - INFO - ✅ Downloaded: image_3_716938862.webp
2026-03-07 03:03:53,777 - INFO - ⏭ Skipping image_3_716938862: Already processed
2026-03-07 03:03:53,777 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_3_716938862.webp
2026-03-07 03:03:53,781 - INFO - ✅ Downloaded: image_5_2024940956.webp
2026-03-07 03:03:53,782 - INFO - ⏭ Skipping image_5_2024940956: Already processed
2026-03-07 03:03:53,782 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_5_2024940956.webp
2026-03-07 03:03:53,783 - INFO - ✅ Downloaded: image_9_234266716.jpg
2026-03-07 03:03:53,783 - INFO - ⏭ Skipping image_9_234266716: Already processed
2026-03-07 03:03:53,784 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_9_234266716.jpg
2026-03-07 03:03:53,787 - INFO - ✅ Downloaded: image_4_67182334.webp
2026-03-07 03:03:53,788 - INFO - ⏭ Skipping image_4_67182334: Already processed
2026-03-07 03:03:53,788 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_4_67182334.webp
2026-03-07 03:03:53,791 - INFO - ✅ Downloaded: image_12_233343195.jpg
2026-03-07 03:03:53,791 - INFO - ⏭ Skipping image_12_233343195: Already processed
2026-03-07 03:03:53,792 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_12_233343195.jpg
2026-03-07 03:03:53,792 - INFO - ✅ Downloaded: image_11_955109348.jpg
2026-03-07 03:03:53,792 - INFO - ⏭ Skipping image_11_955109348: Already processed
2026-03-07 03:03:53,792 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_11_955109348.jpg
2026-03-07 03:03:53,795 - INFO - ✅ Downloaded: image_7_1379210405.jpg
2026-03-07 03:03:53,795 - INFO - ⏭ Skipping image_7_1379210405: Already processed
2026-03-07 03:03:53,795 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_7_1379210405.jpg
2026-03-07 03:03:53,796 - INFO - ✅ Downloaded: image_8_975854079.jpg
2026-03-07 03:03:53,796 - INFO - ⏭ Skipping image_8_975854079: Already processed
2026-03-07 03:03:53,796 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_8_975854079.jpg
2026-03-07 03:03:53,796 - INFO - ✅ Downloaded: image_10_237960800.jpg
2026-03-07 03:03:53,797 - INFO - ⏭ Skipping image_10_237960800: Already processed
2026-03-07 03:03:53,797 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_10_237960800.jpg
2026-03-07 03:03:53,797 - INFO - ✅ Batch 1 completed: 0 processed, 0 deals inserted
2026-03-07 03:03:53,797 - INFO - 🔄 Processing batch 2/3 (10 images)
2026-03-07 03:03:53,797 - INFO - 🔄 Processing image: image_13_230572632
2026-03-07 03:03:53,797 - INFO - 🔄 Processing image: image_14_725973623
2026-03-07 03:03:53,798 - INFO - 🔄 Processing image: image_15_236113758
2026-03-07 03:03:53,798 - INFO - 🔄 Processing image: image_16_235190237
2026-03-07 03:03:53,798 - INFO - 🔄 Processing image: image_17_1725888082
2026-03-07 03:03:53,798 - INFO - 🔄 Processing image: image_18_258278262
2026-03-07 03:03:53,799 - INFO - 🔄 Processing image: image_19_367122568
2026-03-07 03:03:53,799 - INFO - 🔄 Processing image: image_20_2066027360
2026-03-07 03:03:53,799 - INFO - 🔄 Processing image: image_21_781112938
2026-03-07 03:03:53,799 - INFO - 🔄 Processing image: image_22_1058600028
2026-03-07 03:03:53,825 - INFO - ✅ Downloaded: image_21_781112938.jpg
2026-03-07 03:03:53,825 - INFO - ⏭ Skipping image_21_781112938: Already processed
2026-03-07 03:03:53,825 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_21_781112938.jpg
2026-03-07 03:03:53,828 - INFO - ✅ Downloaded: image_20_2066027360.jpg
2026-03-07 03:03:53,828 - INFO - ⏭ Skipping image_20_2066027360: Already processed
2026-03-07 03:03:53,828 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_20_2066027360.jpg
2026-03-07 03:03:53,831 - INFO - ✅ Downloaded: image_22_1058600028.jpg
2026-03-07 03:03:53,832 - INFO - ⏭ Skipping image_22_1058600028: Already processed
2026-03-07 03:03:53,832 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_22_1058600028.jpg
2026-03-07 03:03:53,835 - INFO - ✅ Downloaded: image_14_725973623.webp
2026-03-07 03:03:53,835 - INFO - ⏭ Skipping image_14_725973623: Already processed
2026-03-07 03:03:53,835 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_14_725973623.webp
2026-03-07 03:03:53,837 - INFO - ✅ Downloaded: image_19_367122568.jpg
2026-03-07 03:03:53,837 - INFO - ⏭ Skipping image_19_367122568: Already processed
2026-03-07 03:03:53,837 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_19_367122568.jpg
2026-03-07 03:03:53,838 - INFO - ✅ Downloaded: image_18_258278262.jpg
2026-03-07 03:03:53,838 - INFO - ⏭ Skipping image_18_258278262: Already processed
2026-03-07 03:03:53,838 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_18_258278262.jpg
2026-03-07 03:03:53,840 - INFO - ✅ Downloaded: image_17_1725888082.jpg
2026-03-07 03:03:53,841 - INFO - ⏭ Skipping image_17_1725888082: Already processed
2026-03-07 03:03:53,841 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_17_1725888082.jpg
2026-03-07 03:03:53,841 - INFO - ✅ Downloaded: image_16_235190237.jpg
2026-03-07 03:03:53,842 - INFO - ⏭ Skipping image_16_235190237: Already processed
2026-03-07 03:03:53,842 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_16_235190237.jpg
2026-03-07 03:03:53,842 - INFO - ✅ Downloaded: image_15_236113758.jpg
2026-03-07 03:03:53,842 - INFO - ⏭ Skipping image_15_236113758: Already processed
2026-03-07 03:03:53,842 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_15_236113758.jpg
2026-03-07 03:03:53,844 - INFO - ✅ Downloaded: image_13_230572632.jpg
2026-03-07 03:03:53,844 - INFO - ⏭ Skipping image_13_230572632: Already processed
2026-03-07 03:03:53,844 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_13_230572632.jpg
2026-03-07 03:03:53,844 - INFO - ✅ Batch 2 completed: 0 processed, 0 deals inserted
2026-03-07 03:03:53,844 - INFO - 🔄 Processing batch 3/3 (10 images)
2026-03-07 03:03:53,844 - INFO - 🔄 Processing image: image_23_1358497160
2026-03-07 03:03:53,845 - INFO - 🔄 Processing image: image_24_2146199388
2026-03-07 03:03:53,845 - INFO - 🔄 Processing image: image_25_1329197011
2026-03-07 03:03:53,845 - INFO - 🔄 Processing image: image_26_810399351
2026-03-07 03:03:53,846 - INFO - 🔄 Processing image: image_27_852658791
2026-03-07 03:03:53,846 - INFO - 🔄 Processing image: image_28_300195207
2026-03-07 03:03:53,846 - INFO - 🔄 Processing image: image_29_1278795828
2026-03-07 03:03:53,846 - INFO - 🔄 Processing image: image_31_2024940956
2026-03-07 03:03:53,846 - INFO - 🔄 Processing image: image_32_1551121141
2026-03-07 03:03:53,847 - INFO - 🔄 Processing image: image_33_1539164129
2026-03-07 03:03:53,868 - INFO - ✅ Downloaded: image_23_1358497160.jpg
2026-03-07 03:03:53,868 - INFO - ⏭ Skipping image_23_1358497160: Already processed
2026-03-07 03:03:53,868 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_23_1358497160.jpg
2026-03-07 03:03:53,872 - INFO - ✅ Downloaded: image_31_2024940956.webp
2026-03-07 03:03:53,872 - INFO - ⏭ Skipping image_31_2024940956: Already processed
2026-03-07 03:03:53,872 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_31_2024940956.webp
2026-03-07 03:03:53,873 - INFO - ✅ Downloaded: image_26_810399351.jpg
2026-03-07 03:03:53,873 - INFO - ⏭ Skipping image_26_810399351: Already processed
2026-03-07 03:03:53,873 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_26_810399351.jpg
2026-03-07 03:03:53,876 - INFO - ✅ Downloaded: image_28_300195207.jpg
2026-03-07 03:03:53,876 - INFO - ⏭ Skipping image_28_300195207: Already processed
2026-03-07 03:03:53,877 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_28_300195207.jpg
2026-03-07 03:03:53,879 - INFO - ✅ Downloaded: image_24_2146199388.jpg
2026-03-07 03:03:53,879 - INFO - ⏭ Skipping image_24_2146199388: Already processed
2026-03-07 03:03:53,879 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_24_2146199388.jpg
2026-03-07 03:03:53,884 - INFO - ✅ Downloaded: image_32_1551121141.webp
2026-03-07 03:03:53,884 - INFO - ⏭ Skipping image_32_1551121141: Already processed
2026-03-07 03:03:53,884 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_32_1551121141.webp
2026-03-07 03:03:53,885 - INFO - ✅ Downloaded: image_25_1329197011.jpg
2026-03-07 03:03:53,885 - INFO - ⏭ Skipping image_25_1329197011: Already processed
2026-03-07 03:03:53,885 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_25_1329197011.jpg
2026-03-07 03:03:53,889 - INFO - ✅ Downloaded: image_33_1539164129.webp
2026-03-07 03:03:53,889 - INFO - ⏭ Skipping image_33_1539164129: Already processed
2026-03-07 03:03:53,889 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_33_1539164129.webp
2026-03-07 03:03:53,891 - INFO - ✅ Downloaded: image_29_1278795828.jpg
2026-03-07 03:03:53,891 - INFO - ⏭ Skipping image_29_1278795828: Already processed
2026-03-07 03:03:53,891 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_29_1278795828.jpg
2026-03-07 03:03:53,892 - INFO - ✅ Downloaded: image_27_852658791.jpg
2026-03-07 03:03:53,892 - INFO - ⏭ Skipping image_27_852658791: Already processed
2026-03-07 03:03:53,892 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_27_852658791.jpg
2026-03-07 03:03:53,892 - INFO - ✅ Batch 3 completed: 0 processed, 0 deals inserted
2026-03-07 03:03:53,955 - 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.5s
2026-03-07 03:03:53,957 - DEBUG - close.started
2026-03-07 03:03:53,958 - DEBUG - close.complete
2026-03-07 03:03:53,958 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 03:03:53,962 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f127021d420>
2026-03-07 03:03:53,962 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f127119a040> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 03:03:53,969 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f127021f550>
2026-03-07 03:03:53,970 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 03:03:53,970 - DEBUG - send_request_headers.complete
2026-03-07 03:03:53,970 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 03:03:53,970 - DEBUG - send_request_body.complete
2026-03-07 03:03:53,970 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 03:03:54,058 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 03:03:54 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-49/50'), (b'CF-Ray', b'9d865ea25e8e889f-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'019cc640-617b-7223-aef1-628568dd3a38'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'10'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 03:03:54,058 - 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-07 03:03:54,058 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 03:03:54,059 - DEBUG - receive_response_body.complete
2026-03-07 03:03:54,059 - DEBUG - response_closed.started
2026-03-07 03:03:54,059 - DEBUG - response_closed.complete
2026-03-07 03:03:54,060 - INFO - ✅ Deal count OK: 50 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: 🔄 add secrets lifecycle management: https://dotenvx.com/ops
✅ 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-07 03:03:37,461 - DEBUG - Using selector: EpollSelector
2026-03-07 03:03:37,462 - INFO - 🚀 Starting Unified Scraper Engine
2026-03-07 03:03:37,587 - INFO - ✅ Supabase client initialized (HTTP/1.1 mode)
2026-03-07 03:03:37,589 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 03:03:37,597 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f1270e286d0>
2026-03-07 03:03:37,598 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f127119a040> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 03:03:37,607 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f1270e286a0>
2026-03-07 03:03:37,607 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 03:03:37,608 - DEBUG - send_request_headers.complete
2026-03-07 03:03:37,608 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 03:03:37,608 - DEBUG - send_request_body.complete
2026-03-07 03:03:37,608 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 03:03:37,833 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 03:03:37 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'9d865e3c1df4903e-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'019cc640-2192-7104-a0af-aee7e5942806'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'78'), (b'Set-Cookie', b'__cf_bm=DxWe0onbYTq2znr_Owml_pZ4ipJlEifLDjjoFRxZC0Q-1772852617-1.0.1.1-PGs9ghj9XCV94SIwONK2USUxmD0jtUiLQvGsogZVN97YcwBIvu7x9ML5DwD.C0jy_hM9InFLTOnPkZ34xwzq1uzp.g2YmY8idiWTPyhEbXU; path=/; expires=Sat, 07-Mar-26 03:33:37 GMT; domain=.supabase.co; HttpOnly; Secure; SameSite=None'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 03:03:37,834 - 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-07 03:03:37,835 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 03:03:37,835 - DEBUG - receive_response_body.complete
2026-03-07 03:03:37,836 - DEBUG - response_closed.started
2026-03-07 03:03:37,836 - DEBUG - response_closed.complete
2026-03-07 03:03:37,838 - INFO - ✅ Loaded 10 product categories for mapping
2026-03-07 03:03:37,838 - INFO - ✅ Gemini AI initialized with model: gemini-2.5-flash-lite
2026-03-07 03:03:38,478 - INFO - ✅ Gemini AI test successful
2026-03-07 03:03:38,478 - INFO - 🗄 Archiving old deals...
2026-03-07 03:03:38,479 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 03:03:38,480 - DEBUG - send_request_headers.complete
2026-03-07 03:03:38,480 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 03:03:38,480 - DEBUG - send_request_body.complete
2026-03-07 03:03:38,480 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 03:03:38,606 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 03:03:38 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'9d865e4189de903e-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?created_at=lt.2026-03-05T03%3A03%3A38.478874%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'019cc640-24fc-7229-9ef8-9a6b651e9da1'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'78'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 03:03:38,606 - 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-05T03%3A03%3A38.478874%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-07 03:03:38,607 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 03:03:38,607 - DEBUG - receive_response_body.complete
2026-03-07 03:03:38,607 - DEBUG - response_closed.started
2026-03-07 03:03:38,607 - DEBUG - response_closed.complete
2026-03-07 03:03:38,607 - INFO - 🗑 Deleting old archived deals...
2026-03-07 03:03:38,608 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 03:03:38,609 - DEBUG - send_request_headers.complete
2026-03-07 03:03:38,609 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 03:03:38,609 - DEBUG - send_request_body.complete
2026-03-07 03:03:38,609 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 03:03:38,702 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 03:03:38 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'9d865e425a7b903e-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-28T03%3A03%3A38.607656%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'019cc640-257c-7923-936a-93b08865d1b5'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'57'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 03:03:38,702 - 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-28T03%3A03%3A38.607656%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-07 03:03:38,703 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 03:03:38,703 - DEBUG - receive_response_body.complete
2026-03-07 03:03:38,703 - DEBUG - response_closed.started
2026-03-07 03:03:38,703 - DEBUG - response_closed.complete
2026-03-07 03:03:39,178 - INFO - 🌐 Navigating to https://flcannabisdeals.org/todays-florida-dispensary-deals/
2026-03-07 03:03:53,703 - INFO - 📸 Found 30 potential deal images
2026-03-07 03:03:53,703 - INFO - 🔄 Processing batch 1/3 (10 images)
2026-03-07 03:03:53,704 - INFO - 🔄 Processing image: image_3_716938862
2026-03-07 03:03:53,704 - INFO - 🔄 Processing image: image_4_67182334
2026-03-07 03:03:53,704 - INFO - 🔄 Processing image: image_5_2024940956
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_6_868795887
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_7_1379210405
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_8_975854079
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_9_234266716
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_10_237960800
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_11_955109348
2026-03-07 03:03:53,705 - INFO - 🔄 Processing image: image_12_233343195
2026-03-07 03:03:53,772 - INFO - ✅ Downloaded: image_6_868795887.jpg
2026-03-07 03:03:53,772 - INFO - ⏭ Skipping image_6_868795887: Already processed
2026-03-07 03:03:53,772 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_6_868795887.jpg
2026-03-07 03:03:53,777 - INFO - ✅ Downloaded: image_3_716938862.webp
2026-03-07 03:03:53,777 - INFO - ⏭ Skipping image_3_716938862: Already processed
2026-03-07 03:03:53,777 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_3_716938862.webp
2026-03-07 03:03:53,781 - INFO - ✅ Downloaded: image_5_2024940956.webp
2026-03-07 03:03:53,782 - INFO - ⏭ Skipping image_5_2024940956: Already processed
2026-03-07 03:03:53,782 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_5_2024940956.webp
2026-03-07 03:03:53,783 - INFO - ✅ Downloaded: image_9_234266716.jpg
2026-03-07 03:03:53,783 - INFO - ⏭ Skipping image_9_234266716: Already processed
2026-03-07 03:03:53,784 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_9_234266716.jpg
2026-03-07 03:03:53,787 - INFO - ✅ Downloaded: image_4_67182334.webp
2026-03-07 03:03:53,788 - INFO - ⏭ Skipping image_4_67182334: Already processed
2026-03-07 03:03:53,788 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_4_67182334.webp
2026-03-07 03:03:53,791 - INFO - ✅ Downloaded: image_12_233343195.jpg
2026-03-07 03:03:53,791 - INFO - ⏭ Skipping image_12_233343195: Already processed
2026-03-07 03:03:53,792 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_12_233343195.jpg
2026-03-07 03:03:53,792 - INFO - ✅ Downloaded: image_11_955109348.jpg
2026-03-07 03:03:53,792 - INFO - ⏭ Skipping image_11_955109348: Already processed
2026-03-07 03:03:53,792 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_11_955109348.jpg
2026-03-07 03:03:53,795 - INFO - ✅ Downloaded: image_7_1379210405.jpg
2026-03-07 03:03:53,795 - INFO - ⏭ Skipping image_7_1379210405: Already processed
2026-03-07 03:03:53,795 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_7_1379210405.jpg
2026-03-07 03:03:53,796 - INFO - ✅ Downloaded: image_8_975854079.jpg
2026-03-07 03:03:53,796 - INFO - ⏭ Skipping image_8_975854079: Already processed
2026-03-07 03:03:53,796 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_8_975854079.jpg
2026-03-07 03:03:53,796 - INFO - ✅ Downloaded: image_10_237960800.jpg
2026-03-07 03:03:53,797 - INFO - ⏭ Skipping image_10_237960800: Already processed
2026-03-07 03:03:53,797 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_10_237960800.jpg
2026-03-07 03:03:53,797 - INFO - ✅ Batch 1 completed: 0 processed, 0 deals inserted
2026-03-07 03:03:53,797 - INFO - 🔄 Processing batch 2/3 (10 images)
2026-03-07 03:03:53,797 - INFO - 🔄 Processing image: image_13_230572632
2026-03-07 03:03:53,797 - INFO - 🔄 Processing image: image_14_725973623
2026-03-07 03:03:53,798 - INFO - 🔄 Processing image: image_15_236113758
2026-03-07 03:03:53,798 - INFO - 🔄 Processing image: image_16_235190237
2026-03-07 03:03:53,798 - INFO - 🔄 Processing image: image_17_1725888082
2026-03-07 03:03:53,798 - INFO - 🔄 Processing image: image_18_258278262
2026-03-07 03:03:53,799 - INFO - 🔄 Processing image: image_19_367122568
2026-03-07 03:03:53,799 - INFO - 🔄 Processing image: image_20_2066027360
2026-03-07 03:03:53,799 - INFO - 🔄 Processing image: image_21_781112938
2026-03-07 03:03:53,799 - INFO - 🔄 Processing image: image_22_1058600028
2026-03-07 03:03:53,825 - INFO - ✅ Downloaded: image_21_781112938.jpg
2026-03-07 03:03:53,825 - INFO - ⏭ Skipping image_21_781112938: Already processed
2026-03-07 03:03:53,825 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_21_781112938.jpg
2026-03-07 03:03:53,828 - INFO - ✅ Downloaded: image_20_2066027360.jpg
2026-03-07 03:03:53,828 - INFO - ⏭ Skipping image_20_2066027360: Already processed
2026-03-07 03:03:53,828 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_20_2066027360.jpg
2026-03-07 03:03:53,831 - INFO - ✅ Downloaded: image_22_1058600028.jpg
2026-03-07 03:03:53,832 - INFO - ⏭ Skipping image_22_1058600028: Already processed
2026-03-07 03:03:53,832 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_22_1058600028.jpg
2026-03-07 03:03:53,835 - INFO - ✅ Downloaded: image_14_725973623.webp
2026-03-07 03:03:53,835 - INFO - ⏭ Skipping image_14_725973623: Already processed
2026-03-07 03:03:53,835 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_14_725973623.webp
2026-03-07 03:03:53,837 - INFO - ✅ Downloaded: image_19_367122568.jpg
2026-03-07 03:03:53,837 - INFO - ⏭ Skipping image_19_367122568: Already processed
2026-03-07 03:03:53,837 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_19_367122568.jpg
2026-03-07 03:03:53,838 - INFO - ✅ Downloaded: image_18_258278262.jpg
2026-03-07 03:03:53,838 - INFO - ⏭ Skipping image_18_258278262: Already processed
2026-03-07 03:03:53,838 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_18_258278262.jpg
2026-03-07 03:03:53,840 - INFO - ✅ Downloaded: image_17_1725888082.jpg
2026-03-07 03:03:53,841 - INFO - ⏭ Skipping image_17_1725888082: Already processed
2026-03-07 03:03:53,841 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_17_1725888082.jpg
2026-03-07 03:03:53,841 - INFO - ✅ Downloaded: image_16_235190237.jpg
2026-03-07 03:03:53,842 - INFO - ⏭ Skipping image_16_235190237: Already processed
2026-03-07 03:03:53,842 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_16_235190237.jpg
2026-03-07 03:03:53,842 - INFO - ✅ Downloaded: image_15_236113758.jpg
2026-03-07 03:03:53,842 - INFO - ⏭ Skipping image_15_236113758: Already processed
2026-03-07 03:03:53,842 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_15_236113758.jpg
2026-03-07 03:03:53,844 - INFO - ✅ Downloaded: image_13_230572632.jpg
2026-03-07 03:03:53,844 - INFO - ⏭ Skipping image_13_230572632: Already processed
2026-03-07 03:03:53,844 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_13_230572632.jpg
2026-03-07 03:03:53,844 - INFO - ✅ Batch 2 completed: 0 processed, 0 deals inserted
2026-03-07 03:03:53,844 - INFO - 🔄 Processing batch 3/3 (10 images)
2026-03-07 03:03:53,844 - INFO - 🔄 Processing image: image_23_1358497160
2026-03-07 03:03:53,845 - INFO - 🔄 Processing image: image_24_2146199388
2026-03-07 03:03:53,845 - INFO - 🔄 Processing image: image_25_1329197011
2026-03-07 03:03:53,845 - INFO - 🔄 Processing image: image_26_810399351
2026-03-07 03:03:53,846 - INFO - 🔄 Processing image: image_27_852658791
2026-03-07 03:03:53,846 - INFO - 🔄 Processing image: image_28_300195207
2026-03-07 03:03:53,846 - INFO - 🔄 Processing image: image_29_1278795828
2026-03-07 03:03:53,846 - INFO - 🔄 Processing image: image_31_2024940956
2026-03-07 03:03:53,846 - INFO - 🔄 Processing image: image_32_1551121141
2026-03-07 03:03:53,847 - INFO - 🔄 Processing image: image_33_1539164129
2026-03-07 03:03:53,868 - INFO - ✅ Downloaded: image_23_1358497160.jpg
2026-03-07 03:03:53,868 - INFO - ⏭ Skipping image_23_1358497160: Already processed
2026-03-07 03:03:53,868 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_23_1358497160.jpg
2026-03-07 03:03:53,872 - INFO - ✅ Downloaded: image_31_2024940956.webp
2026-03-07 03:03:53,872 - INFO - ⏭ Skipping image_31_2024940956: Already processed
2026-03-07 03:03:53,872 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_31_2024940956.webp
2026-03-07 03:03:53,873 - INFO - ✅ Downloaded: image_26_810399351.jpg
2026-03-07 03:03:53,873 - INFO - ⏭ Skipping image_26_810399351: Already processed
2026-03-07 03:03:53,873 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_26_810399351.jpg
2026-03-07 03:03:53,876 - INFO - ✅ Downloaded: image_28_300195207.jpg
2026-03-07 03:03:53,876 - INFO - ⏭ Skipping image_28_300195207: Already processed
2026-03-07 03:03:53,877 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_28_300195207.jpg
2026-03-07 03:03:53,879 - INFO - ✅ Downloaded: image_24_2146199388.jpg
2026-03-07 03:03:53,879 - INFO - ⏭ Skipping image_24_2146199388: Already processed
2026-03-07 03:03:53,879 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_24_2146199388.jpg
2026-03-07 03:03:53,884 - INFO - ✅ Downloaded: image_32_1551121141.webp
2026-03-07 03:03:53,884 - INFO - ⏭ Skipping image_32_1551121141: Already processed
2026-03-07 03:03:53,884 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_32_1551121141.webp
2026-03-07 03:03:53,885 - INFO - ✅ Downloaded: image_25_1329197011.jpg
2026-03-07 03:03:53,885 - INFO - ⏭ Skipping image_25_1329197011: Already processed
2026-03-07 03:03:53,885 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_25_1329197011.jpg
2026-03-07 03:03:53,889 - INFO - ✅ Downloaded: image_33_1539164129.webp
2026-03-07 03:03:53,889 - INFO - ⏭ Skipping image_33_1539164129: Already processed
2026-03-07 03:03:53,889 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_33_1539164129.webp
2026-03-07 03:03:53,891 - INFO - ✅ Downloaded: image_29_1278795828.jpg
2026-03-07 03:03:53,891 - INFO - ⏭ Skipping image_29_1278795828: Already processed
2026-03-07 03:03:53,891 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_29_1278795828.jpg
2026-03-07 03:03:53,892 - INFO - ✅ Downloaded: image_27_852658791.jpg
2026-03-07 03:03:53,892 - INFO - ⏭ Skipping image_27_852658791: Already processed
2026-03-07 03:03:53,892 - DEBUG - 🗑 Deleted duplicate file: /home/crogers2287/cannadealsfl/deal_images/image_27_852658791.jpg
2026-03-07 03:03:53,892 - INFO - ✅ Batch 3 completed: 0 processed, 0 deals inserted
2026-03-07 03:03:53,955 - 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.5s
2026-03-07 03:03:53,957 - DEBUG - close.started
2026-03-07 03:03:53,958 - DEBUG - close.complete
2026-03-07 03:03:53,958 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 03:03:53,962 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f127021d420>
2026-03-07 03:03:53,962 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f127119a040> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 03:03:53,969 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f127021f550>
2026-03-07 03:03:53,970 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 03:03:53,970 - DEBUG - send_request_headers.complete
2026-03-07 03:03:53,970 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 03:03:53,970 - DEBUG - send_request_body.complete
2026-03-07 03:03:53,970 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 03:03:54,058 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 03:03:54 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-49/50'), (b'CF-Ray', b'9d865ea25e8e889f-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'019cc640-617b-7223-aef1-628568dd3a38'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'10'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 03:03:54,058 - 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-07 03:03:54,058 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 03:03:54,059 - DEBUG - receive_response_body.complete
2026-03-07 03:03:54,059 - DEBUG - response_closed.started
2026-03-07 03:03:54,059 - DEBUG - response_closed.complete
2026-03-07 03:03:54,060 - INFO - ✅ Deal count OK: 50 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. Let me analyze the results:

**Summary:**
- Images Found: 30
- Images Processed: 0
- Deals Extracted: 0
- Deals Inserted: 0
- Duplicates Skipped: 30
- Blacklisted: 0
- Errors: 0
- Duration: 16.5s

All 30 images found were duplicates (already processed), so no new deals were inserted. The database currently has 50 active deals.

This is a clean run - the scraper is working properly, it just didn't find any NEW deals because all the deals on the source site have already been processed. This is normal for an hourly scraper - most hours there won't be new deals, but the scraper needs to check regularly to catch updates.

According to my SOUL.md protocols, I need to report status clearly. This is not an error - it's just no new deals were found.

text:
**CannaDeals Scraper Complete** 🌿

**Results:**
- **Images Found:** 30
- **Images Processed:** 0
- **Deals Inserted:** 0
- **Duplicates Skipped:** 30 (all deals already in DB)
- **Errors:** 0
- **Duration:** 16.5s
- **Active Deals in DB:** 50

**Status:** ✅ Success — No new deals found this hour. All 30 images from the source were already processed in previous runs. Database has healthy deal count (50 active).

stopReason: stop