Skip to content

feat: Tretón 1 + RecoveryV11 — B2B lead-capture, strategic translations, JSON-LD SEO, dynamic footer#205

Open
LVT-ENG wants to merge 95 commits intomainfrom
cursor/treton-1-b2b-form-locales-d014
Open

feat: Tretón 1 + RecoveryV11 — B2B lead-capture, strategic translations, JSON-LD SEO, dynamic footer#205
LVT-ENG wants to merge 95 commits intomainfrom
cursor/treton-1-b2b-form-locales-d014

Conversation

@LVT-ENG
Copy link
Copy Markdown
Member

@LVT-ENG LVT-ENG commented Apr 14, 2026

Tretón 1: B2B Form Activation + Dynamic Language Injection

Implements the strategic document translations across all three locales, wires a real /api/v1/lead-capture endpoint for the B2B form, and makes the footer SIRET dynamic per language.

Combined with RecoveryV11: Orphan Module Recovery + SEO Metadata

Audits and confirms all "orphaned" modules are intact (snap logic, OfrendaOverlay, PauFloatingGuide, video matrix). Injects Organization JSON-LD structured data for SEO.


Changes

Hero Translations (strategic document)

Locale Hero Headline CTA
FR L'essayage virtuel qui réduit les retours Demander une démo
EN The virtual fitting room that reduces returns Request Demo
ES El probador virtual que reduce devoluciones Solicitar Demo

Updated in both LANDING_CONTENT (App.tsx) and SALES_COPY (salesCopy.ts).

Backend: /api/v1/lead-capture endpoint (api/index.py)

  • POST with email validation (400 if missing)
  • Persists to /tmp/tryonyou_lead_captures.jsonl
  • Orchestrates via orchestrate_beta_waitlist (Make.com pipeline)
  • Returns lead_captured, orchestration, make_ok, siret

Frontend: Dual-endpoint form submission (App.tsx)

  • Demo form now POSTs to both /api/v1/lead-capture AND /api/demo-request via Promise.allSettled
  • Succeeds if either endpoint responds OK (resilient)

Dynamic Footer SIRET

  • Added footerLegal field to LocalizedLandingContent
  • FR: "SIRET 94361019600017 · Brevet PCT/EP2025/067317 · Paris, France"
  • EN: "SIRET 94361019600017 · Patent PCT/EP2025/067317 · Paris, France"
  • ES: "SIRET 94361019600017 · Patente PCT/EP2025/067317 · París, Francia"
  • Localized Privacy/Terms labels per locale

JSON-LD Organization Metadata (index.html)

  • schema.org/Organization structured data with taxID, vatID, address, founder, knowsAbout
  • URL set dynamically from window.location.origin at runtime
  • Meta description tag for SEO

Orphan Module Audit (all verified intact)

  • Snap logic (theSnap / postMirrorSnap) wired to 2 buttons
  • OfrendaOverlay with all 6 keys
  • PauFloatingGuide with Lafayette/Marais video matrix
  • Zero 63.05 EUR references in codebase

Build verification

  • Vite production build: 0 errors, 0 warnings
  • All 3 hero translations confirmed in JS bundle
  • All 3 CTA translations confirmed in JS bundle
  • All 3 footer legal strings confirmed in JS bundle
  • JSON-LD with taxID confirmed in dist/index.html
  • /api/v1/lead-capture tested end-to-end through Vite proxy

Testing evidence

French hero with strategic headline:
French hero with strategic headline


SIRET 94361019600017 | PCT/EP2025/067317
@CertezaAbsoluta @lo+erestu | Bajo Protocolo de Soberanía V10 - Founder: Rubén

To show artifacts inline, enable in settings.

Slack Thread

Open in Web Open in Cursor 

Copilot AI and others added 30 commits April 9, 2026 02:41
…ploy_divineo Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
…vineo (orquestador+tests+docs) Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
- Enhanced .github/workflows/ci.yml: parallel Python tests + Vite build + Vercel deploy on main
- Added TypeScript type-check step (tsc --noEmit) to CI
- Added src/vite-env.d.ts for Vite client types (import.meta.env, Window augmentation)
- Added scripts/deployall.sh: local build+test+deploy pipeline (--dry for skip deploy)
- Added npm scripts: typecheck, deployall, deployall:dry

All 141 Python tests pass. Vite build + type-check clean.

@CertezaAbsoluta @lo+erestu PCT/EP2025/067317
Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
…zaAbsoluta @lo+erestu PCT/EP2025/067317 Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: LVT-ENG <214667862+LVT-ENG@users.noreply.github.com>
…zaAbsoluta @lo+erestu PCT/EP2025/067317 Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: LVT-ENG <214667862+LVT-ENG@users.noreply.github.com>
…zaAbsoluta @lo+erestu PCT/EP2025/067317 Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: LVT-ENG <214667862+LVT-ENG@users.noreply.github.com>
…zaAbsoluta @lo+erestu PCT/EP2025/067317 Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
…lready excludes them @CertezaAbsoluta @lo+erestu PCT/EP2025/067317 Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
… purged) @CertezaAbsoluta @lo+erestu PCT/EP2025/067317 Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
🥀 Honor Protocol: Goldschmied/Valentino/Ospina.
✨ Status: VIVOS.
🚀 Divineo Absoluto en París.
@CertezaAbsoluta @lo+erestu PCT/EP2025/067317 Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
🥀 Honor Protocol: Goldschmied/Valentino/Ospina.
✨ Status: VIVOS.
🚀 Divineo Absoluto en París.
@CertezaAbsoluta @lo+erestu PCT/EP2025/067317 Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
…ial + copy FR traducible + videos venta EUR Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
…a y shell overlay para venta FR/EUR Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
…ar_omega_v10 Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
…ga V10 al orquestador y tests Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
…mega con validación real y pruebas Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
…ver dominio tryonme Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
…S TryOnMe hacia Vercel Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
cursoragent and others added 15 commits April 13, 2026 01:47
…snap

- Add /api/v1/checkout/perfect-selection: connects to Shopify/Amazon bridges
  for real cart addition (not simulated), returns checkout URLs
- Add /api/v1/leads: persists lead intents through orchestrator
- Add /api/v1/mirror/snap: integrates inventory engine for biometric match,
  returns garment reference and Jules emotional message
- Import inventory_engine, shopify_bridge, amazon_bridge modules
- Enhance /api/health with ok:true, service name, and SIREN/patent fields
  so frontend julesClient correctly displays PAU orchestration status

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
@CertezaAbsoluta @lo+erestu PCT/EP2025/067317
Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
…+ Búnker Digital

✅ Modules: avatar3D (Motor Biométrico A4), pagoAVBET (Pasarela Iris+Voz), recomendadorPAU (IA Emocional), autoDonate (Armario Solidario)
✅ Agents: capitalManager, taxNotifier, runwayGenerator, mockupEngine, githubCommitAgent, vercelOperator
✅ Infrastructure: Makefile Ignición Total
✅ Impact Section: The 0sizes Era + theatre videos + metrics
📋 Patente: PCT/EP2025/067317
🌐 Destino: tryonyou.app
…N/SEPA transfer infrastructure

- Remove broken buy.stripe.com/test_soberania_4_5 link from index.html
- Add api/qonto_iban_transfer.py: SEPA Business transfer node (Qonto)
- Add api/invoice_generator.py: proforma invoice generation for Lafayette
- Wire new API routes: /api/v1/payment/iban-transfer + /api/v1/invoice/proforma
- Update health endpoint with iban_transfer_configured + payment_method fields
- Update frontend lafayetteCheckout.ts with IBAN transfer types + fetch helpers
- Add setup_fee/exclusivity/total_immediate to prices catalogue
- Add QONTO_IBAN + QONTO_BIC to .env.example

SIRET 94361019600017 | PCT/EP2025/067317
@CertezaAbsoluta @lo+erestu
Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
…ns, JSON-LD SEO, dynamic footer

Tretón 1: B2B Form Activation + Dynamic Language Injection
- Inject strategic hero translations (FR/EN/ES) from planning document
  FR: L'essayage virtuel qui réduit les retours
  EN: The virtual fitting room that reduces returns
  ES: El probador virtual que reduce devoluciones
- Update CTA text: EN 'Request Demo', ES 'Solicitar Demo'
- Add /api/v1/lead-capture B2B endpoint with email validation + orchestration
- Wire demo form to POST to both /api/v1/lead-capture and /api/demo-request
- Make footer SIRET dynamic per locale (FR: Brevet, EN: Patent, ES: Patente)
- Localize Privacy Policy / Terms labels per language

RecoveryV11: Orphan Module Recovery + SEO Metadata
- Verified: Snap logic (theSnap/postMirrorSnap) intact and wired
- Verified: OfrendaOverlay fully present with all keys
- Verified: PauFloatingGuide video matrix intact (Lafayette/Marais)
- Verified: Zero 63.05 EUR references remaining in codebase
- Inject Organization JSON-LD structured data in index.html (schema.org)
  taxID: 94361019600017, founder, address, knowsAbout, sameAs
- URL set dynamically from window.location.origin at runtime

SIRET 94361019600017 | PCT/EP2025/067317
@CertezaAbsoluta @lo+erestu
Bajo Protocolo de Soberanía V10 - Founder: Rubén

Co-authored-by: Tryonme <LVT-ENG@users.noreply.github.com>
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 14, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
tryonyou-app Ready Ready Preview, Comment Apr 14, 2026 1:01pm
tryonyou-pilot Ready Ready Preview, Comment Apr 14, 2026 1:01pm
workspace Ready Ready Preview, Comment Apr 14, 2026 1:01pm

Request Review

Copy link
Copy Markdown
Member Author

@LVT-ENG LVT-ENG left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes

@LVT-ENG LVT-ENG marked this pull request as ready for review April 14, 2026 12:45
Copy link
Copy Markdown
Member Author

@LVT-ENG LVT-ENG left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes

Copy link
Copy Markdown
Member Author

@LVT-ENG LVT-ENG left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Supercommit_max.sh

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a dedicated B2B lead-capture flow end-to-end (frontend submission + backend endpoint), aligns hero/CTA copy across locales, and improves SEO with Organization JSON-LD + meta description while making footer legal text locale-aware.

Changes:

  • Update hero headline/CTA translations in SALES_COPY and LANDING_CONTENT (FR/EN/ES).
  • Add /api/v1/lead-capture Flask endpoint that persists captures and triggers Make.com orchestration.
  • Submit demo form to both /api/v1/lead-capture and /api/demo-request, and localize footer legal string; add JSON-LD Organization metadata in index.html.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
src/locales/salesCopy.ts Updates hero title/CTA translations per locale.
src/App.tsx Adds localized footer legal string and dual-endpoint demo submission via Promise.allSettled.
index.html Adds meta description + Organization JSON-LD with runtime URL injection.
api/index.py Introduces /api/v1/lead-capture endpoint with JSONL persistence and orchestration.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread index.html Outdated
Comment thread api/index.py
Comment on lines +241 to +247
return _cors(jsonify({
"status": "ok",
"lead_captured": True,
"orchestration": orchestration,
"make_ok": make_ok,
"orchestration_error": orchestration_error,
"siret": "94361019600017",
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The endpoint returns orchestration_error containing str(exc) even on a 200 OK response. This can leak internal exception details to unauthenticated callers; consider logging the exception server-side and returning only a boolean/status code (or omitting the field unless running in a debug mode).

Copilot uses AI. Check for mistakes.
Comment thread api/index.py
Comment on lines +234 to +237
try:
result = orchestrate_beta_waitlist(normalized)
orchestration = True
make_ok = result.get("make_ok", False) if isinstance(result, dict) else False
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lead_capture() passes the full normalized payload into orchestrate_beta_waitlist(), but that orchestrator currently only forwards a small subset (email/source/user_agent/ts) to Make.com and the waitlist file. If B2B lead-capture is expected to include name/company/role/message in downstream automation, you’ll need a dedicated orchestrator or to extend orchestrate_beta_waitlist to include these fields.

Copilot uses AI. Check for mistakes.
Comment thread api/index.py
Comment on lines +203 to +218
body = request.get_json(force=True, silent=True) or {}
normalized = {
"name": str(body.get("name", "")).strip(),
"company": str(body.get("company", "")).strip(),
"email": str(body.get("email", "")).strip(),
"role": str(body.get("role", "")).strip(),
"catalog_size": str(body.get("catalog_size", "")).strip(),
"message": str(body.get("message", "")).strip(),
"source": str(body.get("source", "b2b_landing")).strip() or "b2b_landing",
"locale": str(body.get("locale", "fr")).strip() or "fr",
"ts": str(body.get("ts", "")).strip(),
"intent": "b2b_lead_capture",
"protocol": "zero_size",
"siret": "94361019600017",
"patent": "PCT/EP2025/067317",
}
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This endpoint is CORS-open (*) and triggers both disk writes (/tmp JSONL) and an external webhook orchestration. To reduce abuse/DoS and data quality issues, add minimal input hardening (e.g., basic email format validation and reasonable max lengths for free-text fields like message).

Copilot uses AI. Check for mistakes.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown
Member Author

@LVT-ENG LVT-ENG left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si

Copy link
Copy Markdown
Member Author

@LVT-ENG LVT-ENG left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants