[
  {
    "id": 1,
    "title": "Asphalt Shingle Repair Fundamentals",
    "slug": "asphalt-shingle-repair-fundamentals",
    "category": "Shingle",
    "level": "Beginner",
    "format": "Video",
    "duration_hours": 6,
    "price_usd": 79,
    "rating": 4.7,
    "reviews_count": 312,
    "short": "Start with deck checks, underlayment patches, and proper shingle replacement.",
    "details": "Learn layout logic, nail placement, and sealing to stop wind-lift and leaks.",
    "tags": ["shingles","starter","nailing","repair"],
    "prerequisites": "None",
    "outcomes": ["Replace damaged shingles", "Patch underlayment", "Seal tabs correctly"]
  },
  {
    "id": 2,
    "title": "Steep-Slope Safety & Setup",
    "slug": "steep-slope-safety-setup",
    "category": "Safety",
    "level": "Beginner",
    "format": "Guide",
    "duration_hours": 4,
    "price_usd": 49,
    "rating": 4.8,
    "reviews_count": 198,
    "short": "Harnesses, anchors, ladders, and staging for steep roofs.",
    "details": "Build a repeatable tie-off procedure and ladder footing routine.",
    "tags": ["safety","anchors","harness"],
    "prerequisites": "None",
    "outcomes": ["Set anchors safely", "Use harness properly", "Stage tools efficiently"]
  },
  {
    "id": 3,
    "title": "Valley & Ridge Leak Diagnosis",
    "slug": "valley-ridge-leak-diagnosis",
    "category": "Inspection",
    "level": "Intermediate",
    "format": "Video",
    "duration_hours": 5,
    "price_usd": 89,
    "rating": 4.6,
    "reviews_count": 154,
    "short": "Trace water paths in valleys and ridges with evidence-driven steps.",
    "details": "Use controlled hose tests and underlayment reveals to find failures.",
    "tags": ["inspection","valley","ridge"],
    "prerequisites": "Basic shingle knowledge",
    "outcomes": ["Perform hose tests", "Inspect underlayment", "Document leak sources"]
  },
  {
    "id": 4,
    "title": "EPDM Seam Mastery",
    "slug": "epdm-seam-mastery",
    "category": "Flat",
    "level": "Intermediate",
    "format": "Workshop",
    "duration_hours": 8,
    "price_usd": 129,
    "rating": 4.7,
    "reviews_count": 221,
    "short": "Clean, prime, and splice EPDM seams that last.",
    "details": "Hands-on splicing on demo panels with seam roller QA.",
    "tags": ["epdm","flat","seams"],
    "prerequisites": "Flat roof basics",
    "outcomes": ["Prime seams", "Apply splice tape", "Roll to spec pressure"]
  },
  {
    "id": 5,
    "title": "TPO Heat-Weld Repairs",
    "slug": "tpo-heat-weld-repairs",
    "category": "Flat",
    "level": "Advanced",
    "format": "Workshop",
    "duration_hours": 7,
    "price_usd": 149,
    "rating": 4.8,
    "reviews_count": 178,
    "short": "Heat-weld patches and penetration boots on TPO membranes.",
    "details": "Dial in nozzle temp, speed, and pressure; cut patch corners right.",
    "tags": ["tpo","welding","flat"],
    "prerequisites": "EPDM or TPO basics",
    "outcomes": ["Calibrate welder", "Patch penetrations", "Test peel strength"]
  },
  {
    "id": 6,
    "title": "Chimney Flashing Rebuild",
    "slug": "chimney-flashing-rebuild",
    "category": "Skylight",
    "level": "Advanced",
    "format": "Video",
    "duration_hours": 6,
    "price_usd": 119,
    "rating": 4.6,
    "reviews_count": 132,
    "short": "Replace counter and step flashing around masonry chimneys.",
    "details": "Cut reglets, bend step pieces, and integrate with underlayment.",
    "tags": ["flashing","chimney","metal"],
    "prerequisites": "Intermediate shingle experience",
    "outcomes": ["Cut reglets", "Install step flashing", "Seal counter flashing"]
  },
  {
    "id": 7,
    "title": "Skylight Retrofit Without Leaks",
    "slug": "skylight-retrofit-without-leaks",
    "category": "Skylight",
    "level": "Intermediate",
    "format": "Video",
    "duration_hours": 5,
    "price_usd": 109,
    "rating": 4.7,
    "reviews_count": 167,
    "short": "Swap old skylights and integrate new flashing kits.",
    "details": "Correct curb height, pan flashing, and underlayment tie-ins.",
    "tags": ["skylight","retrofit","flashing"],
    "prerequisites": "Basic shingle knowledge",
    "outcomes": ["Evaluate skylight", "Fit flashing kit", "Seal curb transitions"]
  },
  {
    "id": 8,
    "title": "Metal Roof Fastener & Panel Repairs",
    "slug": "metal-roof-fastener-panel-repairs",
    "category": "Metal",
    "level": "Intermediate",
    "format": "Guide",
    "duration_hours": 4,
    "price_usd": 99,
    "rating": 4.5,
    "reviews_count": 113,
    "short": "Fix loose fasteners, panel oil-canning, and minor corrosion.",
    "details": "Select matching sealants and backer rods for expansion joints.",
    "tags": ["metal","fasteners","panels"],
    "prerequisites": "Basic metal roofing safety",
    "outcomes": ["Replace fasteners", "Treat corrosion", "Seal joints"]
  },
  {
    "id": 9,
    "title": "Attic Ventilation & Moisture Control",
    "slug": "attic-ventilation-moisture-control",
    "category": "Ventilation",
    "level": "Beginner",
    "format": "Video",
    "duration_hours": 3,
    "price_usd": 59,
    "rating": 4.6,
    "reviews_count": 201,
    "short": "Balance intake and exhaust to extend roof life.",
    "details": "Calculate NFA, fix blocked soffits, and install ridge vents correctly.",
    "tags": ["ventilation","ridge","soffit"],
    "prerequisites": "None",
    "outcomes": ["Calculate NFA", "Unblock soffits", "Install ridge vents"]
  },
  {
    "id": 10,
    "title": "Gutter & Downspout Fixes",
    "slug": "gutter-downspout-fixes",
    "category": "Inspection",
    "level": "Beginner",
    "format": "Guide",
    "duration_hours": 2,
    "price_usd": 39,
    "rating": 4.4,
    "reviews_count": 97,
    "short": "Stop overflow, re-pitch runs, and reseal joints.",
    "details": "Set proper slope and secure hangers to protect roof edges.",
    "tags": ["gutter","downspout","sealant"],
    "prerequisites": "None",
    "outcomes": ["Seal joints", "Adjust slope", "Secure hangers"]
  },
  {
    "id": 11,
    "title": "Storm Damage Assessment",
    "slug": "storm-damage-assessment",
    "category": "Inspection",
    "level": "Intermediate",
    "format": "Video",
    "duration_hours": 4,
    "price_usd": 99,
    "rating": 4.6,
    "reviews_count": 146,
    "short": "Identify wind, hail, and tree impact damage accurately.",
    "details": "Document with photos and notes appropriate for adjusters.",
    "tags": ["storm","hail","wind"],
    "prerequisites": "Basic inspection skills",
    "outcomes": ["Classify damage", "Document evidence", "Prioritize repairs"]
  },
  {
    "id": 12,
    "title": "Ice Dam Prevention & Repair",
    "slug": "ice-dam-prevention-repair",
    "category": "Ventilation",
    "level": "Intermediate",
    "format": "Guide",
    "duration_hours": 3,
    "price_usd": 69,
    "rating": 4.5,
    "reviews_count": 123,
    "short": "Air sealing, insulation, and heat cable best practices.",
    "details": "Stop refreezing cycles and protect eaves with membranes.",
    "tags": ["ice dam","insulation","air sealing"],
    "prerequisites": "Attic basics",
    "outcomes": ["Seal attic bypasses", "Place heat cables", "Protect eaves"]
  },
  {
    "id": 13,
    "title": "Skylight Condensation Fixes",
    "slug": "skylight-condensation-fixes",
    "category": "Skylight",
    "level": "Beginner",
    "format": "Video",
    "duration_hours": 2,
    "price_usd": 49,
    "rating": 4.3,
    "reviews_count": 88,
    "short": "Reduce fogging and drips with ventilation and sealing steps.",
    "details": "Address thermal bridging and inside trim air leaks.",
    "tags": ["skylight","condensation","vent"],
    "prerequisites": "None",
    "outcomes": ["Improve airflow", "Seal trim leaks", "Add insulation"]
  },
  {
    "id": 14,
    "title": "PVC Membrane Patching",
    "slug": "pvc-membrane-patching",
    "category": "Flat",
    "level": "Intermediate",
    "format": "Workshop",
    "duration_hours": 6,
    "price_usd": 139,
    "rating": 4.6,
    "reviews_count": 109,
    "short": "Hot-air weld patches, corners, and terminations on PVC.",
    "details": "Create inside/outside corners and probe seams for QA.",
    "tags": ["pvc","flat","welding"],
    "prerequisites": "Flat roof basics",
    "outcomes": ["Weld patches", "Form corners", "Probe and test seams"]
  },
  {
    "id": 15,
    "title": "Metal Valley Rebuilds",
    "slug": "metal-valley-rebuilds",
    "category": "Metal",
    "level": "Advanced",
    "format": "Video",
    "duration_hours": 5,
    "price_usd": 129,
    "rating": 4.7,
    "reviews_count": 95,
    "short": "Design and install durable open valleys in metal systems.",
    "details": "Hem edges, plan expansion, and achieve watertight overlaps.",
    "tags": ["metal","valley","rebuild"],
    "prerequisites": "Intermediate metal roofing",
    "outcomes": ["Hem edges", "Plan laps", "Install open valleys"]
  },
  {
    "id": 16,
    "title": "Dormer & Sidewall Flashing",
    "slug": "dormer-sidewall-flashing",
    "category": "Shingle",
    "level": "Intermediate",
    "format": "Video",
    "duration_hours": 4,
    "price_usd": 89,
    "rating": 4.6,
    "reviews_count": 141,
    "short": "Proper step flashing and kick-out for walls and dormers.",
    "details": "Integrate underlayment and avoid capillary leaks.",
    "tags": ["flashing","sidewall","kickout"],
    "prerequisites": "Shingle basics",
    "outcomes": ["Install kick-out", "Sequence step flashing", "Seal laps"]
  },
  {
    "id": 17,
    "title": "Roof Penetrations: Vents & Pipes",
    "slug": "roof-penetrations-vents-pipes",
    "category": "Shingle",
    "level": "Beginner",
    "format": "Guide",
    "duration_hours": 3,
    "price_usd": 59,
    "rating": 4.4,
    "reviews_count": 133,
    "short": "Replace pipe boots and repair around vents without leaks.",
    "details": "Correct shingle cuts and sealant choice for longevity.",
    "tags": ["penetrations","vent","pipe boot"],
    "prerequisites": "None",
    "outcomes": ["Replace boots", "Fit shingles", "Seal properly"]
  },
  {
    "id": 18,
    "title": "Leak Logic: From Stain to Source",
    "slug": "leak-logic-from-stain-to-source",
    "category": "Inspection",
    "level": "Intermediate",
    "format": "Video",
    "duration_hours": 4,
    "price_usd": 99,
    "rating": 4.8,
    "reviews_count": 210,
    "short": "Systematically trace interior stains to exterior failures.",
    "details": "Use mapping, timing, and materials clues to isolate causes.",
    "tags": ["leak","diagnosis","mapping"],
    "prerequisites": "Inspection basics",
    "outcomes": ["Map leaks", "Run controlled tests", "Report clearly"]
  },
  {
    "id": 19,
    "title": "Vent Stack Flashing Upgrades",
    "slug": "vent-stack-flashing-upgrades",
    "category": "Shingle",
    "level": "Intermediate",
    "format": "Video",
    "duration_hours": 3,
    "price_usd": 69,
    "rating": 4.5,
    "reviews_count": 102,
    "short": "Upgrade aging vent stack flashings for watertight performance.",
    "details": "Metal pans, boot replacements, and sealant strategy.",
    "tags": ["vent","flashing","upgrade"],
    "prerequisites": "Shingle basics",
    "outcomes": ["Pan flashing", "Replace boots", "Seal overlaps"]
  },
  {
    "id": 20,
    "title": "Torch-Down Patch Safety",
    "slug": "torch-down-patch-safety",
    "category": "Flat",
    "level": "Advanced",
    "format": "Guide",
    "duration_hours": 3,
    "price_usd": 99,
    "rating": 4.3,
    "reviews_count": 77,
    "short": "Control heat, fire watch, and surface prep for torch-down patches.",
    "details": "Use shields, adjust flame, and document hot work procedures.",
    "tags": ["torch","safety","flat"],
    "prerequisites": "Hot work permit knowledge",
    "outcomes": ["Prep surface", "Control flame", "Follow fire watch"]
  },
  {
    "id": 21,
    "title": "Ridge Vent Retrofits",
    "slug": "ridge-vent-retrofits",
    "category": "Ventilation",
    "level": "Intermediate",
    "format": "Video",
    "duration_hours": 2,
    "price_usd": 49,
    "rating": 4.5,
    "reviews_count": 84,
    "short": "Install ridge vents on existing roofs without leaks.",
    "details": "Cut slots, fasten vents, and shingle over per spec.",
    "tags": ["ridge vent","retrofit","ventilation"],
    "prerequisites": "Shingle basics",
    "outcomes": ["Cut slot", "Secure vent", "Seal ridge"]
  },
  {
    "id": 22,
    "title": "Cricket Design for Chimneys",
    "slug": "cricket-design-for-chimneys",
    "category": "Skylight",
    "level": "Advanced",
    "format": "Video",
    "duration_hours": 4,
    "price_usd": 129,
    "rating": 4.7,
    "reviews_count": 66,
    "short": "Design and flash crickets to divert water behind chimneys.",
    "details": "Slope, framing, and metal integration techniques.",
    "tags": ["chimney","cricket","drainage"],
    "prerequisites": "Advanced flashing skills",
    "outcomes": ["Frame cricket", "Flash transitions", "Test drainage"]
  },
  {
    "id": 23,
    "title": "Liquid-Applied Membrane Patches",
    "slug": "liquid-applied-membrane-patches",
    "category": "Flat",
    "level": "Intermediate",
    "format": "Guide",
    "duration_hours": 3,
    "price_usd": 89,
    "rating": 4.4,
    "reviews_count": 91,
    "short": "Patch with liquid-applied systems around tricky penetrations.",
    "details": "Surface prep, compatible primers, and cure-time planning.",
    "tags": ["liquid membrane","patch","flat"],
    "prerequisites": "Flat roof basics",
    "outcomes": ["Prep surfaces", "Apply coatings", "Plan cure"]
  },
  {
    "id": 24,
    "title": "Starter & Drip Edge Repairs",
    "slug": "starter-drip-edge-repairs",
    "category": "Shingle",
    "level": "Beginner",
    "format": "Video",
    "duration_hours": 2,
    "price_usd": 39,
    "rating": 4.2,
    "reviews_count": 58,
    "short": "Fix starter rows and drip edges to stop perimeter leaks.",
    "details": "Evaluate fascia, set edge metal, and align starters correctly.",
    "tags": ["starter","drip edge","perimeter"],
    "prerequisites": "None",
    "outcomes": ["Replace drip edge", "Align starters", "Seal perimeters"]
  }
]