Chontaduro - Eat smart

Plan 1

1 Main Meal / Simple Trackingβœ… Personalized portion for that meal
βœ… Protein tracking for that meal
❌ No tracking of carbs, fats, or calories
❌ No guidance for other meals in your day
πŸ’‘ For those who want guidance for one main meal while managing the rest of the day on their own.
⚠️ Note: You’ll need to handle your other meals yourself. If your goal is faster or more consistent results, consider one of the higher-tier plans.

Video

The entry point: for people who just want one healthy meal done for them.

Chontaduro - Eat smart

Plan 2

2 Main Meals (Lunch + Dinner) / Practical Trackingβœ… Personalized portions for each meal
βœ… Protein tracking for these 2 meals
βœ… Carbs tracking for these 2 meals
❌ No tracking of fats or total calories
❌ No guidance for other meals
πŸ’‘ For those who want structure for two main meals with a solid protein + carbs guide for each, while managing the rest of the day on their own.
⚠️ Note: Total daily macro tracking is only available in Full Day.

Video

The realistic favorite: covers the two hardest meals of the day.

Chontaduro - Eat smart

Plan 3

Breakfast + 1 Main Meal / Practical Trackingβœ… Personalized portions for each meal
βœ… Protein tracking for these 2 meals
βœ… Carbs tracking for these 2 meals
❌ No tracking of fats or total calories
❌ No guidance for other meals
πŸ’‘ For those who want a structured start to the day with a solid protein + carbs guide for each meal, while keeping flexibility for the rest of the day.
⚠️ Note: Total daily macro tracking is only available in Full Day.

Video

For those who love a healthy start and prefer lighter structure later.

Chontaduro - Eat smart

Plan 4

πŸ† Best Value β€” Full Control, Zero Effort.

Full Day (Breakfast + Lunch + Dinner + Snacks Guidance) / Full Trackingβœ… Personalized portions for all meals
βœ… Full macro tracking (Protein + Carbs + Fats)
βœ… Full tracking of calories
βœ… Snack guidance to help reach protein or calorie goals
πŸ’‘ For those who want complete guidance, precise tracking, and a fully planned day for optimal and faster results.
⚠️ Note: This is the only plan that gives you full daily tracking and recommendations. Everything else is included and ready to follow.

Video

The complete experience - everything planned and optimized for your goals.

FeaturePlan 1Plan 2Plan 3Plan 4
Meals per day1223
Includes breakfastβŒβŒβœ…βœ…
Includes lunchβœ…βœ…βœ…βœ…
Includes dinnerβœ… (choice)βœ…βœ… (choice)βœ…
Personalized portionsβœ…βœ…βœ…βœ…
Protein trackingβœ…βœ…βœ…βœ…
Carbs trackingβŒβœ…βœ…βœ…
Full macro trackingβŒβŒβŒβœ…
Calorie trackingβŒβŒβŒβœ…
Snack GuidanceβŒβŒβŒβœ…
Best forFor those who want a quick, balanced lunch or dinner without thinking.For busy people who want balanced meals for the hardest parts of the day.For those who like a structured start to their day with flexibility later.For those who want to eat smarter, and see faster results.
🍽️ Menu Generator Test const BASE_URL = "https://chontaduro-backend.onrender.com"; let session_id = "sess_" + Date.now() + Math.floor(Math.random()*1000); let currentMenu = []; let sessionsDislikes = []; let sessionsAllergies = []; // --------------------------- // Función para avanzar en el flujo // --------------------------- async function nextStep(step, answer={}) { const res = await fetch(BASE_URL + "/next-step", { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({session_id, step, answer}) }); const data = await res.json(); if (data.fields) { const stepsOrder = ["pick_plan", "duration", "personal_data", "preferences", "allergies"]; const idx = stepsOrder.indexOf(step); const nextStepName = (idx >= 0 && idx < stepsOrder.length - 1) ? stepsOrder[idx + 1] : stepsOrder[0]; showForm(data.question, data.fields, nextStepName); } else if (data.menu) { // Guardamos las listas del usuario para pintar los ingredientes sessionsDislikes = data.user_dislikes || []; sessionsAllergies = data.user_allergies || []; currentMenu = data.menu; showMenu(data.menu, data.price); } else { document.getElementById("question").innerText = data.question || ""; } } // --------------------------- // Mostrar formulario de respuesta // --------------------------- function showForm(question, fields, nextStepName) { const form = document.getElementById("user-form"); form.innerHTML = ""; document.getElementById("question").innerText = question; fields.forEach(f => { let input; if (f === "Plan") { input = document.createElement("select"); ["Plan 1","Plan 2","Plan 3","Plan 4"].forEach(opt => { const option = document.createElement("option"); option.value = opt; option.text = opt; input.appendChild(option); }); } else if (f === "Duración") { input = document.createElement("select"); [1,2,3,4,5,6,7].forEach(opt => { const option = document.createElement("option"); option.value = opt; option.text = opt + " day(s)"; input.appendChild(option); }); } else if (f === "Preferencias alimenticias") { input = document.createElement("select"); ["Vegano","Vegetariano","Pescatariano","Omnívoro"].forEach(opt => { const option = document.createElement("option"); option.value = opt; option.text = opt; input.appendChild(option); }); } else if (f === "Ingredientes que no te gustan" || f === "Alergias") { input = document.createElement("select"); input.multiple = true; const exampleOptions = ["Nuts","Dairy","Gluten","Seafood","Eggs","Soy","Peanuts"]; exampleOptions.forEach(opt => { const option = document.createElement("option"); option.value = opt; option.text = opt; input.appendChild(option); }); } else { input = document.createElement("input"); input.type="text"; } input.name = f; input.required=true; form.appendChild(input); form.appendChild(document.createElement("br")); }); const submit = document.createElement("button"); submit.type = "submit"; submit.innerText="Submit"; form.appendChild(submit); form.onsubmit = (e) => { e.preventDefault(); const answer = {}; fields.forEach(f => { const el = form.querySelector(`[name='${f}']`); if(el.multiple){ answer[f] = Array.from(el.selectedOptions).map(opt=>opt.value); } else{ answer[f] = el.value; } }); nextStep(nextStepName, answer); }; } // --------------------------- // Mostrar menú generado // --------------------------- function showMenu(menu, price) { const container = document.getElementById("menu-container"); container.innerHTML = `

Menu ($${price})

`; menu.forEach(m => { const div = document.createElement("div"); let ingredientsHTML = ""; if(m.ingredients){ ingredientsHTML = m.ingredients.map(ing=>{ let cls=""; if(sessionsDislikes.includes(ing)) cls="dislike"; if(sessionsAllergies.includes(ing)) cls="allergy"; return `${ing}`; }).join(" "); } div.innerHTML = `

${m.name} - ${m.calories} cal

Ingredients: ${ingredientsHTML}

`; container.appendChild(div); }); document.getElementById("menu-actions").style.display="block"; } // --------------------------- // Swap de comida // --------------------------- async function swapMeal(mealName){ const res = await fetch(BASE_URL + "/swap-meal",{ method:"POST", headers:{"Content-Type":"application/json"}, body:JSON.stringify({session_id, meal_name:mealName}) }); const data = await res.json(); currentMenu = data.menu; showMenu(data.menu, data.price); } // --------------------------- // Redo menu completo // --------------------------- document.getElementById("redo-btn").onclick = async ()=>{ const res = await fetch(BASE_URL + "/redo-menu",{ method:"POST", headers:{"Content-Type":"application/json"}, body:JSON.stringify({session_id, step:"redo", answer:{}}) }); const data = await res.json(); currentMenu = data.menu; sessionsDislikes = data.user_dislikes || []; sessionsAllergies = data.user_allergies || []; showMenu(data.menu, data.price); } // --------------------------- // Agregar proteΓ­na extra // --------------------------- document.getElementById("extra-protein-btn").onclick = async ()=>{ const res = await fetch(BASE_URL + "/add-protein",{ method:"POST", headers:{"Content-Type":"application/json"}, body:JSON.stringify({session_id, extra_protein_g:20}) }); const data = await res.json(); showMenu(data.menu, data.price); alert(data.message); } // --------------------------- // Iniciar flujo // --------------------------- nextStep("pick_plan");