Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'Server', b'cloudflare'), (b'Content-Range', b'0-0/*'), (b'CF-Ray', b'9d89cebebd6ab5c1-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.rise'), (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'019cc866-7337-7c54-934d-a43d4f4bbbb0'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'15'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,367 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.goldflower&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,367 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,368 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2e03310>
2026-03-07 13:04:43,368 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.muv&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,369 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,369 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,369 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.rise&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,369 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,370 - DEBUG - response_closed.started
2026-03-07 13:04:43,370 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,370 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,370 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,371 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,371 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,371 - DEBUG - response_closed.complete
2026-03-07 13:04:43,371 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,371 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,372 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,372 - DEBUG - response_closed.started
2026-03-07 13:04:43,372 - DEBUG - response_closed.started
2026-03-07 13:04:43,372 - DEBUG - response_closed.complete
2026-03-07 13:04:43,372 - DEBUG - close.started
2026-03-07 13:04:43,373 - DEBUG - response_closed.started
2026-03-07 13:04:43,373 - DEBUG - response_closed.started
2026-03-07 13:04:43,373 - DEBUG - response_closed.started
2026-03-07 13:04:43,373 - DEBUG - response_closed.complete
2026-03-07 13:04:43,373 - DEBUG - close.started
2026-03-07 13:04:43,374 - DEBUG - close.complete
2026-03-07 13:04:43,374 - DEBUG - response_closed.complete
2026-03-07 13:04:43,374 - DEBUG - response_closed.complete
2026-03-07 13:04:43,374 - DEBUG - response_closed.complete
2026-03-07 13:04:43,375 - DEBUG - close.started
2026-03-07 13:04:43,375 - DEBUG - close.complete
2026-03-07 13:04:43,375 - DEBUG - close.started
2026-03-07 13:04:43,376 - DEBUG - 🏷 Product types: ['flower', 'concentrates', 'pre-rolls', 'vapes', 'edibles', 'tinctures'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-07 13:04:43,376 - DEBUG - 🏷 Product types: ['vapes', 'extracts', 'flower', 'edibles', 'merch'] → Category ID: b206c48b-5e7a-4727-accf-1554a9e2d147
2026-03-07 13:04:43,377 - DEBUG - 🏷 Product types: ['vapes', 'flower', 'concentrates'] → Category ID: b206c48b-5e7a-4727-accf-1554a9e2d147
2026-03-07 13:04:43,377 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213e530>
2026-03-07 13:04:43,377 - DEBUG - close.complete
2026-03-07 13:04:43,378 - DEBUG - close.complete
2026-03-07 13:04:43,378 - DEBUG - 🏷 Product types: ['vape cartridges', 'concentrates', 'flower'] → Category ID: aef34cfe-fd6c-49e8-968e-e15370d1a976
2026-03-07 13:04:43,379 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,380 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,381 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,382 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,382 - DEBUG - 🏷 Product types: ['select items', 'select apparel', 'pre-rolls', 'pods', 'cartridges', 'disposables', 'chews', 'syringes'] → Category ID: d4320c11-eabe-486e-a3a2-8a4b0392f33c
2026-03-07 13:04:43,384 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,384 - DEBUG - 🏷 Product types: ['kief', 'edibles'] → Category ID: 65f5b0cf-e95a-490e-bea8-bcb1722fde4a
2026-03-07 13:04:43,385 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,385 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,385 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,385 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,386 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,387 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,387 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebeab3c3535-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.cookies'), (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'019cc866-733a-758f-b263-4ab8af7452aa'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'2'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,388 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,389 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,389 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f029b0>
2026-03-07 13:04:43,389 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebefccb2c3e-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'019cc866-7360-73de-84b0-87c81fc8b634'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'5'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,389 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,390 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.cookies&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,390 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,390 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,391 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,391 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,391 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f027a0>
2026-03-07 13:04:43,392 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,392 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,392 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,393 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,393 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,393 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213d9f0>
2026-03-07 13:04:43,393 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,393 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,394 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213dfc0>
2026-03-07 13:04:43,394 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,395 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,395 - DEBUG - response_closed.started
2026-03-07 13:04:43,395 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,395 - DEBUG - response_closed.started
2026-03-07 13:04:43,396 - DEBUG - response_closed.complete
2026-03-07 13:04:43,396 - DEBUG - response_closed.complete
2026-03-07 13:04:43,396 - DEBUG - close.started
2026-03-07 13:04:43,397 - INFO - ✅ Inserted deal: Trulieve - Flower Deals: 4 for $140, 4 for $110 & $17.50 Ounces
2026-03-07 13:04:43,397 - DEBUG - close.complete
2026-03-07 13:04:43,397 - DEBUG - close.started
2026-03-07 13:04:43,398 - DEBUG - close.complete
2026-03-07 13:04:43,399 - DEBUG - 🏷 Product types: ['flower', 'vapes', 'concentrates'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-07 13:04:43,399 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,400 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f02020>
2026-03-07 13:04:43,400 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,400 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,400 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,400 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,400 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,402 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f00b50>
2026-03-07 13:04:43,402 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,402 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,402 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,403 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,403 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,403 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f3dd50>
2026-03-07 13:04:43,403 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e20e5900>
2026-03-07 13:04:43,403 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,403 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,403 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2e00fa0>
2026-03-07 13:04:43,404 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,404 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,404 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,404 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,404 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,405 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,405 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,405 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,405 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,411 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2e03550>
2026-03-07 13:04:43,411 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,411 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,411 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,411 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,412 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,427 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf2dffb5c1-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'019cc866-7387-7f05-bd4c-47cd82714351'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'4'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,428 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,428 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,428 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,428 - DEBUG - response_closed.started
2026-03-07 13:04:43,428 - DEBUG - response_closed.complete
2026-03-07 13:04:43,429 - DEBUG - close.started
2026-03-07 13:04:43,429 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf295fae2c-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'019cc866-7385-75e3-89d5-1cbbd5befc90'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'5'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,429 - DEBUG - close.complete
2026-03-07 13:04:43,430 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,431 - INFO - ✅ Inserted deal: Müv - Flower, Vape, and Edible Deals Galore!
2026-03-07 13:04:43,431 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,431 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,432 - DEBUG - response_closed.started
2026-03-07 13:04:43,432 - DEBUG - response_closed.complete
2026-03-07 13:04:43,432 - DEBUG - close.started
2026-03-07 13:04:43,432 - DEBUG - close.complete
2026-03-07 13:04:43,433 - INFO - ✅ Inserted deal: Rise Dispensaries - Flower, Concentrates, Vapes, and Edibles Deals
2026-03-07 13:04:43,441 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf2e3fb109-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'019cc866-7386-70e3-a52b-1f4570d2a071'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'6'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,441 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,442 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,442 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf4b12f8c7-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'019cc866-7391-78ca-8326-d8ec080dc8da'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'7'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,443 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,443 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,443 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,444 - DEBUG - response_closed.started
2026-03-07 13:04:43,444 - DEBUG - response_closed.complete
2026-03-07 13:04:43,444 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,444 - DEBUG - close.started
2026-03-07 13:04:43,444 - DEBUG - response_closed.started
2026-03-07 13:04:43,445 - DEBUG - response_closed.complete
2026-03-07 13:04:43,445 - DEBUG - close.complete
2026-03-07 13:04:43,445 - INFO - ✅ Inserted deal: AYR Wellness - Vape & Concentrate Deals Galore!
2026-03-07 13:04:43,446 - INFO - ✅ Inserted deal: Jungle Boys - Flower, Vapes, and Concentrates Deals
2026-03-07 13:04:43,446 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf4fe32dab-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'019cc866-7395-73c4-84d7-5550e15fcbc5'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'4'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,448 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,449 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,449 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,449 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf4a57d5eb-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'019cc866-7394-7b0a-944d-0e10f3c86aaa'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'9'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,450 - DEBUG - response_closed.started
2026-03-07 13:04:43,450 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,450 - DEBUG - response_closed.complete
2026-03-07 13:04:43,450 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,451 - INFO - ✅ Inserted deal: GoldFlower - Percentage Off Deals, Product Specials, and Bulk Buys
2026-03-07 13:04:43,451 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,451 - DEBUG - response_closed.started
2026-03-07 13:04:43,451 - DEBUG - response_closed.complete
2026-03-07 13:04:43,452 - INFO - ✅ Inserted deal: Green Dragon - Big Discounts on Flower, Vapes, and Concentrates
2026-03-07 13:04:43,456 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf5fcb4d02-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'019cc866-739d-7b63-a61c-09ca1d0f8b09'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'5'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,457 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,457 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,457 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,457 - DEBUG - response_closed.started
2026-03-07 13:04:43,458 - DEBUG - response_closed.complete
2026-03-07 13:04:43,458 - INFO - ✅ Inserted deal: Cookies - Flower, Vapes, Concentrates Deals
2026-03-07 13:04:43,459 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf4d818f6c-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'019cc866-739b-7f92-8843-7c7812d12760'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'6'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,460 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,460 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,461 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,461 - DEBUG - response_closed.started
2026-03-07 13:04:43,461 - DEBUG - response_closed.complete
2026-03-07 13:04:43,462 - INFO - ✅ Inserted deal: One Plant Florida - Special Pricing & Spend $75 Offers
2026-03-07 13:04:43,463 - INFO - ✅ Batch 2 completed: 9 processed, 19 deals inserted
2026-03-07 13:04:43,463 - INFO - 🔄 Processing batch 3/3 (8 images)
2026-03-07 13:04:43,463 - INFO - 🔄 Processing image: image_24_1329197011
2026-03-07 13:04:43,463 - INFO - 🔄 Processing image: image_25_810399351
2026-03-07 13:04:43,464 - INFO - 🔄 Processing image: image_26_852658791
2026-03-07 13:04:43,464 - INFO - 🔄 Processing image: image_27_300195207
2026-03-07 13:04:43,464 - INFO - 🔄 Processing image: image_28_1278795828
2026-03-07 13:04:43,464 - INFO - 🔄 Processing image: image_30_716938862
2026-03-07 13:04:43,464 - INFO - 🔄 Processing image: image_31_1551121141
2026-03-07 13:04:43,464 - INFO - 🔄 Processing image: image_32_725973623
2026-03-07 13:04:43,496 - INFO - ✅ Downloaded: image_25_810399351.jpg
2026-03-07 13:04:43,496 - INFO - 🤖 Using original Gemini extraction for image_25_810399351.jpg
2026-03-07 13:04:45,735 - INFO - 📊 First pass extracted 16 deals
2026-03-07 13:04:45,735 - DEBUG - Normalizing dispensary: 'The Flowery' -> 'the flowery'
2026-03-07 13:04:45,735 - DEBUG - Exact match found: 'The Flowery' -> 'the-flowery'
2026-03-07 13:04:45,735 - WARNING - DEBUG: Normalized The Flowery -> the-flowery
2026-03-07 13:04:45,735 - INFO - ✅ Processed image_25_810399351: 16 deals from The Flowery
2026-03-07 13:04:45,738 - INFO - ✅ Downloaded: image_30_716938862.webp
2026-03-07 13:04:45,738 - INFO - 🤖 Using original Gemini extraction for image_30_716938862.webp
2026-03-07 13:04:46,751 - INFO - 📊 First pass extracted 4 deals
2026-03-07 13:04:46,752 - INFO - 🔄 Deal count (4) below threshold, running refinement pass...
2026-03-07 13:04:47,406 - INFO - ✅ Refinement pass found 4 additional deals
2026-03-07 13:04:47,406 - INFO - 📈 Total deals after refinement: 5 (1 new unique deals)
2026-03-07 13:04:47,406 - DEBUG - Normalizing dispensary: 'Cookies' -> 'cookies'
2026-03-07 13:04:47,407 - DEBUG - Exact match found: 'Cookies' -> 'cookies'
2026-03-07 13:04:47,407 - WARNING - DEBUG: Normalized Cookies -> cookies
2026-03-07 13:04:47,407 - INFO - ✅ Processed image_30_716938862: 5 deals from Cookies
2026-03-07 13:04:47,410 - INFO - ✅ Downloaded: image_32_725973623.webp
2026-03-07 13:04:47,411 - INFO - 🤖 Using original Gemini extraction for image_32_725973623.webp
2026-03-07 13:04:47,411 - INFO - ✅ Downloaded: image_26_852658791.jpg
2026-03-07 13:04:47,412 - INFO - 🤖 Using original Gemini extraction for image_26_852658791.jpg
2026-03-07 13:04:47,413 - INFO - ✅ Downloaded: image_27_300195207.jpg
2026-03-07 13:04:47,413 - INFO - 🤖 Using original Gemini extraction for image_27_300195207.jpg
2026-03-07 13:04:47,414 - INFO - ✅ Downloaded: image_28_1278795828.jpg
2026-03-07 13:04:47,414 - INFO - 🤖 Using original Gemini extraction for image_28_1278795828.jpg
2026-03-07 13:04:48,513 - INFO - 📊 First pass extracted 4 deals
2026-03-07 13:04:48,513 - INFO - 🔄 Deal count (4) below threshold, running refinement pass...
2026-03-07 13:04:49,230 - INFO - ✅ Refinement pass found 7 additional deals
2026-03-07 13:04:49,230 - INFO - 📈 Total deals after refinement: 11 (7 new unique deals)
2026-03-07 13:04:49,230 - DEBUG - Normalizing dispensary: 'Jungle Boys' -> 'jungle boys'
2026-03-07 13:04:49,230 - DEBUG - Exact match found: 'Jungle Boys' -> 'jungle-boys'
2026-03-07 13:04:49,230 - WARNING - DEBUG: Normalized Jungle Boys -> jungle-boys
2026-03-07 13:04:49,230 - INFO - ✅ Processed image_32_725973623: 11 deals from Jungle Boys
2026-03-07 13:04:50,469 - INFO - 📊 First pass extracted 5 deals
2026-03-07 13:04:50,470 - INFO - 🔄 Deal count (5) below threshold, running refinement pass...
2026-03-07 13:04:50,965 - INFO - ℹ Refinement pass found no additional deals
2026-03-07 13:04:50,965 - DEBUG - Normalizing dispensary: 'One Plant Cannabis' -> 'one plant cannabis'
2026-03-07 13:04:50,965 - DEBUG - Exact match found: 'One Plant Cannabis' -> 'one-plant'
2026-03-07 13:04:50,965 - WARNING - DEBUG: Normalized One Plant Cannabis -> one-plant
2026-03-07 13:04:50,965 - INFO - ✅ Processed image_26_852658791: 5 deals from One Plant Cannabis
2026-03-07 13:04:50,966 - INFO - ✅ Downloaded: image_31_1551121141.webp
2026-03-07 13:04:50,966 - INFO - 🤖 Using original Gemini extraction for image_31_1551121141.webp
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 still running.

ssh carl

Warning: Permanently added 'carl' (ED25519) to the list of known hosts.
[dotenv@17.2.3] injecting env (13) from .env.local -- tip: ⚙  specify custom .env file path with { path: '/custom/path/.env' }
✅ 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 13:03:41,729 - INFO - 🗑 Removed 44 expired hash cache entries (TTL: 7 days)
2026-03-07 13:03:41,730 - DEBUG - Using selector: EpollSelector
2026-03-07 13:03:41,730 - INFO - 🚀 Starting Unified Scraper Engine
2026-03-07 13:03:41,956 - INFO - ✅ Supabase client initialized (HTTP/1.1 mode)
2026-03-07 13:03:41,958 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:03:41,966 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2092d70>
2026-03-07 13:03:41,966 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:03:41,973 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2091120>
2026-03-07 13:03:41,973 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:03:41,973 - DEBUG - send_request_headers.complete
2026-03-07 13:03:41,973 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:03:41,974 - DEBUG - send_request_body.complete
2026-03-07 13:03:41,974 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:03:42,048 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:03:42 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'9d89cd3f5ece64a4-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'019cc865-839d-783e-b73b-f83ebb1092c8'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'39'), (b'Set-Cookie', b'__cf_bm=wcG2CbkcO4eC5vJFJDRg_mEEhcd0ZwvW64Vw5zVF7wY-1772888622-1.0.1.1-2FW8fSxC3zY25dORIYtxmtpTr7eQgbt.TxEwLErTJhi684FaU6RqEbCwZyG75AeGMwQspuZladXOdkeHFXXaAVc35mnXFWOphic1ex8kR_g; path=/; expires=Sat, 07-Mar-26 13:33:42 GMT; domain=.supabase.co; HttpOnly; Secure; SameSite=None'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:03:42,049 - 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 13:03:42,049 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:03:42,049 - DEBUG - receive_response_body.complete
2026-03-07 13:03:42,049 - DEBUG - response_closed.started
2026-03-07 13:03:42,049 - DEBUG - response_closed.complete
2026-03-07 13:03:42,050 - INFO - ✅ Loaded 10 product categories for mapping
2026-03-07 13:03:42,050 - INFO - ✅ Gemini AI initialized with model: gemini-2.5-flash-lite
2026-03-07 13:03:43,175 - INFO - ✅ Gemini AI test successful
2026-03-07 13:03:43,175 - INFO - 🗄 Archiving old deals...
2026-03-07 13:03:43,176 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:03:43,177 - DEBUG - send_request_headers.complete
2026-03-07 13:03:43,177 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:03:43,177 - DEBUG - send_request_body.complete
2026-03-07 13:03:43,177 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:03:43,254 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:03:43 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'9d89cd46dee564a4-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/deals?created_at=lt.2026-03-05T13%3A03%3A43.175584%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'019cc865-8851-7791-8511-20085e5e56f5'), (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-07 13:03:43,254 - 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-05T13%3A03%3A43.175584%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-07 13:03:43,254 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:03:43,254 - DEBUG - receive_response_body.complete
2026-03-07 13:03:43,255 - DEBUG - response_closed.started
2026-03-07 13:03:43,255 - DEBUG - response_closed.complete
2026-03-07 13:03:43,255 - INFO - 🗑 Deleting old archived deals...
2026-03-07 13:03:43,256 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:03:43,256 - DEBUG - send_request_headers.complete
2026-03-07 13:03:43,256 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:03:43,256 - DEBUG - send_request_body.complete
2026-03-07 13:03:43,256 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:03:43,320 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:03:43 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'9d89cd475f5e64a4-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-28T13%3A03%3A43.255365%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'019cc865-889f-7bd5-9be3-1cf674c108c9'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'30'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:03:43,320 - 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-28T13%3A03%3A43.255365%2B00%3A00 "HTTP/1.1 200 OK"
2026-03-07 13:03:43,320 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:03:43,321 - DEBUG - receive_response_body.complete
2026-03-07 13:03:43,321 - DEBUG - response_closed.started
2026-03-07 13:03:43,321 - DEBUG - response_closed.complete
2026-03-07 13:03:43,713 - INFO - 🌐 Navigating to https://flcannabisdeals.org/todays-florida-dispensary-deals/
2026-03-07 13:03:57,865 - INFO - 📸 Found 28 potential deal images
2026-03-07 13:03:57,865 - INFO - 🔄 Processing batch 1/3 (10 images)
2026-03-07 13:03:57,865 - INFO - 🔄 Processing image: image_3_2127314448
2026-03-07 13:03:57,866 - INFO - 🔄 Processing image: image_4_283026642
2026-03-07 13:03:57,866 - INFO - 🔄 Processing image: image_5_1539164129
2026-03-07 13:03:57,866 - INFO - 🔄 Processing image: image_7_206561086
2026-03-07 13:03:57,866 - INFO - 🔄 Processing image: image_8_975854079
2026-03-07 13:03:57,866 - INFO - 🔄 Processing image: image_9_205637565
2026-03-07 13:03:57,866 - INFO - 🔄 Processing image: image_10_324343982
2026-03-07 13:03:57,866 - INFO - 🔄 Processing image: image_11_209331649
2026-03-07 13:03:57,866 - INFO - 🔄 Processing image: image_12_208408128
2026-03-07 13:03:57,867 - INFO - 🔄 Processing image: image_13_868795887
2026-03-07 13:03:57,923 - INFO - ✅ Downloaded: image_5_1539164129.webp
2026-03-07 13:03:57,923 - INFO - 🤖 Using original Gemini extraction for image_5_1539164129.webp
2026-03-07 13:03:57,925 - INFO - ✅ Downloaded: image_4_283026642.webp
2026-03-07 13:03:57,925 - INFO - 🤖 Using original Gemini extraction for image_4_283026642.webp
2026-03-07 13:03:57,928 - INFO - ✅ Downloaded: image_3_2127314448.webp
2026-03-07 13:03:57,928 - INFO - 🤖 Using original Gemini extraction for image_3_2127314448.webp
2026-03-07 13:03:59,153 - INFO - 📊 First pass extracted 9 deals
2026-03-07 13:03:59,153 - DEBUG - Normalizing dispensary: 'Surterra' -> 'surterra'
2026-03-07 13:03:59,153 - DEBUG - Exact match found: 'Surterra' -> 'surterra'
2026-03-07 13:03:59,153 - WARNING - DEBUG: Normalized Surterra -> surterra
2026-03-07 13:03:59,153 - INFO - ✅ Processed image_5_1539164129: 9 deals from Surterra
2026-03-07 13:04:00,745 - INFO - 📊 First pass extracted 5 deals
2026-03-07 13:04:00,745 - INFO - 🔄 Deal count (5) below threshold, running refinement pass...
2026-03-07 13:04:01,361 - INFO - ✅ Refinement pass found 1 additional deals
2026-03-07 13:04:01,362 - INFO - 📈 Total deals after refinement: 6 (1 new unique deals)
2026-03-07 13:04:01,362 - DEBUG - Normalizing dispensary: 'MINT CANNABIS' -> 'mint cannabis'
2026-03-07 13:04:01,362 - DEBUG - Exact match found: 'MINT CANNABIS' -> 'mint-cannabis'
2026-03-07 13:04:01,362 - WARNING - DEBUG: Normalized MINT CANNABIS -> mint-cannabis
2026-03-07 13:04:01,362 - INFO - ✅ Processed image_4_283026642: 6 deals from MINT CANNABIS
2026-03-07 13:04:01,364 - INFO - ✅ Downloaded: image_11_209331649.jpg
2026-03-07 13:04:01,364 - INFO - 🤖 Using original Gemini extraction for image_11_209331649.jpg
2026-03-07 13:04:02,650 - INFO - 📊 First pass extracted 8 deals
2026-03-07 13:04:02,650 - DEBUG - Normalizing dispensary: 'Trulieve' -> 'trulieve'
2026-03-07 13:04:02,651 - DEBUG - Exact match found: 'Trulieve' -> 'trulieve'
2026-03-07 13:04:02,651 - WARNING - DEBUG: Normalized Trulieve -> trulieve
2026-03-07 13:04:02,651 - INFO - ✅ Processed image_3_2127314448: 8 deals from Trulieve
2026-03-07 13:04:02,652 - INFO - ✅ Downloaded: image_12_208408128.jpg
2026-03-07 13:04:02,653 - INFO - 🤖 Using original Gemini extraction for image_12_208408128.jpg
2026-03-07 13:04:02,656 - INFO - ✅ Downloaded: image_10_324343982.jpg
2026-03-07 13:04:02,656 - INFO - 🤖 Using original Gemini extraction for image_10_324343982.jpg
2026-03-07 13:04:02,658 - INFO - ✅ Downloaded: image_9_205637565.jpg
2026-03-07 13:04:02,658 - INFO - 🤖 Using original Gemini extraction for image_9_205637565.jpg
2026-03-07 13:04:04,650 - INFO - 📊 First pass extracted 16 deals
2026-03-07 13:04:04,650 - DEBUG - Normalizing dispensary: 'GrowHealthy' -> 'growhealthy'
2026-03-07 13:04:04,651 - DEBUG - Exact match found: 'GrowHealthy' -> 'grow-healthy'
2026-03-07 13:04:04,651 - WARNING - DEBUG: Normalized GrowHealthy -> grow-healthy
2026-03-07 13:04:04,651 - INFO - ✅ Processed image_11_209331649: 16 deals from GrowHealthy
2026-03-07 13:04:07,187 - INFO - 📊 First pass extracted 11 deals
2026-03-07 13:04:07,187 - DEBUG - Normalizing dispensary: 'planet 13 FLORIDA' -> 'planet 13 florida'
2026-03-07 13:04:07,187 - DEBUG - Variant match: 'planet 13' in 'planet 13 florida' -> 'planet-13'
2026-03-07 13:04:07,187 - WARNING - DEBUG: Normalized planet 13 FLORIDA -> planet-13
2026-03-07 13:04:07,187 - INFO - ✅ Processed image_12_208408128: 11 deals from planet 13 FLORIDA
2026-03-07 13:04:07,189 - INFO - ✅ Downloaded: image_8_975854079.jpg
2026-03-07 13:04:07,189 - INFO - 🤖 Using original Gemini extraction for image_8_975854079.jpg
2026-03-07 13:04:07,191 - INFO - ✅ Downloaded: image_13_868795887.jpg
2026-03-07 13:04:07,191 - INFO - 🤖 Using original Gemini extraction for image_13_868795887.jpg
2026-03-07 13:04:08,365 - INFO - 📊 First pass extracted 4 deals
2026-03-07 13:04:08,366 - INFO - 🔄 Deal count (4) below threshold, running refinement pass...
2026-03-07 13:04:08,948 - INFO - ℹ Refinement pass found no additional deals
2026-03-07 13:04:08,948 - DEBUG - Normalizing dispensary: 'SUNBURN CANNABIS' -> 'sunburn cannabis'
2026-03-07 13:04:08,948 - DEBUG - Exact match found: 'SUNBURN CANNABIS' -> 'sunburn'
2026-03-07 13:04:08,948 - WARNING - DEBUG: Normalized SUNBURN CANNABIS -> sunburn
2026-03-07 13:04:08,948 - INFO - ✅ Processed image_10_324343982: 4 deals from SUNBURN CANNABIS
2026-03-07 13:04:11,303 - INFO - 📊 First pass extracted 10 deals
2026-03-07 13:04:11,303 - DEBUG - Normalizing dispensary: 'Curaleaf' -> 'curaleaf'
2026-03-07 13:04:11,303 - DEBUG - Exact match found: 'Curaleaf' -> 'curaleaf'
2026-03-07 13:04:11,303 - WARNING - DEBUG: Normalized Curaleaf -> curaleaf
2026-03-07 13:04:11,303 - INFO - ✅ Processed image_9_205637565: 10 deals from Curaleaf
2026-03-07 13:04:11,305 - INFO - ✅ Downloaded: image_7_206561086.jpg
2026-03-07 13:04:11,305 - INFO - 🤖 Using original Gemini extraction for image_7_206561086.jpg
2026-03-07 13:04:12,690 - INFO - 📊 First pass extracted 9 deals
2026-03-07 13:04:12,690 - DEBUG - Normalizing dispensary: 'FLUENT CANNABIS CARE' -> 'fluent cannabis care'
2026-03-07 13:04:12,691 - DEBUG - Variant match: 'fluent' in 'fluent cannabis care' -> 'fluent'
2026-03-07 13:04:12,691 - WARNING - DEBUG: Normalized FLUENT CANNABIS CARE -> fluent
2026-03-07 13:04:12,691 - INFO - ✅ Processed image_8_975854079: 9 deals from FLUENT CANNABIS CARE
2026-03-07 13:04:18,001 - INFO - 📊 First pass extracted 82 deals
2026-03-07 13:04:18,001 - DEBUG - Normalizing dispensary: 'Sunnyside' -> 'sunnyside'
2026-03-07 13:04:18,001 - DEBUG - Exact match found: 'Sunnyside' -> 'sunnyside'
2026-03-07 13:04:18,001 - WARNING - DEBUG: Normalized Sunnyside -> sunnyside
2026-03-07 13:04:18,001 - INFO - ✅ Processed image_13_868795887: 82 deals from Sunnyside
2026-03-07 13:04:21,928 - INFO - 📊 First pass extracted 25 deals
2026-03-07 13:04:21,928 - DEBUG - Normalizing dispensary: 'Mint Cannabis' -> 'mint cannabis'
2026-03-07 13:04:21,928 - DEBUG - Exact match found: 'Mint Cannabis' -> 'mint-cannabis'
2026-03-07 13:04:21,928 - WARNING - DEBUG: Normalized Mint Cannabis -> mint-cannabis
2026-03-07 13:04:21,929 - INFO - ✅ Processed image_7_206561086: 25 deals from Mint Cannabis
2026-03-07 13:04:21,931 - DEBUG - close.started
2026-03-07 13:04:21,932 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:21,933 - DEBUG - close.complete
2026-03-07 13:04:21,933 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:21,935 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:21,935 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:21,936 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:21,937 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:21,938 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:21,939 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:21,940 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:21,941 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:21,943 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213f190>
2026-03-07 13:04:21,944 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2090a60>
2026-03-07 13:04:21,944 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:21,944 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:21,944 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213e650>
2026-03-07 13:04:21,945 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:21,945 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213eec0>
2026-03-07 13:04:21,945 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:21,946 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f960e0>
2026-03-07 13:04:21,946 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f03700>
2026-03-07 13:04:21,946 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f94820>
2026-03-07 13:04:21,946 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f952d0>
2026-03-07 13:04:21,946 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213c040>
2026-03-07 13:04:21,946 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2090a30>
2026-03-07 13:04:21,947 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:21,947 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:21,947 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:21,947 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:21,947 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:21,947 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:21,952 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f95c00>
2026-03-07 13:04:21,952 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,953 - DEBUG - send_request_headers.complete
2026-03-07 13:04:21,953 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:21,953 - DEBUG - send_request_body.complete
2026-03-07 13:04:21,953 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,954 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f97e50>
2026-03-07 13:04:21,954 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213da50>
2026-03-07 13:04:21,955 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f97730>
2026-03-07 13:04:21,955 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f94a30>
2026-03-07 13:04:21,955 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213ee60>
2026-03-07 13:04:21,955 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f948e0>
2026-03-07 13:04:21,955 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,956 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f03730>
2026-03-07 13:04:21,956 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,956 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,956 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,956 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,957 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,957 - DEBUG - send_request_headers.complete
2026-03-07 13:04:21,957 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,958 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2090730>
2026-03-07 13:04:21,958 - DEBUG - send_request_headers.complete
2026-03-07 13:04:21,958 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213eb00>
2026-03-07 13:04:21,958 - DEBUG - send_request_headers.complete
2026-03-07 13:04:21,959 - DEBUG - send_request_headers.complete
2026-03-07 13:04:21,959 - DEBUG - send_request_headers.complete
2026-03-07 13:04:21,960 - DEBUG - send_request_headers.complete
2026-03-07 13:04:21,960 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:21,960 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,960 - DEBUG - send_request_headers.complete
2026-03-07 13:04:21,960 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:21,961 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,961 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:21,961 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:21,961 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:21,961 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:21,961 - DEBUG - send_request_body.complete
2026-03-07 13:04:21,962 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:21,962 - DEBUG - send_request_body.complete
2026-03-07 13:04:21,962 - DEBUG - send_request_headers.complete
2026-03-07 13:04:21,963 - DEBUG - send_request_headers.complete
2026-03-07 13:04:21,963 - DEBUG - send_request_body.complete
2026-03-07 13:04:21,963 - DEBUG - send_request_body.complete
2026-03-07 13:04:21,963 - DEBUG - send_request_body.complete
2026-03-07 13:04:21,963 - DEBUG - send_request_body.complete
2026-03-07 13:04:21,963 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,964 - DEBUG - send_request_body.complete
2026-03-07 13:04:21,964 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,964 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:21,964 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,964 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,965 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,965 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,965 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,965 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:21,965 - DEBUG - send_request_body.complete
2026-03-07 13:04:21,966 - DEBUG - send_request_body.complete
2026-03-07 13:04:21,966 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:21,966 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:22,079 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce393c8c8731-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.sunnyside'), (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'019cc866-1fce-7b66-a1f5-4184e0cfe286'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'82'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,080 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.sunnyside&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:22,080 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:22,080 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,080 - DEBUG - response_closed.started
2026-03-07 13:04:22,080 - DEBUG - response_closed.complete
2026-03-07 13:04:22,080 - DEBUG - close.started
2026-03-07 13:04:22,081 - DEBUG - close.complete
2026-03-07 13:04:22,081 - DEBUG - 🏷 Product types: ['flower', 'vapes', 'pre-rolls', 'concentrates', 'edibles', 'tinctures', 'syringes'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-07 13:04:22,082 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:22,085 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1ec5450>
2026-03-07 13:04:22,085 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:22,086 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce393b921714-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.sunburn'), (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'019cc866-1fce-7d02-b325-5df54992456f'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'89'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,086 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.sunburn&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:22,086 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:22,087 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,087 - DEBUG - response_closed.started
2026-03-07 13:04:22,087 - DEBUG - response_closed.complete
2026-03-07 13:04:22,087 - DEBUG - close.started
2026-03-07 13:04:22,087 - DEBUG - close.complete
2026-03-07 13:04:22,087 - DEBUG - 🏷 Product types: ['vape carts'] → Category ID: aef34cfe-fd6c-49e8-968e-e15370d1a976
2026-03-07 13:04:22,088 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:22,089 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce3949c15609-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.curaleaf'), (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'019cc866-1fd4-75ab-a586-a9c2cb921339'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'89'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,089 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.curaleaf&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:22,089 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:22,090 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,090 - DEBUG - response_closed.started
2026-03-07 13:04:22,090 - DEBUG - response_closed.complete
2026-03-07 13:04:22,090 - DEBUG - close.started
2026-03-07 13:04:22,090 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce393ab37818-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.surterra'), (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'019cc866-1fca-71ca-a3ae-b27b587e89a2'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'97'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,091 - DEBUG - close.complete
2026-03-07 13:04:22,091 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.surterra&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:22,091 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1ec5930>
2026-03-07 13:04:22,092 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1ec5420>
2026-03-07 13:04:22,092 - DEBUG - 🏷 Product types: ['cartridges', 'cliq vapes', 'live rosin', 'edibles', 'pre-rolls', 'vapes'] → Category ID: aef34cfe-fd6c-49e8-968e-e15370d1a976
2026-03-07 13:04:22,092 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:22,092 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:22,092 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,093 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:22,094 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,094 - DEBUG - send_request_headers.complete
2026-03-07 13:04:22,095 - DEBUG - response_closed.started
2026-03-07 13:04:22,095 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,095 - DEBUG - response_closed.complete
2026-03-07 13:04:22,095 - DEBUG - close.started
2026-03-07 13:04:22,095 - DEBUG - send_request_body.complete
2026-03-07 13:04:22,095 - DEBUG - close.complete
2026-03-07 13:04:22,095 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,096 - DEBUG - 🏷 Product types: ['edibles'] → Category ID: 65f5b0cf-e95a-490e-bea8-bcb1722fde4a
2026-03-07 13:04:22,097 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:22,097 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce394d42905c-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.fluent'), (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'019cc866-1fd2-7cca-b954-e7b56a7ae6d6'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'86'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,098 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.fluent&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:22,098 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f3ca90>
2026-03-07 13:04:22,098 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:22,098 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:22,099 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,099 - DEBUG - response_closed.started
2026-03-07 13:04:22,099 - DEBUG - response_closed.complete
2026-03-07 13:04:22,099 - DEBUG - close.started
2026-03-07 13:04:22,099 - DEBUG - close.complete
2026-03-07 13:04:22,099 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1ec5960>
2026-03-07 13:04:22,099 - DEBUG - 🏷 Product types: ['flower', 'vapes'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-07 13:04:22,100 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,100 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:22,101 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2e02470>
2026-03-07 13:04:22,101 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce3949174f75-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.mint-cannabis'), (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'019cc866-1fcf-7dbe-baa5-5fe6c47aaa1d'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'101'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,101 - DEBUG - send_request_headers.complete
2026-03-07 13:04:22,102 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:22,102 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.mint-cannabis&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:22,102 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,103 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:22,103 - DEBUG - send_request_body.complete
2026-03-07 13:04:22,104 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,104 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,104 - DEBUG - response_closed.started
2026-03-07 13:04:22,104 - DEBUG - response_closed.complete
2026-03-07 13:04:22,104 - DEBUG - close.started
2026-03-07 13:04:22,105 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2e00f10>
2026-03-07 13:04:22,105 - DEBUG - close.complete
2026-03-07 13:04:22,105 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,105 - DEBUG - 🏷 Product types: ['all-in-one vapes', 'pre-rolls', 'vapes', 'flower', 'ground flower', 'bulk flower', 'distillate vapes', 'live resin vapes', 'concentrates', 'tinctures', 'rso chocolates', 'capsules', 'edibles', 'dablicators'] → Category ID: aef34cfe-fd6c-49e8-968e-e15370d1a976
2026-03-07 13:04:22,106 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:22,106 - DEBUG - send_request_headers.complete
2026-03-07 13:04:22,106 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,107 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1e4a5c0>
2026-03-07 13:04:22,107 - DEBUG - send_request_body.complete
2026-03-07 13:04:22,107 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:22,107 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,109 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2e00160>
2026-03-07 13:04:22,109 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,109 - DEBUG - send_request_headers.complete
2026-03-07 13:04:22,109 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce394b2cc062-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.trulieve'), (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'019cc866-1fd1-7163-b147-b3487fb5d0e2'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'103'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,110 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,110 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.trulieve&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:22,110 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:22,110 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e20e67d0>
2026-03-07 13:04:22,111 - DEBUG - send_request_body.complete
2026-03-07 13:04:22,111 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,111 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:22,111 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,111 - DEBUG - response_closed.started
2026-03-07 13:04:22,112 - DEBUG - response_closed.complete
2026-03-07 13:04:22,112 - DEBUG - close.started
2026-03-07 13:04:22,112 - DEBUG - close.complete
2026-03-07 13:04:22,112 - DEBUG - 🏷 Product types: ['flower'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-07 13:04:22,113 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:22,113 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce394bb88fbb-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.mint-cannabis'), (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'019cc866-1fd0-755f-a78c-4789bf0b4885'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'105'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,114 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.mint-cannabis&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:22,114 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:22,114 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,115 - DEBUG - response_closed.started
2026-03-07 13:04:22,115 - DEBUG - response_closed.complete
2026-03-07 13:04:22,115 - DEBUG - close.started
2026-03-07 13:04:22,115 - DEBUG - close.complete
2026-03-07 13:04:22,115 - DEBUG - 🏷 Product types: ['capsules', 'flower'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-07 13:04:22,116 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:22,116 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e20e61d0>
2026-03-07 13:04:22,116 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,116 - DEBUG - send_request_headers.complete
2026-03-07 13:04:22,116 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,116 - DEBUG - send_request_body.complete
2026-03-07 13:04:22,117 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f02560>
2026-03-07 13:04:22,117 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,117 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:22,118 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e20e54e0>
2026-03-07 13:04:22,118 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,118 - DEBUG - send_request_headers.complete
2026-03-07 13:04:22,118 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,118 - DEBUG - send_request_body.complete
2026-03-07 13:04:22,118 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,119 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e20e4ca0>
2026-03-07 13:04:22,119 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:22,123 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e20e7700>
2026-03-07 13:04:22,124 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,124 - DEBUG - send_request_headers.complete
2026-03-07 13:04:22,124 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,124 - DEBUG - send_request_body.complete
2026-03-07 13:04:22,124 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,126 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e20e5ed0>
2026-03-07 13:04:22,126 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,126 - DEBUG - send_request_headers.complete
2026-03-07 13:04:22,126 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,126 - DEBUG - send_request_body.complete
2026-03-07 13:04:22,126 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,138 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce394ccd93a4-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.grow-healthy'), (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'019cc866-1fd3-7480-9045-fa6f12ed6932'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'123'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,138 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.grow-healthy&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:22,138 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:22,139 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,139 - DEBUG - response_closed.started
2026-03-07 13:04:22,139 - DEBUG - response_closed.complete
2026-03-07 13:04:22,139 - DEBUG - close.started
2026-03-07 13:04:22,139 - DEBUG - close.complete
2026-03-07 13:04:22,139 - DEBUG - 🏷 Product types: ['pre-rolls', 'flower', 'live rosin', 'live resin', 'sauce carts', 'crumble carts', 'distillate carts', 'aio carts'] → Category ID: d4320c11-eabe-486e-a3a2-8a4b0392f33c
2026-03-07 13:04:22,140 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:22,143 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce394ca1e007-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.planet-13'), (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'019cc866-1fd2-72f7-8afc-0fb0a1c0a975'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'139'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,143 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f3c490>
2026-03-07 13:04:22,143 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.planet-13&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:22,143 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:22,144 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:22,144 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,144 - DEBUG - response_closed.started
2026-03-07 13:04:22,144 - DEBUG - response_closed.complete
2026-03-07 13:04:22,144 - DEBUG - close.started
2026-03-07 13:04:22,144 - DEBUG - close.complete
2026-03-07 13:04:22,144 - DEBUG - 🏷 Product types: ['pre-rolls', 'nanos', 'vapes', 'syringes', 'tinctures', 'edibles', 'flower', 'concentrates'] → Category ID: d4320c11-eabe-486e-a3a2-8a4b0392f33c
2026-03-07 13:04:22,145 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:22,148 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1e490c0>
2026-03-07 13:04:22,148 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:22,150 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f3e3e0>
2026-03-07 13:04:22,150 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,150 - DEBUG - send_request_headers.complete
2026-03-07 13:04:22,151 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,151 - DEBUG - send_request_body.complete
2026-03-07 13:04:22,151 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,155 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1e49120>
2026-03-07 13:04:22,155 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,155 - DEBUG - send_request_headers.complete
2026-03-07 13:04:22,155 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,155 - DEBUG - send_request_body.complete
2026-03-07 13:04:22,156 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:22,222 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce3a3b6ecf54-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'019cc866-2065-77a4-9812-68f961f7bba7'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'76'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,223 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:22,223 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,223 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,223 - DEBUG - response_closed.started
2026-03-07 13:04:22,223 - DEBUG - response_closed.complete
2026-03-07 13:04:22,223 - DEBUG - close.started
2026-03-07 13:04:22,224 - DEBUG - close.complete
2026-03-07 13:04:22,224 - INFO - ✅ Inserted deal: Surterra - Free Wana Quick Deals for New & Existing Patients
2026-03-07 13:04:22,225 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce3a3d264ce6-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'019cc866-206f-734b-9354-3b61f6769e5e'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'64'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,225 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:22,226 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,226 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,226 - DEBUG - response_closed.started
2026-03-07 13:04:22,226 - DEBUG - response_closed.complete
2026-03-07 13:04:22,226 - DEBUG - close.started
2026-03-07 13:04:22,227 - DEBUG - close.complete
2026-03-07 13:04:22,227 - INFO - ✅ Inserted deal: Fluent - Up To 70% Off & Flower Deals
2026-03-07 13:04:22,229 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce3a28a0d961-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'019cc866-2068-7c74-8611-07b3ed488f11'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'71'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,229 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:22,229 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,229 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce3a3c9f1bf6-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'019cc866-2070-7bef-b832-550fe86acd4d'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'67'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,230 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:22,230 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,231 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,231 - DEBUG - response_closed.started
2026-03-07 13:04:22,231 - DEBUG - response_closed.complete
2026-03-07 13:04:22,231 - DEBUG - close.started
2026-03-07 13:04:22,231 - DEBUG - close.complete
2026-03-07 13:04:22,232 - INFO - ✅ Inserted deal: Sunburn Cannabis - Storewide Discounts and Vape Specials
2026-03-07 13:04:22,232 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce3a18b40c51-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'019cc866-2058-7b69-95e1-0e5b07fada6d'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'93'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,232 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,233 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce3a2ce8f343-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'019cc866-206a-74e3-858f-9769652f761e'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'73'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,233 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce3a7c4e4d16-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'019cc866-2096-79f9-8a0f-555d61980d29'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'33'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,234 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce3a4cbc4cfe-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'019cc866-207e-7025-9cb1-1790312404b9'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'56'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,235 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:22,236 - DEBUG - response_closed.started
2026-03-07 13:04:22,236 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce3a4d5bebd5-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'019cc866-2080-7764-accf-06cef09bc392'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'56'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,237 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:22 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'9d89ce3a7c484d16-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'019cc866-2092-77fd-9785-8240511a7bf5'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'42'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:22,238 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:22,238 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:22,239 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:22,239 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,239 - DEBUG - response_closed.complete
2026-03-07 13:04:22,240 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:22,241 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:22,241 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,242 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,242 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,243 - DEBUG - close.started
2026-03-07 13:04:22,243 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,243 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:22,245 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,245 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,246 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,246 - DEBUG - close.complete
2026-03-07 13:04:22,246 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,247 - DEBUG - response_closed.started
2026-03-07 13:04:22,247 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,247 - DEBUG - response_closed.started
2026-03-07 13:04:22,247 - DEBUG - response_closed.started
2026-03-07 13:04:22,248 - DEBUG - receive_response_body.complete
2026-03-07 13:04:22,248 - INFO - ✅ Inserted deal: Mint Cannabis - Ground Flower & Vape Deals: BOGO & Up to 50% Off!
2026-03-07 13:04:22,249 - DEBUG - response_closed.started
2026-03-07 13:04:22,249 - DEBUG - response_closed.complete
2026-03-07 13:04:22,249 - DEBUG - response_closed.complete
2026-03-07 13:04:22,249 - DEBUG - response_closed.complete
2026-03-07 13:04:22,250 - DEBUG - response_closed.started
2026-03-07 13:04:22,250 - DEBUG - response_closed.complete
2026-03-07 13:04:22,251 - DEBUG - response_closed.started
2026-03-07 13:04:22,251 - DEBUG - close.started
2026-03-07 13:04:22,252 - INFO - ✅ Inserted deal: Sunnyside - Mix & Match Vapes, Flower Deals & More
2026-03-07 13:04:22,252 - DEBUG - response_closed.complete
2026-03-07 13:04:22,253 - INFO - ✅ Inserted deal: Planet 13 - 50% Off Pre-Rolls & Vapes, 30% Off Flower & Rosin
2026-03-07 13:04:22,253 - DEBUG - response_closed.complete
2026-03-07 13:04:22,254 - INFO - ✅ Inserted deal: Curaleaf - Storewide Savings, BOGO, & More!
2026-03-07 13:04:22,254 - DEBUG - close.complete
2026-03-07 13:04:22,255 - INFO - ✅ Inserted deal: Grow Healthy - Flower, Vapes & More Deals!
2026-03-07 13:04:22,257 - INFO - ✅ Inserted deal: Mint Cannabis - Monthly Specials: Days of the Month Deals
2026-03-07 13:04:22,258 - INFO - ✅ Inserted deal: Trulieve - Save Big on Flower Bundles
2026-03-07 13:04:22,261 - INFO - ✅ Batch 1 completed: 10 processed, 10 deals inserted
2026-03-07 13:04:22,261 - INFO - 🔄 Processing batch 2/3 (10 images)
2026-03-07 13:04:22,261 - INFO - 🔄 Processing image: image_14_1551121141
2026-03-07 13:04:22,261 - INFO - 🔄 Processing image: image_15_1379210405
2026-03-07 13:04:22,261 - INFO - 🔄 Processing image: image_16_234266716
2026-03-07 13:04:22,262 - INFO - 🔄 Processing image: image_17_233343195
2026-03-07 13:04:22,262 - INFO - 🔄 Processing image: image_18_1725888082
2026-03-07 13:04:22,262 - INFO - 🔄 Processing image: image_19_367122568
2026-03-07 13:04:22,262 - INFO - 🔄 Processing image: image_20_2066027360
2026-03-07 13:04:22,262 - INFO - 🔄 Processing image: image_21_781112938
2026-03-07 13:04:22,262 - INFO - 🔄 Processing image: image_22_1358497160
2026-03-07 13:04:22,262 - INFO - 🔄 Processing image: image_23_2146199388
2026-03-07 13:04:22,297 - INFO - ✅ Downloaded: image_21_781112938.jpg
2026-03-07 13:04:22,297 - INFO - 🤖 Using original Gemini extraction for image_21_781112938.jpg
2026-03-07 13:04:23,465 - INFO - 📊 First pass extracted 4 deals
2026-03-07 13:04:23,465 - INFO - 🔄 Deal count (4) below threshold, running refinement pass...
2026-03-07 13:04:24,062 - INFO - ✅ Refinement pass found 1 additional deals
2026-03-07 13:04:24,062 - INFO - 📈 Total deals after refinement: 5 (1 new unique deals)
2026-03-07 13:04:24,062 - DEBUG - Normalizing dispensary: 'One Plant Cannabis' -> 'one plant cannabis'
2026-03-07 13:04:24,062 - DEBUG - Exact match found: 'One Plant Cannabis' -> 'one-plant'
2026-03-07 13:04:24,062 - WARNING - DEBUG: Normalized One Plant Cannabis -> one-plant
2026-03-07 13:04:24,062 - INFO - ✅ Processed image_21_781112938: 5 deals from One Plant Cannabis
2026-03-07 13:04:24,072 - INFO - ✅ Downloaded: image_22_1358497160.jpg
2026-03-07 13:04:24,072 - INFO - 🤖 Using original Gemini extraction for image_22_1358497160.jpg
2026-03-07 13:04:24,073 - INFO - ✅ Downloaded: image_20_2066027360.jpg
2026-03-07 13:04:24,074 - INFO - 🤖 Using original Gemini extraction for image_20_2066027360.jpg
2026-03-07 13:04:25,766 - INFO - 📊 First pass extracted 11 deals
2026-03-07 13:04:25,766 - DEBUG - Normalizing dispensary: 'Cookies' -> 'cookies'
2026-03-07 13:04:25,767 - DEBUG - Exact match found: 'Cookies' -> 'cookies'
2026-03-07 13:04:25,767 - WARNING - DEBUG: Normalized Cookies -> cookies
2026-03-07 13:04:25,767 - INFO - ✅ Processed image_20_2066027360: 11 deals from Cookies
2026-03-07 13:04:25,767 - INFO - ✅ Downloaded: image_19_367122568.jpg
2026-03-07 13:04:25,768 - INFO - 🤖 Using original Gemini extraction for image_19_367122568.jpg
2026-03-07 13:04:27,497 - INFO - 📊 First pass extracted 16 deals
2026-03-07 13:04:27,497 - DEBUG - Normalizing dispensary: 'Goldflower Cannabis' -> 'goldflower cannabis'
2026-03-07 13:04:27,497 - DEBUG - Exact match found: 'Goldflower Cannabis' -> 'goldflower'
2026-03-07 13:04:27,497 - WARNING - DEBUG: Normalized Goldflower Cannabis -> goldflower
2026-03-07 13:04:27,497 - INFO - ✅ Processed image_22_1358497160: 16 deals from Goldflower Cannabis
2026-03-07 13:04:27,499 - INFO - ✅ Downloaded: image_14_1551121141.webp
2026-03-07 13:04:27,499 - INFO - 🤖 Using original Gemini extraction for image_14_1551121141.webp
2026-03-07 13:04:27,500 - INFO - ✅ Downloaded: image_15_1379210405.jpg
2026-03-07 13:04:27,500 - INFO - 🤖 Using original Gemini extraction for image_15_1379210405.jpg
2026-03-07 13:04:27,501 - INFO - ✅ Downloaded: image_16_234266716.jpg
2026-03-07 13:04:27,501 - INFO - 🤖 Using original Gemini extraction for image_16_234266716.jpg
2026-03-07 13:04:27,503 - INFO - ✅ Downloaded: image_23_2146199388.jpg
2026-03-07 13:04:27,503 - INFO - 🤖 Using original Gemini extraction for image_23_2146199388.jpg
2026-03-07 13:04:27,505 - INFO - ✅ Downloaded: image_17_233343195.jpg
2026-03-07 13:04:27,505 - INFO - 🤖 Using original Gemini extraction for image_17_233343195.jpg
2026-03-07 13:04:28,903 - INFO - 📊 First pass extracted 0 deals
2026-03-07 13:04:28,903 - INFO - 🔄 Deal count (0) below threshold, running refinement pass...
2026-03-07 13:04:29,380 - INFO - ℹ Refinement pass found no additional deals
2026-03-07 13:04:29,381 - WARNING - ⚠ Invalid data from image_14_1551121141: dispensary=Knack, deals=0
2026-03-07 13:04:31,575 - INFO - 📊 First pass extracted 13 deals
2026-03-07 13:04:31,575 - DEBUG - Normalizing dispensary: 'GREEN DRAGON' -> 'green dragon'
2026-03-07 13:04:31,575 - DEBUG - Exact match found: 'GREEN DRAGON' -> 'green-dragon'
2026-03-07 13:04:31,575 - WARNING - DEBUG: Normalized GREEN DRAGON -> green-dragon
2026-03-07 13:04:31,576 - INFO - ✅ Processed image_19_367122568: 13 deals from GREEN DRAGON
2026-03-07 13:04:33,022 - INFO - 📊 First pass extracted 9 deals
2026-03-07 13:04:33,022 - DEBUG - Normalizing dispensary: 'AVR Cannabis Dispensary' -> 'avr cannabis dispensary'
2026-03-07 13:04:33,022 - DEBUG - Variant match: 'avr' in 'avr cannabis dispensary' -> 'ayr'
2026-03-07 13:04:33,022 - WARNING - DEBUG: Normalized AVR Cannabis Dispensary -> ayr
2026-03-07 13:04:33,022 - INFO - ✅ Processed image_15_1379210405: 9 deals from AVR Cannabis Dispensary
2026-03-07 13:04:34,877 - INFO - 📊 First pass extracted 5 deals
2026-03-07 13:04:34,877 - INFO - 🔄 Deal count (5) below threshold, running refinement pass...
2026-03-07 13:04:35,608 - INFO - ✅ Refinement pass found 5 additional deals
2026-03-07 13:04:35,608 - INFO - 📈 Total deals after refinement: 5 (0 new unique deals)
2026-03-07 13:04:35,608 - DEBUG - Normalizing dispensary: 'Jungle Boys' -> 'jungle boys'
2026-03-07 13:04:35,608 - DEBUG - Exact match found: 'Jungle Boys' -> 'jungle-boys'
2026-03-07 13:04:35,608 - WARNING - DEBUG: Normalized Jungle Boys -> jungle-boys
2026-03-07 13:04:35,608 - INFO - ✅ Processed image_16_234266716: 5 deals from Jungle Boys
2026-03-07 13:04:38,289 - INFO - 📊 First pass extracted 31 deals
2026-03-07 13:04:38,289 - DEBUG - Normalizing dispensary: 'RISE' -> 'rise'
2026-03-07 13:04:38,289 - DEBUG - Exact match found: 'RISE' -> 'rise'
2026-03-07 13:04:38,289 - WARNING - DEBUG: Normalized RISE -> rise
2026-03-07 13:04:38,289 - INFO - ✅ Processed image_23_2146199388: 31 deals from RISE
2026-03-07 13:04:38,291 - INFO - ✅ Downloaded: image_18_1725888082.jpg
2026-03-07 13:04:38,291 - INFO - 🤖 Using original Gemini extraction for image_18_1725888082.jpg
2026-03-07 13:04:40,316 - INFO - 📊 First pass extracted 12 deals
2026-03-07 13:04:40,316 - DEBUG - Normalizing dispensary: 'MÜV' -> 'müv'
2026-03-07 13:04:40,316 - DEBUG - Exact match found: 'MÜV' -> 'muv'
2026-03-07 13:04:40,316 - WARNING - DEBUG: Normalized MÜV -> muv
2026-03-07 13:04:40,317 - INFO - ✅ Processed image_17_233343195: 12 deals from MÜV
2026-03-07 13:04:43,276 - INFO - 📊 First pass extracted 23 deals
2026-03-07 13:04:43,276 - DEBUG - Normalizing dispensary: 'Trulieve' -> 'trulieve'
2026-03-07 13:04:43,276 - DEBUG - Exact match found: 'Trulieve' -> 'trulieve'
2026-03-07 13:04:43,276 - WARNING - DEBUG: Normalized Trulieve -> trulieve
2026-03-07 13:04:43,276 - INFO - ✅ Processed image_18_1725888082: 23 deals from Trulieve
2026-03-07 13:04:43,279 - DEBUG - close.started
2026-03-07 13:04:43,279 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,280 - DEBUG - close.complete
2026-03-07 13:04:43,280 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,281 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,282 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,282 - DEBUG - close.started
2026-03-07 13:04:43,284 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,285 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,286 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,287 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,288 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f3e500>
2026-03-07 13:04:43,288 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2126680>
2026-03-07 13:04:43,289 - DEBUG - close.complete
2026-03-07 13:04:43,290 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f95bd0>
2026-03-07 13:04:43,290 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,290 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,291 - DEBUG - close.started
2026-03-07 13:04:43,291 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,291 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1e4b8e0>
2026-03-07 13:04:43,292 - DEBUG - close.complete
2026-03-07 13:04:43,293 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f95d20>
2026-03-07 13:04:43,293 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f94d00>
2026-03-07 13:04:43,293 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1e4a590>
2026-03-07 13:04:43,293 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,294 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,294 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f946a0>
2026-03-07 13:04:43,293 - DEBUG - close.started
2026-03-07 13:04:43,294 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,294 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,295 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,295 - DEBUG - close.complete
2026-03-07 13:04:43,297 - DEBUG - close.started
2026-03-07 13:04:43,297 - DEBUG - close.complete
2026-03-07 13:04:43,297 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,299 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e39a2ad0>
2026-03-07 13:04:43,299 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,299 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2124880>
2026-03-07 13:04:43,299 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f3c820>
2026-03-07 13:04:43,300 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,300 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,300 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,300 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2124250>
2026-03-07 13:04:43,303 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1e49360>
2026-03-07 13:04:43,303 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f95630>
2026-03-07 13:04:43,303 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f95930>
2026-03-07 13:04:43,304 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,304 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1e49450>
2026-03-07 13:04:43,304 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,305 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,305 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,305 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,305 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f96c20>
2026-03-07 13:04:43,305 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,306 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,306 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,306 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,306 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,307 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,307 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,308 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,308 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,309 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,309 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,309 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,309 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,310 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,310 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,310 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,311 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,311 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,311 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,311 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,312 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,312 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,313 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,313 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,313 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,313 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,313 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,313 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,314 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,314 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,314 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,314 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,315 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2127d60>
2026-03-07 13:04:43,316 - DEBUG - send_request_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,316 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,316 - DEBUG - send_request_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,316 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,316 - DEBUG - receive_response_headers.started request=<Request [b'GET']>
2026-03-07 13:04:43,338 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebea8a65609-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.trulieve'), (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'019cc866-732c-7a28-93da-4143391d36ab'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'4'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,339 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.trulieve&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,339 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,339 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,339 - DEBUG - response_closed.started
2026-03-07 13:04:43,339 - DEBUG - response_closed.complete
2026-03-07 13:04:43,339 - DEBUG - close.started
2026-03-07 13:04:43,340 - DEBUG - close.complete
2026-03-07 13:04:43,340 - DEBUG - 🏷 Product types: ['whole flower', 'vapes', 'concentrates', 'capsules'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-07 13:04:43,341 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,345 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1ec63e0>
2026-03-07 13:04:43,345 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,352 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1ec62c0>
2026-03-07 13:04:43,352 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,352 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,352 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,352 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,352 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,358 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebeabb767b0-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.jungle-boys'), (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'019cc866-732f-797f-9240-460fa2c057de'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'23'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,359 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.jungle-boys&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,359 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,359 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,360 - DEBUG - response_closed.started
2026-03-07 13:04:43,360 - DEBUG - response_closed.complete
2026-03-07 13:04:43,360 - DEBUG - close.started
2026-03-07 13:04:43,360 - DEBUG - close.complete
2026-03-07 13:04:43,360 - DEBUG - 🏷 Product types: ['flower', 'vapes', 'concentrates'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-07 13:04:43,361 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebeb9d40c7d-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.one-plant'), (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'019cc866-7335-7da2-b5e0-2d20f8146e65'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'18'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,362 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,362 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.one-plant&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,363 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebeb8dfae2c-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.green-dragon'), (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'019cc866-7337-7a22-b799-8756375c11af'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'15'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,363 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebebb1cc8dd-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.ayr'), (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'019cc866-733d-7e7a-9c1c-bf87272b6f7a'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'14'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,364 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,364 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebebc390860-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.goldflower'), (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'019cc866-7336-7dd4-8427-2b9a9fb8f0c1'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'18'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,364 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebeaf55b15f-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.muv'), (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'019cc866-7333-7a53-87f2-cb6d7b24020e'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'18'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,365 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.green-dragon&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,366 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.ayr&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,366 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebebd6ab5c1-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.rise'), (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'019cc866-7337-7c54-934d-a43d4f4bbbb0'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'15'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,367 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.goldflower&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,367 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,368 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2e03310>
2026-03-07 13:04:43,368 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.muv&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,369 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,369 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,369 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.rise&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,369 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,370 - DEBUG - response_closed.started
2026-03-07 13:04:43,370 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,370 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,370 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,371 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,371 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,371 - DEBUG - response_closed.complete
2026-03-07 13:04:43,371 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,371 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,372 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,372 - DEBUG - response_closed.started
2026-03-07 13:04:43,372 - DEBUG - response_closed.started
2026-03-07 13:04:43,372 - DEBUG - response_closed.complete
2026-03-07 13:04:43,372 - DEBUG - close.started
2026-03-07 13:04:43,373 - DEBUG - response_closed.started
2026-03-07 13:04:43,373 - DEBUG - response_closed.started
2026-03-07 13:04:43,373 - DEBUG - response_closed.started
2026-03-07 13:04:43,373 - DEBUG - response_closed.complete
2026-03-07 13:04:43,373 - DEBUG - close.started
2026-03-07 13:04:43,374 - DEBUG - close.complete
2026-03-07 13:04:43,374 - DEBUG - response_closed.complete
2026-03-07 13:04:43,374 - DEBUG - response_closed.complete
2026-03-07 13:04:43,374 - DEBUG - response_closed.complete
2026-03-07 13:04:43,375 - DEBUG - close.started
2026-03-07 13:04:43,375 - DEBUG - close.complete
2026-03-07 13:04:43,375 - DEBUG - close.started
2026-03-07 13:04:43,376 - DEBUG - 🏷 Product types: ['flower', 'concentrates', 'pre-rolls', 'vapes', 'edibles', 'tinctures'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-07 13:04:43,376 - DEBUG - 🏷 Product types: ['vapes', 'extracts', 'flower', 'edibles', 'merch'] → Category ID: b206c48b-5e7a-4727-accf-1554a9e2d147
2026-03-07 13:04:43,377 - DEBUG - 🏷 Product types: ['vapes', 'flower', 'concentrates'] → Category ID: b206c48b-5e7a-4727-accf-1554a9e2d147
2026-03-07 13:04:43,377 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213e530>
2026-03-07 13:04:43,377 - DEBUG - close.complete
2026-03-07 13:04:43,378 - DEBUG - close.complete
2026-03-07 13:04:43,378 - DEBUG - 🏷 Product types: ['vape cartridges', 'concentrates', 'flower'] → Category ID: aef34cfe-fd6c-49e8-968e-e15370d1a976
2026-03-07 13:04:43,379 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,380 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,381 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,382 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,382 - DEBUG - 🏷 Product types: ['select items', 'select apparel', 'pre-rolls', 'pods', 'cartridges', 'disposables', 'chews', 'syringes'] → Category ID: d4320c11-eabe-486e-a3a2-8a4b0392f33c
2026-03-07 13:04:43,384 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,384 - DEBUG - 🏷 Product types: ['kief', 'edibles'] → Category ID: 65f5b0cf-e95a-490e-bea8-bcb1722fde4a
2026-03-07 13:04:43,385 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,385 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,385 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,385 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,386 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,387 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,387 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebeab3c3535-BOS'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Content-Encoding', b'gzip'), (b'Content-Location', b'/dispensaries?is_active=eq.True&select=id%2Cname&slug=eq.cookies'), (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'019cc866-733a-758f-b263-4ab8af7452aa'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'2'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,388 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,389 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,389 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f029b0>
2026-03-07 13:04:43,389 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebefccb2c3e-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'019cc866-7360-73de-84b0-87c81fc8b634'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'5'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,389 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,390 - INFO - HTTP Request: GET https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/dispensaries?select=id%2Cname&slug=eq.cookies&is_active=eq.True "HTTP/1.1 200 OK"
2026-03-07 13:04:43,390 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,390 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,391 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,391 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,391 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f027a0>
2026-03-07 13:04:43,392 - DEBUG - receive_response_body.started request=<Request [b'GET']>
2026-03-07 13:04:43,392 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,392 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,393 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,393 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,393 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213d9f0>
2026-03-07 13:04:43,393 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,393 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,394 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e213dfc0>
2026-03-07 13:04:43,394 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,395 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,395 - DEBUG - response_closed.started
2026-03-07 13:04:43,395 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,395 - DEBUG - response_closed.started
2026-03-07 13:04:43,396 - DEBUG - response_closed.complete
2026-03-07 13:04:43,396 - DEBUG - response_closed.complete
2026-03-07 13:04:43,396 - DEBUG - close.started
2026-03-07 13:04:43,397 - INFO - ✅ Inserted deal: Trulieve - Flower Deals: 4 for $140, 4 for $110 & $17.50 Ounces
2026-03-07 13:04:43,397 - DEBUG - close.complete
2026-03-07 13:04:43,397 - DEBUG - close.started
2026-03-07 13:04:43,398 - DEBUG - close.complete
2026-03-07 13:04:43,399 - DEBUG - 🏷 Product types: ['flower', 'vapes', 'concentrates'] → Category ID: f611977d-71cf-45b8-9295-dad9c36b653b
2026-03-07 13:04:43,399 - DEBUG - connect_tcp.started host='mrngdyllepreqkxxmvqn.supabase.co' port=443 local_address=None timeout=30.0 socket_options=None
2026-03-07 13:04:43,400 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f02020>
2026-03-07 13:04:43,400 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,400 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,400 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,400 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,400 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,402 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f00b50>
2026-03-07 13:04:43,402 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,402 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,402 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,403 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,403 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,403 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e1f3dd50>
2026-03-07 13:04:43,403 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e20e5900>
2026-03-07 13:04:43,403 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,403 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,403 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2e00fa0>
2026-03-07 13:04:43,404 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,404 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,404 - DEBUG - start_tls.started ssl_context=<ssl.SSLContext object at 0x7f35e2337f40> server_hostname='mrngdyllepreqkxxmvqn.supabase.co' timeout=30.0
2026-03-07 13:04:43,404 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,404 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,405 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,405 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,405 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,405 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,411 - DEBUG - start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f35e2e03550>
2026-03-07 13:04:43,411 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,411 - DEBUG - send_request_headers.complete
2026-03-07 13:04:43,411 - DEBUG - send_request_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,411 - DEBUG - send_request_body.complete
2026-03-07 13:04:43,412 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2026-03-07 13:04:43,427 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf2dffb5c1-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'019cc866-7387-7f05-bd4c-47cd82714351'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'4'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,428 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,428 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,428 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,428 - DEBUG - response_closed.started
2026-03-07 13:04:43,428 - DEBUG - response_closed.complete
2026-03-07 13:04:43,429 - DEBUG - close.started
2026-03-07 13:04:43,429 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf295fae2c-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'019cc866-7385-75e3-89d5-1cbbd5befc90'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'5'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,429 - DEBUG - close.complete
2026-03-07 13:04:43,430 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,431 - INFO - ✅ Inserted deal: Müv - Flower, Vape, and Edible Deals Galore!
2026-03-07 13:04:43,431 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,431 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,432 - DEBUG - response_closed.started
2026-03-07 13:04:43,432 - DEBUG - response_closed.complete
2026-03-07 13:04:43,432 - DEBUG - close.started
2026-03-07 13:04:43,432 - DEBUG - close.complete
2026-03-07 13:04:43,433 - INFO - ✅ Inserted deal: Rise Dispensaries - Flower, Concentrates, Vapes, and Edibles Deals
2026-03-07 13:04:43,441 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf2e3fb109-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'019cc866-7386-70e3-a52b-1f4570d2a071'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'6'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,441 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,442 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,442 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf4b12f8c7-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'019cc866-7391-78ca-8326-d8ec080dc8da'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'7'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,443 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,443 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,443 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,444 - DEBUG - response_closed.started
2026-03-07 13:04:43,444 - DEBUG - response_closed.complete
2026-03-07 13:04:43,444 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,444 - DEBUG - close.started
2026-03-07 13:04:43,444 - DEBUG - response_closed.started
2026-03-07 13:04:43,445 - DEBUG - response_closed.complete
2026-03-07 13:04:43,445 - DEBUG - close.complete
2026-03-07 13:04:43,445 - INFO - ✅ Inserted deal: AYR Wellness - Vape & Concentrate Deals Galore!
2026-03-07 13:04:43,446 - INFO - ✅ Inserted deal: Jungle Boys - Flower, Vapes, and Concentrates Deals
2026-03-07 13:04:43,446 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf4fe32dab-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'019cc866-7395-73c4-84d7-5550e15fcbc5'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'4'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,448 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,449 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,449 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,449 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf4a57d5eb-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'019cc866-7394-7b0a-944d-0e10f3c86aaa'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'9'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,450 - DEBUG - response_closed.started
2026-03-07 13:04:43,450 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,450 - DEBUG - response_closed.complete
2026-03-07 13:04:43,450 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,451 - INFO - ✅ Inserted deal: GoldFlower - Percentage Off Deals, Product Specials, and Bulk Buys
2026-03-07 13:04:43,451 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,451 - DEBUG - response_closed.started
2026-03-07 13:04:43,451 - DEBUG - response_closed.complete
2026-03-07 13:04:43,452 - INFO - ✅ Inserted deal: Green Dragon - Big Discounts on Flower, Vapes, and Concentrates
2026-03-07 13:04:43,456 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf5fcb4d02-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'019cc866-739d-7b63-a61c-09ca1d0f8b09'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'5'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,457 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,457 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,457 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,457 - DEBUG - response_closed.started
2026-03-07 13:04:43,458 - DEBUG - response_closed.complete
2026-03-07 13:04:43,458 - INFO - ✅ Inserted deal: Cookies - Flower, Vapes, Concentrates Deals
2026-03-07 13:04:43,459 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 201, b'Created', [(b'Date', b'Sat, 07 Mar 2026 13:04:43 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'9d89cebf4d818f6c-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'019cc866-739b-7f92-8843-7c7812d12760'), (b'x-envoy-attempt-count', b'1'), (b'x-envoy-upstream-service-time', b'6'), (b'alt-svc', b'h3=":443"; ma=86400')])
2026-03-07 13:04:43,460 - INFO - HTTP Request: POST https://mrngdyllepreqkxxmvqn.supabase.co/rest/v1/deals "HTTP/1.1 201 Created"
2026-03-07 13:04:43,460 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2026-03-07 13:04:43,461 - DEBUG - receive_response_body.complete
2026-03-07 13:04:43,461 - DEBUG - response_closed.started
2026-03-07 13:04:43,461 - DEBUG - response_closed.complete
2026-03-07 13:04:43,462 - INFO - ✅ Inserted deal: One Plant Florida - Special Pricing & Spend $75 Offers
2026-03-07 13:04:43,463 - INFO - ✅ Batch 2 completed: 9 processed, 19 deals inserted
2026-03-07 13:04:43,463 - INFO - 🔄 Processing batch 3/3 (8 images)
2026-03-07 13:04:43,463 - INFO - 🔄 Processing image: image_24_1329197011
2026-03-07 13:04:43,463 - INFO - 🔄 Processing image: image_25_810399351
2026-03-07 13:04:43,464 - INFO - 🔄 Processing image: image_26_852658791
2026-03-07 13:04:43,464 - INFO - 🔄 Processing image: image_27_300195207
2026-03-07 13:04:43,464 - INFO - 🔄 Processing image: image_28_1278795828
2026-03-07 13:04:43,464 - INFO - 🔄 Processing image: image_30_716938862
2026-03-07 13:04:43,464 - INFO - 🔄 Processing image: image_31_1551121141
2026-03-07 13:04:43,464 - INFO - 🔄 Processing image: image_32_725973623
2026-03-07 13:04:43,496 - INFO - ✅ Downloaded: image_25_810399351.jpg
2026-03-07 13:04:43,496 - INFO - 🤖 Using original Gemini extraction for image_25_810399351.jpg
2026-03-07 13:04:45,735 - INFO - 📊 First pass extracted 16 deals
2026-03-07 13:04:45,735 - DEBUG - Normalizing dispensary: 'The Flowery' -> 'the flowery'
2026-03-07 13:04:45,735 - DEBUG - Exact match found: 'The Flowery' -> 'the-flowery'
2026-03-07 13:04:45,735 - WARNING - DEBUG: Normalized The Flowery -> the-flowery
2026-03-07 13:04:45,735 - INFO - ✅ Processed image_25_810399351: 16 deals from The Flowery
2026-03-07 13:04:45,738 - INFO - ✅ Downloaded: image_30_716938862.webp
2026-03-07 13:04:45,738 - INFO - 🤖 Using original Gemini extraction for image_30_716938862.webp
2026-03-07 13:04:46,751 - INFO - 📊 First pass extracted 4 deals
2026-03-07 13:04:46,752 - INFO - 🔄 Deal count (4) below threshold, running refinement pass...
2026-03-07 13:04:47,406 - INFO - ✅ Refinement pass found 4 additional deals
2026-03-07 13:04:47,406 - INFO - 📈 Total deals after refinement: 5 (1 new unique deals)
2026-03-07 13:04:47,406 - DEBUG - Normalizing dispensary: 'Cookies' -> 'cookies'
2026-03-07 13:04:47,407 - DEBUG - Exact match found: 'Cookies' -> 'cookies'
2026-03-07 13:04:47,407 - WARNING - DEBUG: Normalized Cookies -> cookies
2026-03-07 13:04:47,407 - INFO - ✅ Processed image_30_716938862: 5 deals from Cookies
2026-03-07 13:04:47,410 - INFO - ✅ Downloaded: image_32_725973623.webp
2026-03-07 13:04:47,411 - INFO - 🤖 Using original Gemini extraction for image_32_725973623.webp
2026-03-07 13:04:47,411 - INFO - ✅ Downloaded: image_26_852658791.jpg
2026-03-07 13:04:47,412 - INFO - 🤖 Using original Gemini extraction for image_26_852658791.jpg
2026-03-07 13:04:47,413 - INFO - ✅ Downloaded: image_27_300195207.jpg
2026-03-07 13:04:47,413 - INFO - 🤖 Using original Gemini extraction for image_27_300195207.jpg
2026-03-07 13:04:47,414 - INFO - ✅ Downloaded: image_28_1278795828.jpg
2026-03-07 13:04:47,414 - INFO - 🤖 Using original Gemini extraction for image_28_1278795828.jpg
2026-03-07 13:04:48,513 - INFO - 📊 First pass extracted 4 deals
2026-03-07 13:04:48,513 - INFO - 🔄 Deal count (4) below threshold, running refinement pass...
2026-03-07 13:04:49,230 - INFO - ✅ Refinement pass found 7 additional deals
2026-03-07 13:04:49,230 - INFO - 📈 Total deals after refinement: 11 (7 new unique deals)
2026-03-07 13:04:49,230 - DEBUG - Normalizing dispensary: 'Jungle Boys' -> 'jungle boys'
2026-03-07 13:04:49,230 - DEBUG - Exact match found: 'Jungle Boys' -> 'jungle-boys'
2026-03-07 13:04:49,230 - WARNING - DEBUG: Normalized Jungle Boys -> jungle-boys
2026-03-07 13:04:49,230 - INFO - ✅ Processed image_32_725973623: 11 deals from Jungle Boys
2026-03-07 13:04:50,469 - INFO - 📊 First pass extracted 5 deals
2026-03-07 13:04:50,470 - INFO - 🔄 Deal count (5) below threshold, running refinement pass...
2026-03-07 13:04:50,965 - INFO - ℹ Refinement pass found no additional deals
2026-03-07 13:04:50,965 - DEBUG - Normalizing dispensary: 'One Plant Cannabis' -> 'one plant cannabis'
2026-03-07 13:04:50,965 - DEBUG - Exact match found: 'One Plant Cannabis' -> 'one-plant'
2026-03-07 13:04:50,965 - WARNING - DEBUG: Normalized One Plant Cannabis -> one-plant
2026-03-07 13:04:50,965 - INFO - ✅ Processed image_26_852658791: 5 deals from One Plant Cannabis
2026-03-07 13:04:50,966 - INFO - ✅ Downloaded: image_31_1551121141.webp
2026-03-07 13:04:50,966 - INFO - 🤖 Using original Gemini extraction for image_31_1551121141.webp