Hey I'm a mbbs intern started last month 24th that is June and today is 10th July, and I'm thinking of preparing for neet pg , I'm from banglore, i have to punch before 8:30 and punch out after 4:40 , but it becomes around 5-5:30 till I reach home maybe even 6 , so how should I start , I have marrow subscription can u tell what should I study from marrow and what from YouTube and which subjects to begin with and how to approach for neet pg Thank u

Searching the Web

NEET PG 2026 preparation strategy for MBBS interns Marrow subscription subject order

Searching the Web

NEET PG best subjects to start with high yield topics 2026

Reading Web Page

https://getoncourse.ai/blog/neet-pg-high-yield-topics-subjec…

Here's a no-fluff, practical NEET PG prep plan tailored to your exact situation - Bangalore intern, punching out around 4:40 PM, reaching home by 5:30-6 PM, with a Marrow subscription.

Your Reality Check First

You started internship on June 24th. NEET PG 2026 is likely around August 30, 2026 - that gives you roughly 7 weeks from today. This is a very tight timeline, so strategy matters more than volume.
Your effective study window each day:
  • 6 PM - 11 PM = 5 hours max (realistically 3-4 after dinner, freshening up, etc.)
  • 5:30 AM - 7:30 AM = 2 hours if you're disciplined (optional but high value)
  • Saturday evening + Sunday = your main bulk study days
Total realistic = 4-5 hours on weekdays, 8-10 hours on weekends

Subject Priority: The Big Picture

NEET PG 2026 has ~200 questions. Here's how the marks are distributed:
PrioritySubject~QuestionsWhat to focus on
Big 4 (MUST)Medicine21-23Cardiology, Endo, GI, Resp
Surgery21-23GI Surgery, Trauma, Breast, Thyroid
Pathology18-20General path, Neoplasia, Organ-wise
Pharmacology18-20ANS, CVS drugs, Antibiotics, Toxicology
High value short subjectsOBG19Normal labour, complications, Gynec
PSM/Community Medicine8-10Biostatistics, NHP, Vaccines
Microbiology8-10High-yield bugs + immunity
Pediatrics8-10Milestones, NNJ, nutrition
Short subjects (quick wins)Ophthalmology5-7Glaucoma, retina, lens
ENT5-7Otosclerosis, Ca larynx
Dermatology5-7Morphology, specific diseases
Forensic Medicine5-7Injuries, poisons, medico-legal
Orthopedics4-6Fractures, OA, bone tumors
Psychiatry3-5DSM criteria, drugs
The Big 4 alone = ~60% of marks. Do not sacrifice these for short subjects in the first pass.

Marrow vs YouTube: Split Guide

Use Marrow FOR:

  • Video lectures - the core content engine. Dr. Rohan Khandelwal (Surgery), Dr. Murugesh (Medicine), Dr. Sparsh (Pathology), Dr. Gobinath (Pharma) are excellent
  • Qbank - non-negotiable. After every topic, immediately do Marrow Qs on that topic (Subject-wise, not grand tests yet)
  • Rapid Revision (RR) videos - once you finish a subject's first pass, do the RR before moving on
  • Marrow Notes PDF - use as your revision material, don't make separate notes
  • Grand Tests (GTs) - start these in the last 3-4 weeks, at least 2 per week

Use YouTube FOR:

  • Anatomy - Dr. Najeeb's videos are far better than Marrow's anatomy. Use for understanding; Marrow for MCQ practice
  • Physiology - Dr. Najeeb again for concepts, or AK Lectures
  • Biostatistics (PSM) - "Dirty Medicine" on YouTube explains sensitivity/specificity/NNJ far better
  • Clinical case discussions - Osmosis videos are great to understand clinical vignette-style questions (especially Medicine)
  • Motivation/strategy - Marrow's own YouTube channel has free strategy sessions

Recommended Order to Study (7 weeks, intern schedule)

Given your time constraint, follow this sequence:

Week 1-2: Pathology + Pharmacology

Why start here? Both are high-yield, foundation subjects. Path helps you understand all clinical questions. Pharma comes up in every other subject.
  • Marrow: General Pathology (inflammation, neoplasia), then systemic path (CVS, Resp, GI)
  • Pharma: ANS, CVS drugs, Antibiotics - these three sections alone cover ~50% of pharma MCQs
  • After each chapter: do Marrow Subject QBank immediately

Week 3: Surgery

  • Focus on GI Surgery, Breast, Thyroid, Trauma - these give the most questions
  • Marrow Surgery videos are very MCQ-oriented, use them fully

Week 4: Medicine

  • Cardiology first (most questions), then Endocrinology, Respiratory, GI
  • Medicine clinical vignettes are heavy now - Marrow's case-based Qs are perfect here

Week 5: OBG + PSM

  • OBG: Normal & abnormal labour, PPH, PIH, contraception, Gynec oncology
  • PSM: Biostatistics (YouTube), vaccines, NHP, disease control programs

Week 6: Short subjects sprint

  • Ophthalmology + ENT + Dermatology + Forensic + Ortho + Psychiatry
  • Spend 1 day per subject max - just Marrow RR videos + PYQs

Week 7: Full revision + Grand Tests

  • 2 Grand Tests per week on Marrow, analyze weak areas
  • Revise only Marrow notes, no new content
  • Solve last 3 years' NEET PG PYQs

Daily Schedule (Weekdays)

TimeActivity
5:30 AM - 7:30 AMNew topic video on Marrow (1.5x speed)
During lunch break (hospital)Marrow Qs on phone - 15-20 MCQs
6:00 PM - 7:30 PMContinue/complete topic, do Marrow Qs
8:00 PM - 9:30 PMRevision of previous topic / Marrow notes
9:30 PM - 10:00 PM15-20 more MCQs before sleep
Total = ~5 hours/day on weekdays

Weekends

  • Saturday morning to evening: Cover 1 full topic/chapter
  • Sunday: Half new content + Half revision + 1 mini mock test on Marrow

Practical Tips for Your Situation

  1. Watch Marrow videos at 1.5x-2x speed - their lectures are made for this
  2. Don't make your own notes - Marrow notes PDFs are enough, just annotate them
  3. Solve PYQs topic-wise, not year-wise, during the first pass
  4. Anatomy and Physiology - at this stage, only do PYQs + Marrow RR. Don't read full texts. These are low-yield for the time invested.
  5. Start Grand Tests only after you've covered at least 3-4 subjects - don't demoralize yourself with full tests too early
  6. Micro and Biochemistry - use Marrow's Rapid Revision only, no detailed study
  7. Internship postings matter - if you're posted in Medicine, Surgery, or OBG, use that clinical exposure to contextualize your MCQ prep. You'll remember clinical questions far better.

One-Line Subject-Resource Summary

SubjectPrimary Resource
PathologyMarrow (Dr. Sparsh Gupta)
PharmacologyMarrow (Dr. Gobinath)
SurgeryMarrow (Dr. Rohan Khandelwal)
MedicineMarrow + Osmosis YouTube for clinical vignettes
OBGMarrow
AnatomyDr. Najeeb YouTube + Marrow PYQs only
PhysiologyAK Lectures YouTube + Marrow PYQs only
PSM/BiostatisticsDirty Medicine YouTube + Marrow Qs
MicrobiologyMarrow RR only
All short subjectsMarrow RR videos + PYQs only

You're starting at the right time. The intern who does 4 consistent hours daily from now will comfortably outperform someone who studied "intensely" only in the last 2 weeks. Stay consistent, don't skip Marrow Qs after each topic, and use weekends as your real preparation days. All the best!

Hey I'm a mbbs intern started last month 24th that is June and today is 10th July, and I'm thinking of preparing for neet pg , I'm from banglore, i have to punch before 8:30 and punch out after 4:40 , but it becomes around 5-5:30 till I reach home maybe even 6 , so how should I start , I have marrow subscription can u tell what should I study from marrow and what from YouTube and which subjects to begin with and how to approach for neet pg, I'll be writing my pg next year

This changes things significantly - next year's NEET PG gives you roughly 12-14 months from now, which is actually a very comfortable timeline if you start right. Let me search for the most current strategy info.
Searching the Web

NEET PG 2027 exam date schedule announcement

Searching the Web

Marrow plan intern NEET PG 12 month study strategy subject order 2027

Reading Web Page

https://medium.com/costapg/neet-pg-preparation-during-intern…

Searching the Web

Marrow NEET PG intern 1 year plan which subjects Marrow vs YouTube Anatomy Physiology

Excellent - next year's NEET PG (expected ~March 2027) gives you about 20 months from when you started internship. This is a genuinely great position to be in. Here's everything you need:

NEET PG 2027 - Complete Intern Prep Guide

Your Timeline at a Glance

PhaseMonthsGoal
Phase 1: FoundationJuly - October 2026Cover pre-clinicals + start high-yield subjects (1st reading)
Phase 2: Clinical DepthNovember 2026 - March 2027Cover all clinical subjects thoroughly (1st + 2nd reading)
Phase 3: RevisionApril - August 2027Subject-wise revision, PYQs, Grand Tests
Phase 4: Final SprintSep 2027 - ExamOnly notes + GTs + weak areas
NEET PG 2027 is expected around March 2027 (based on NBEMS schedule pattern), but stay updated on official announcements.

Your Daily Reality - What's Actually Possible

Weekday schedule (punching out ~4:40, home by 6 PM):
TimeActivity
6:00 AM - 8:00 AMStudy block 1 - New topic video (Marrow)
Lunch break (1 hr)20-25 MCQs on Marrow app (phone)
6:30 PM - 8:00 PMStudy block 2 - Complete topic + Marrow Qs
9:00 PM - 10:00 PMRevision of yesterday's topic / Marrow notes
Total = 4-5 hours/day on weekdays
Weekends (especially Sunday - your real study day):
  • Saturday: 6-7 hours (morning + evening, take afternoon off guilt-free)
  • Sunday: 8-9 hours - cover a full chapter or do a Mock test
This adds up to ~35-40 hours/week, which is more than enough for a thorough 1-year prep.

Subject Order - Phase by Phase

PHASE 1 (July - October 2026): Pre-clinicals + Foundation

Start with subjects you studied recently in 1st/2nd MBBS - memory is fresher.
Order:
  1. Pathology ← Start here. Foundational for everything. Most high-yield.
  2. Pharmacology ← Integrates with every clinical subject later
  3. Microbiology ← Relatively compact, good early win
  4. Biochemistry ← Low weightage but recent in memory; knock it out fast
  5. Anatomy ← See special note below
  6. Physiology ← See special note below
Why pre-clinicals first?
  • They're fresh from your MBBS
  • Path + Pharma are in the Big 4 and carry massive marks
  • Finishing them early gives you more time for clinicals (which need deeper reading)

PHASE 2 (November 2026 - March 2027): Clinical Subjects

Order:
  1. Medicine ← Heaviest subject, start first among clinicals
  2. Surgery
  3. OBG
  4. Pediatrics
  5. PSM/Community Medicine
  6. Ophthalmology
  7. ENT
  8. Dermatology
  9. Forensic Medicine
  10. Orthopedics
  11. Psychiatry
  12. Radiology + Anesthesia ← Just Marrow RR + PYQs
Pro tip: Use your internship postings here. When you're posted in Surgery, do Surgery on Marrow simultaneously. When in OBG posting, do OBG. Clinical context makes MCQs stick much better.

PHASE 3 (April - August 2027): Revision + GTs

  • 2nd reading of all subjects (Marrow RR videos + your annotated notes)
  • Marrow Grand Tests: minimum 2-3 per week
  • Subject-wise test series from Marrow
  • Analyze every GT - don't just look at scores, fix weak topics

Marrow vs YouTube - Detailed Split

Use Marrow for EVERYTHING except:

SubjectUse YouTube InsteadRecommended Channel
AnatomyDr. Najeeb (far superior for concepts)Dr. Najeeb Lectures
PhysiologyAK Lectures or Armando HasudunganAK Lectures
Biostatistics (PSM)Far clearer explanations for NNT, sensitivity/specificityDirty Medicine
Clinical vignette thinkingCase-based approachOsmosis
Strategy/motivationMarrow's own YouTube channelMarrow YouTube

Marrow - What to Use Specifically:

FeatureWhen to Use
Video LecturesFirst reading of every subject
Marrow Notes PDFYour revision material - DON'T make separate notes
Subject QBankImmediately after finishing each chapter (not after full subject)
Rapid Revision (RR) VideosAfter completing a subject's first reading
Previous Year Questions (PYQs)Topic-wise during 1st reading, year-wise during Phase 3
Grand Tests (GTs)Start only in Phase 3 (April 2027 onwards)
Intern ModeMarrow has a dedicated "Intern Mode" - activate this, it gives a structured daily plan for working interns

Subject Weightage (Know What Matters)

TierSubjects~% of paper
Big 4Medicine, Surgery, Pathology, Pharmacology~55-60%
High valueOBG, PSM, Pediatrics, Microbiology~20-25%
Short subjectsOphtha, ENT, Derma, Forensic, Ortho, Psychiatry, Radiology, Anesthesia~15-20%
The Big 4 alone = ~55% of your marks. Never compromise on these for short subjects.

Anatomy and Physiology - Special Advice

These two are low ROI for the time invested but you can't skip them entirely.
  • Don't do full Marrow lectures for Anatomy or Physiology - it's a time sink
  • Do this instead:
    • Watch Dr. Najeeb for concepts you genuinely don't remember
    • Do Marrow PYQs topic-wise for both (this covers ~80% of what gets asked)
    • Use Marrow's Rapid Revision for Anatomy and Physiology
  • Combined, allocate max 3 weeks to both subjects across Phase 1

The "Intern Advantage" Strategy

You have something most PG aspirants don't - 12 months of clinical exposure while studying. Use it:
  • Medicine posting → That's when you cover Medicine on Marrow
  • Surgery posting → Cover Surgery on Marrow simultaneously
  • OBG posting → Do OBG on Marrow
  • Seeing real cases makes clinical MCQs intuitive, not just memorized
  • Discuss cases with seniors from a "what would NEET PG ask about this patient" angle

MCQ Practice - The Most Important Habit

This is what separates rank 500 from rank 5000.
  • Start MCQs chapter by chapter, not after finishing a full subject
  • Target: 60-80 MCQs/day once you're in Phase 2
  • Every wrong answer: open Marrow explanation, understand why, don't just memorize the correct option
  • Keep a "mistake notebook" (even a notes app on phone) - only write questions you got wrong for the wrong reason (not silly mistakes)

What NOT to Do (Common Intern Mistakes)

  1. Don't start Grand Tests in Month 1-2 - demoralizing and counterproductive
  2. Don't make your own notes from scratch - Marrow PDFs are enough, just annotate
  3. Don't study Anatomy/Physiology from full textbooks - pure time waste
  4. Don't skip the QBank after chapters thinking "I'll do it later" - later never comes
  5. Don't compare daily progress with friends who aren't working - your timeline is different
  6. Don't take Sundays fully off - one study-free day per 2 weeks is fine, not every week

YouTube Channels Worth Bookmarking

ChannelBest For
Dr. Najeeb LecturesAnatomy, Physiology, Pathology concepts
Marrow (official YouTube)Free strategy sessions, subject tips
OsmosisClinical vignette understanding
Dirty MedicineBiostatistics, clinical reasoning
AK LecturesPhysiology
Dr. Bhanu Pratap (various)Surgery mnemonics

Month 1 Action Plan (Start This Week)

Since you're 17 days into internship and today is July 11:
This weekend (July 12-13):
  • Activate Marrow's Intern Mode if available on your plan
  • Download Marrow app, set up subject-wise QBank
  • Watch Marrow's free orientation/strategy video on their YouTube
  • Start General Pathology - Chapter 1: Inflammation (Marrow video)
July Week 3-4:
  • Continue General Path (Cell injury, Neoplasia)
  • Do Marrow QBank after each chapter
  • Set a daily alarm for 6 AM study block
August onwards:
  • Finish General Pathology, move to Systemic Pathology
  • Start Pharmacology alongside (ANS + CVS drugs first)

You have a very solid runway ahead. The intern who starts in July and studies 4 consistent hours daily will finish a full first reading of all 19 subjects well before the exam and still have 4-5 months for revision and tests. That's a rank-changing advantage. The key is starting this weekend - not "from Monday" or "from next month."

I have to punch in at 8:15

Got it - 8:15 punch-in means you need to leave home around 7:30-7:45 AM (Bangalore traffic). Let me redo your daily schedule realistically.

Revised Daily Schedule (Punch-in 8:15 AM)

Assuming you wake up at 6:00 AM (which is very doable):
TimeActivityDuration
6:00 - 6:15 AMWake up, freshen up, tea/coffee15 min
6:15 - 7:30 AMStudy Block 1 - New topic (Marrow video)75 min
7:30 AMLeave for hospital-
Lunch break (~1 hr)20-25 MCQs on Marrow app (phone)30-40 min
4:40 PMPunch out
~6:00 PMReach home-
6:00 - 6:30 PMFreshen up, eat, decompress30 min
6:30 - 8:00 PMStudy Block 2 - Complete topic + Marrow Qs90 min
8:00 - 9:00 PMDinner, break60 min
9:00 - 10:00 PMStudy Block 3 - Revision / Marrow notes60 min
10:00 PMSleep
Total study = ~3.5 to 4 hours/day on weekdays

A Few Honest Notes

  • Morning 75 minutes is your most valuable block - brain is fresh, no hospital fatigue. Guard it hard. Don't check your phone before this block.
  • Lunch break MCQs - even 20 questions daily = 600 MCQs/month just from lunch. That's huge.
  • Evening blocks are flexible - some days internship will drain you and you'll only manage 1 hour total after 6 PM. That's okay. The morning block is non-negotiable.
  • If you can wake up at 5:30 AM instead of 6, you get a full 2-hour morning block - that single change can accelerate your prep significantly.
  • On days you have night duty, the morning after is a write-off - accept it and don't guilt-trip yourself.

Weekend Stays the Same

Saturday + Sunday are where you cover the bulk. Target 7-8 hours on Sunday and 5-6 on Saturday. These two days alone = more than your entire weekday combined. Treat them like your "office hours" for NEET PG.
Small change, but now your plan is built on realistic numbers - not wishful thinking.

When shall I take my bath

Haha fair question - here's the updated schedule with that critical detail accounted for:
TimeActivity
6:00 - 6:10 AMWake up, brush, splash water on face
6:10 - 7:15 AMStudy Block 1 (65 min) - Marrow video
7:15 - 7:35 AMBath + get ready
7:35 - 7:45 AMBreakfast (keep it quick - bread, banana, anything)
7:45 AMLeave for hospital

Two options depending on your preference:
Option A - Bath before study (if you need it to wake up fully)
  • 6:00 AM wake up → quick bath → study by 6:20 → leaves you ~55 min before leaving
Option B - Bath after study (recommended)
  • Study first while brain is fresh → bath at 7:15 → the bath itself acts as a refresher before hospital
  • Most toppers prefer this - you don't waste your peak morning alertness on getting ready
Option B works better for most people. The bath after a focused study block also feels more satisfying honestly.

Generate a daily study checklist template you can print/save

Reading File
Running Command

ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or missing"

Running Command

mkdir -p /home/daytona/workspace/neet-pg-checklist && python3 << 'EOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import mm from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER, TA_LEFT from reportlab.platypus import KeepTogether output_path = "/home/daytona/workspace/neet-pg-checklist/NEET_PG_Daily_Checklist.pdf" doc = SimpleDocTemplate(output_path, pagesize=A4, leftMargin=15*mm, rightMargin=15*mm, topMargin=12*mm, bottomMargin=12*mm) styles = getSampleStyleSheet() # Custom styles title_style = ParagraphStyle('Title', parent=styles['Normal'], fontSize=18, fontName='Helvetica-Bold', alignment=TA_CENTER, textColor=colors.HexColor('#1a1a2e'), spaceAfter=2) subtitle_style = ParagraphStyle('Subtitle', parent=styles['Normal'], fontSize=10, fontName='Helvetica', alignment=TA_CENTER, textColor=colors.HexColor('#555555'), spaceAfter=8) section_style = ParagraphStyle('Section', parent=styles['Normal'], fontSize=11, fontName='Helvetica-Bold', textColor=colors.HexColor('#ffffff'), spaceAfter=0) item_style = ParagraphStyle('Item', parent=styles['Normal'], fontSize=9.5, fontName='Helvetica', textColor=colors.HexColor('#222222'), leading=14) small_style = ParagraphStyle('Small', parent=styles['Normal'], fontSize=8.5, fontName='Helvetica', textColor=colors.HexColor('#444444'), leading=12) note_style = ParagraphStyle('Note', parent=styles['Normal'], fontSize=8, fontName='Helvetica-Oblique', textColor=colors.HexColor('#888888'), alignment=TA_CENTER) # Colors DARK_BLUE = colors.HexColor('#1a1a2e') MED_BLUE = colors.HexColor('#16213e') ACCENT = colors.HexColor('#0f3460') LIGHT_BLUE = colors.HexColor('#e8f4f8') LIGHT_GREEN = colors.HexColor('#e8f5e9') LIGHT_ORANGE = colors.HexColor('#fff3e0') LIGHT_PURPLE = colors.HexColor('#f3e5f5') LIGHT_RED = colors.HexColor('#fce4ec') WHITE = colors.white BOX_BG = colors.HexColor('#f9f9f9') BORDER = colors.HexColor('#cccccc') def checkbox_row(label, detail=''): """Returns a row with checkbox, label, detail""" if detail: return [Paragraph('☐', item_style), Paragraph(f'<b>{label}</b>', item_style), Paragraph(detail, small_style)] return [Paragraph('☐', item_style), Paragraph(f'<b>{label}</b>', item_style), Paragraph('', small_style)] def section_header(title, color): data = [[Paragraph(f' {title}', section_style), '', '']] t = Table(data, colWidths=[180*mm], rowHeights=[18]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), color), ('TEXTCOLOR', (0,0), (-1,-1), WHITE), ('FONTNAME', (0,0), (-1,-1), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 11), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('LEFTPADDING', (0,0), (-1,-1), 8), ('BOTTOMPADDING', (0,0), (-1,-1), 3), ('TOPPADDING', (0,0), (-1,-1), 3), ])) return t def checklist_table(rows, bg_color=BOX_BG): col_w = [8*mm, 90*mm, 82*mm] t = Table(rows, colWidths=col_w, rowHeights=[16]*len(rows)) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), bg_color), ('GRID', (0,0), (-1,-1), 0.3, BORDER), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('LEFTPADDING', (0,0), (0,-1), 4), ('LEFTPADDING', (1,0), (1,-1), 4), ('LEFTPADDING', (2,0), (2,-1), 4), ('ROWBACKGROUNDS', (0,0), (-1,-1), [bg_color, colors.HexColor('#f0f0f0')]), ])) return t story = [] # ── HEADER ────────────────────────────────────────────────────────────────── story.append(Paragraph('NEET PG 2027 — Daily Study Checklist', title_style)) story.append(Paragraph('MBBS Intern | Bangalore | Marrow Prep', subtitle_style)) # Date + Score row date_data = [ [Paragraph('Date: ___________________', item_style), Paragraph('Day of Week: ___________', item_style), Paragraph('Mood: 😴 😐 😊 🔥', item_style), Paragraph('Score: _____ / 10', item_style)] ] date_table = Table(date_data, colWidths=[47*mm, 47*mm, 47*mm, 39*mm], rowHeights=[18]) date_table.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), LIGHT_BLUE), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#90caf9')), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('LEFTPADDING', (0,0), (-1,-1), 6), ])) story.append(date_table) story.append(Spacer(1, 4)) # ── MORNING BLOCK ──────────────────────────────────────────────────────────── story.append(section_header('🌅 MORNING BLOCK (6:00 AM – 7:45 AM)', DARK_BLUE)) morning_rows = [ checkbox_row('6:00 AM Wake up + brush', ''), checkbox_row('6:10 AM Study Block 1 start', 'Topic: _________________________________'), checkbox_row('Video lecture watched (Marrow)', 'Chapter: ________________________________'), checkbox_row('Quick notes / annotations done', 'Pages / timestamps: _____________________'), checkbox_row('7:15 AM Bath + get ready', ''), checkbox_row('7:35 AM Breakfast done', 'Leave by 7:45 AM →'), ] story.append(checklist_table(morning_rows, LIGHT_BLUE)) story.append(Spacer(1, 4)) # ── HOSPITAL / LUNCH BLOCK ─────────────────────────────────────────────────── story.append(section_header('🏥 HOSPITAL + LUNCH BLOCK (8:15 AM – 4:40 PM)', ACCENT)) hospital_rows = [ checkbox_row('Punched in by 8:15 AM', ''), checkbox_row('Lunch break MCQs done', 'No. of Qs: ______ Subject: ___________'), checkbox_row('Correct: _____ Wrong: _____', 'Topics to revisit: ______________________'), checkbox_row('Noted 1 clinical case for MCQ angle', 'Case: ___________________________________'), checkbox_row('Punched out by 4:40 PM', ''), ] story.append(checklist_table(hospital_rows, LIGHT_GREEN)) story.append(Spacer(1, 4)) # ── EVENING BLOCK ──────────────────────────────────────────────────────────── story.append(section_header('🌆 EVENING BLOCK (6:30 PM – 10:00 PM)', MED_BLUE)) evening_rows = [ checkbox_row('6:00 PM Reached home', ''), checkbox_row('6:30 PM Study Block 2 start', 'Topic (continue/new): ___________________'), checkbox_row('Completed today\'s topic', 'Subject: ________________________________'), checkbox_row('Marrow subject QBank done', 'No. of Qs: ______ Accuracy: ______%'), checkbox_row('8:00 PM Dinner + break', ''), checkbox_row('9:00 PM Study Block 3 - Revision', 'Yesterday\'s topic: ______________________'), checkbox_row('Marrow notes / RR reviewed', 'Subject: ________________________________'), checkbox_row('9:45 PM Pre-sleep MCQ round', 'No. of Qs: ______ (aim: 15-20)'), checkbox_row('10:00 PM Sleep (non-negotiable)', ''), ] story.append(checklist_table(evening_rows, LIGHT_ORANGE)) story.append(Spacer(1, 4)) # ── TODAY'S SUBJECT TRACKER ────────────────────────────────────────────────── story.append(section_header('📚 TODAY\'S SUBJECT TRACKER', colors.HexColor('#6a1b9a'))) subject_rows = [ [Paragraph('Subject', item_style), Paragraph('Topic / Chapter', item_style), Paragraph('Videos ✓', item_style), Paragraph('MCQs done', item_style), Paragraph('Revision ✓', item_style)], [Paragraph('1. ___________', small_style), Paragraph('_____________________', small_style), Paragraph('☐', item_style), Paragraph('______', small_style), Paragraph('☐', item_style)], [Paragraph('2. ___________', small_style), Paragraph('_____________________', small_style), Paragraph('☐', item_style), Paragraph('______', small_style), Paragraph('☐', item_style)], [Paragraph('3. ___________', small_style), Paragraph('_____________________', small_style), Paragraph('☐', item_style), Paragraph('______', small_style), Paragraph('☐', item_style)], ] subj_table = Table(subject_rows, colWidths=[35*mm, 65*mm, 25*mm, 28*mm, 27*mm], rowHeights=[16]*4) subj_table.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#6a1b9a')), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('BACKGROUND', (0,1), (-1,-1), LIGHT_PURPLE), ('GRID', (0,0), (-1,-1), 0.4, BORDER), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('LEFTPADDING', (0,0), (-1,-1), 5), ('ROWBACKGROUNDS', (0,1), (-1,-1), [LIGHT_PURPLE, colors.HexColor('#ede7f6')]), ('FONTSIZE', (0,0), (-1,0), 9), ])) story.append(subj_table) story.append(Spacer(1, 4)) # ── MCQ STATS + MISTAKE LOG ────────────────────────────────────────────────── left_col = [] right_col = [] # MCQ stats mcq_title = Table([[Paragraph(' 📊 MCQ STATS TODAY', section_style)]], colWidths=[87*mm], rowHeights=[18]) mcq_title.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#00695c')), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ])) left_col.append(mcq_title) mcq_rows = [ [Paragraph('Total MCQs attempted', small_style), Paragraph('_______', small_style)], [Paragraph('Correct', small_style), Paragraph('_______', small_style)], [Paragraph('Wrong', small_style), Paragraph('_______', small_style)], [Paragraph('Accuracy %', small_style), Paragraph('_______', small_style)], [Paragraph('Skipped / Unsure', small_style), Paragraph('_______', small_style)], ] mcq_table = Table(mcq_rows, colWidths=[60*mm, 27*mm], rowHeights=[14]*5) mcq_table.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#e0f2f1')), ('GRID', (0,0), (-1,-1), 0.3, BORDER), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('LEFTPADDING', (0,0), (-1,-1), 5), ('ROWBACKGROUNDS', (0,0), (-1,-1), [colors.HexColor('#e0f2f1'), colors.HexColor('#b2dfdb')]), ])) left_col.append(mcq_table) # Mistake log mistake_title = Table([[Paragraph(' ❌ MISTAKE LOG (top 3)', section_style)]], colWidths=[87*mm], rowHeights=[18]) mistake_title.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#b71c1c')), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ])) right_col.append(mistake_title) for i in range(1, 4): mistake_rows = [ [Paragraph(f'Q{i}. Topic: _______________________________', small_style)], [Paragraph(f' Why wrong: __________________________', small_style)], ] mt = Table(mistake_rows, colWidths=[87*mm], rowHeights=[13, 13]) mt.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), LIGHT_RED), ('GRID', (0,0), (-1,-1), 0.3, BORDER), ('LEFTPADDING', (0,0), (-1,-1), 5), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ])) right_col.append(mt) # Combine into two columns combined_data = [[left_col[0], right_col[0]], [left_col[1], right_col[1]]] for item in right_col[2:]: combined_data.append(['', item]) two_col = Table([[left_col[0], right_col[0]]], colWidths=[90*mm, 90*mm]) two_col.setStyle(TableStyle([('VALIGN', (0,0), (-1,-1), 'TOP')])) story.append(two_col) two_col2 = Table([[left_col[1], right_col[1]]], colWidths=[90*mm, 90*mm]) two_col2.setStyle(TableStyle([('VALIGN', (0,0), (-1,-1), 'TOP'), ('TOPPADDING', (0,0), (-1,-1), 0)])) story.append(two_col2) for item in right_col[2:]: two_col_n = Table([['', item]], colWidths=[90*mm, 90*mm]) two_col_n.setStyle(TableStyle([('VALIGN', (0,0), (-1,-1), 'TOP'), ('TOPPADDING', (0,0), (-1,-1), 0)])) story.append(two_col_n) story.append(Spacer(1, 4)) # ── END OF DAY REFLECTION ──────────────────────────────────────────────────── story.append(section_header('🌙 END OF DAY REFLECTION', colors.HexColor('#37474f'))) reflect_rows = [ checkbox_row('Completed morning study block', 'Time actually started: __________________'), checkbox_row('Completed evening study block', 'Total hours studied: ____________________'), checkbox_row('Met MCQ target for today', 'Target: 60 | Actual: ___________________'), checkbox_row('Revised previous topic', 'Subject: ________________________________'), checkbox_row('Tomorrow\'s topic decided', 'Topic: __________________________________'), ] story.append(checklist_table(reflect_rows, colors.HexColor('#eceff1'))) story.append(Spacer(1, 4)) # ── WEEKLY TARGETS STRIP ───────────────────────────────────────────────────── week_data = [ [Paragraph('WEEKLY TARGETS', ParagraphStyle('wt', parent=styles['Normal'], fontSize=8, fontName='Helvetica-Bold', textColor=WHITE, alignment=TA_CENTER)), Paragraph('Mon ☐', small_style), Paragraph('Tue ☐', small_style), Paragraph('Wed ☐', small_style), Paragraph('Thu ☐', small_style), Paragraph('Fri ☐', small_style), Paragraph('Sat ☐', small_style), Paragraph('Sun ☐', small_style)] ] week_table = Table(week_data, colWidths=[35*mm, 21*mm, 21*mm, 21*mm, 21*mm, 21*mm, 21*mm, 19*mm], rowHeights=[16]) week_table.setStyle(TableStyle([ ('BACKGROUND', (0,0), (0,0), colors.HexColor('#37474f')), ('BACKGROUND', (1,0), (-1,0), colors.HexColor('#f5f5f5')), ('GRID', (0,0), (-1,-1), 0.4, BORDER), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('ALIGN', (0,0), (-1,-1), 'CENTER'), ])) story.append(week_table) story.append(Spacer(1, 3)) # ── MOTIVATIONAL FOOTER ────────────────────────────────────────────────────── story.append(Paragraph('"Consistency beats intensity. 4 hours daily > 12 hours on Sundays only."', note_style)) story.append(Paragraph('NEET PG 2027 | Intern Mode | Marrow + YouTube Strategy', note_style)) doc.build(story) print("PDF created successfully:", output_path) EOF

Your checklist is ready! Download it here:

NEET PG Daily Checklist

PDF Document · PDF


Here's what's included in the checklist (all on one A4 page, print-ready):
SectionWhat's in it
HeaderDate, day, mood rating, daily score out of 10
Morning Block6:00-7:45 AM step-by-step with fill-in topic fields
Hospital + Lunch BlockPunch-in, lunch MCQs, clinical case note, punch-out
Evening BlockFull 6:30-10:00 PM breakdown with all 3 study blocks
Subject TrackerTable for up to 3 subjects - chapter, videos, MCQs, revision
MCQ StatsTotal attempted, correct, wrong, accuracy %
Mistake LogTop 3 wrong questions with "why wrong" space
End of Day Reflection5 checkboxes + tomorrow's topic planning
Weekly Habit TrackerMon-Sun checkboxes at the bottom
Print tip: Print on A4, keep a stack of 7 (one week) clipped together. Fill it each night before sleep - it takes 2 minutes and keeps you accountable.

Make a Marrow resource guide PDF (which videos to watch, QBank tips, how to use Intern Mode)

Searching the Web

Marrow NEET PG intern mode features 2025 2026 QBank tips subject faculty

Searching the Web

Marrow app best faculty subject wise NEET PG video lectures rapid revision grand test tips

Reading Web Page

https://www.instagram.com/reel/CiKkPlFBZTL

Searching the Web

Marrow "magic module" "subject wise" QBank how to use intern mode activate plan features

Good - I have everything I need. Now building the PDF.
Running Command

mkdir -p /home/daytona/workspace/neet-pg-checklist && python3 << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import mm from reportlab.platypus import (SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable, KeepTogether, PageBreak) from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT output_path = "/home/daytona/workspace/neet-pg-checklist/Marrow_Resource_Guide.pdf" doc = SimpleDocTemplate(output_path, pagesize=A4, leftMargin=14*mm, rightMargin=14*mm, topMargin=12*mm, bottomMargin=12*mm) # ── COLOR PALETTE ───────────────────────────────────────────────────────────── C_MARROW = colors.HexColor('#e53935') # Marrow brand red C_DARK = colors.HexColor('#1a1a2e') C_NAVY = colors.HexColor('#16213e') C_BLUE = colors.HexColor('#0f3460') C_TEAL = colors.HexColor('#00695c') C_PURPLE = colors.HexColor('#6a1b9a') C_ORANGE = colors.HexColor('#e65100') C_AMBER = colors.HexColor('#f57f17') C_GREEN = colors.HexColor('#2e7d32') C_GREY_DARK = colors.HexColor('#37474f') C_GREY_MID = colors.HexColor('#546e7a') C_WHITE = colors.white L_RED = colors.HexColor('#ffebee') L_BLUE = colors.HexColor('#e3f2fd') L_TEAL = colors.HexColor('#e0f2f1') L_PURPLE = colors.HexColor('#f3e5f5') L_ORANGE = colors.HexColor('#fff3e0') L_GREEN = colors.HexColor('#e8f5e9') L_AMBER = colors.HexColor('#fffde7') L_GREY = colors.HexColor('#eceff1') L_GREY2 = colors.HexColor('#f5f5f5') BORDER = colors.HexColor('#cfd8dc') W = 182*mm # usable width # ── STYLES ──────────────────────────────────────────────────────────────────── def sty(name, **kw): base = kw.pop('parent', 'Normal') s = getSampleStyleSheet() p = ParagraphStyle(name, parent=s[base], **kw) return p H1 = sty('H1', fontSize=20, fontName='Helvetica-Bold', textColor=C_WHITE, alignment=TA_CENTER, leading=24) H2 = sty('H2', fontSize=12, fontName='Helvetica-Bold', textColor=C_WHITE, leading=16) H3 = sty('H3', fontSize=10, fontName='Helvetica-Bold', textColor=C_DARK, leading=14) BODY = sty('BODY',fontSize=9, fontName='Helvetica', textColor=colors.HexColor('#222222'), leading=13) BODY_W = sty('BODYW',fontSize=9, fontName='Helvetica', textColor=C_WHITE, leading=13) BOLD = sty('BOLD',fontSize=9, fontName='Helvetica-Bold', textColor=C_DARK, leading=13) SMALL= sty('SMALL',fontSize=8, fontName='Helvetica', textColor=colors.HexColor('#444444'), leading=11) SMALL_W=sty('SMALLW',fontSize=8,fontName='Helvetica', textColor=C_WHITE, leading=11) NOTE = sty('NOTE',fontSize=8, fontName='Helvetica-Oblique', textColor=colors.HexColor('#888888'), alignment=TA_CENTER) TAG = sty('TAG', fontSize=7.5,fontName='Helvetica-Bold', textColor=C_WHITE, alignment=TA_CENTER) CENTER=sty('CTR', fontSize=9, fontName='Helvetica', textColor=C_DARK, alignment=TA_CENTER, leading=13) CENTER_B=sty('CTRB',fontSize=9,fontName='Helvetica-Bold', textColor=C_DARK, alignment=TA_CENTER, leading=13) TITLE_NOTE=sty('TN',fontSize=8.5,fontName='Helvetica', textColor=colors.HexColor('#bbbbbb'), alignment=TA_CENTER) story = [] # ── HELPER: section banner ──────────────────────────────────────────────────── def banner(text, bg, fg=C_WHITE, size=11, pad=6): p = ParagraphStyle('_b', fontSize=size, fontName='Helvetica-Bold', textColor=fg, leading=size+4) t = Table([[Paragraph(f' {text}', p)]], colWidths=[W], rowHeights=[size+pad*2]) t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,-1), bg), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),8), ('TOPPADDING',(0,0),(-1,-1),pad-2), ('BOTTOMPADDING',(0,0),(-1,-1),pad-2), ])) return t # ── HELPER: two-column layout ───────────────────────────────────────────────── def two_col(left_items, right_items, lw=92*mm, rw=90*mm, gap=0): t = Table([[left_items, right_items]], colWidths=[lw, rw]) t.setStyle(TableStyle([ ('VALIGN',(0,0),(-1,-1),'TOP'), ('LEFTPADDING',(0,0),(-1,-1),0), ('RIGHTPADDING',(0,0),(-1,-1),0), ])) return t # ── HELPER: info box ────────────────────────────────────────────────────────── def info_box(rows_data, bg, col_widths, header_bg=None, header_fg=C_WHITE): t = Table(rows_data, colWidths=col_widths) style = [ ('BACKGROUND',(0,0),(-1,-1), bg), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),5), ('TOPPADDING',(0,0),(-1,-1),2), ('BOTTOMPADDING',(0,0),(-1,-1),2), ] if header_bg: style += [ ('BACKGROUND',(0,0),(-1,0), header_bg), ('TEXTCOLOR',(0,0),(-1,0), header_fg), ('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'), ] t.setStyle(TableStyle(style)) return t # ══════════════════════════════════════════════════════════════════════════════ # PAGE 1 — COVER + OVERVIEW # ══════════════════════════════════════════════════════════════════════════════ # Cover header cover = Table( [[Paragraph('MARROW', H1), Paragraph('Complete Resource Guide', sty('_sub', fontSize=13, fontName='Helvetica', textColor=colors.HexColor('#ffcdd2'), alignment=TA_CENTER)), Paragraph('NEET PG 2027 · MBBS Intern Edition', TITLE_NOTE)]], colWidths=[W], rowHeights=[28, 20, 16]) cover.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,-1), C_MARROW), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ])) story.append(cover) story.append(Spacer(1,5)) # ── WHAT'S IN THIS GUIDE strip ──────────────────────────────────────────────── story.append(banner('📋 WHAT\'S IN THIS GUIDE', C_GREY_DARK, size=10)) chips_data = [[ Paragraph('01\nIntern Mode', TAG), Paragraph('02\nVideo Strategy', TAG), Paragraph('03\nQBank Mastery', TAG), Paragraph('04\nFaculty Guide', TAG), Paragraph('05\nRapid Revision', TAG), Paragraph('06\nGrand Tests', TAG), Paragraph('07\nNotes & PDF', TAG), Paragraph('08\nDo\'s & Don\'ts', TAG), ]] chips_row_h = 22 chips = Table(chips_data, colWidths=[W/8]*8, rowHeights=[chips_row_h]) chip_colors = [C_MARROW, C_BLUE, C_TEAL, C_PURPLE, C_ORANGE, C_GREEN, C_AMBER, C_GREY_DARK] chip_style = [ ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('ALIGN',(0,0),(-1,-1),'CENTER'), ('TOPPADDING',(0,0),(-1,-1),3), ('BOTTOMPADDING',(0,0),(-1,-1),3), ] for i, c in enumerate(chip_colors): chip_style.append(('BACKGROUND',(i,0),(i,0), c)) chips.setStyle(TableStyle(chip_style)) story.append(chips) story.append(Spacer(1,6)) # ══ 01 INTERN MODE ═══════════════════════════════════════════════════════════ story.append(banner('01 🎓 INTERN MODE — What it is & How to Activate', C_MARROW)) im_left = [ Paragraph('<b>What is Intern Mode?</b>', H3), Spacer(1,2), Paragraph('Intern Mode is a special study path inside Marrow designed for working interns who have limited time. It trims low-yield videos and replaces them with QBank modules so you cover all concepts faster without watching every video.', BODY), Spacer(1,4), Paragraph('<b>Key Features:</b>', BOLD), Spacer(1,2), ] im_features = [ ['✓', 'Complete all 19 subjects in ~120 days at 4 hrs/day'], ['✓', 'Low-yield videos replaced by focused QBank modules'], ['✓', 'No new videos added — same content, tighter path'], ['✓', 'Available for Plan C and above'], ['✓', 'Can switch between Normal Mode & Intern Mode anytime'], ['✓', 'Tracks daily progress against your target exam date'], ] feat_t = Table(im_features, colWidths=[6*mm, 83*mm], rowHeights=[13]*6) feat_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,-1), L_RED), ('FONTNAME',(0,0),(0,-1),'Helvetica-Bold'), ('TEXTCOLOR',(0,0),(0,-1), C_MARROW), ('GRID',(0,0),(-1,-1),0.3,BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),4), ('FONTSIZE',(0,0),(-1,-1),8.5), ])) im_left.append(feat_t) im_right = [ Paragraph('<b>How to Activate (Step-by-Step):</b>', H3), Spacer(1,2), ] steps = [ ('Step 1', 'Open the Marrow app'), ('Step 2', 'Go to Home → My Plan'), ('Step 3', 'Tap "Switch to Intern Mode"'), ('Step 4', 'Set your target exam date (March 2027)'), ('Step 5', 'Marrow auto-generates your daily target'), ('Step 6', 'Follow the daily task list on the home screen'), ] for num, txt in steps: row_t = Table([[Paragraph(num, sty('_sn', fontSize=7.5, fontName='Helvetica-Bold', textColor=C_WHITE, alignment=TA_CENTER)), Paragraph(txt, BODY)]], colWidths=[18*mm, 70*mm], rowHeights=[14]) row_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(0,0), C_MARROW), ('BACKGROUND',(1,0),(1,0), L_RED), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('GRID',(0,0),(-1,-1),0.3,BORDER), ('LEFTPADDING',(0,0),(-1,-1),4), ('TOPPADDING',(0,0),(-1,-1),1), ('BOTTOMPADDING',(0,0),(-1,-1),1), ])) im_right.append(row_t) story.append(two_col(im_left, im_right, lw=94*mm, rw=88*mm)) story.append(Spacer(1,6)) # ══ 02 VIDEO STRATEGY ════════════════════════════════════════════════════════ story.append(banner('02 🎬 VIDEO LECTURE STRATEGY — How to Watch Efficiently', C_BLUE)) vid_tips = [ ['💡 Tip', 'Detail'], ['Watch at 1.5x–2x speed', 'Marrow videos are recorded slowly. 1.5x saves 33% time without missing content.'], ['Pause & annotate', 'Stop every 10–15 min to jot key points in Marrow notes PDF (don\'t make separate notes).'], ['Never re-watch fully', 'If you miss something, use the chapter timestamp list to jump to that section only.'], ['Phone = hospital, Laptop = home', 'Watch new videos on laptop (bigger screen, focused). Use phone only for MCQs.'], ['1 chapter = 1 sitting', 'Don\'t split a chapter across days. Finish one chapter, then immediately do MCQs.'], ['Morning = new videos', 'Watch new content in your morning block when concentration is highest.'], ['Evening = revise + Qs', 'Use evening to do QBank on that chapter — don\'t watch new videos when tired.'], ] vid_t = Table(vid_tips, colWidths=[52*mm, 130*mm], rowHeights=[15] + [13.5]*7) vid_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,0), C_BLUE), ('TEXTCOLOR',(0,0),(-1,0), C_WHITE), ('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),8.5), ('BACKGROUND',(0,1),(-1,-1), L_BLUE), ('ROWBACKGROUNDS',(0,1),(-1,-1),[L_BLUE, colors.HexColor('#bbdefb')]), ('GRID',(0,0),(-1,-1),0.3,BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('FONTNAME',(0,1),(0,-1),'Helvetica-Bold'), ('LEFTPADDING',(0,0),(-1,-1),5), ])) story.append(vid_t) story.append(Spacer(1,6)) # ══ 03 QBANK MASTERY ══════════════════════════════════════════════════════════ story.append(banner('03 📝 QBANK MASTERY — The Right Way to Use It', C_TEAL)) # Left: modes of use qb_left = [ Paragraph('<b>3 Modes to Use (in order):</b>', H3), Spacer(1,3), ] modes = [ ('PHASE 1', 'Subject-wise QBank', 'Do topic-by-topic Qs immediately after watching each chapter video. Don\'t wait to finish the full subject.', C_TEAL), ('PHASE 2', 'Year-wise PYQs', 'After completing a subject fully, solve NEET PG + AIIMS PYQs year-wise. Repeat 5–7 times total.', C_BLUE), ('PHASE 3', 'Custom Module', 'Mix subjects. Simulate real exam feel. Use in the last 3 months.', C_PURPLE), ] for ph, name, desc, col in modes: m_t = Table([ [Paragraph(ph, sty('_ph', fontSize=7.5, fontName='Helvetica-Bold', textColor=C_WHITE, alignment=TA_CENTER)), Paragraph(f'<b>{name}</b>', BODY)], ['', Paragraph(desc, SMALL)], ], colWidths=[16*mm, 73*mm], rowHeights=[13, 12]) m_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(0,-1), col), ('BACKGROUND',(1,0),(-1,-1), L_TEAL), ('SPAN',(0,0),(0,-1)), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('GRID',(0,0),(-1,-1),0.3,BORDER), ('LEFTPADDING',(0,0),(-1,-1),4), ])) qb_left.append(m_t) qb_left.append(Spacer(1,2)) # Right: Magic Module + tips qb_right = [ Paragraph('<b>✨ Magic Module — Your Secret Weapon</b>', H3), Spacer(1,3), Paragraph('The Magic Module is an auto-curated set of MCQs you previously got wrong. Marrow tracks every wrong answer and adds it here.', BODY), Spacer(1,3), ] magic_steps = [ 'Open Marrow App', 'Go to QBank section', 'Tap "Custom Module"', 'Select "Magic Module"', 'Solve daily — 20 min minimum', ] for i, s in enumerate(magic_steps, 1): ms = Table([[Paragraph(str(i), sty('_mn', fontSize=8, fontName='Helvetica-Bold', textColor=C_WHITE, alignment=TA_CENTER)), Paragraph(s, BODY)]], colWidths=[10*mm, 78*mm], rowHeights=[13]) ms.setStyle(TableStyle([ ('BACKGROUND',(0,0),(0,0), C_AMBER), ('BACKGROUND',(1,0),(1,0), L_AMBER), ('GRID',(0,0),(-1,-1),0.3,BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),4), ])) qb_right.append(ms) qb_right.append(Spacer(1,1)) qb_right.append(Spacer(1,4)) qb_right.append(Paragraph('<b>Daily MCQ Targets:</b>', BOLD)) qb_right.append(Spacer(1,2)) targets = [ ['Phase', 'Target/day', 'Notes'], ['Phase 1 (pre-clinicals)', '40–50 Qs', 'After each chapter'], ['Phase 2 (clinicals)', '60–80 Qs', 'Mix of subject + PYQ'], ['Phase 3 (revision)', '100–120 Qs', 'Custom + Grand Test'], ] targ_t = Table(targets, colWidths=[35*mm, 25*mm, 28*mm], rowHeights=[13]*4) targ_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,0), C_TEAL), ('TEXTCOLOR',(0,0),(-1,0), C_WHITE), ('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'), ('BACKGROUND',(0,1),(-1,-1), L_TEAL), ('ROWBACKGROUNDS',(0,1),(-1,-1),[L_TEAL, colors.HexColor('#b2dfdb')]), ('GRID',(0,0),(-1,-1),0.3,BORDER), ('FONTSIZE',(0,0),(-1,-1),8), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),4), ])) qb_right.append(targ_t) story.append(two_col(qb_left, qb_right, lw=93*mm, rw=89*mm)) story.append(Spacer(1,6)) # ══ 04 FACULTY GUIDE ══════════════════════════════════════════════════════════ story.append(banner('04 👨‍⚕️ FACULTY GUIDE — Best Teacher for Each Subject', C_PURPLE)) fac_data = [ ['Subject', 'Marrow Faculty', 'Rating', 'Notes'], ['Medicine', 'Dr. Rakesh S Nair', '⭐⭐⭐⭐⭐', 'Excellent clinical vignette approach'], ['Surgery', 'Dr. Rohan Khandelwal', '⭐⭐⭐⭐⭐', 'Best surgery teacher on any platform'], ['Pathology', 'Dr. Sparsh Gupta', '⭐⭐⭐⭐⭐', 'Very MCQ-oriented, clear explanations'], ['Pharmacology', 'Dr. Gobinath / Dr. Rajesh', '⭐⭐⭐⭐', 'Good for high-yield drug classes'], ['OBG', 'Dr. Sakshi Arora', '⭐⭐⭐⭐⭐', 'Industry gold standard for OBG'], ['Pediatrics', 'Dr. Singaram', '⭐⭐⭐⭐', 'Comprehensive, good for milestones'], ['Microbiology', 'Marrow Faculty', '⭐⭐⭐', 'Use RR only; supplement with notes'], ['PSM / Community', 'Marrow Faculty', '⭐⭐⭐⭐', 'Biostatistics — use YouTube too'], ['Ophthalmology', 'Marrow Faculty', '⭐⭐⭐⭐', 'RR videos are excellent'], ['ENT', 'Marrow Faculty', '⭐⭐⭐⭐', 'RR videos sufficient'], ['Dermatology', 'Dr. Malcolm Pinto', '⭐⭐⭐⭐', 'Good image-based coverage'], ['Forensic Medicine', 'Marrow Faculty', '⭐⭐⭐⭐', 'Well-structured, high-yield'], ['Orthopedics', 'Dr. Abbas Ali', '⭐⭐⭐⭐', 'Marrow RR very good for Ortho'], ['Psychiatry', 'Dr. Mohan Sunil Kumar', '⭐⭐⭐⭐', 'DSM criteria clearly explained'], ['Anatomy', '⚠️ Dr. Najeeb (YouTube)', '⭐⭐⭐⭐⭐', 'SKIP Marrow Anatomy videos — use Dr. Najeeb'], ['Physiology', '⚠️ AK Lectures (YouTube)', '⭐⭐⭐⭐⭐', 'SKIP Marrow Physio videos — use AK Lectures'], ['Biochemistry', 'Marrow RR only', '⭐⭐⭐', 'Low yield; RR + PYQs only'], ['Radiology', 'Marrow RR only', '⭐⭐⭐', 'Very short; 1 day max'], ['Anesthesia', 'Marrow RR only', '⭐⭐⭐', 'Very short; 1 day max'], ] col_ws = [35*mm, 42*mm, 28*mm, 77*mm] fac_t = Table(fac_data, colWidths=col_ws, rowHeights=[14]+[12]*18) fac_style = [ ('BACKGROUND',(0,0),(-1,0), C_PURPLE), ('TEXTCOLOR',(0,0),(-1,0), C_WHITE), ('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),8), ('GRID',(0,0),(-1,-1),0.3,BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),4), ('ROWBACKGROUNDS',(0,1),(-1,-1),[L_PURPLE, colors.HexColor('#ede7f6')]), # highlight YouTube rows ('BACKGROUND',(0,15),(-1,15), colors.HexColor('#fff9c4')), ('BACKGROUND',(0,16),(-1,16), colors.HexColor('#fff9c4')), ('FONTNAME',(0,15),(0,16),'Helvetica-Bold'), ('TEXTCOLOR',(0,15),(0,16), C_ORANGE), ] fac_t.setStyle(TableStyle(fac_style)) story.append(fac_t) story.append(Spacer(1,3)) story.append(Paragraph('⚠️ Yellow rows = skip Marrow videos; use YouTube channels listed in the YouTube Resource Guide instead.', NOTE)) story.append(Spacer(1,6)) # ══ 05 RAPID REVISION ════════════════════════════════════════════════════════ story.append(banner('05 ⚡ RAPID REVISION (RR) — When & How', C_ORANGE)) rr_left = [ Paragraph('<b>What is Rapid Revision?</b>', H3), Spacer(1,2), Paragraph('RR videos are short, condensed versions of full lectures. They cover only high-yield points and are meant for revision — not first reading.', BODY), Spacer(1,4), Paragraph('<b>When to use RR:</b>', BOLD), Spacer(1,2), ] rr_when = [ ['After completing 1st reading of a subject', '✓'], ['During Phase 3 (revision phase)', '✓'], ['For Anatomy, Physio, Biochem, Micro, Radiology, Anaesthesia', '✓ (use as primary)'], ['As replacement for first reading of a full subject', '✗'], ['Before you\'ve done any MCQs on that subject', '✗'], ] rr_when_t = Table(rr_when, colWidths=[72*mm, 18*mm], rowHeights=[13]*5) rr_when_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,-1), L_ORANGE), ('GRID',(0,0),(-1,-1),0.3,BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('FONTSIZE',(0,0),(-1,-1),8.5), ('LEFTPADDING',(0,0),(-1,-1),4), ('ALIGN',(1,0),(1,-1),'CENTER'), ('FONTNAME',(1,0),(1,-1),'Helvetica-Bold'), ('TEXTCOLOR',(1,2),(1,4), C_GREEN), ('TEXTCOLOR',(1,3),(1,4), C_MARROW), ('ROWBACKGROUNDS',(0,0),(-1,-1),[L_ORANGE, colors.HexColor('#ffe0b2')]), ])) rr_left.append(rr_when_t) rr_left.append(Spacer(1,4)) rr_left.append(Paragraph('<b>Best RR subjects on Marrow (community rated):</b>', BOLD)) rr_left.append(Spacer(1,2)) best_rr = [['Anatomy','Surgery','OBG','Orthopedics','Physiology'], ['⭐⭐⭐⭐⭐','⭐⭐⭐⭐⭐','⭐⭐⭐⭐⭐','⭐⭐⭐⭐⭐','⭐⭐⭐⭐']] best_rr_t = Table(best_rr, colWidths=[18*mm]*5, rowHeights=[13,12]) best_rr_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,0), C_ORANGE), ('TEXTCOLOR',(0,0),(-1,0), C_WHITE), ('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),7.5), ('BACKGROUND',(0,1),(-1,1), L_ORANGE), ('GRID',(0,0),(-1,-1),0.3,BORDER), ('ALIGN',(0,0),(-1,-1),'CENTER'), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ])) rr_left.append(best_rr_t) rr_right = [ Paragraph('<b>RR Workflow:</b>', H3), Spacer(1,2), ] rr_flow = [ ('1', 'Finish 1st reading + MCQs of a subject', C_ORANGE), ('2', 'Take 1–2 day gap (do another subject)', C_ORANGE), ('3', 'Come back and watch RR videos', C_ORANGE), ('4', 'Annotate your Marrow notes PDF as you watch', C_ORANGE), ('5', 'Do PYQs for that subject again', C_ORANGE), ('6', 'Move to next subject', C_ORANGE), ] for num, txt, col in rr_flow: rf = Table([[Paragraph(num, TAG), Paragraph(txt, BODY)]], colWidths=[10*mm, 79*mm], rowHeights=[14]) rf.setStyle(TableStyle([ ('BACKGROUND',(0,0),(0,0), col), ('BACKGROUND',(1,0),(1,0), L_ORANGE), ('GRID',(0,0),(-1,-1),0.3,BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),4), ])) rr_right.append(rf) rr_right.append(Spacer(1,1)) rr_right.append(Spacer(1,4)) rr_right.append(Paragraph('<b>Marrow Notes PDF — How to use:</b>', BOLD)) rr_right.append(Spacer(1,2)) note_tips = [ '→ Download subject PDF from Marrow app', '→ Print or use on tablet with annotation app', '→ Annotate directly on PDF during RR', '→ This IS your Last Minute Revision (LMR) material', '→ Never make separate notes from scratch', ] for nt in note_tips: rr_right.append(Paragraph(nt, SMALL)) rr_right.append(Spacer(1,1)) story.append(two_col(rr_left, rr_right, lw=93*mm, rw=89*mm)) story.append(Spacer(1,6)) # ══ 06 GRAND TESTS ════════════════════════════════════════════════════════════ story.append(banner('06 🏆 GRAND TESTS (GTs) — Strategy & Schedule', C_GREEN)) gt_data = [ ['GT Phase', 'When to Start', 'Frequency', 'What to do AFTER'], ['Mini Subject Tests', 'After each subject (Phase 1–2)', '1 per subject', 'Fix weak chapters before moving on'], ['Subject-wise Full Tests', 'After 1st reading done (Phase 2)', '1–2 per week', 'Revise low-scoring topics'], ['Full Grand Tests (200Q)', 'Phase 3 — April 2027 onwards', '2–3 per week', 'Detailed analysis — 30 min per GT'], ['NEET PG Mock Series', 'Last 6–8 weeks before exam', 'Daily if possible', 'Only focus on weak areas from analysis'], ] gt_t = Table(gt_data, colWidths=[38*mm, 46*mm, 34*mm, 64*mm], rowHeights=[14]+[13]*4) gt_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,0), C_GREEN), ('TEXTCOLOR',(0,0),(-1,0), C_WHITE), ('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),8.5), ('BACKGROUND',(0,1),(-1,-1), L_GREEN), ('ROWBACKGROUNDS',(0,1),(-1,-1),[L_GREEN, colors.HexColor('#c8e6c9')]), ('GRID',(0,0),(-1,-1),0.3,BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),5), ])) story.append(gt_t) story.append(Spacer(1,4)) # GT analysis box story.append(Paragraph('<b>How to Analyze a Grand Test (the right way):</b>', BOLD)) story.append(Spacer(1,3)) gt_analysis = [ ['Step', 'Action', 'Time'], ['1', 'Look at subject-wise accuracy first — not overall score', '5 min'], ['2', 'Open every wrong answer and read the full explanation', '15 min'], ['3', 'For each wrong answer: was it a concept gap or silly mistake?', '5 min'], ['4', 'If concept gap → add to Magic Module; re-read that topic', '5 min'], ['5', 'Note the 3 weakest subjects from this GT for next week focus', '2 min'], ['6', 'Do NOT re-attempt the same GT for 2 weeks', '—'], ] ga_t = Table(gt_analysis, colWidths=[10*mm, 130*mm, 22*mm], rowHeights=[13]*7) ga_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,0), C_GREEN), ('TEXTCOLOR',(0,0),(-1,0), C_WHITE), ('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),8.5), ('BACKGROUND',(0,1),(-1,-1), L_GREEN), ('ROWBACKGROUNDS',(0,1),(-1,-1),[L_GREEN, colors.HexColor('#c8e6c9')]), ('GRID',(0,0),(-1,-1),0.3,BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('ALIGN',(0,0),(0,-1),'CENTER'), ('FONTNAME',(0,1),(0,-1),'Helvetica-Bold'), ('TEXTCOLOR',(0,1),(0,-1), C_GREEN), ('LEFTPADDING',(0,0),(-1,-1),4), ('ALIGN',(2,0),(2,-1),'CENTER'), ])) story.append(ga_t) story.append(Spacer(1,6)) # ══ 07 NOTES & PDF ════════════════════════════════════════════════════════════ story.append(banner('07 📄 MARROW NOTES & PDF — The Golden Rule', C_AMBER)) notes_data = [ [Paragraph('<b>DO THIS ✓</b>', sty('_do', fontSize=10, fontName='Helvetica-Bold', textColor=C_GREEN, alignment=TA_CENTER)), Paragraph('<b>DON\'T DO THIS ✗</b>', sty('_dont', fontSize=10, fontName='Helvetica-Bold', textColor=C_MARROW, alignment=TA_CENTER))], [Paragraph('Download Marrow PDF notes for every subject', BODY), Paragraph('Make your own notes from scratch', BODY)], [Paragraph('Annotate/highlight the Marrow PDF as you watch videos', BODY), Paragraph('Copy entire slides into a new notebook', BODY)], [Paragraph('Add your own "trick" or mnemonic in the margin', BODY), Paragraph('Spend hours making "aesthetic" notes', BODY)], [Paragraph('Use annotated PDF as Last Minute Revision (LMR) material', BODY), Paragraph('Wait till exam month to start making notes', BODY)], [Paragraph('Revise from PDF before every GT', BODY), Paragraph('Re-read from textbooks or large references', BODY)], ] notes_t = Table(notes_data, colWidths=[91*mm, 91*mm], rowHeights=[16]+[13]*5) notes_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(0,0), colors.HexColor('#e8f5e9')), ('BACKGROUND',(1,0),(1,0), colors.HexColor('#ffebee')), ('BACKGROUND',(0,1),(-1,-1), L_AMBER), ('ROWBACKGROUNDS',(0,1),(-1,-1),[L_AMBER, colors.HexColor('#fff9c4')]), ('GRID',(0,0),(-1,-1),0.4,BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),6), ('LINEAFTER',(0,0),(0,-1),1.5,BORDER), ])) story.append(notes_t) story.append(Spacer(1,6)) # ══ 08 DO's & DON'Ts ═════════════════════════════════════════════════════════ story.append(banner("08 ⚠️ MARROW DO'S & DON'TS — Common Intern Mistakes", C_GREY_DARK)) dos_donts = [ ['✅ DO', '❌ DON\'T'], ['Start with subject-wise QBank after every chapter', 'Do Grand Tests in Month 1 (demoralizing)'], ['Use Intern Mode to manage your video load', 'Watch every single Marrow video (time sink)'], ['Use Magic Module daily for 20 min', 'Ignore wrong answers — just check the score'], ['Study Anatomy / Physiology from YouTube', 'Use Marrow full lectures for Anatomy/Physio'], ['Annotate Marrow PDF notes as you go', 'Make a parallel separate notebook'], ['Do RR after completing each subject', 'Do RR instead of 1st reading'], ['Start GTs only after 4+ subjects covered', 'Skip GT analysis — just check the percentage'], ['Keep a "mistake book" of wrong Qs', 'Re-attempt the same Qs immediately after seeing answers'], ['Use the Plan page to track daily targets', 'Study randomly without subject-wise structure'], ['Solve PYQs topic-wise first, year-wise later', 'Solve all PYQs only in the last month'], ] dd_t = Table(dos_donts, colWidths=[91*mm, 91*mm], rowHeights=[15]+[13]*10) dd_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(0,0), C_GREEN), ('BACKGROUND',(1,0),(1,0), C_MARROW), ('TEXTCOLOR',(0,0),(-1,0), C_WHITE), ('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),8.5), ('BACKGROUND',(0,1),(-1,-1), L_GREY2), ('ROWBACKGROUNDS',(0,1),(-1,-1),[L_GREY2, L_GREY]), ('GRID',(0,0),(-1,-1),0.4,BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),5), ('LINEAFTER',(0,0),(0,-1),1.5,BORDER), ('FONTNAME',(0,1),(0,-1),'Helvetica'), ('TEXTCOLOR',(0,1),(0,-1), C_GREEN), ('TEXTCOLOR',(1,1),(1,-1), C_MARROW), ])) story.append(dd_t) story.append(Spacer(1,5)) # ── FOOTER ──────────────────────────────────────────────────────────────────── story.append(HRFlowable(width=W, thickness=0.5, color=BORDER)) story.append(Spacer(1,3)) story.append(Paragraph( 'Marrow Resource Guide | NEET PG 2027 | MBBS Intern, Bangalore | Prepared July 2026', NOTE)) story.append(Paragraph( '"The QBank is your real teacher. Videos are just the introduction."', NOTE)) doc.build(story) print("SUCCESS:", output_path) PYEOF

Running Command

python3 << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import mm from reportlab.platypus import (SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable) from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER, TA_LEFT output_path = "/home/daytona/workspace/neet-pg-checklist/Marrow_Resource_Guide.pdf" doc = SimpleDocTemplate(output_path, pagesize=A4, leftMargin=14*mm, rightMargin=14*mm, topMargin=12*mm, bottomMargin=12*mm) C_MARROW = colors.HexColor('#e53935') C_DARK = colors.HexColor('#1a1a2e') C_NAVY = colors.HexColor('#16213e') C_BLUE = colors.HexColor('#0f3460') C_TEAL = colors.HexColor('#00695c') C_PURPLE = colors.HexColor('#6a1b9a') C_ORANGE = colors.HexColor('#e65100') C_AMBER = colors.HexColor('#f57f17') C_GREEN = colors.HexColor('#2e7d32') C_GREY = colors.HexColor('#37474f') C_WHITE = colors.white L_RED = colors.HexColor('#ffebee') L_BLUE = colors.HexColor('#e3f2fd') L_TEAL = colors.HexColor('#e0f2f1') L_PURPLE = colors.HexColor('#f3e5f5') L_ORANGE = colors.HexColor('#fff3e0') L_GREEN = colors.HexColor('#e8f5e9') L_AMBER = colors.HexColor('#fffde7') L_GREY = colors.HexColor('#eceff1') L_GREY2 = colors.HexColor('#f5f5f5') BORDER = colors.HexColor('#cfd8dc') W = 182*mm def ps(name, size=9, bold=False, color=None, center=False, italic=False, leading=None): fn = 'Helvetica-Bold' if bold else ('Helvetica-Oblique' if italic else 'Helvetica') col = color or colors.HexColor('#222222') align = TA_CENTER if center else TA_LEFT ld = leading or (size + 4) return ParagraphStyle(name, fontName=fn, fontSize=size, textColor=col, alignment=align, leading=ld) def banner(text, bg, size=10): t = Table([[Paragraph(f' {text}', ps('_b', size=size, bold=True, color=C_WHITE))]], colWidths=[W]) t.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),6), ])) return t def two_col(L, R, lw=93*mm, rw=89*mm): t = Table([[L, R]], colWidths=[lw, rw]) t.setStyle(TableStyle([ ('VALIGN',(0,0),(-1,-1),'TOP'), ('LEFTPADDING',(0,0),(-1,-1),0), ('RIGHTPADDING',(0,0),(-1,-1),0), ('TOPPADDING',(0,0),(-1,-1),0), ])) return t story = [] # ── COVER HEADER ────────────────────────────────────────────────────────────── hdr = Table([ [Paragraph('MARROW', ps('h1', size=22, bold=True, color=C_WHITE, center=True))], [Paragraph('Complete Resource Guide', ps('h1s', size=13, color=colors.HexColor('#ffcdd2'), center=True))], [Paragraph('NEET PG 2027 · MBBS Intern Edition · Bangalore', ps('h1n', size=9, color=colors.HexColor('#bbbbbb'), center=True))], ], colWidths=[W]) hdr.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,-1), C_MARROW), ('TOPPADDING',(0,0),(-1,-1),4), ('BOTTOMPADDING',(0,0),(-1,-1),4), ])) story.append(hdr) story.append(Spacer(1,5)) # ── INDEX CHIPS ─────────────────────────────────────────────────────────────── chip_labels = ['01 Intern Mode','02 Videos','03 QBank','04 Faculty','05 Rapid Revision','06 Grand Tests','07 Notes','08 Dos & Donts'] chip_colors = [C_MARROW, C_BLUE, C_TEAL, C_PURPLE, C_ORANGE, C_GREEN, C_AMBER, C_GREY] chip_row = [[Paragraph(lb, ps(f'_c{i}', size=7.5, bold=True, color=C_WHITE, center=True)) for i, lb in enumerate(chip_labels)]] chip_t = Table(chip_row, colWidths=[W/8]*8, rowHeights=[20]) cs = [('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('TOPPADDING',(0,0),(-1,-1),3), ('BOTTOMPADDING',(0,0),(-1,-1),3)] for i, c in enumerate(chip_colors): cs.append(('BACKGROUND',(i,0),(i,0), c)) chip_t.setStyle(TableStyle(cs)) story.append(chip_t) story.append(Spacer(1,6)) # ══ 01 INTERN MODE ═══════════════════════════════════════════════════════════ story.append(banner('01 🎓 INTERN MODE — What It Is & How to Activate', C_MARROW)) left_items = [ Paragraph('<b>What is Intern Mode?</b>', ps('_h3', size=10, bold=True, color=C_DARK)), Spacer(1,3), Paragraph('A special study path inside Marrow for working interns. It replaces low-yield videos with QBank modules so you cover all 19 subjects faster — completing everything in ~120 days at 4 hrs/day.', ps('_b1', size=9)), Spacer(1,4), Paragraph('<b>Key Features:</b>', ps('_bld', size=9, bold=True, color=C_DARK)), Spacer(1,2), ] feats = [ '✓ Complete 19 subjects in ~120 days at 4 hrs/day', '✓ Low-yield videos replaced by QBank modules', '✓ Same content — tighter, smarter path', '✓ Available for Plan C and above', '✓ Switch between Normal & Intern Mode anytime', '✓ Tracks daily progress against your exam date', ] feat_rows = [[Paragraph(f, ps(f'_f{i}', size=8.5))] for i, f in enumerate(feats)] ft = Table(feat_rows, colWidths=[90*mm], rowHeights=[13]*6) ft.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,-1), L_RED), ('ROWBACKGROUNDS',(0,0),(-1,-1),[L_RED, colors.HexColor('#ffcdd2')]), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),6), ])) left_items.append(ft) right_items = [ Paragraph('<b>How to Activate (Step-by-Step):</b>', ps('_h3r', size=10, bold=True, color=C_DARK)), Spacer(1,3), ] steps = [ ('1','Open the Marrow app'), ('2','Go to Home → My Plan'), ('3','Tap "Switch to Intern Mode"'), ('4','Set target exam date (March 2027)'), ('5','Marrow auto-generates daily targets'), ('6','Follow the daily task list on Home screen'), ] for num, txt in steps: sr = Table([[Paragraph(num, ps(f'_sn{num}', size=8, bold=True, color=C_WHITE, center=True)), Paragraph(txt, ps(f'_st{num}', size=9))]], colWidths=[14*mm, 74*mm], rowHeights=[15]) sr.setStyle(TableStyle([ ('BACKGROUND',(0,0),(0,0), C_MARROW), ('BACKGROUND',(1,0),(1,0), L_RED), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),4), ('TOPPADDING',(0,0),(-1,-1),1), ('BOTTOMPADDING',(0,0),(-1,-1),1), ])) right_items.append(sr) right_items.append(Spacer(1,1)) story.append(two_col(left_items, right_items)) story.append(Spacer(1,6)) # ══ 02 VIDEO STRATEGY ════════════════════════════════════════════════════════ story.append(banner('02 🎬 VIDEO LECTURE STRATEGY — How to Watch Efficiently', C_BLUE)) vid_rows = [ [Paragraph('Tip', ps('_vh', size=9, bold=True, color=C_WHITE)), Paragraph('Detail', ps('_vd', size=9, bold=True, color=C_WHITE))], [Paragraph('Watch at 1.5x–2x speed', ps('_v1', size=8.5, bold=True)), Paragraph('Marrow videos are recorded slowly. 1.5x saves 33% time without missing content.', ps('_v1d', size=8.5))], [Paragraph('Pause & annotate every 10–15 min', ps('_v2', size=8.5, bold=True)), Paragraph('Jot key points in Marrow notes PDF — not in a separate notebook.', ps('_v2d', size=8.5))], [Paragraph('Never re-watch a full video', ps('_v3', size=8.5, bold=True)), Paragraph('If you missed something, use the chapter timestamp list to jump to that section only.', ps('_v3d', size=8.5))], [Paragraph('Phone = MCQs, Laptop = videos', ps('_v4', size=8.5, bold=True)), Paragraph('Bigger screen, better focus for new content. Save phone for hospital MCQ sessions.', ps('_v4d', size=8.5))], [Paragraph('1 chapter = 1 sitting', ps('_v5', size=8.5, bold=True)), Paragraph("Don't split one chapter across days. Finish it, then immediately do MCQs.", ps('_v5d', size=8.5))], [Paragraph('Morning = new videos only', ps('_v6', size=8.5, bold=True)), Paragraph('Your morning block is peak concentration. New content goes here, not evenings.', ps('_v6d', size=8.5))], [Paragraph('Evening = QBank + revision', ps('_v7', size=8.5, bold=True)), Paragraph("Don't watch new videos when tired after internship. Do MCQs or revise instead.", ps('_v7d', size=8.5))], ] vt = Table(vid_rows, colWidths=[52*mm, 130*mm], rowHeights=[14]+[13]*7) vt.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,0), C_BLUE), ('TEXTCOLOR',(0,0),(-1,0), C_WHITE), ('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'), ('FONTSIZE',(0,0),(-1,-1),8.5), ('ROWBACKGROUNDS',(0,1),(-1,-1),[L_BLUE, colors.HexColor('#bbdefb')]), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('FONTNAME',(0,1),(0,-1),'Helvetica-Bold'), ('LEFTPADDING',(0,0),(-1,-1),5), ])) story.append(vt) story.append(Spacer(1,6)) # ══ 03 QBANK ═════════════════════════════════════════════════════════════════ story.append(banner('03 📝 QBANK MASTERY — The Right Way to Use It', C_TEAL)) qb_left = [ Paragraph('<b>3 Modes (use in this order):</b>', ps('_qh', size=10, bold=True, color=C_DARK)), Spacer(1,3), ] modes = [ ('PHASE 1','Subject-wise QBank','Do topic-by-topic MCQs right after each chapter. Don\'t wait to finish the full subject.', C_TEAL), ('PHASE 2','Year-wise PYQs','After finishing a subject, solve NEET PG + AIIMS PYQs year-wise. Repeat 5–7 times total.', C_BLUE), ('PHASE 3','Custom Module','Mix subjects to simulate real exam feel. Use in the last 3 months only.', C_PURPLE), ] for ph, name, desc, col in modes: mt = Table([ [Paragraph(ph, ps(f'_mp{ph}', size=7.5, bold=True, color=C_WHITE, center=True)), Paragraph(f'<b>{name}</b>', ps(f'_mn{ph}', size=9, bold=True))], ['', Paragraph(desc, ps(f'_md{ph}', size=8))], ], colWidths=[16*mm, 74*mm], rowHeights=[13,12]) mt.setStyle(TableStyle([ ('BACKGROUND',(0,0),(0,-1), col), ('BACKGROUND',(1,0),(-1,-1), L_TEAL), ('SPAN',(0,0),(0,-1)), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('LEFTPADDING',(0,0),(-1,-1),4), ])) qb_left.append(mt) qb_left.append(Spacer(1,2)) qb_right = [ Paragraph('<b>✨ Magic Module — Your Secret Weapon</b>', ps('_mgh', size=10, bold=True, color=C_DARK)), Spacer(1,3), Paragraph('Marrow automatically tracks every question you get wrong and adds it to the Magic Module. This is your personalised weak-spot revision list.', ps('_mgb', size=9)), Spacer(1,4), Paragraph('<b>How to access:</b>', ps('_mgs', size=9, bold=True, color=C_DARK)), Spacer(1,2), ] magic = ['Open Marrow App','Go to QBank section','Tap "Custom Module"','Select "Magic Module"','Solve 20 min daily — every day'] for i, s in enumerate(magic, 1): mt2 = Table([[Paragraph(str(i), ps(f'_mi{i}', size=8, bold=True, color=C_WHITE, center=True)), Paragraph(s, ps(f'_ms{i}', size=9))]], colWidths=[10*mm, 78*mm], rowHeights=[13]) mt2.setStyle(TableStyle([ ('BACKGROUND',(0,0),(0,0), C_AMBER), ('BACKGROUND',(1,0),(1,0), L_AMBER), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),4), ])) qb_right.append(mt2) qb_right.append(Spacer(1,1)) qb_right.append(Spacer(1,5)) qb_right.append(Paragraph('<b>Daily MCQ Targets:</b>', ps('_dmt', size=9, bold=True, color=C_DARK))) qb_right.append(Spacer(1,2)) tgts = [ [Paragraph('Phase', ps('_th', size=8.5, bold=True, color=C_WHITE)), Paragraph('Target/day', ps('_th2', size=8.5, bold=True, color=C_WHITE)), Paragraph('Notes', ps('_th3', size=8.5, bold=True, color=C_WHITE))], [Paragraph('Phase 1 (pre-clinicals)', ps('_tr1', size=8)), Paragraph('40–50 Qs', ps('_tr1b', size=8)), Paragraph('After each chapter', ps('_tr1c', size=8))], [Paragraph('Phase 2 (clinicals)', ps('_tr2', size=8)), Paragraph('60–80 Qs', ps('_tr2b', size=8)), Paragraph('Subject + PYQ mix', ps('_tr2c', size=8))], [Paragraph('Phase 3 (revision)', ps('_tr3', size=8)), Paragraph('100–120 Qs', ps('_tr3b', size=8)), Paragraph('Custom + Grand Test', ps('_tr3c', size=8))], ] tgt_t = Table(tgts, colWidths=[34*mm, 24*mm, 30*mm], rowHeights=[13]*4) tgt_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,0), C_TEAL), ('ROWBACKGROUNDS',(0,1),(-1,-1),[L_TEAL, colors.HexColor('#b2dfdb')]), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),4), ])) qb_right.append(tgt_t) story.append(two_col(qb_left, qb_right)) story.append(Spacer(1,6)) # ══ 04 FACULTY ═══════════════════════════════════════════════════════════════ story.append(banner('04 👨‍⚕️ FACULTY GUIDE — Best Teacher Per Subject', C_PURPLE)) fac_rows = [ [Paragraph(h, ps(f'_fh{i}', size=8.5, bold=True, color=C_WHITE)) for i, h in enumerate(['Subject','Marrow Faculty','Rating','Notes'])], ['Medicine','Dr. Rakesh S Nair','⭐⭐⭐⭐⭐','Excellent clinical vignette approach'], ['Surgery','Dr. Rohan Khandelwal','⭐⭐⭐⭐⭐','Best surgery teacher on any platform'], ['Pathology','Dr. Sparsh Gupta','⭐⭐⭐⭐⭐','Very MCQ-oriented, clear explanations'], ['Pharmacology','Dr. Gobinath / Dr. Rajesh','⭐⭐⭐⭐','Good for high-yield drug classes'], ['OBG','Dr. Sakshi Arora','⭐⭐⭐⭐⭐','Industry gold standard for OBG'], ['Pediatrics','Dr. Singaram','⭐⭐⭐⭐','Comprehensive; good for milestones'], ['Microbiology','Marrow Faculty','⭐⭐⭐','Use RR only; supplement with notes'], ['PSM / Community','Marrow Faculty','⭐⭐⭐⭐','Biostat — supplement with YouTube (Dirty Medicine)'], ['Ophthalmology','Marrow Faculty','⭐⭐⭐⭐','RR videos are excellent for Ophtho'], ['ENT','Marrow Faculty','⭐⭐⭐⭐','RR videos sufficient; 2 days max'], ['Dermatology','Dr. Malcolm Pinto','⭐⭐⭐⭐','Good image-based question coverage'], ['Forensic Medicine','Marrow Faculty','⭐⭐⭐⭐','Well-structured, very high-yield'], ['Orthopedics','Dr. Abbas Ali','⭐⭐⭐⭐','Marrow RR very good for Ortho'], ['Psychiatry','Dr. Mohan Sunil Kumar','⭐⭐⭐⭐','DSM criteria very clearly explained'], ['⚠️ Anatomy','Dr. Najeeb (YouTube)','⭐⭐⭐⭐⭐','SKIP Marrow Anatomy — use Dr. Najeeb YouTube'], ['⚠️ Physiology','AK Lectures (YouTube)','⭐⭐⭐⭐⭐','SKIP Marrow Physio — use AK Lectures YouTube'], ['Biochemistry','Marrow RR only','⭐⭐⭐','Low yield; RR + PYQs only (2 days max)'], ['Radiology','Marrow RR only','⭐⭐⭐','Very short; 1 day max'], ['Anesthesia','Marrow RR only','⭐⭐⭐','Very short; 1 day max'], ] # Convert string rows to Paragraph def fac_row(row, i): bg_row = colors.HexColor('#fff9c4') if '⚠️' in row[0] else (L_PURPLE if i%2==0 else colors.HexColor('#ede7f6')) return [Paragraph(row[0], ps(f'_fa{i}0', size=8, bold='⚠️' in row[0], color=C_ORANGE if '⚠️' in row[0] else C_DARK)), Paragraph(row[1], ps(f'_fa{i}1', size=8)), Paragraph(row[2], ps(f'_fa{i}2', size=8, center=True)), Paragraph(row[3], ps(f'_fa{i}3', size=8))] fac_table_data = [fac_rows[0]] + [fac_row(r, i) for i, r in enumerate(fac_rows[1:])] ft2 = Table(fac_table_data, colWidths=[34*mm, 44*mm, 24*mm, 80*mm], rowHeights=[14]+[12.5]*19) fac_sty = [ ('BACKGROUND',(0,0),(-1,0), C_PURPLE), ('FONTSIZE',(0,0),(-1,-1),8.5), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),4), ('ROWBACKGROUNDS',(0,1),(-1,-1),[L_PURPLE, colors.HexColor('#ede7f6')]), ('BACKGROUND',(0,15),(-1,16), colors.HexColor('#fff9c4')), ] ft2.setStyle(TableStyle(fac_sty)) story.append(ft2) story.append(Spacer(1,3)) story.append(Paragraph('⚠️ Yellow rows = skip Marrow videos entirely; use the YouTube channels listed for those subjects.', ps('_fn', size=8, italic=True, color=colors.HexColor('#888888'), center=True))) story.append(Spacer(1,6)) # ══ 05 RAPID REVISION ════════════════════════════════════════════════════════ story.append(banner('05 ⚡ RAPID REVISION (RR) — When & How to Use It', C_ORANGE)) rr_left = [ Paragraph('<b>What is Rapid Revision?</b>', ps('_rrh', size=10, bold=True, color=C_DARK)), Spacer(1,3), Paragraph('Short, condensed versions of full lectures covering only high-yield points. Meant for revision after 1st reading — NOT as a replacement for it.', ps('_rrb', size=9)), Spacer(1,4), Paragraph('<b>When to use RR:</b>', ps('_rrwh', size=9, bold=True, color=C_DARK)), Spacer(1,2), ] rr_when = [ ('After completing 1st reading of a subject', '✓'), ('During Phase 3 revision', '✓'), ('Anatomy, Physio, Biochem, Micro, Radiology, Anaes', '✓ primary'), ('Instead of 1st reading of a full subject', '✗'), ('Before you have done any MCQs on that topic', '✗'), ] for txt, mark in rr_when: is_yes = '✓' in mark rt = Table([[Paragraph(txt, ps(f'_rw{txt[:5]}', size=8.5)), Paragraph(mark, ps(f'_rm{txt[:5]}', size=8.5, bold=True, color=C_GREEN if is_yes else C_MARROW, center=True))]], colWidths=[73*mm, 16*mm], rowHeights=[13]) rt.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,-1), L_ORANGE), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),5), ])) rr_left.append(rt) rr_left.append(Spacer(1,1)) rr_left.append(Spacer(1,4)) rr_left.append(Paragraph('<b>Best RR on Marrow (community rated):</b>', ps('_brrh', size=9, bold=True, color=C_DARK))) rr_left.append(Spacer(1,2)) best_rr = Table([ [Paragraph(s, ps(f'_br{i}', size=8, bold=True, color=C_WHITE, center=True)) for i, s in enumerate(['Anatomy','Surgery','OBG','Ortho','Physio'])], [Paragraph('⭐⭐⭐⭐⭐', ps(f'_bs{i}', size=8, center=True)) for i in range(5)], ], colWidths=[18*mm]*5, rowHeights=[13,12]) best_rr.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,0), C_ORANGE), ('BACKGROUND',(0,1),(-1,1), L_ORANGE), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ])) rr_left.append(best_rr) rr_right = [ Paragraph('<b>RR Workflow (follow this order):</b>', ps('_rrwfh', size=10, bold=True, color=C_DARK)), Spacer(1,3), ] rr_steps = [ ('1','Finish 1st reading + MCQs of a subject'), ('2','Take 1–2 day gap (study another subject)'), ('3','Come back, watch RR videos for that subject'), ('4','Annotate Marrow PDF notes as you watch'), ('5','Redo PYQs for that subject after RR'), ('6','Move to next subject in your plan'), ] for num, txt in rr_steps: rs = Table([[Paragraph(num, ps(f'_rrs{num}', size=8, bold=True, color=C_WHITE, center=True)), Paragraph(txt, ps(f'_rrt{num}', size=9))]], colWidths=[10*mm, 78*mm], rowHeights=[14]) rs.setStyle(TableStyle([ ('BACKGROUND',(0,0),(0,0), C_ORANGE), ('BACKGROUND',(1,0),(1,0), L_ORANGE), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),4), ])) rr_right.append(rs) rr_right.append(Spacer(1,1)) rr_right.append(Spacer(1,5)) rr_right.append(Paragraph('<b>Marrow Notes PDF — The Golden Rule:</b>', ps('_mrh', size=9, bold=True, color=C_DARK))) rr_right.append(Spacer(1,2)) note_tips = [ '→ Download subject PDF from Marrow app', '→ Print it or annotate on tablet', '→ Mark key points as you watch videos', '→ This IS your Last Minute Revision (LMR)', '→ Never make separate notes from scratch', '→ Revise from this PDF before every Grand Test', ] for nt in note_tips: rr_right.append(Paragraph(nt, ps(f'_nt{nt[:5]}', size=8.5))) rr_right.append(Spacer(1,1)) story.append(two_col(rr_left, rr_right)) story.append(Spacer(1,6)) # ══ 06 GRAND TESTS ════════════════════════════════════════════════════════════ story.append(banner('06 🏆 GRAND TESTS — Strategy & Analysis Protocol', C_GREEN)) gt_rows = [ [Paragraph(h, ps(f'_gth{i}', size=9, bold=True, color=C_WHITE)) for i, h in enumerate(['GT Type','When to Start','Frequency','After Each GT'])], ['Mini Subject Tests','After each subject (Phase 1–2)','1 per subject','Fix weak chapters before moving on'], ['Subject-wise Full Tests','Phase 2 — after 1st reading done','1–2 per week','Revise low-scoring topics next week'], ['Full Grand Tests (200Q)','Phase 3 — April 2027 onwards','2–3 per week','30-min analysis per GT (below)'], ['NEET PG Mock Series','Last 6–8 weeks before exam','Daily if possible','Focus only on weak areas from analysis'], ] def gt_para(row, i): return [Paragraph(c, ps(f'_gtr{i}{j}', size=8.5)) for j, c in enumerate(row)] gt_data = [gt_rows[0]] + [gt_para(r, i) for i, r in enumerate(gt_rows[1:])] gt_t = Table(gt_data, colWidths=[40*mm, 46*mm, 32*mm, 64*mm], rowHeights=[14]+[13]*4) gt_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,0), C_GREEN), ('ROWBACKGROUNDS',(0,1),(-1,-1),[L_GREEN, colors.HexColor('#c8e6c9')]), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),5), ])) story.append(gt_t) story.append(Spacer(1,4)) story.append(Paragraph('<b>Post-GT Analysis Protocol (30 minutes after every Grand Test):</b>', ps('_gta', size=9, bold=True, color=C_DARK))) story.append(Spacer(1,3)) analysis = [ [Paragraph('Step', ps('_ath', size=8.5, bold=True, color=C_WHITE)), Paragraph('Action', ps('_ath2', size=8.5, bold=True, color=C_WHITE)), Paragraph('Time', ps('_ath3', size=8.5, bold=True, color=C_WHITE))], ['1','Check subject-wise accuracy first — not overall score','5 min'], ['2','Open EVERY wrong answer and read the full explanation','15 min'], ['3','Classify each wrong Q: concept gap vs. silly mistake','5 min'], ['4','Add concept-gap Qs to Magic Module; re-read that topic','3 min'], ['5','Note the 3 weakest subjects for next week focus','2 min'], ] def an_para(row, i): return [Paragraph(row[0], ps(f'_an{i}0', size=8.5, bold=True, color=C_GREEN, center=True)), Paragraph(row[1], ps(f'_an{i}1', size=8.5)), Paragraph(row[2], ps(f'_an{i}2', size=8.5, center=True))] an_data = [analysis[0]] + [an_para(r, i) for i, r in enumerate(analysis[1:])] an_t = Table(an_data, colWidths=[10*mm, 140*mm, 18*mm], rowHeights=[14]+[13]*5) an_t.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,0), C_GREEN), ('ROWBACKGROUNDS',(0,1),(-1,-1),[L_GREEN, colors.HexColor('#c8e6c9')]), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),5), ('ALIGN',(0,1),(0,-1),'CENTER'), ('ALIGN',(2,0),(2,-1),'CENTER'), ])) story.append(an_t) story.append(Spacer(1,6)) # ══ 07 + 08 NOTES / DOS & DONTS (side by side) ════════════════════════════════ story.append(banner("07 📄 Notes Rule + 08 ⚠️ Marrow Do's & Don'ts", C_GREY)) # Notes rules (left) notes_left = [ Paragraph('<b>07 Notes — Golden Rule</b>', ps('_nh', size=10, bold=True, color=C_DARK)), Spacer(1,3), ] notes = [ ('✅ DO', C_GREEN, [ 'Download Marrow PDF notes for every subject', 'Annotate PDF while watching videos', 'Add your own mnemonics in the margin', 'Use annotated PDF as LMR material', 'Revise from PDF before every GT', ]), ('✗ DON\'T', C_MARROW, [ 'Make your own notes from scratch', 'Copy slides into a new notebook', 'Spend hours making "aesthetic" notes', 'Wait till exam month to start annotating', ]), ] for label, col, items in notes: lh = Table([[Paragraph(label, ps(f'_nl{label}', size=8.5, bold=True, color=C_WHITE, center=True))]], colWidths=[89*mm], rowHeights=[13]) lh.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1), col), ('VALIGN',(0,0),(-1,-1),'MIDDLE')])) notes_left.append(lh) for it in items: nr = Table([[Paragraph(it, ps(f'_ni{it[:5]}', size=8.5))]], colWidths=[89*mm], rowHeights=[13]) nr.setStyle(TableStyle([ ('BACKGROUND',(0,0),(-1,-1), L_AMBER), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),6), ])) notes_left.append(nr) notes_left.append(Spacer(1,2)) # Do's & Don'ts (right) dd_right = [ Paragraph("<b>08 Common Intern Mistakes to Avoid</b>", ps('_ddh', size=10, bold=True, color=C_DARK)), Spacer(1,3), ] dos = [ ('✅','Use Magic Module daily for 20 min'), ('✅','Start subject-wise QBank after every chapter'), ('✅','Study Anatomy/Physio from YouTube (not Marrow)'), ('✅','Start GTs only after 4+ subjects covered'), ('✅','Keep a mistake log of wrong Qs'), ('✅','Solve PYQs topic-wise first, year-wise later'), ] donts = [ ('✗','Do Grand Tests in Month 1 — demoralizing'), ('✗','Watch every Marrow video — huge time sink'), ('✗','Ignore wrong answers in QBank'), ('✗','Use Marrow RR instead of 1st reading'), ('✗','Re-attempt same Qs right after seeing answers'), ('✗','Study randomly without a subject-wise plan'), ] for (dm, dt), (xm, xt) in zip(dos, donts): row = Table([ [Paragraph(f'{dm} {dt}', ps(f'_do{dt[:5]}', size=8.5, color=C_GREEN)), Paragraph(f'{xm} {xt}', ps(f'_dx{xt[:5]}', size=8.5, color=C_MARROW))], ], colWidths=[44*mm, 44*mm], rowHeights=[13]) row.setStyle(TableStyle([ ('BACKGROUND',(0,0),(0,0), colors.HexColor('#e8f5e9')), ('BACKGROUND',(1,0),(1,0), colors.HexColor('#ffebee')), ('GRID',(0,0),(-1,-1),0.3, BORDER), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),4), ])) dd_right.append(row) dd_right.append(Spacer(1,1)) story.append(two_col(notes_left, dd_right)) story.append(Spacer(1,5)) # ── FOOTER ──────────────────────────────────────────────────────────────────── story.append(HRFlowable(width=W, thickness=0.5, color=BORDER)) story.append(Spacer(1,3)) story.append(Paragraph( 'Marrow Resource Guide | NEET PG 2027 | MBBS Intern, Bangalore | July 2026', ps('_ft', size=8, italic=True, color=colors.HexColor('#888888'), center=True))) story.append(Paragraph( '"The QBank is your real teacher. Videos are just the introduction."', ps('_fq', size=8, italic=True, color=colors.HexColor('#aaaaaa'), center=True))) doc.build(story) print("SUCCESS:", output_path) PYEOF

Your Marrow Resource Guide is ready:

Marrow Resource Guide

PDF Document · PDF


Here's what's packed into this single A4 guide across 8 colour-coded sections:
SectionWhat's covered
01 Intern ModeWhat it is, 6 key features, 6-step activation walkthrough
02 Video Strategy7 tips - speed, annotation, phone vs laptop, chapter-per-sitting rule
03 QBank Mastery3 modes in order (Subject → PYQ → Custom), Magic Module step-by-step, daily MCQ targets by phase
04 Faculty GuideAll 19 subjects with best faculty name, star rating, and notes - including which 2 subjects to skip Marrow for and use YouTube instead
05 Rapid RevisionWhen to use RR (with ✓/✗ table), 6-step RR workflow, best RR subjects, Marrow Notes PDF rules
06 Grand Tests4 GT phases with timing and frequency, full 30-minute post-GT analysis protocol
07 Notes RuleDo/Don't table for note-making
08 Do's & Don'ts6 most common intern mistakes side-by-side with the right approach
Print it as A4, laminate it, and stick it near your study desk.
This is a shared conversation. Sign in to Orris to start your own chat.