Commit Graph
9 Commits
Author SHA1 Message Date
Claude 12b281f609 feat: Extract visible text and optimize Amazon price detection
Critical improvements to AI price extraction for better accuracy:

**1. Extract Visible Text Instead of HTML** (browserless_service.py)
- Changed from `page.content()` (raw HTML) to `page.inner_text('body')`
- Now captures text as rendered by JavaScript, not HTML source
- Amazon and other sites inject prices via JavaScript - HTML source doesn't contain them
- Includes proper fallback to HTML if inner_text fails

**2. Amazon-Specific Price Detection** (browserless_service.py)
- Wait for Amazon price elements to load before screenshot:
  - `.a-price .a-offscreen` (main price)
  - `#corePriceDisplay_desktop_feature_div` (price section)
  - `#corePrice_desktop` (alternative container)
  - `.a-price-whole` (price number)
- Prevents screenshots before dynamic prices are rendered

**3. Focused Amazon Screenshots** (browserless_service.py)
- Problem: Full-page Amazon screenshots are huge (multiple screens tall)
- When resized to 2048px, price text becomes tiny and unreadable
- Solution: Take focused screenshot of product container only:
  - Try `#dp-container`, `#ppd`, or `#centerCol` (product areas)
  - Falls back to viewport screenshot (better than full-page)
- Other sites still use full-page screenshots

**4. Enhanced Debug Logging** (ai_service.py)
- Log cleaned text preview (first 500 chars) to verify content
- Log prompt preview to debug AI instructions
- Warning when no page_text provided

These changes address the root causes of AI returning:
- price: null, confidence: 0.0-0.1 (too low to update DB)

Expected improvement:
- Visible text contains actual rendered prices
- Smaller, focused screenshots = better AI recognition
- Confidence scores should reach > 0.5 threshold
2025-11-29 19:45:00 +00:00
Claude f2d45f9566 fix: Improve AI product price extraction for French e-commerce sites
Three critical fixes to resolve AI extraction returning null prices with 0.0 confidence:

1. **Add French price/stock keywords** (app/utils/text.py)
   - Added € symbol and French price patterns (12,99 €, 1 234,56 €)
   - Added French keywords: prix, coût, promotion, réduction
   - Added French stock keywords: ajouter au panier, en stock, rupture, épuisé
   - Previously only detected $ and English keywords

2. **Enable full-page screenshots** (app/services/browserless_service.py)
   - Changed full_page=False to full_page=True
   - Now captures entire page instead of viewport-only
   - Prevents missing prices located below the fold

3. **Increase image resolution** (app/utils/image.py)
   - Increased MAX_IMAGE_SIZE from 1024px to 2048px
   - Preserves fine details in price text for better AI recognition
   - Improves readability on dense product pages

These changes fix the issue where AI models returned:
{"price": null, "price_confidence": 0.0, "in_stock": null, "in_stock_confidence": 0.0}

Tested with Amazon.fr product monitoring.
2025-11-29 19:07:04 +00:00
Michael 420dd3144a feat: add NewSearchService to orchestrate multi-site e-commerce searches and scrape item details. 2025-11-29 17:10:20 +01:00
Michael f976ae1127 feat: Implement web scraping and search system with centralized configuration, browserless integration, and a verification script. 2025-11-29 13:09:53 +01:00
Michael 97a8e7a951 feat: implement web scraping debugger and consolidate search site configurations. 2025-11-29 10:56:43 +01:00
Michael 22f8aedaa4 feat: Add centralized search configuration for sites, proxies, and user agents, and create browserless service module. 2025-11-29 09:51:10 +01:00
Michael f665a000af feat: add AI service for content extraction and Browserless service for web scraping 2025-11-29 09:46:29 +01:00
Michael 8d903202fb feat: introduce browserless, scheduler, and search services for advanced web scraping and data collection. 2025-11-29 09:02:34 +01:00
Michael 6019a80de9 feat: Add core search configuration for site definitions, proxies, and user agents, and introduce a browserless service. 2025-11-29 08:54:05 +01:00