Hi orris , I am Mayur Lokhande 23 yr old male , currently studying at pune in final year MBBS , native place Nagpur, i have a chief complaints of profuse hair fall since 1-1.5 months , which was started 2 years back , and I showed it to doctors , they prescribed me investigation like serum levels of all vit and minerals which came normal , prescribed me Root gain hair serum to use topically and keraglow tab to take once a day daily , and adviced me PRP but it was costly for me, so i decided to continue with serum and tablets,they dx me as Androgen male pattern hair baldness, I have a family history of baldness from grandfather old ancestry . The hair fall stopped after that , everything was normal but then started having practice of vollyball which i play daily in red soil , so have to take bath twice a days , then before 1 month i started to have a hairfall again which was more produce from parito- occipital and parito - temporal juction, which led to bald patch on perito- occipital area , i think like 4a type , so again visited clinician they added minoxidil 5% in routine, now i shaved my hair again for better application of minoxidil+ fenestride 5% , i have no idea what shampoo to use as i wash my hair daily, and root gain serum is too expensive so i stopped it now , insted having hairline -F product containing 5% minoxidil + fenestride, so tell me about everything that is happening with me , what should I do now to recover fully , and give me routine like a best and suggestion of products to use for my healthy scalp , like whoch shampoo to use whoch oil to use when to apply this hairline F what to do with other things like hell of a routine, and also i have been mastrubating a lot so tell me about that how to overcome and how it effect overall health and hairfall, tell me one snap solution for it , simple , easily understandable medical language, and stepwise and detailed fashion
minoxidil finasteride combination hair loss routine shampoo oil daily use 2024 2025
masturbation DHT testosterone hair loss scientific evidence myth 2024
best shampoo for androgenetic alopecia minoxidil users ketoconazole caffeine rosemary 2025

| Time | Action |
|---|---|
| After shower | Dry scalp gently by patting (no rough rubbing with towel) |
| Scalp fully dry | Apply Hairline-F to affected areas (parieto-occipital + frontotemporal zones) |
| Wait 30-60 min | Let it absorb before any other hair product |
| Day | Morning | Evening/Night |
|---|---|---|
| Monday | Wash hair with Nizral (ketoconazole) shampoo, dry, apply Hairline-F | Volleyball - water rinse only |
| Tuesday | Apply Hairline-F (no shampoo) | Volleyball - water rinse only |
| Wednesday | Wash with ketoconazole/zinc shampoo, dry, apply Hairline-F | Apply rosemary+coconut oil to scalp |
| Thursday | Wash hair (shampoo), dry, apply Hairline-F | Volleyball - water rinse only |
| Friday | Apply Hairline-F (no shampoo) | Apply rosemary+coconut oil |
| Saturday | Wash hair (shampoo), dry, apply Hairline-F | Volleyball - water rinse |
| Sunday | Apply Hairline-F (no shampoo) | Rest - no oil |
| Timeframe | What Happens |
|---|---|
| Week 1-6 | Possible initial shedding increase from minoxidil - NORMAL, keep going |
| Month 2-3 | Shedding stabilizes, hair fall reduces |
| Month 4-6 | New thin vellus hairs start appearing at treated areas |
| Month 6-12 | Thicker, terminal hairs growing back in the bald patch |
| 1-2 years | Maximum regrowth achieved |
DAILY: Hairline-F to scalp (after shower, dry scalp)
SHAMPOO: Nizral 2% ketoconazole - 3x per week only
OIL: Rosemary + coconut oil - 2x/week, night before shampoo day
VOLLEYBALL: Plain water rinse after, NO shampoo
FOOD: High protein + iron + zinc daily
TABLET: Continue Keraglow once daily
MASTURBATION → Hair loss: FALSE. No scientific link exists.
Create a printable daily hair care checklist I can follow as a routine
ls -la /home/daytona/workspace/
mkdir -p /home/daytona/workspace/mayur-haircare
~/mayur-haircare/generate_checklist.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm, cm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.graphics.shapes import Drawing, Rect, String, Circle
from reportlab.graphics import renderPDF
OUTPUT = "/home/daytona/workspace/mayur-haircare/Mayur_HairCare_Checklist.pdf"
# ── colour palette ──────────────────────────────────────────────────────────
TEAL = colors.HexColor("#1A7A6E")
TEAL_LIGHT = colors.HexColor("#E8F5F3")
TEAL_MID = colors.HexColor("#2DA89A")
ORANGE = colors.HexColor("#E8832A")
ORANGE_LT = colors.HexColor("#FEF3E9")
DARK = colors.HexColor("#1C2833")
GREY_LIGHT = colors.HexColor("#F4F6F7")
GREY_MID = colors.HexColor("#AAB7B8")
WHITE = colors.white
RED_SOFT = colors.HexColor("#E74C3C")
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=18*mm,
rightMargin=18*mm,
topMargin=14*mm,
bottomMargin=14*mm,
)
W = A4[0] - 36*mm # usable width
# ── styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def style(name, **kw):
s = ParagraphStyle(name, **kw)
return s
S_TITLE = style("title", fontName="Helvetica-Bold", fontSize=20, textColor=WHITE, alignment=TA_CENTER, leading=26)
S_SUB = style("sub", fontName="Helvetica", fontSize=10, textColor=TEAL_LIGHT, alignment=TA_CENTER, leading=14)
S_HEAD = style("head", fontName="Helvetica-Bold", fontSize=11, textColor=TEAL, spaceAfter=2, leading=15)
S_ITEM = style("item", fontName="Helvetica", fontSize=9, textColor=DARK, leading=13, leftIndent=4)
S_SMALL = style("small", fontName="Helvetica", fontSize=8, textColor=GREY_MID, leading=11)
S_TIP = style("tip", fontName="Helvetica-Oblique",fontSize=8, textColor=ORANGE, leading=12, leftIndent=4)
S_WARN = style("warn", fontName="Helvetica-BoldOblique", fontSize=8, textColor=RED_SOFT, leading=12, leftIndent=4)
S_CENTER = style("center", fontName="Helvetica", fontSize=9, textColor=DARK, alignment=TA_CENTER, leading=13)
S_BOLD = style("bold", fontName="Helvetica-Bold", fontSize=9, textColor=DARK, leading=13, leftIndent=4)
S_DAY = style("day", fontName="Helvetica-Bold", fontSize=8, textColor=WHITE, alignment=TA_CENTER, leading=12)
S_CELL = style("cell", fontName="Helvetica", fontSize=7.5,textColor=DARK, leading=11)
S_FOOTER = style("footer", fontName="Helvetica", fontSize=7.5,textColor=GREY_MID, alignment=TA_CENTER, leading=11)
def checkbox_row(label, note="", bold=False):
"""Returns a 1-row table with a checkbox square + label + optional note."""
box = Table([[""]], colWidths=[4.5*mm], rowHeights=[4.5*mm])
box.setStyle(TableStyle([
("BOX", (0,0),(0,0), 1, TEAL_MID),
("BACKGROUND", (0,0),(0,0), TEAL_LIGHT),
("VALIGN", (0,0),(0,0), "MIDDLE"),
]))
st = S_BOLD if bold else S_ITEM
txt = Paragraph(label, st)
note_cell = Paragraph(note, S_TIP) if note else Paragraph("", S_SMALL)
row = Table([[box, txt, note_cell]], colWidths=[7*mm, W*0.54, W*0.38])
row.setStyle(TableStyle([
("VALIGN", (0,0),(-1,-1), "MIDDLE"),
("LEFTPADDING",(0,0),(-1,-1), 0),
("RIGHTPADDING",(0,0),(-1,-1), 2),
("TOPPADDING", (0,0),(-1,-1), 1),
("BOTTOMPADDING",(0,0),(-1,-1), 1),
]))
return row
def section_header(title, emoji=""):
bg = Table([[Paragraph(f"{emoji} {title}", S_HEAD)]], colWidths=[W])
bg.setStyle(TableStyle([
("BACKGROUND", (0,0),(0,0), TEAL_LIGHT),
("LEFTPADDING", (0,0),(0,0), 6),
("RIGHTPADDING",(0,0),(0,0), 6),
("TOPPADDING", (0,0),(0,0), 4),
("BOTTOMPADDING",(0,0),(0,0), 4),
("ROUNDEDCORNERS", (0,0),(0,0), [3,3,3,3]),
]))
return bg
def divider():
return HRFlowable(width=W, thickness=0.5, color=TEAL_LIGHT, spaceAfter=4, spaceBefore=4)
# ── BANNER ───────────────────────────────────────────────────────────────────
banner = Table(
[[Paragraph("MAYUR'S DAILY HAIR CARE CHECKLIST", S_TITLE)],
[Paragraph("Androgenetic Alopecia (AGA) Management | Norwood Type IVa | Personalised Routine", S_SUB)]],
colWidths=[W]
)
banner.setStyle(TableStyle([
("BACKGROUND", (0,0),(0,1), TEAL),
("LEFTPADDING", (0,0),(0,1), 10),
("RIGHTPADDING", (0,0),(0,1), 10),
("TOPPADDING", (0,0),(0,0), 10),
("BOTTOMPADDING",(0,0),(0,0), 2),
("TOPPADDING", (0,1),(0,1), 2),
("BOTTOMPADDING",(0,1),(0,1), 10),
]))
# ── DATE BAR ─────────────────────────────────────────────────────────────────
date_bar = Table(
[[Paragraph("Date: ___________________", S_CENTER),
Paragraph("Week No.: ______", S_CENTER),
Paragraph("Day: Mon / Tue / Wed / Thu / Fri / Sat / Sun", S_CENTER)]],
colWidths=[W*0.35, W*0.2, W*0.45]
)
date_bar.setStyle(TableStyle([
("BOX", (0,0),(-1,-1), 0.5, GREY_MID),
("INNERGRID", (0,0),(-1,-1), 0.5, GREY_MID),
("BACKGROUND", (0,0),(-1,-1), GREY_LIGHT),
("LEFTPADDING", (0,0),(-1,-1), 6),
("RIGHTPADDING", (0,0),(-1,-1), 6),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
("VALIGN", (0,0),(-1,-1), "MIDDLE"),
]))
# ── SHAMPOO DAY? ─────────────────────────────────────────────────────────────
shampoo_bar = Table(
[[Paragraph("Is today a SHAMPOO day?", S_BOLD),
Paragraph(" YES (Mon / Wed / Fri)", S_ITEM),
Paragraph(" NO (Tue / Thu / Sat / Sun)", S_ITEM)]],
colWidths=[W*0.3, W*0.33, W*0.37]
)
shampoo_bar.setStyle(TableStyle([
("BOX", (0,0),(-1,-1), 0.8, ORANGE),
("INNERGRID", (0,0),(-1,-1), 0.5, ORANGE),
("BACKGROUND", (0,0),(0,0), ORANGE_LT),
("LEFTPADDING", (0,0),(-1,-1), 6),
("TOPPADDING", (0,0),(-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("VALIGN", (0,0),(-1,-1), "MIDDLE"),
]))
# ── MORNING ROUTINE ──────────────────────────────────────────────────────────
morning_items = [
("Wake up & drink 1 glass of water (250 mL)", "Hydration = scalp health"),
("Take Keraglow tablet with breakfast", "Once daily, after food"),
("— IF SHAMPOO DAY —", "", True),
("Wet scalp with lukewarm (not hot) water", "Hot water damages follicles"),
("Apply Nizral / ketoconazole 2% shampoo to scalp", "Leave 2-3 min, then rinse"),
("Rinse thoroughly — no residue left behind", "Residue blocks follicles"),
("Pat dry with a soft towel — NO rubbing", "Rubbing breaks fragile hairs"),
("— ALL DAYS (after shower / after drying) —", "", True),
("Ensure scalp is fully dry before applying Hairline-F", "Wet scalp = poor absorption"),
("Apply Hairline-F (1 mL) to parieto-occipital bald patch", "Use fingertip / dropper"),
("Apply Hairline-F to parieto-temporal recession zones", "Spread gently, don't rub hard"),
("Massage lightly for 1-2 min with fingertips", "Improves blood flow"),
("Wash hands immediately after application", "Prevent accidental eye contact"),
("Wait 30-60 minutes before any styling / going out", "Allow full absorption"),
]
# ── AFTERNOON / VOLLEYBALL ───────────────────────────────────────────────────
afternoon_items = [
("Drink water every 30 min during volleyball (≥ 500 mL/game)", "Dehydration stresses follicles"),
("Wear a light cotton bandana / cap if playing in strong sun", "UV + heat = scalp damage"),
("After volleyball: rinse scalp with plain COOL water only", "NO shampoo — water only"),
("Pat dry with clean towel — do NOT scratch/rub scalp", "Red soil particles irritate scalp"),
("Check scalp for any redness, boils, or tenderness", "Early sign of folliculitis — see doctor if present"),
]
# ── EVENING / NIGHT ──────────────────────────────────────────────────────────
evening_items = [
("Eat a protein-rich dinner (eggs / dal / paneer / chicken)", "≥ 1.2g protein per kg body weight"),
("— IF OIL NIGHT (Wed night & Fri night) —", "", True),
("Mix 2-3 drops rosemary essential oil in 1 tbsp coconut oil", "In palm, mix well"),
("Apply oil blend to scalp (NOT to hair length)", "Target follicle roots only"),
("Massage for 5 min in circular motions with fingertips", "Improves dermal papilla blood flow"),
("Leave overnight — wash off with ketoconazole shampoo next morning", "DO NOT apply Hairline-F on oil night"),
("— ALL EVENINGS —", "", True),
("Drink 1 more glass of water before sleep", "Total target: 3 L/day"),
("Sleep for 7-8 hours at a fixed time", "Growth hormone (hair regrowth) peaks during sleep"),
("Keep phone away from bed to avoid late-night urge triggers", "Sleep hygiene = hormone regulation"),
]
# ── WEEKLY SUMMARY TABLE ──────────────────────────────────────────────────────
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
shampoo = ["YES", "No", "YES", "YES", "No", "YES", "No"]
hairlinef= ["YES","YES", "YES", "YES", "YES","YES","YES"]
oil = ["No", "No", "Night","No","Night","No","No"]
kera = ["YES","YES", "YES", "YES", "YES","YES","YES"]
header_row = [Paragraph(d, S_DAY) for d in ["", "Mon","Tue","Wed","Thu","Fri","Sat","Sun"]]
row1 = [Paragraph("Shampoo\n(Nizral)", S_CELL)] + [Paragraph(v, S_CELL) for v in shampoo]
row2 = [Paragraph("Hairline-F", S_CELL)] + [Paragraph(v, S_CELL) for v in hairlinef]
row3 = [Paragraph("Scalp Oil\n(Night)", S_CELL)] + [Paragraph(v, S_CELL) for v in oil]
row4 = [Paragraph("Keraglow\nTablet", S_CELL)] + [Paragraph(v, S_CELL) for v in kera]
col_w = [W*0.165] + [W*0.119]*7
weekly = Table([header_row, row1, row2, row3, row4], colWidths=col_w)
cell_style = [
("BACKGROUND", (0,0),(-1,0), TEAL),
("TEXTCOLOR", (0,0),(-1,0), WHITE),
("FONTNAME", (0,0),(-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0),(-1,-1), 8),
("ALIGN", (0,0),(-1,-1), "CENTER"),
("VALIGN", (0,0),(-1,-1), "MIDDLE"),
("GRID", (0,0),(-1,-1), 0.5, GREY_MID),
("BACKGROUND", (0,1),(0,-1), GREY_LIGHT),
("TOPPADDING", (0,0),(-1,-1), 3),
("BOTTOMPADDING",(0,0),(-1,-1), 3),
]
# colour YES cells green, No cells grey, Night cells orange
for r in range(1, 5):
for c in range(1, 8):
val = [shampoo, hairlinef, oil, kera][r-1][c-1]
if val == "YES":
cell_style.append(("BACKGROUND", (c,r),(c,r), colors.HexColor("#D5F5E3")))
cell_style.append(("TEXTCOLOR", (c,r),(c,r), colors.HexColor("#1E8449")))
cell_style.append(("FONTNAME", (c,r),(c,r), "Helvetica-Bold"))
elif val == "Night":
cell_style.append(("BACKGROUND", (c,r),(c,r), ORANGE_LT))
cell_style.append(("TEXTCOLOR", (c,r),(c,r), ORANGE))
cell_style.append(("FONTNAME", (c,r),(c,r), "Helvetica-Bold"))
elif val == "No":
cell_style.append(("TEXTCOLOR", (c,r),(c,r), GREY_MID))
weekly.setStyle(TableStyle(cell_style))
# ── IMPORTANT REMINDERS BOX ──────────────────────────────────────────────────
reminders = [
("NEVER shampoo twice daily — strips scalp oils", RED_SOFT),
("Initial shedding with Hairline-F (weeks 1-6) is NORMAL — keep going", ORANGE),
("On oil nights — skip Hairline-F application", ORANGE),
("Masturbation does NOT cause hair loss — confirmed by science", TEAL_MID),
("AGA treatment is lifelong — stopping = hair loss returns in ~12 months", RED_SOFT),
("If scalp shows redness / pus / pain — see a dermatologist immediately", RED_SOFT),
]
reminder_rows = []
for text, col in reminders:
s = ParagraphStyle("rem", fontName="Helvetica-Bold" if col==RED_SOFT else "Helvetica",
fontSize=8, textColor=col, leading=12, leftIndent=6)
reminder_rows.append([Paragraph(f"⚑ {text}", s)])
rem_table = Table(reminder_rows, colWidths=[W])
rem_table.setStyle(TableStyle([
("BOX", (0,0),(0,-1), 0.8, TEAL),
("LEFTPADDING", (0,0),(0,-1), 6),
("RIGHTPADDING", (0,0),(0,-1), 6),
("TOPPADDING", (0,0),(0,-1), 3),
("BOTTOMPADDING",(0,0),(0,-1), 3),
("BACKGROUND", (0,0),(0,-1), GREY_LIGHT),
("LINEBELOW", (0,0),(0,-2), 0.3, GREY_MID),
]))
# ── PROGRESS TRACKER ─────────────────────────────────────────────────────────
weeks = [f"Week {i}" for i in range(1, 13)]
prog_headers = [Paragraph(w, S_DAY) for w in ["Month/Week"] + weeks]
prog_row1 = [Paragraph("Hair fall\n(1=less, 5=heavy)", S_CELL)] + [Paragraph("___", S_CELL)] * 12
prog_row2 = [Paragraph("New growth\n(Yes/No)", S_CELL)] + [Paragraph("___", S_CELL)] * 12
prog_row3 = [Paragraph("Scalp\nhealth (1-5)", S_CELL)] + [Paragraph("___", S_CELL)] * 12
col_w2 = [W*0.165] + [W*(0.835/12)]*12
tracker = Table([prog_headers, prog_row1, prog_row2, prog_row3], colWidths=col_w2)
tracker.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,0), TEAL_MID),
("TEXTCOLOR", (0,0),(-1,0), WHITE),
("FONTNAME", (0,0),(-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0),(-1,-1), 7),
("ALIGN", (0,0),(-1,-1), "CENTER"),
("VALIGN", (0,0),(-1,-1), "MIDDLE"),
("GRID", (0,0),(-1,-1), 0.4, GREY_MID),
("BACKGROUND", (0,1),(0,-1), GREY_LIGHT),
("TOPPADDING", (0,0),(-1,-1), 3),
("BOTTOMPADDING",(0,0),(-1,-1), 3),
]))
# ── FOOTER ───────────────────────────────────────────────────────────────────
footer = Paragraph(
"Prepared by Orris AI | Based on: Dermatology 2-Vol Set 5e (Elsevier), Fitzpatrick's Dermatology, Andrews' Diseases of Skin | "
"For: Mayur Lokhande, 23M, AGA Norwood IVa | Print & laminate for daily use",
S_FOOTER
)
# ── ASSEMBLE DOCUMENT ─────────────────────────────────────────────────────────
def build_section(title, emoji, items):
elems = [section_header(title, emoji), Spacer(1, 3)]
for item in items:
if len(item) == 3 and item[2]: # sub-header row
row = Table(
[[Paragraph(item[0], ParagraphStyle("sh", fontName="Helvetica-BoldOblique",
fontSize=8.5, textColor=ORANGE, leading=12, leftIndent=4))]],
colWidths=[W]
)
row.setStyle(TableStyle([
("BACKGROUND", (0,0),(0,0), ORANGE_LT),
("LEFTPADDING", (0,0),(0,0), 6),
("TOPPADDING", (0,0),(0,0), 2),
("BOTTOMPADDING",(0,0),(0,0), 2),
]))
elems.append(row)
else:
elems.append(checkbox_row(item[0], item[1] if len(item) > 1 else ""))
return elems
story = []
story.append(banner)
story.append(Spacer(1, 5))
story.append(date_bar)
story.append(Spacer(1, 4))
story.append(shampoo_bar)
story.append(Spacer(1, 6))
# Morning
story += build_section("MORNING ROUTINE", "☀", morning_items)
story.append(Spacer(1, 6))
# Afternoon
story += build_section("AFTERNOON / VOLLEYBALL", "🏐", afternoon_items)
story.append(Spacer(1, 6))
# Evening
story += build_section("EVENING & NIGHT ROUTINE", "🌙", evening_items)
story.append(Spacer(1, 6))
# Weekly schedule
story.append(section_header("WEEKLY SCHEDULE AT A GLANCE", "📅"))
story.append(Spacer(1, 3))
story.append(weekly)
story.append(Spacer(1, 6))
# Reminders
story.append(section_header("IMPORTANT REMINDERS", "⚠"))
story.append(Spacer(1, 3))
story.append(rem_table)
story.append(Spacer(1, 6))
# Progress tracker
story.append(section_header("12-WEEK PROGRESS TRACKER", "📈"))
story.append(Spacer(1, 3))
story.append(tracker)
story.append(Spacer(1, 8))
story.append(divider())
story.append(footer)
doc.build(story)
print(f"PDF generated: {OUTPUT}")
cd /home/daytona/workspace/mayur-haircare && python generate_checklist.py 2>&1
ls -lh /home/daytona/workspace/mayur-haircare/
Mayur HairCare Checklist
PDF Document · PDF