attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment

Hello is a foreigner make a flexible weight diet

analyse_media
analyse_media
analyse_media
I now have all the data needed. Here is the complete flexible weight-loss diet plan for this client:

🥗 FLEXIBLE WEIGHT LOSS DIET PLAN

Kolors Health Care - Kevin Richard


CLIENT PROFILE SUMMARY

ParameterValue
NameKevin Richard
Age/Sex53 years, Male
Height176 cm
Current Weight94.9 kg
BMI30.6 (Obese Class I)
Fat %31.2% (Desirable: 12-22.9%)
Fat Mass29.6 kg
Muscle Mass61.9 kg
Visceral Fat Rating18 (HIGH - target <10)
BMR1854 kcal/day
Metabolic Age64 (actual age 53 - elevated)
Ideal Body Weight68.1 kg
Fat to Lose18.1 kg
Target Weight76.8 kg (at 15% BF)

KEY CLINICAL NOTES

  • Lifestyle: Sedentary-to-Moderate | Eats mostly outside | Smokes 4-5/week
  • Non-vegetarian: 6x/week - eats all meats (chicken, beef, pork, mutton, prawns)
  • Obesity since: 10-12 years | Cause: COA + Lifestyle
  • Family history: Both parents have Diabetes - pre-diabetic risk profile
  • No associated medical conditions checked (no hypertension, diabetes, heart disease currently)
  • Medication: Multivitamins only
  • Sleep: After midnight (late bedtime - impacts cortisol/weight)
  • Water intake: 1-2 litres/day (low - needs increase)
  • Physical activity: 45 mins/day (gym 5-6x/week - good!)
  • Current eating pattern: EM 7am coffee/OJ | BF 8am eggs | Lunch biryani/sandwich | Dinner 8pm pizza/butter chicken/pasta | Bed after midnight

CALORIE TARGETS

GoalCalories
BMR1854 kcal
TDEE (moderate activity)~2500 kcal
Diet target (500-deficit)~1800-1900 kcal/day
Protein target140-150 g/day (1.5 g/kg body weight)
Carbs150-180 g/day (low-moderate)
Fat50-60 g/day (healthy fats)

FLEXIBLE MEAL PLAN

✅ OPTION A - HOME / COOKED MEAL

MealTimeOptions (Pick ONE)Calories (approx.)
Early Morning6:30 - 7:00 amBlack coffee (no sugar) OR green tea + 5 soaked almonds~50 kcal
Breakfast8:00 amOption 1: 3 boiled/poached eggs + 1 multigrain toast + 1 cucumber~300 kcal
Option 2: 2 egg omelette + 1 idli + sambar (no rice)~280 kcal
Option 3: Vegetable dosa (1 large) + coconut chutney (small)~260 kcal
Mid-Morning10:30 - 11:00 am1 fruit (apple/guava/pear) OR 1 small cup curd~80 kcal
Lunch1:00 - 2:00 pmOption 1: Grilled chicken (200g) + 1 cup brown rice + salad~450 kcal
Option 2: 2 chapati + dal + sabzi + 100g curd~400 kcal
Option 3: Prawn/fish curry (150g protein) + 1 cup brown rice~420 kcal
Evening Snack4:30 - 5:00 pmHandful roasted chana / 2 boiled eggs / 1 cup green tea + 5 walnuts~100-120 kcal
Dinner7:30 - 8:00 pmOption 1: Grilled chicken/fish (200g) + 2 cups vegetables (sauteed)~350 kcal
Option 2: Mutton/beef stew (150g) + salad, NO rice~320 kcal
Option 3: Paneer bhurji (150g) + 1 chapati + salad~350 kcal
Bed Time10:00 pm1 glass warm turmeric milk (low fat) OR skip~80 kcal
Total: ~1800 kcal

✅ OPTION B - EATING OUT (Restaurant/Takeaway)

Since Kevin eats out frequently, here are smart restaurant swaps:
Instead ofChoose This
Biryani (full plate)Half biryani + raita + extra salad
Pizza (full)2 slices thin-crust + side salad (no extra cheese)
Butter chicken + naan x2Butter chicken (small) + 1 tandoori roti + dal
Pasta with creamy/marinara sauceGrilled protein (chicken/fish) + soup
SandwichWhole wheat sandwich with grilled chicken, skip the chips
Fried riceEgg fried rice (half portion) + stir-fry veggies
Soft drinksLime soda (no sugar) / plain water / sparkling water
Key rule when eating out: Always ask for grilled over fried, sauces on the side, and skip the bread basket.

✅ OPTION C - 7-DAY SAMPLE WEEKLY PLAN (Flexible)

DayBreakfastLunchDinner
Mon3 boiled eggs + 1 toastGrilled chicken + salad + 1 chapatiFish curry + veggies (no rice)
TueIdli x2 + sambarMutton stew + brown rice (half cup)Egg stir-fry + 1 chapati
WedOmelette (2 egg) + multigrain toastPrawn curry + saladGrilled chicken + veggies
ThuDosa (1) + chutneyDal + 2 chapati + sabzi + curdPaneer tikka + salad
FriBoiled eggs x3Restaurant: Half biryani + raitaButter chicken (small) + 1 roti
SatEgg omelette + toastChicken sandwich (whole wheat)Grilled beef/pork (150g) + veggies
SunIdli x2 + egg curryFree meal - lighter dinnerSoup + grilled chicken/fish

FOODS TO INCLUDE vs. AVOID

✅ INCLUDE (Priority)❌ AVOID / LIMIT
All proteins: eggs, chicken, fish, prawns, muttonMaida (refined flour) items: pizza base, white bread
Vegetables: all non-starchy veggiesSugary drinks: soft drinks, packaged juices
Brown rice, oats, multigrain breadLarge portions of biryani/fried rice daily
Dal, legumes, chanaPasta with creamy white sauce
Curd/low-fat dairyDeep fried snacks: samosas, pakoras
Fruits (1-2/day): apple, guava, papayaSweets and desserts (noted as "sometimes" - reduce to rarely)
Healthy fats: olive oil, nuts (small qty)Alcohol
Green tea, black coffee (no sugar)Late night eating after 9pm

CRITICAL LIFESTYLE RECOMMENDATIONS

  1. Sleep: Target bedtime by 11 PM - late sleep elevates cortisol and promotes fat storage, especially visceral fat (Visceral Fat Rating is 18 - HIGH)
  2. Water: Increase to 3 litres/day minimum - currently only 1-2 litres
  3. Smoking: 4-5/week - reduces metabolism and impairs fat burning; discuss cessation
  4. Meal timing: Dinner by 7:30-8 PM maximum; avoid eating after 9 PM
  5. Gym: Current 45 mins, 5-6x/week is good - add resistance training to preserve muscle (Muscle Mass: 61.9 kg - protect this)
  6. Family diabetes risk: Avoid refined carbs and sugars strictly; get fasting glucose and HbA1c checked

WEIGHT LOSS MILESTONES

MilestoneTargetTimeline
Short term90 kg (lose ~5 kg)6-8 weeks
Mid term85 kg (lose ~10 kg)3-4 months
Long term goal76.8 kg (lose ~18 kg)6-9 months
Rate of loss0.5-1 kg/weekSafe & sustainable

Note: This diet plan is designed for Kevin Richard based on his Kolors Health Care Slimming Record Book and Tanita body composition analysis (25 Jul 2026). Since he eats mostly outside and enjoys all meats, this plan provides maximum flexibility using real-world food choices. All sessions should be tracked and diet reviewed monthly. Consult the assigned dietitian (Hajira) for further personalisation.

This is too south indian coded

Asking for Preferences
Here is Kevin's fully restructured plan - Western/European food focus, full macros included:

🥩 FLEXIBLE WEIGHT LOSS DIET PLAN

Kevin Richard | Western / International Cuisine


DAILY TARGETS

NutrientTarget
Calories1800 - 1900 kcal/day
Protein140 - 150 g/day
Carbohydrates150 - 170 g/day
Fat55 - 65 g/day
Fibre25 - 30 g/day
Water3+ litres/day
BMR is 1854 kcal. TDEE with gym activity ~2450 kcal. A 500-600 kcal deficit gives safe loss of 0.5-1 kg/week.

DAILY MEAL STRUCTURE (5 meals)

⏰ EARLY MORNING | 6:30 - 7:00 AM | ~50 kcal

OptionMacros
Black coffee (no sugar) + 5 almondsP: 2g C: 2g F: 5g
Green tea + small handful of mixed nutsP: 2g C: 3g F: 6g
Avoid orange juice in the morning - it spikes blood sugar fast and adds empty calories.

🍳 BREAKFAST | 8:00 AM | ~350-380 kcal

Pick ONE of these:
OptionMealProteinCarbsFatKcal
A3-egg omelette (mushroom + spinach) + 1 slice wholegrain toast24g18g16g310
B2 scrambled eggs + 2 turkey/chicken rashers + 1 slice rye bread30g16g12g290
CGreek yoghurt (200g, full fat) + 2 tbsp granola + handful berries18g32g10g290
D2-egg omelette + smoked salmon (80g) + 1 slice sourdough32g20g14g330
EProtein shake (whey, 30g) + 1 banana + 1 tbsp peanut butter28g30g9g315

🍎 MID-MORNING SNACK | 10:30 AM | ~100-120 kcal

Pick ONE:
  • 1 apple + 10 almonds → P: 4g C: 22g F: 7g
  • 2 boiled eggs → P: 12g C: 1g F: 10g
  • 100g low-fat cottage cheese + cucumber sticks → P: 12g C: 5g F: 2g
  • 1 small protein bar (choose ones with <10g sugar) → P: 10g C: 15g F: 5g

🍽️ LUNCH | 1:00 - 2:00 PM | ~450-500 kcal

Pick ONE:
OptionMealProteinCarbsFatKcal
AGrilled chicken breast (200g) + roasted sweet potato (100g) + side salad46g28g8g370
BBeef steak (170g lean) + steamed broccoli + ½ cup cooked brown rice42g30g12g400
CGrilled salmon fillet (180g) + asparagus + 1 small dinner roll40g25g18g420
DChicken wrap (1 wholegrain tortilla, grilled chicken, lettuce, tomato, light mayo)35g35g14g410
EPork tenderloin (170g) + green beans + ½ cup mashed potato (no butter)40g28g10g360
FPrawn stir-fry (200g prawns) + mixed veg + ½ cup noodles (udon or soba)38g35g8g370
GRestaurant pick: Caesar salad + grilled chicken (ask for dressing on the side)32g14g18g340
HRestaurant pick: Grilled fish + steamed veg + small portion fries (not large)38g30g15g410

🌿 AFTERNOON SNACK | 4:30 - 5:00 PM | ~100-130 kcal

Pick ONE:
  • 100g low-fat Greek yoghurt + 1 tsp honey → P: 10g C: 12g F: 3g
  • Handful mixed nuts (25g) → P: 5g C: 6g F: 14g
  • Celery/carrot sticks + 2 tbsp hummus → P: 4g C: 12g F: 6g
  • 2 hard-boiled eggs → P: 12g C: 1g F: 10g
  • 1 small protein shake → P: 20g C: 5g F: 3g

🥗 DINNER | 7:30 - 8:00 PM | ~400-450 kcal

Rule: Keep carbs LOW at dinner. Load up on protein + vegetables.
Pick ONE:
OptionMealProteinCarbsFatKcal
AGrilled chicken thighs (200g) + roasted vegetables (courgette, peppers, onion)44g14g14g360
BPan-seared salmon (200g) + green salad + olive oil dressing42g6g22g390
CBeef burger patty (170g, no bun) + lettuce, tomato, mustard + side salad36g10g18g350
DLamb chops (150g) + roasted asparagus + 1 small sweet potato38g22g18g400
EPork ribs (150g, grilled not fried) + coleslaw (light) + corn on the cob36g24g16g380
FPrawn/shrimp (200g) + stir-fried vegetables + garlic butter (1 tsp)40g10g14g330
GMutton stew (150g lean) + 1 cup mixed vegetable soup38g16g14g340
HRestaurant pick: Grilled steak + side salad + vegetables (skip the chips or ask for half)42g8g18g360
IRestaurant pick: Roast chicken + vegetables (skip the gravy or ask for it on the side)40g12g14g340

7-DAY SAMPLE ROTATION

DayBreakfastLunchDinner~Total kcal
Mon3-egg omelette + toast (A)Grilled chicken + sweet potato (A)Salmon + green salad (B)1,830
TueScrambled eggs + turkey rashers (B)Beef steak + broccoli + rice (B)Chicken thighs + roasted veg (A)1,850
WedGreek yoghurt + granola + berries (C)Chicken wrap (D)Burger patty no bun + salad (C)1,800
ThuSmoked salmon omelette + sourdough (D)Grilled salmon + asparagus (C)Lamb chops + sweet potato (D)1,880
FriProtein shake + banana + PB (E)Caesar salad + grilled chicken [OUT] (G)Steak + salad + veg [OUT] (H)1,820
Sat3-egg omelette + toast (A)Prawn stir-fry + noodles (F)Pork ribs + coleslaw + corn (E)1,850
SunScrambled eggs + turkey rashers (B)Pork tenderloin + green beans (E)Prawn stir-fry + veg (F)1,800

EATING OUT SMART SWAPS

What He Currently EatsSmarter SwapSaves
Pizza (whole)2 slices thin crust + side salad~400 kcal
Butter chicken + 2 naansGrilled chicken + 1 bread~350 kcal
Pasta with marinara/cream sauceGrilled protein + clear soup~300 kcal
Burgers with large friesBurger + side salad (skip bun or swap)~300 kcal
Orange juice at breakfastWater with lemon or black coffee~120 kcal
Dessert after dinnerBlack coffee or herbal tea~300 kcal
Beer/wine with mealSparkling water / lime soda~200 kcal

ALCOHOL & SMOKING NOTES

  • No alcohol recorded, which is positive
  • Smoking 4-5x/week reduces metabolic efficiency and blunts fat oxidation - reducing this will accelerate fat loss and improve visceral fat (currently rated 18, which is HIGH)

PRIORITY ACTION LIST

#ActionWhy
1Sleep by 11 PMLate nights raise cortisol, which directly drives belly fat and visceral fat accumulation
2Drink 3L water dailyCurrently only 1-2L - dehydration reduces fat burning and increases hunger signals
3Eat dinner before 8 PMLate eating disrupts insulin sensitivity, especially critical given family history of diabetes
4No carbs after 8 PMProtein + veg only if eating late on some nights
5Get fasting glucose + HbA1c testedBoth parents are diabetic - he is high risk. Visceral fat rating of 18 compounds this risk
6Keep gym at 5-6x/weekMuscle mass (61.9 kg) must be preserved - resistance training is non-negotiable
7Reduce smokingImpacts fat oxidation and cardiovascular risk

WEIGHT LOSS TARGETS

MilestoneWeightTimeline
-5 kg89.9 kg6-8 weeks
-10 kg84.9 kg3-4 months
Goal weight76.8 kg6-9 months

This plan uses Western staples Kevin already knows - eggs, steak, salmon, chicken, pork, prawns, wraps, salads - with no South Indian assumptions. Every meal has a restaurant-friendly version since he eats out most of the time.

How to diet counsel him

Diet counselling is a structured conversation, not just giving a diet chart. Here is a full counselling framework tailored specifically for Kevin's profile:

🗣️ DIET COUNSELLING GUIDE

How to Counsel Kevin Richard — Step by Step


STEP 1: BUILD RAPPORT FIRST (5 minutes)

Kevin is a foreigner, 53 years old, working professional. He is not used to Indian clinical settings. Start by making him comfortable.
Opening lines:
  • "Kevin, I have looked at your body composition results and I want to explain what they actually mean for you - not just numbers, but what is happening inside your body."
  • Avoid jumping straight into "don't eat this, eat that" - he will disengage.
Key principle: He comes from a culture where he expects to be treated as an equal partner in decision-making, not lectured at. Ask, don't tell.

STEP 2: SHOW HIM HIS DATA — MAKE IT REAL (5-7 minutes)

Use the Tanita printout. Point to each number and translate it into plain language.
What to ShowWhat to Say
BMI 30.6"You are just into the obese range - but the good news is you are right at the border, not deep into it."
Fat % 31.2%"Nearly a third of your body is fat. The healthy range for a man your age is 12-22%. We need to bring this down by about 10 percentage points."
Visceral Fat Rating 18"This is the dangerous one. Visceral fat wraps around your liver, pancreas and heart. Normal is under 12. Yours is 18. This is what causes diabetes, heart disease and strokes - not just how you look."
Metabolic Age 64"Your metabolism is running like a 64-year-old's body, but you are 53. That gap is reversible with the right eating and training."
Fat to lose: 18.1 kg"Your target is 76.8 kg. That is 18 kg of fat to lose. At a safe pace of 1 kg/week that is about 5-6 months of consistent work."
Muscle Mass 61.9 kg"You have good muscle. Your gym work is protecting it. We want to keep every gram of that muscle while losing the fat."
Visual tip: Draw a simple circle on paper - shade 31% of it and say "this portion is fat." It lands better than just saying "31%."

STEP 3: FIND THE ROOT CAUSES TOGETHER (5 minutes)

Do not assume. Ask open questions and let him tell you.
Questions to ask:
  1. "Walk me through a typical day of eating - what time do you wake up, what do you eat first?"
    • From his record: Coffee + OJ at 7am, eggs at 8am, biryani/sandwich for lunch, pizza/butter chicken for dinner at 8pm, sleeps after midnight.
  2. "When you eat out, what are you usually in the mood for?"
    • He eats all meats. Use this as a strength - protein is his friend.
  3. "What has stopped you from losing weight before?"
    • His record says he goes to the gym 5-6x/week already. So the kitchen is the problem, not the gym.
  4. "Do you eat because you are hungry, or because of work/stress/social situations?"
    • He eats mostly outside - likely social and convenience eating.
  5. "How late are you usually awake?"
    • Record says after midnight. This is a major hidden cause of his weight gain.
What you are listening for: His barriers. Not his failures - his barriers. This changes the entire tone of counselling.

STEP 4: GIVE HIM THE "WHY" BEFORE THE "WHAT" (5 minutes)

Before giving the diet chart, explain the biology in simple terms. This is what makes counselling stick.

4 Key Points to Cover:

A. Visceral fat and diabetes risk
"Both your parents have diabetes. Right now you do not - but your visceral fat rating of 18 means your liver and pancreas are under pressure. Every kilo of belly fat you lose directly reduces that risk. This is not about looks. This is about not getting your parents' disease."
B. Late-night eating
"When you eat after 9pm, your insulin is less effective at night. The food you eat gets stored as fat much more easily than the same meal eaten at 6pm. Your dinner at 8pm is already late. Sleeping after midnight makes it worse. This single change - eating earlier and sleeping earlier - can shift 2-3 kg in the first month without changing anything else."
C. Why the gym alone is not working
"You are already training 5-6 times a week, which is excellent. But you cannot outrun a bad diet. 1 hour of gym burns roughly 400-500 kcal. One pizza or biryani adds back 800-1000 kcal. The diet is where the fat loss actually happens."
D. Protein is his key tool
"Because you eat all meats - chicken, beef, pork, mutton, prawns - you have a huge advantage. Protein is the most filling macronutrient. A high-protein meal keeps you full for 3-4 hours, reduces cravings, and protects your muscle while you lose fat. We are going to build every meal around protein first."

STEP 5: PRESENT THE DIET AS CHOICES, NOT RESTRICTIONS (5 minutes)

Kevin eats out most of the time and is a foreigner - a rigid "eat this at 1pm" chart will not work for him. Frame it as a flexible system.
How to present it:
"I am not going to give you a list of foods you cannot eat. Instead, I am going to give you a simple system you can use anywhere - at a restaurant, at home, at a work lunch."

The PLATE METHOD (easy to remember):

Draw or sketch this for him:
   ┌─────────────────────────┐
   │  HALF THE PLATE         │
   │  → Vegetables / Salad   │
   ├──────────┬──────────────┤
   │ QUARTER  │   QUARTER    │
   │ Protein  │   Carbs      │
   │ (meat,   │ (rice, bread,│
   │ eggs,    │ pasta - 1    │
   │ fish)    │ fist-size)   │
   └──────────┴──────────────┘
"At any restaurant, just apply this. Half your plate is vegetables or salad. One quarter is your protein - steak, chicken, fish, whatever you like. One quarter is your carbs - a small portion of rice or one piece of bread. That is the whole system."

STEP 6: ADDRESS THE SPECIFIC PROBLEM MEALS (5 minutes)

Target his 3 biggest problem areas based on the diet recall:

Problem 1: Dinner (Pizza, Butter Chicken, Pasta at 8pm)

"This meal is the biggest issue. It is late, it is heavy in carbs and fat, and you are eating it right before bed. We are not saying never eat pizza again. We are saying: make this your rare treat, not your daily dinner. On normal days, dinner should be grilled meat + vegetables - fast, easy, filling, low calorie."

Problem 2: Orange Juice at 7am

"This surprises a lot of people. A glass of orange juice is basically sugar water - all the fibre of the orange is removed, and it spikes your blood sugar immediately. Replace it with plain water or black coffee. This one swap saves you about 120 calories every single day."

Problem 3: No Mid-Morning Snack

"You are going from 8am breakfast to lunch with nothing in between. By lunchtime you are very hungry, so you eat too much at lunch - biryani, sandwiches. If you eat a small snack at 10:30am - 2 boiled eggs or a handful of nuts - you arrive at lunch only slightly hungry and make better choices."

STEP 7: SET 3 SPECIFIC GOALS FOR THE FIRST 2 WEEKS

Do not overwhelm him with 10 changes at once. Pick 3 that will have the biggest impact and are realistic for him.
GoalWhy This One First
1. Dinner before 8pm, no food after 9pmBiggest single impact on visceral fat and insulin sensitivity
2. Replace OJ with water/black coffeeEasy win, 120 kcal saved daily, no real sacrifice
3. Add a mid-morning snack (2 boiled eggs or nuts)Reduces lunch overeating immediately
"These 3 changes alone, without touching anything else, should show 1-2 kg on the scale in the first 2 weeks."

STEP 8: HANDLE RESISTANCE (If He PUSHES BACK)

Kevin eats out mostly and may push back. Have answers ready:
What He Might SayHow to Respond
"I travel a lot / always in meetings""That is fine - the plate method works anywhere. Steak and salad at any restaurant fits perfectly."
"I enjoy my food / I don't want to give things up""You are not giving anything up permanently. You are making smarter versions of what you already eat. You can still have pizza - just not every day."
"I already go to the gym 5-6 times a week""That is working - your muscle mass is very good. Now we match your diet to your training and the results will come."
"I don't cook at home""Perfect - we have built this plan entirely around restaurant and takeaway options. Everything on this plan you can order."
"Will this actually work at my age?""Yes - in fact at 53 with good muscle mass from the gym, you respond well to dietary changes. The metabolic age of 64 can come down to 53 or below within 6 months."

STEP 9: CLOSE WITH A CLEAR PLAN + FOLLOW-UP DATE

End the session with:
  1. Hand him the diet plan (the Western version with meal options)
  2. Summarise the 3 goals verbally again
  3. Book the next session - ideally in 2-3 weeks, not 6 weeks
  4. Tell him what to expect:
    "In the first 2 weeks expect to lose 1-2 kg, mostly water weight. From week 3 onwards you will start losing actual fat at 0.5-1 kg per week. Do not panic if the scale does not move in week 1 - your body is adjusting."
  5. Give him one number to track daily: Not weight - water intake. Ask him to just drink 3 litres a day and notice the difference. Weight tracking can become obsessive; water tracking is actionable and positive.

QUICK COUNSELLING SESSION TIMELINE

TimeWhat Happens
0-5 minRapport building, put him at ease
5-12 minShow and explain Tanita results in plain language
12-17 minAsk open questions, find his barriers
17-22 minExplain the "why" - visceral fat, diabetes risk, late eating
22-27 minPresent the plate method and flexible diet plan
27-32 minAddress his 3 specific problem meals
32-35 minSet 3 goals for the next 2 weeks
35-40 minHandle questions, book follow-up, close confidently

ONE-LINE SUMMARY FOR KEVIN

"You already have the gym habit. Now we fix the kitchen. You eat the same foods you love - just smarter portions, earlier timing, and more protein. That is the entire plan."

This approach treats Kevin as an intelligent adult, meets him where he is (eating out, foreign foods, already active), and gives him tools he can actually use - not a rigid chart he will ignore after day 3.

Printable diet chart

Reading File
Running Command

ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"

Running Command

mkdir -p /tmp/workspace/kevin-diet && cat > /tmp/workspace/kevin-diet/create_diet_chart.py << 'PYEOF' from docx import Document from docx.shared import Pt, Inches, RGBColor, Cm from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.table import WD_TABLE_ALIGNMENT, WD_ALIGN_VERTICAL from docx.oxml.ns import qn from docx.oxml import OxmlElement import copy doc = Document() # ── Page margins ────────────────────────────────────────────── section = doc.sections[0] section.page_width = Cm(21) section.page_height = Cm(29.7) section.left_margin = Cm(1.5) section.right_margin = Cm(1.5) section.top_margin = Cm(1.5) section.bottom_margin = Cm(1.5) # ── Default Normal style ─────────────────────────────────────── normal = doc.styles['Normal'] normal.font.name = 'Arial' normal.font.size = Pt(9) # ── Helper: set cell background colour ──────────────────────── def set_cell_bg(cell, hex_color): tc = cell._tc tcPr = tc.get_or_add_tcPr() shd = OxmlElement('w:shd') shd.set(qn('w:val'), 'clear') shd.set(qn('w:color'), 'auto') shd.set(qn('w:fill'), hex_color) tcPr.append(shd) def set_cell_border(cell, top=None, bottom=None, left=None, right=None): tc = cell._tc tcPr = tc.get_or_add_tcPr() tcBorders = OxmlElement('w:tcBorders') for side, val in [('top', top), ('bottom', bottom), ('left', left), ('right', right)]: if val: el = OxmlElement(f'w:{side}') el.set(qn('w:val'), val.get('val', 'single')) el.set(qn('w:sz'), str(val.get('sz', 4))) el.set(qn('w:space'), '0') el.set(qn('w:color'), val.get('color', '000000')) tcBorders.append(el) tcPr.append(tcBorders) def bold_run(para, text, size=None, color=None, italic=False): run = para.add_run(text) run.bold = True if italic: run.italic = True if size: run.font.size = Pt(size) if color: run.font.color.rgb = RGBColor(*bytes.fromhex(color)) return run def normal_run(para, text, size=None, color=None): run = para.add_run(text) if size: run.font.size = Pt(size) if color: run.font.color.rgb = RGBColor(*bytes.fromhex(color)) return run # ═══════════════════════════════════════════════════════════════ # HEADER BLOCK # ═══════════════════════════════════════════════════════════════ header_tbl = doc.add_table(rows=1, cols=2) header_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER header_tbl.style = 'Table Grid' w = header_tbl.columns[0].width # will set via cell width below lc = header_tbl.cell(0, 0) rc = header_tbl.cell(0, 1) set_cell_bg(lc, '1B5E20') # dark green set_cell_bg(rc, 'F9FBE7') # light cream # Left cell – clinic name lp = lc.paragraphs[0] lp.alignment = WD_ALIGN_PARAGRAPH.CENTER bold_run(lp, 'KOLORS HEALTH CARE', size=14, color='FFFFFF') lc.add_paragraph('').add_run('Slimming & Wellness Program').font.color.rgb = RGBColor(0xC8, 0xE6, 0xC9) lc.paragraphs[-1].alignment = WD_ALIGN_PARAGRAPH.CENTER # Right cell – client details rp = rc.paragraphs[0] bold_run(rp, 'PERSONALISED DIET CHART', size=12, color='1B5E20') rp.alignment = WD_ALIGN_PARAGRAPH.CENTER details = [ ('Client', 'Kevin Richard'), ('Age / Sex', '53 yrs | Male'), ('Weight', '94.9 kg | BMI: 30.6'), ('Fat %', '31.2% | Visceral Fat: 18'), ('Target Weight', '76.8 kg (lose 18.1 kg)'), ('Date', '25 July 2026'), ('Counsellor', 'Hajira'), ] for label, val in details: dp = rc.add_paragraph() dp.alignment = WD_ALIGN_PARAGRAPH.LEFT bold_run(dp, f'{label}: ', size=8.5, color='33691E') normal_run(dp, val, size=8.5) doc.add_paragraph() # spacer # ═══════════════════════════════════════════════════════════════ # CALORIE / MACRO TARGETS BAR # ═══════════════════════════════════════════════════════════════ macro_tbl = doc.add_table(rows=2, cols=5) macro_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER macro_tbl.style = 'Table Grid' headers_m = ['CALORIES', 'PROTEIN', 'CARBS', 'FAT', 'WATER'] values_m = ['1800–1900 kcal', '140–150 g', '150–170 g', '55–65 g', '3+ litres'] colors_m = ['1565C0', '558B2F', 'E65100', '6A1B9A', '00838F'] for i, (h, v, c) in enumerate(zip(headers_m, values_m, colors_m)): hc = macro_tbl.cell(0, i) vc = macro_tbl.cell(1, i) set_cell_bg(hc, c) set_cell_bg(vc, 'F5F5F5') hp = hc.paragraphs[0] hp.alignment = WD_ALIGN_PARAGRAPH.CENTER bold_run(hp, h, size=8, color='FFFFFF') vp = vc.paragraphs[0] vp.alignment = WD_ALIGN_PARAGRAPH.CENTER bold_run(vp, v, size=9, color=c) doc.add_paragraph() # ═══════════════════════════════════════════════════════════════ # MEAL PLAN TABLE # ═══════════════════════════════════════════════════════════════ p = doc.add_paragraph() bold_run(p, ' DAILY MEAL PLAN — Choose Any One Option Per Meal', size=11, color='FFFFFF') p.alignment = WD_ALIGN_PARAGRAPH.CENTER pPr = p._p.get_or_add_pPr() shd = OxmlElement('w:shd') shd.set(qn('w:val'), 'clear'); shd.set(qn('w:color'), 'auto'); shd.set(qn('w:fill'), '2E7D32') pPr.append(shd) meals = [ { 'time': '6:30 – 7:00 AM', 'meal': 'EARLY MORNING', 'color': 'FFF8E1', 'hcolor':'F57F17', 'kcal': '~50 kcal', 'options': [ ('Option A', 'Black coffee (no sugar) + 5 almonds', 'P: 2g C: 2g F: 5g'), ('Option B', 'Green tea + small handful mixed nuts', 'P: 2g C: 3g F: 6g'), ] }, { 'time': '8:00 AM', 'meal': 'BREAKFAST', 'color': 'E8F5E9', 'hcolor':'2E7D32', 'kcal': '~320–350 kcal', 'options': [ ('Option A', '3-egg omelette (mushroom + spinach) + 1 wholegrain toast', 'P: 24g C: 18g F: 16g'), ('Option B', '2 scrambled eggs + 2 turkey rashers + 1 rye bread slice', 'P: 30g C: 16g F: 12g'), ('Option C', 'Greek yoghurt (200g) + 2 tbsp granola + handful berries', 'P: 18g C: 32g F: 10g'), ('Option D', '2-egg omelette + smoked salmon (80g) + 1 sourdough slice', 'P: 32g C: 20g F: 14g'), ('Option E', 'Whey protein shake (30g) + 1 banana + 1 tbsp peanut butter','P: 28g C: 30g F: 9g'), ] }, { 'time': '10:30 AM', 'meal': 'MID-MORNING SNACK', 'color': 'FFF3E0', 'hcolor':'E65100', 'kcal': '~100–120 kcal', 'options': [ ('Option A', '1 apple + 10 almonds', 'P: 4g C: 22g F: 7g'), ('Option B', '2 boiled eggs', 'P: 12g C: 1g F: 10g'), ('Option C', '100g low-fat cottage cheese + cucumber sticks', 'P: 12g C: 5g F: 2g'), ('Option D', '1 small protein bar (< 10g sugar)', 'P: 10g C: 15g F: 5g'), ] }, { 'time': '1:00 – 2:00 PM', 'meal': 'LUNCH', 'color': 'E3F2FD', 'hcolor':'1565C0', 'kcal': '~400–450 kcal', 'options': [ ('Option A', 'Grilled chicken breast (200g) + roasted sweet potato + salad', 'P: 46g C: 28g F: 8g'), ('Option B', 'Beef steak (170g lean) + steamed broccoli + ½ cup brown rice', 'P: 42g C: 30g F: 12g'), ('Option C', 'Grilled salmon fillet (180g) + asparagus + 1 small roll', 'P: 40g C: 25g F: 18g'), ('Option D', 'Chicken wrap — wholegrain tortilla, grilled chicken, light mayo', 'P: 35g C: 35g F: 14g'), ('Option E', 'Pork tenderloin (170g) + green beans + small mashed potato', 'P: 40g C: 28g F: 10g'), ('Option F', 'Prawn stir-fry (200g) + mixed veg + ½ cup soba noodles', 'P: 38g C: 35g F: 8g'), ('Option G', '🍽 RESTAURANT: Caesar salad + grilled chicken, dressing on side', 'P: 32g C: 14g F: 18g'), ('Option H', '🍽 RESTAURANT: Grilled fish + steamed veg + small fries', 'P: 38g C: 30g F: 15g'), ] }, { 'time': '4:30 – 5:00 PM', 'meal': 'AFTERNOON SNACK', 'color': 'F3E5F5', 'hcolor':'6A1B9A', 'kcal': '~100–130 kcal', 'options': [ ('Option A', '100g low-fat Greek yoghurt + 1 tsp honey', 'P: 10g C: 12g F: 3g'), ('Option B', '25g mixed nuts', 'P: 5g C: 6g F: 14g'), ('Option C', 'Celery/carrot sticks + 2 tbsp hummus', 'P: 4g C: 12g F: 6g'), ('Option D', '2 hard-boiled eggs', 'P: 12g C: 1g F: 10g'), ] }, { 'time': '7:30 – 8:00 PM', 'meal': 'DINNER (low-carb)', 'color': 'E8EAF6', 'hcolor':'283593', 'kcal': '~350–400 kcal', 'options': [ ('Option A', 'Grilled chicken thighs (200g) + roasted courgette, peppers, onion', 'P: 44g C: 14g F: 14g'), ('Option B', 'Pan-seared salmon (200g) + green salad + olive oil dressing', 'P: 42g C: 6g F: 22g'), ('Option C', 'Beef burger patty (170g, no bun) + lettuce, tomato, mustard + salad', 'P: 36g C: 10g F: 18g'), ('Option D', 'Lamb chops (150g) + roasted asparagus + 1 small sweet potato', 'P: 38g C: 22g F: 18g'), ('Option E', 'Pork ribs (150g grilled) + light coleslaw + corn on the cob', 'P: 36g C: 24g F: 16g'), ('Option F', 'Prawn/shrimp (200g) + stir-fried veg + garlic (1 tsp butter)', 'P: 40g C: 10g F: 14g'), ('Option G', '🍽 RESTAURANT: Grilled steak + side salad + veg (skip chips)', 'P: 42g C: 8g F: 18g'), ('Option H', '🍽 RESTAURANT: Roast chicken + vegetables (gravy on the side)', 'P: 40g C: 12g F: 14g'), ] }, ] for meal in meals: tbl = doc.add_table(rows=1 + len(meal['options']), cols=4) tbl.style = 'Table Grid' tbl.alignment = WD_TABLE_ALIGNMENT.CENTER # set column widths widths = [Cm(2.8), Cm(1.5), Cm(9.5), Cm(3.4)] for row in tbl.rows: for i, cell in enumerate(row.cells): cell.width = widths[i] # Header row hdr = tbl.rows[0] set_cell_bg(hdr.cells[0], meal['hcolor']) set_cell_bg(hdr.cells[1], meal['hcolor']) set_cell_bg(hdr.cells[2], meal['hcolor']) set_cell_bg(hdr.cells[3], meal['hcolor']) p0 = hdr.cells[0].paragraphs[0] p0.alignment = WD_ALIGN_PARAGRAPH.CENTER bold_run(p0, meal['time'], size=8, color='FFFFFF') p1 = hdr.cells[1].paragraphs[0] p1.alignment = WD_ALIGN_PARAGRAPH.CENTER bold_run(p1, meal['kcal'], size=7.5, color='FFFFFF') p2 = hdr.cells[2].paragraphs[0] p2.alignment = WD_ALIGN_PARAGRAPH.CENTER bold_run(p2, meal['meal'], size=10, color='FFFFFF') p3 = hdr.cells[3].paragraphs[0] p3.alignment = WD_ALIGN_PARAGRAPH.CENTER bold_run(p3, 'MACROS', size=8, color='FFFFFF') # Option rows for i, (opt, desc, macros) in enumerate(meal['options']): row = tbl.rows[i + 1] bg = meal['color'] if i % 2 == 0 else 'FAFAFA' for c in row.cells: set_cell_bg(c, bg) # Option label (col 0) spans description is in col 2 op = row.cells[0].paragraphs[0] op.alignment = WD_ALIGN_PARAGRAPH.CENTER bold_run(op, opt, size=8, color=meal['hcolor']) # Empty col 1 (visual breathing room) row.cells[1].paragraphs[0].add_run('') # Description dp = row.cells[2].paragraphs[0] normal_run(dp, desc, size=8.5) # Macros mp = row.cells[3].paragraphs[0] mp.alignment = WD_ALIGN_PARAGRAPH.CENTER normal_run(mp, macros, size=7.5, color='555555') doc.add_paragraph() # spacer between meals # ═══════════════════════════════════════════════════════════════ # GOLDEN RULES BOX # ═══════════════════════════════════════════════════════════════ p = doc.add_paragraph() bold_run(p, ' KEY RULES TO FOLLOW DAILY', size=11, color='FFFFFF') p.alignment = WD_ALIGN_PARAGRAPH.LEFT pPr = p._p.get_or_add_pPr() shd = OxmlElement('w:shd') shd.set(qn('w:val'), 'clear'); shd.set(qn('w:color'), 'auto'); shd.set(qn('w:fill'), 'BF360C') pPr.append(shd) rules = [ ('🕗 Dinner before 8 PM — no food after 9 PM.', 'Late eating stores fat directly. Critical for visceral fat reduction.'), ('💧 Drink 3 litres of water daily.', 'Currently only 1–2 L. Dehydration slows fat burning and increases hunger.'), ('❌ Replace morning OJ with black coffee or water.', 'OJ = liquid sugar. Saves ~120 kcal daily with zero sacrifice.'), ('🥩 Build every meal around protein first.', 'Chicken, beef, pork, fish, eggs, prawns — all are your best tools.'), ('🍽 Half plate = vegetables at every meal.', 'Use the plate method at every restaurant — no need to count calories.'), ('😴 Sleep by 11 PM.', 'Late sleep raises cortisol, which drives belly fat. Metabolic age is 64 — fix the sleep.'), ('🚬 Reduce smoking.', 'Smoking blunts fat oxidation and raises cardiovascular risk.'), ('🏋 Keep gym 5–6×/week.', 'Muscle mass (61.9 kg) must be protected. Resistance training is essential.'), ] rules_tbl = doc.add_table(rows=len(rules), cols=2) rules_tbl.style = 'Table Grid' for i, (rule, reason) in enumerate(rules): bg = 'FBE9E7' if i % 2 == 0 else 'FFFFFF' rc0 = rules_tbl.cell(i, 0) rc1 = rules_tbl.cell(i, 1) set_cell_bg(rc0, bg) set_cell_bg(rc1, bg) rc0.width = Cm(8) rc1.width = Cm(9.2) p0 = rc0.paragraphs[0] bold_run(p0, rule, size=8.5, color='BF360C') p1 = rc1.paragraphs[0] normal_run(p1, reason, size=8) doc.add_paragraph() # ═══════════════════════════════════════════════════════════════ # EATING OUT SWAPS # ═══════════════════════════════════════════════════════════════ p = doc.add_paragraph() bold_run(p, ' SMART SWAPS WHEN EATING OUT', size=11, color='FFFFFF') p.alignment = WD_ALIGN_PARAGRAPH.LEFT pPr = p._p.get_or_add_pPr() shd = OxmlElement('w:shd') shd.set(qn('w:val'), 'clear'); shd.set(qn('w:color'), 'auto'); shd.set(qn('w:fill'), '006064') pPr.append(shd) swaps = [ ('Whole pizza', 'thin-crust × 2 slices + side salad', '~400 kcal saved'), ('Butter chicken + naan', 'Grilled chicken + 1 bread only', '~350 kcal saved'), ('Pasta with cream sauce','Grilled protein + clear soup', '~300 kcal saved'), ('Burger + large fries', 'Burger patty + side salad (skip bun)', '~300 kcal saved'), ('Orange juice at 8 AM', 'Black coffee or lemon water', '~120 kcal saved'), ('Soft drinks with meals','Sparkling water / lime soda (no sugar)', '~180 kcal saved'), ] swap_tbl = doc.add_table(rows=1 + len(swaps), cols=3) swap_tbl.style = 'Table Grid' # header for i, hdr_txt in enumerate(['INSTEAD OF', 'CHOOSE THIS', 'SAVING']): hc = swap_tbl.cell(0, i) set_cell_bg(hc, '006064') hp = hc.paragraphs[0] hp.alignment = WD_ALIGN_PARAGRAPH.CENTER bold_run(hp, hdr_txt, size=8.5, color='FFFFFF') for i, (avoid, choose, saving) in enumerate(swaps): bg = 'E0F7FA' if i % 2 == 0 else 'FFFFFF' row = swap_tbl.rows[i + 1] for ci in range(3): set_cell_bg(row.cells[ci], bg) normal_run(row.cells[0].paragraphs[0], avoid, size=8.5) bold_run( row.cells[1].paragraphs[0], choose, size=8.5, color='00695C') rp = row.cells[2].paragraphs[0] rp.alignment = WD_ALIGN_PARAGRAPH.CENTER bold_run(rp, saving, size=8, color='2E7D32') doc.add_paragraph() # ═══════════════════════════════════════════════════════════════ # WEIGHT MILESTONES # ═══════════════════════════════════════════════════════════════ p = doc.add_paragraph() bold_run(p, ' WEIGHT LOSS MILESTONES', size=11, color='FFFFFF') pPr = p._p.get_or_add_pPr() shd = OxmlElement('w:shd') shd.set(qn('w:val'), 'clear'); shd.set(qn('w:color'), 'auto'); shd.set(qn('w:fill'), '37474F') pPr.append(shd) miles = [ ('Short Term', '–5 kg', '89.9 kg', '6–8 weeks'), ('Mid Term', '–10 kg', '84.9 kg', '3–4 months'), ('Long Term ✓','–18.1 kg','76.8 kg', '6–9 months'), ] m_tbl = doc.add_table(rows=1 + len(miles), cols=4) m_tbl.style = 'Table Grid' for i, h in enumerate(['GOAL', 'LOSS', 'TARGET WEIGHT', 'TIMELINE']): hc = m_tbl.cell(0, i) set_cell_bg(hc, '37474F') hp = hc.paragraphs[0] hp.alignment = WD_ALIGN_PARAGRAPH.CENTER bold_run(hp, h, size=8.5, color='FFFFFF') m_colors = ['ECEFF1', 'CFD8DC', 'B0BEC5'] for i, (goal, loss, weight, time) in enumerate(miles): row = m_tbl.rows[i + 1] for ci in range(4): set_cell_bg(row.cells[ci], m_colors[i]) for ci, txt in enumerate([goal, loss, weight, time]): p = row.cells[ci].paragraphs[0] p.alignment = WD_ALIGN_PARAGRAPH.CENTER bold_run(p, txt, size=9, color='1A237E' if i == 2 else '263238') doc.add_paragraph() # ═══════════════════════════════════════════════════════════════ # FOOTER # ═══════════════════════════════════════════════════════════════ footer_p = doc.add_paragraph() footer_p.alignment = WD_ALIGN_PARAGRAPH.CENTER normal_run(footer_p, 'This diet chart was prepared by Kolors Health Care on 25 July 2026 ' 'for Kevin Richard. Next review: 4 weeks. Counsellor: Hajira | ' 'For queries contact your Kolors centre.', size=7.5, color='888888') # ── Save ────────────────────────────────────────────────────── out = '/tmp/workspace/kevin-diet/Kevin_Richard_Diet_Chart.docx' doc.save(out) print(f"Saved: {out}") PYEOF python3 /tmp/workspace/kevin-diet/create_diet_chart.py

Running Command

ls -lh /tmp/workspace/kevin-diet/

Your printable diet chart is ready:

Kevin Richard Diet Chart

Word Document · DOCX


What's included in the document:
SectionDetails
HeaderKolors Health Care branding, Kevin's full stats from Tanita
Macro targets barColour-coded blocks - calories, protein, carbs, fat, water
Full meal plan6 meals with colour-coded time bands, all options (A-H), macros per option
Restaurant optionsMarked separately inside the meal table for easy reference
Key rules box8 daily rules with reasoning
Smart swapsEating out substitutions with calorie savings
Weight milestones3-stage target table
FooterClinic name, date, counsellor, review date
Open in Word or Google Docs and print as A4. All sections fit cleanly on standard A4 with 1.5 cm margins.
This is a shared conversation. Sign in to Orris to start your own chat.