beauty_ai.py:
- Add _scrape_legal_pages(): fetches /aviso-legal, /politica-de-privacidad,
/privacidad, /quienes-somos, /legal in parallel — Spanish aviso legal pages
legally contain razón social, CIF/NIF, address and a contact email; legal
snippet passed to AI so it can identify the registered company name
- Rewrite _build_beauty_prompt(): full technical profile (SSL, analytics, CMS,
load time, word count, GDPR, mobile), all contact channels merged from both
site_analyzer and legal pages, updated assessment rules with clearer HOT/WARM
criteria, 700-char search results, richer portfolio portfolio context
- New JSON schema fields: summary (executive description), pitch_angle (one
Spanish hook sentence), all_contacts dict (emails/phones/whatsapp/social
full lists), best_contact_channel, best_contact_value, partnership_signals,
revenue_estimate; outreach_email is now a complete ready-to-send email
- max_output_tokens raised from 2000 → 4000
- Contact merge: all_contacts populated from both site_analyzer and legal pages;
top-level contact_* fields filled from merged data as fallback
- Run DDG search and legal page scraping in parallel (no extra wall-clock cost)
index.html (Pipeline):
- Business Summary panel with pitch_angle as accent subtitle
- Full all_contacts display: all emails (mailto links), all phones, all
WhatsApp (green links), all social profiles (shortened display)
- partnership_signals chips alongside brand detection
- outreach_notes shown in amber at bottom of contact panel
- best_contact_channel chip in contact header
- Table contact column now shows best_contact_value if available
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>