attachment
attachment
attachment
attachment

Skin type oily Age 21 yrs Currently use dove soap for face Before that used the joy charcoal face wash but no moisturizer and sunscreen and after some months had a white mark near nose region,hence switched to dove soap Make a skin care routine for me

analyse_media
analyse_media
Searching the Web

skincare routine oily skin 21 year old male India affordable products 2024

Here's your personalized skincare routine based on your photos and skin profile:

What I Can See From Your Photos

  • Oily T-zone (forehead + nose) with visible shine
  • Closed comedones (whiteheads) clustered on the forehead - bumpy texture
  • Inflammatory acne near the left nostril crease (the red bump you noticed)
  • Slightly enlarged pores around the nose
  • Mild post-acne marks on cheeks
  • The white mark you mentioned near the nose is likely post-inflammatory hyperpigmentation (PIH) or irritation from the charcoal wash stripping your skin without any moisturizer/SPF to repair it
Dove soap, while mild, is too moisturizing and creamy for oily/acne-prone skin. It leaves a residue that can clog pores. Time to upgrade.

Your Skincare Routine

MORNING

Step 1 - Face Wash Use a salicylic acid (BHA) face wash once daily in the morning.
  • Recommended: Minimalist 0.5% Salicylic Acid Face Wash (₹199) or Plum Green Tea Face Wash (₹200)
  • Salicylic acid penetrates oil in pores, clears closed comedones, and prevents breakouts
  • Use only once daily (morning) - over-washing strips skin and causes more oil
Step 2 - Moisturizer (YES, oily skin needs this) Without moisturizer, your skin overproduces oil to compensate - this worsens acne and shine.
  • Recommended: Minimalist 10% Niacinamide + Zinc Moisturizer (₹349) or Neutrogena Hydro Boost Gel (₹350) or Dot & Key Water Reserve Gel (~₹350)
  • Use a gel-based, oil-free, non-comedogenic moisturizer - NOT a cream
  • Apply a pea-sized amount while face is still slightly damp
Step 3 - Sunscreen (non-negotiable) This is what you were missing before. Sun exposure darkens acne marks and causes the white patches you saw.
  • Recommended: Re'equil Ultra Matte Dry Touch SPF 50 (₹395) or Minimalist SPF 50 (₹299) or Dot & Key SPF 50 Gel (~₹395)
  • Look for: SPF 50+, PA++++, matte finish, non-comedogenic
  • Apply generously 15 minutes before going outside, every single day, even indoors near windows

NIGHT

Step 1 - Face Wash Use a gentle, non-stripping cleanser at night to remove dirt/sweat.
  • Recommended: Cetaphil Gentle Skin Cleanser (~₹350) or CeraVe Foaming Face Wash
  • This is gentler than salicylic acid so it doesn't over-dry at night
Step 2 - Spot Treatment (for the nose area acne)
  • Apply Clindamycin + Nicotinamide gel (Clindac A Gel - prescription, ask a chemist) or Benzoyl Peroxide 2.5% directly on the red bump near your nose
  • Do NOT apply to the entire face - only on active pimples
  • Available OTC: Acne Squad Pimple Patch (sticker overnight) or Mamaearth Spot Gel
Step 3 - Moisturizer Same gel moisturizer as morning - apply a thin layer

WEEKLY (1-2x per week)

Exfoliation for forehead bumps: The forehead closed comedones need chemical exfoliation to clear.
  • Recommended: Minimalist AHA 25% + BHA 5% Peeling Solution (~₹599) - use ONCE a week max at night
  • Leave on 10 minutes, rinse off. Do NOT use on active/open pimples
  • OR: Paula's Choice BHA Liquid Exfoliant 2% (weekly use)

About the White Mark Near Nose

The white patch was most likely caused by:
  1. The charcoal wash stripping your skin barrier repeatedly
  2. No sunscreen = sun exposure darkened surrounding skin, making the affected area look lighter by contrast
  3. Could be post-inflammatory hyperpigmentation in reverse (hypopigmentation)
Fix: Consistent SPF + Niacinamide moisturizer will gradually even this out over 2-3 months.

Quick Summary Table

StepMorningNight
CleanserSalicylic acid washGentle cleanser
Treatment-Spot treatment (pimples only)
MoisturizerGel moisturizerGel moisturizer
SunscreenSPF 50 matte-

Key Rules to Remember

  1. Never skip moisturizer - oily skin still needs hydration
  2. Never skip sunscreen - this caused your white marks
  3. Do not over-wash - max 2x daily, ideally salicylic acid only in the morning
  4. Do not pick the nose bump - the nostril crease area scars and gets infected easily
  5. Introduce one new product at a time - wait 1 week between introducing each new product so you know what your skin reacts to
  6. Patch test all new products on your inner arm for 24 hours first

Budget Estimate (Starting Kit)

ProductApprox. Cost
Salicylic acid face wash₹200
Gentle night cleanser₹350
Gel moisturizer₹350
SPF 50 matte sunscreen₹400
Weekly peel (optional)₹600
Total~₹1,300-1,900
Start with just the 4 basics (cleanser + moisturizer + sunscreen + spot treatment). The weekly peel can come later once your skin is stable.

Note: If the red bump near your nose doesn't improve in 2 weeks with spot treatment, visit a dermatologist. It's in the "danger triangle" area of the face where infections can be more serious if left untreated. A dermatologist can also prescribe topical retinoids (like Adapalene/Differin) which are the gold standard for clearing closed comedones and preventing acne long-term.

Morning Cleanse If your face feels oily: Derma Co 2% Sali-Cinamide Face Wash (pea-sized amount). If it doesn't feel oily: rinse with plain water. Moisturize Derma Co 5% Nia-Ceramide Mattifying Moisturizer Use about 1 fingertip unit for your face. Sunscreen (if exposed to daylight) Derma Co 1% Hyaluronic Sunscreen SPF 50 Use the 2-finger rule for face and neck. Reapply if you're outdoors for more than 2–3 hours. 🌙 Night Derma Co 2% Sali-Cinamide Face Wash Pea-sized amount. Massage gently for 20–30 seconds. Derma Co 5% Nia-Ceramide Mattifying Moisturizer About 1 fingertip unit.

This is a solid, well-chosen routine. Here's my honest assessment and a few tweaks:

Review of Your Chosen Routine

✅ What's Good

  • Derma Co 2% Sali-Cinamide Face Wash - excellent choice. Salicylic acid (BHA) targets pore congestion and oiliness, niacinamide soothes. Good fit for your closed comedones and oily T-zone.
  • Derma Co 5% Nia-Ceramide Moisturizer - mattifying + ceramides = oil control without stripping. Niacinamide at 5% will also gradually fade your acne marks and help with the white patch near the nose.
  • Derma Co Hyaluronic Sunscreen SPF 50 - the missing piece from your previous routine. This alone will prevent new marks from forming and protect existing ones from darkening.
  • The water rinse option in the morning if not oily is smart - prevents over-cleansing.

One Suggested Addition

For the active red bump near your nostril, the routine doesn't have a spot treatment. The rest of the routine will help prevent new ones, but it won't clear the existing inflamed pimple quickly.
Add: Apply a small amount of Benzoyl Peroxide 2.5% gel (Oxy 2.5 or Persol 2.5 - both ~₹80-100, available at any chemist) directly on that bump at night, before moisturizer. Use only on active pimples, not the whole face.

Minor Adjustments

PointSuggestion
Face wash at nightMassage for 60 seconds, not 20-30. Salicylic acid needs contact time to work properly on clogged pores.
Moisturizer order at nightIf you add the spot treatment - apply it BEFORE moisturizer, let it dry 2 min, then moisturize.
Sunscreen reapplicationIndoors near windows still warrants SPF. UV-A passes through glass and causes the kind of pigmentation you've already experienced.

What to Expect (Timeline)

  • Week 1-2: Less shine, skin feels more balanced
  • Week 3-4: Forehead bumps start reducing
  • Month 2-3: Acne marks and the white patch near nose gradually even out from niacinamide + consistent SPF
  • Month 3+: If closed comedones on forehead persist, that's when you can consider adding a weekly chemical exfoliant (AHA/BHA peel) or Adapalene at night

Bottom line: This routine is well-matched to your skin. Stay consistent for at least 8 weeks before judging results - skincare takes time. The biggest mistake people make is switching products too early because they don't see instant results.

Create a detailed skincare routine PDF with product names, quantities, and timing I can print

Reading File
Running Command

mkdir -p /tmp/workspace/skincare-pdf && ls /tmp/workspace/skincare-pdf/

Writing File

~/skincare-pdf/generate_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus import Image as RLImage

OUTPUT = "/tmp/workspace/skincare-pdf/Skincare_Routine.pdf"

# ── Colour palette ──────────────────────────────────────────────────────────
NAVY      = colors.HexColor("#1A2B4A")   # headings / header bg
SKY       = colors.HexColor("#E8F4FD")   # morning block bg
MOON      = colors.HexColor("#F0EBF8")   # night block bg
GOLD      = colors.HexColor("#F5A623")   # accent / step numbers
LIGHT_GREY= colors.HexColor("#F7F7F7")   # table row alt
MID_GREY  = colors.HexColor("#CCCCCC")   # rule / border
WHITE     = colors.white
GREEN     = colors.HexColor("#27AE60")
RED_SOFT  = colors.HexColor("#E74C3C")

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    leftMargin=18*mm, rightMargin=18*mm,
    topMargin=14*mm, bottomMargin=14*mm,
    title="Daily Skincare Routine",
    author="Orris Skincare"
)

W, H = A4
content_w = W - 36*mm

styles = getSampleStyleSheet()

# Custom styles
def PS(name, **kw):
    return ParagraphStyle(name, **kw)

TITLE_S   = PS("Title2",    fontSize=22, fontName="Helvetica-Bold",
               textColor=WHITE,       alignment=TA_CENTER, spaceAfter=2)
SUBTITLE_S= PS("Subtitle2", fontSize=10, fontName="Helvetica",
               textColor=colors.HexColor("#BCD9F5"), alignment=TA_CENTER)
SECTION_S = PS("Section",   fontSize=13, fontName="Helvetica-Bold",
               textColor=WHITE, alignment=TA_CENTER, spaceAfter=0)
LABEL_S   = PS("Label",     fontSize=9,  fontName="Helvetica-Bold",
               textColor=NAVY, spaceAfter=1)
BODY_S    = PS("Body2",     fontSize=9,  fontName="Helvetica",
               textColor=colors.HexColor("#333333"), leading=13)
SMALL_S   = PS("Small",     fontSize=8,  fontName="Helvetica",
               textColor=colors.HexColor("#555555"), leading=11)
TIP_S     = PS("Tip",       fontSize=8,  fontName="Helvetica-Oblique",
               textColor=colors.HexColor("#555555"), leading=11)
STEP_S    = PS("Step",      fontSize=10, fontName="Helvetica-Bold",
               textColor=NAVY)
WARN_S    = PS("Warn",      fontSize=8,  fontName="Helvetica-Bold",
               textColor=RED_SOFT)
TIMELINE_S= PS("Timeline",  fontSize=8,  fontName="Helvetica",
               textColor=colors.HexColor("#333333"), leading=12)

story = []

# ── HEADER BANNER ───────────────────────────────────────────────────────────
header_data = [[
    Paragraph("MY DAILY SKINCARE ROUTINE", TITLE_S),
]]
header_sub  = [[
    Paragraph("Oily / Acne-Prone Skin  •  Age 21  •  Derma Co Products", SUBTITLE_S),
]]
banner = Table(
    [
        [Paragraph("MY DAILY SKINCARE ROUTINE", TITLE_S)],
        [Paragraph("Oily / Acne-Prone Skin  •  Age 21  •  Derma Co Products", SUBTITLE_S)],
    ],
    colWidths=[content_w]
)
banner.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), NAVY),
    ("TOPPADDING",    (0,0), (-1,-1), 10),
    ("BOTTOMPADDING", (0,0), (-1,-1), 10),
    ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ("RIGHTPADDING",  (0,0), (-1,-1), 8),
    ("ROUNDEDCORNERS",(0,0), (-1,-1), [6,6,6,6]),  # ignored but harmless
]))
story.append(banner)
story.append(Spacer(1, 5*mm))


# ── helper: section header ──────────────────────────────────────────────────
def section_header(text, bg):
    tbl = Table([[Paragraph(text, SECTION_S)]], colWidths=[content_w])
    tbl.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
    ]))
    return tbl


# ── helper: step row ────────────────────────────────────────────────────────
def step_row(num, step_name, product, qty, notes, bg=WHITE):
    num_cell   = Paragraph(f'<font color="#F5A623"><b>{num}</b></font>', PS("N", fontSize=16, fontName="Helvetica-Bold", alignment=TA_CENTER))
    name_cell  = Paragraph(f"<b>{step_name}</b>", PS("SN", fontSize=10, fontName="Helvetica-Bold", textColor=NAVY))
    prod_cell  = Paragraph(product, PS("SP", fontSize=9,  fontName="Helvetica-Oblique", textColor=colors.HexColor("#1A6B3A")))
    qty_cell   = Paragraph(qty,     PS("SQ", fontSize=9,  fontName="Helvetica-Bold",   textColor=RED_SOFT))
    note_cell  = Paragraph(notes,   SMALL_S)

    inner = Table(
        [
            [name_cell, qty_cell],
            [prod_cell, ""],
            [note_cell, ""],
        ],
        colWidths=[content_w - 24*mm - 4*mm, 24*mm],
        rowHeights=None
    )
    inner.setStyle(TableStyle([
        ("SPAN",         (0,2), (1,2)),
        ("VALIGN",       (0,0), (-1,-1), "TOP"),
        ("LEFTPADDING",  (0,0), (-1,-1), 0),
        ("RIGHTPADDING", (0,0), (-1,-1), 0),
        ("TOPPADDING",   (0,0), (-1,-1), 1),
        ("BOTTOMPADDING",(0,0), (-1,-1), 1),
        ("ALIGN",        (1,0), (1,0), "RIGHT"),
    ]))

    row = Table(
        [[num_cell, inner]],
        colWidths=[12*mm, content_w - 12*mm]
    )
    row.setStyle(TableStyle([
        ("BACKGROUND",   (0,0), (-1,-1), bg),
        ("TOPPADDING",   (0,0), (-1,-1), 6),
        ("BOTTOMPADDING",(0,0), (-1,-1), 6),
        ("LEFTPADDING",  (0,0), (-1,-1), 6),
        ("RIGHTPADDING", (0,0), (-1,-1), 8),
        ("VALIGN",       (0,0), (-1,-1), "MIDDLE"),
        ("LINEBELOW",    (0,0), (-1,-1), 0.4, MID_GREY),
    ]))
    return row


# ════════════════════════════════════════════════════════════════════════════
# MORNING SECTION
# ════════════════════════════════════════════════════════════════════════════
story.append(section_header("☀  MORNING ROUTINE", colors.HexColor("#2471A3")))
story.append(Spacer(1, 2*mm))

morning_steps = [
    (
        "1", "CLEANSE",
        "Derma Co 2% Sali-Cinamide Face Wash",
        "Pea-sized amount",
        "Use ONLY if face feels oily. Otherwise rinse with plain water.\n"
        "Massage gently for 60 sec, rinse with cool/lukewarm water.",
        SKY
    ),
    (
        "2", "MOISTURIZE",
        "Derma Co 5% Nia-Ceramide Mattifying Moisturizer",
        "1 fingertip unit",
        "Apply while face is still slightly damp for better absorption.\n"
        "Blend outward — don't forget jawline and neck.",
        WHITE
    ),
    (
        "3", "SUNSCREEN",
        "Derma Co 1% Hyaluronic Sunscreen SPF 50",
        "2-finger rule (face + neck)",
        "Apply 15 min before sun exposure. Reapply every 2-3 hrs if outdoors.\n"
        "Even indoors near windows — UV-A passes through glass.",
        SKY
    ),
]

for s in morning_steps:
    story.append(step_row(*s))
    story.append(Spacer(1, 1*mm))

story.append(Spacer(1, 4*mm))


# ════════════════════════════════════════════════════════════════════════════
# NIGHT SECTION
# ════════════════════════════════════════════════════════════════════════════
story.append(section_header("🌙  NIGHT ROUTINE", NAVY))
story.append(Spacer(1, 2*mm))

night_steps = [
    (
        "1", "CLEANSE",
        "Derma Co 2% Sali-Cinamide Face Wash",
        "Pea-sized amount",
        "Use every night — removes sweat, sunscreen, and daily buildup.\n"
        "Massage for 60 seconds. Rinse thoroughly.",
        MOON
    ),
    (
        "2", "SPOT TREATMENT  (if needed)",
        "Benzoyl Peroxide 2.5% Gel  (Oxy / Persol 2.5 — ~₹80)",
        "Tiny dot — active pimples only",
        "Apply ONLY on active red pimples (especially the nostril area).\n"
        "Do NOT spread on whole face. Let dry 2 min before moisturizer.",
        WHITE
    ),
    (
        "3", "MOISTURIZE",
        "Derma Co 5% Nia-Ceramide Mattifying Moisturizer",
        "1 fingertip unit",
        "Niacinamide at night works to fade acne marks while you sleep.\n"
        "Apply as final step.",
        MOON
    ),
]

for s in night_steps:
    story.append(step_row(*s))
    story.append(Spacer(1, 1*mm))

story.append(Spacer(1, 4*mm))


# ════════════════════════════════════════════════════════════════════════════
# WEEKLY  (1-2x)
# ════════════════════════════════════════════════════════════════════════════
story.append(section_header("📅  WEEKLY  (1–2× per week, Night Only)", colors.HexColor("#7D3C98")))
story.append(Spacer(1, 2*mm))

story.append(step_row(
    "W", "CHEMICAL EXFOLIANT",
    "Minimalist AHA 25% + BHA 5% Peeling Solution  (~₹599)",
    "Thin even layer",
    "Apply to dry face. Leave on 10 min MAX. Rinse off with water.\n"
    "Helps clear forehead bumps (closed comedones). Do NOT use on open/active pimples.\n"
    "Always apply sunscreen the next morning after using this.",
    colors.HexColor("#F5EEF8")
))

story.append(Spacer(1, 5*mm))


# ════════════════════════════════════════════════════════════════════════════
# GOLDEN RULES
# ════════════════════════════════════════════════════════════════════════════
rules_header = Table(
    [[Paragraph("  ✔  GOLDEN RULES", PS("GR", fontSize=11, fontName="Helvetica-Bold",
                                         textColor=WHITE, spaceAfter=0))]],
    colWidths=[content_w]
)
rules_header.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,-1), colors.HexColor("#1E8449")),
    ("TOPPADDING",   (0,0), (-1,-1), 5),
    ("BOTTOMPADDING",(0,0), (-1,-1), 5),
    ("LEFTPADDING",  (0,0), (-1,-1), 8),
]))
story.append(rules_header)

rules = [
    ("Never skip moisturizer",   "Oily skin still needs hydration. Skipping causes MORE oil production."),
    ("Never skip sunscreen",     "This caused your previous white marks. SPF every day, no exceptions."),
    ("Max 2x cleanse daily",     "Over-washing strips the skin barrier and worsens oiliness."),
    ("60-second rule",           "Salicylic acid needs contact time. Massage for a full minute."),
    ("Don't pick the nose bump", "Nostril crease area scars and gets infected easily. Use spot treatment only."),
    ("One product at a time",    "Wait 1 week before introducing any new product to your routine."),
    ("Patch test first",         "Test all new products on inner arm for 24 hrs before applying to face."),
]

for i, (rule, detail) in enumerate(rules):
    bg = LIGHT_GREY if i % 2 == 0 else WHITE
    row = Table(
        [[
            Paragraph(f"<b>{rule}</b>", PS("RL", fontSize=9, fontName="Helvetica-Bold", textColor=NAVY)),
            Paragraph(detail, SMALL_S)
        ]],
        colWidths=[50*mm, content_w - 50*mm]
    )
    row.setStyle(TableStyle([
        ("BACKGROUND",   (0,0), (-1,-1), bg),
        ("TOPPADDING",   (0,0), (-1,-1), 5),
        ("BOTTOMPADDING",(0,0), (-1,-1), 5),
        ("LEFTPADDING",  (0,0), (-1,-1), 8),
        ("RIGHTPADDING", (0,0), (-1,-1), 8),
        ("VALIGN",       (0,0), (-1,-1), "TOP"),
        ("LINEBELOW",    (0,0), (-1,-1), 0.3, MID_GREY),
    ]))
    story.append(row)

story.append(Spacer(1, 5*mm))


# ════════════════════════════════════════════════════════════════════════════
# RESULTS TIMELINE
# ════════════════════════════════════════════════════════════════════════════
timeline_header = Table(
    [[Paragraph("  ⏱  WHAT TO EXPECT", PS("TH", fontSize=11, fontName="Helvetica-Bold",
                                            textColor=WHITE, spaceAfter=0))]],
    colWidths=[content_w]
)
timeline_header.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,-1), colors.HexColor("#1A2B4A")),
    ("TOPPADDING",   (0,0), (-1,-1), 5),
    ("BOTTOMPADDING",(0,0), (-1,-1), 5),
    ("LEFTPADDING",  (0,0), (-1,-1), 8),
]))
story.append(timeline_header)

timeline = [
    ("Week 1–2",   "Less shine, skin feels more balanced and less greasy by midday."),
    ("Week 3–4",   "Forehead bumps (closed comedones) start visibly reducing."),
    ("Month 2–3",  "Acne marks and white patch near nose gradually even out (niacinamide + SPF)."),
    ("Month 3+",   "If forehead bumps persist, add Adapalene (Differin) at night — consult a dermatologist."),
]

for i, (period, result) in enumerate(timeline):
    bg = colors.HexColor("#EAF2FF") if i % 2 == 0 else WHITE
    row = Table(
        [[
            Paragraph(f"<b>{period}</b>", PS("TP", fontSize=9, fontName="Helvetica-Bold",
                                              textColor=colors.HexColor("#2471A3"))),
            Paragraph(result, SMALL_S)
        ]],
        colWidths=[28*mm, content_w - 28*mm]
    )
    row.setStyle(TableStyle([
        ("BACKGROUND",   (0,0), (-1,-1), bg),
        ("TOPPADDING",   (0,0), (-1,-1), 5),
        ("BOTTOMPADDING",(0,0), (-1,-1), 5),
        ("LEFTPADDING",  (0,0), (-1,-1), 8),
        ("RIGHTPADDING", (0,0), (-1,-1), 8),
        ("VALIGN",       (0,0), (-1,-1), "MIDDLE"),
        ("LINEBELOW",    (0,0), (-1,-1), 0.3, MID_GREY),
    ]))
    story.append(row)

story.append(Spacer(1, 5*mm))


# ════════════════════════════════════════════════════════════════════════════
# PRODUCT QUICK REFERENCE TABLE
# ════════════════════════════════════════════════════════════════════════════
story.append(section_header("🛒  PRODUCT QUICK REFERENCE", colors.HexColor("#C0392B")))
story.append(Spacer(1, 2*mm))

col_w = [content_w * p for p in [0.38, 0.20, 0.17, 0.25]]
header_row = [
    Paragraph("<b>Product</b>",   PS("PH", fontSize=8, fontName="Helvetica-Bold", textColor=WHITE)),
    Paragraph("<b>When</b>",      PS("PH", fontSize=8, fontName="Helvetica-Bold", textColor=WHITE)),
    Paragraph("<b>Amount</b>",    PS("PH", fontSize=8, fontName="Helvetica-Bold", textColor=WHITE)),
    Paragraph("<b>Est. Cost</b>", PS("PH", fontSize=8, fontName="Helvetica-Bold", textColor=WHITE)),
]

prod_rows = [
    ["Derma Co 2% Sali-Cinamide Face Wash",         "AM (if oily) + PM",   "Pea-sized",          "~₹199"],
    ["Derma Co 5% Nia-Ceramide Moisturizer",         "AM + PM",             "1 fingertip unit",   "~₹349"],
    ["Derma Co SPF 50 Hyaluronic Sunscreen",         "AM only",             "2-finger rule",      "~₹399"],
    ["Benzoyl Peroxide 2.5% (Oxy/Persol 2.5)",       "PM — spot only",      "Tiny dot",           "~₹80"],
    ["Minimalist AHA+BHA Peel (weekly, optional)",   "PM — 1-2x/week",      "Thin layer, 10 min", "~₹599"],
]

table_data = [header_row]
for pr in prod_rows:
    table_data.append([Paragraph(pr[i], PS(f"PC{i}", fontSize=8, fontName="Helvetica",
                                            textColor=colors.HexColor("#222222"))) for i in range(4)])

prod_table = Table(table_data, colWidths=col_w)
prod_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), colors.HexColor("#C0392B")),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [LIGHT_GREY, WHITE]),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("GRID",          (0,0), (-1,-1), 0.4, MID_GREY),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(prod_table)

story.append(Spacer(1, 4*mm))


# ════════════════════════════════════════════════════════════════════════════
# FOOTER
# ════════════════════════════════════════════════════════════════════════════
footer = Table(
    [[Paragraph(
        "⚠ If the nostril bump doesn't improve in 2 weeks, consult a dermatologist. "
        "Persistent acne responds best to prescription Adapalene or Clindamycin gel. "
        "Generated by Orris · July 2026",
        PS("FT", fontSize=7.5, fontName="Helvetica-Oblique",
           textColor=colors.HexColor("#666666"), alignment=TA_CENTER)
    )]],
    colWidths=[content_w]
)
footer.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,-1), colors.HexColor("#F0F0F0")),
    ("TOPPADDING",   (0,0), (-1,-1), 6),
    ("BOTTOMPADDING",(0,0), (-1,-1), 6),
    ("LEFTPADDING",  (0,0), (-1,-1), 8),
    ("RIGHTPADDING", (0,0), (-1,-1), 8),
]))
story.append(footer)


# ── Build ────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

python /tmp/workspace/skincare-pdf/generate_pdf.py

Running Command

ls -lh /tmp/workspace/skincare-pdf/Skincare_Routine.pdf

Your print-ready PDF is ready:

Skincare Routine

PDF Document · PDF


What's inside the PDF:
  • Morning routine - all 3 steps with exact product names, quantities, and usage notes
  • Night routine - all 3 steps including the spot treatment step
  • Weekly exfoliation - Minimalist AHA+BHA peel instructions
  • 7 Golden Rules - the dos and don'ts in a clean table
  • Results timeline - what to expect week by week
  • Product quick reference table - all products, timing, amounts, and estimated costs at a glance
  • Footer reminder about the nostril bump
Print it A4 size, fits on a single page. You can stick it on your bathroom mirror or keep it in your bathroom cabinet.

Which is the better option your given skincare routine or my dermaco skin care routine

Straight answer: your Derma Co routine is better for you right now. Here's exactly why:

Head-to-Head Comparison

FactorMy General RoutineYour Derma Co Routine
ProductsMixed brands (Minimalist, Neutrogena, etc.)Single brand, 3 focused products
Simplicity4-5 products to source3 products, easy to buy together
Ingredient synergyGood individuallyDesigned to work together
Face washGeneric salicylic acid washSali-Cinamide (SA + Niacinamide combo)
MoisturizerGeneric gel moisturizerNia-Ceramide (Niacinamide + Ceramides - addresses your exact concerns)
SunscreenMatte SPF 50Hyaluronic SPF 50 (hydrating + protective)
Cost~₹1,300-1,900~₹950-1,100 for all 3
Addresses your white marksPartiallyDirectly - Niacinamide at 5% specifically fades hyperpigmentation
Addresses oilinessYesYes - mattifying moisturizer specifically
Spot treatmentIncludedNot included (needs to be added)

Why Derma Co Wins for Your Specific Case

1. Niacinamide is doing double duty Both the face wash AND the moisturizer contain niacinamide. This directly targets your two main concerns - oiliness and the white/pigmentation marks near your nose. My routine had niacinamide only in the moisturizer.
2. Ceramides in the moisturizer The charcoal wash + no moisturizer combo damaged your skin barrier. Ceramides actively repair and restore the barrier. My suggested generic gel moisturizers don't have this.
3. Simpler = more consistent 3 products from one brand is easier to stick to daily than sourcing 4-5 products from different brands. Consistency beats perfection in skincare.
4. Cheaper overall

The One Gap in Your Derma Co Routine

It has no spot treatment for the active pimple near your nostril. My routine addressed this. The fix is simple - just add:
Benzoyl Peroxide 2.5% gel (Oxy 2.5 or Persol 2.5, ~₹80) from any chemist. Apply only on active pimples at night, before moisturizer.

Verdict

Stick with your Derma Co routine. Add the ₹80 spot treatment, follow the 60-second cleanse rule, and be consistent for 8 weeks. That's it.

Suggest abest 2.5 % benzoyl peroxide cream

Searching the Web

best 2.5% benzoyl peroxide cream gel India available 2024 acne spot treatment

Here are the best 2.5% Benzoyl Peroxide options available in India, ranked:

Top Picks

🥇 1. Persol AC 2.5% Gel - Best Overall

  • Brand: Elder Pharmaceuticals
  • Price: ~₹85-100
  • Where to buy: Any medical store / chemist, no prescription needed
  • Why it's best: Most widely available in India, dermatologist-recommended, gel base dries quickly on skin, well-tolerated at 2.5%
  • Size: 20g tube

🥈 2. Oxy 2.5% Gel

  • Brand: Oxy (GlaxoSmithKline)
  • Price: ~₹75-90
  • Where to buy: Chemists, 1mg, Netmeds
  • Why: Lightweight gel, good for oily skin, absorbs fast
  • Size: 25g tube

🥉 3. Acne-Aid Spot Gel (2.5% BPO)

  • Brand: Stiefel / Galderma
  • Price: ~₹150-180
  • Where to buy: Chemists, Amazon India
  • Why: Slightly pricier but has a smoother, more elegant gel texture. Less drying than the above two.

4. Minimalist Benzoyl Peroxide 2.5% (if available)

  • Price: ~₹299
  • Where to buy: minimalist.com / Amazon India / Nykaa
  • Why: Good for those who prefer cosmetic-grade packaging over pharma. Slightly more moisturizing formula.

For Your Skin Specifically

Go with Persol AC 2.5% - it's the most accessible, cheapest, and works identically to expensive alternatives. Walk into any chemist and ask for it by name.

How to Use (for your routine)

WhenHow
Night onlyApply AFTER Sali-Cinamide face wash, BEFORE Nia-Ceramide moisturizer
AmountTiny dot - the size of a match head, directly on the pimple only
Contact timeLeave on overnight, don't rinse
FrequencyOnly when you have an active pimple - not daily on whole face

Important Warnings

  • Bleaches fabric - it will stain your pillow cover and towels white. Use an old pillowcase or white ones when using BPO.
  • Start slow - first 3-4 days you may get slight dryness or peeling around the spot. That's normal.
  • Don't mix with Vitamin C on the same night - they cancel each other out (not relevant to your current routine, but good to know).
  • If you get burning or excessive redness, wash it off and skip for a few days.

Which is better moisturizer for me nia-ceramide mattifying moisturizer or 4% ceramide barrier repair moisturizer ,both of dermaco

Searching the Web

Derma Co 5% Nia-Ceramide Mattifying Moisturizer vs 4% Ceramide Barrier Repair Moisturizer ingredients oily skin

Searching the Web

Derma Co 4% Ceramide Barrier Repair Moisturizer ingredients texture for oily skin

Now I have full ingredient data for both. Clear answer:

Verdict: 5% Nia-Ceramide Mattifying is Better for You

No contest for your specific skin profile. Here's the full breakdown:

Side-by-Side Comparison

Factor5% Nia-Ceramide Mattifying4% Ceramide Barrier Repair
Ceramide content2% (Ceramide NP)4% (5 ceramide types: 1, 2, 3, 4, AP)
Niacinamide5%Present (lower concentration)
Zinc PCA✅ Yes❌ No
TextureLightweight gelCream/lotion texture
Oil controlMattifying - specifically designed for itNot focused on oil control
Shea butter / fatty acidsNo heavy emollientsContains Shea Butter Glycerides, Stearic Acid, Dimethicone
Designed forOily / combination skinAll skin types (dry, sensitive focus)
Price~₹349 (100g)~₹399 (50g) - costlier per gram
Key extra ingredientZinc PCA (sebum regulator)Oxylance (oxygenation - anti-aging focus)

Why Nia-Ceramide Wins for Your Skin

1. Zinc PCA is a game-changer for oily skin The Barrier Repair version doesn't have it. Zinc PCA specifically regulates sebum production at the gland level - directly addresses your oiliness.
2. Gel texture vs cream texture The Barrier Repair has Dimethicone, Stearic Acid, and Shea Butter Glycerides - these are heavier ingredients that can sit on oily skin and feel greasy. The Mattifying gel absorbs fast and leaves a matte finish.
3. Higher niacinamide concentration 5% niacinamide in the Mattifying version vs a lower (unlisted exact %) in the Barrier Repair. 5% is the clinically proven threshold for fading pigmentation and controlling oil. This matters for your white marks near the nose.
4. The Barrier Repair's strengths don't match your needs Higher ceramide content + Oxylance = great for dry, damaged, or aging skin. At 21 with oily skin, your barrier isn't severely compromised - you don't need that level of rich repair.

When Would the 4% Ceramide Barrier Repair Be Better?

Only if you ever experience:
  • Extreme dryness or flakiness (e.g., after starting Retinol/Adapalene)
  • Skin that becomes sensitized or reactive
  • Harsh winter months when oiliness reduces
At that point you could switch to it temporarily. But for your current condition - oily, comedone-prone, acne near nose - stick with the Mattifying one.
This is a shared conversation. Sign in to Orris to start your own chat.