make a research proposal to convince funders

Reading File
Running Command

python -m markitdown "/home/daytona/workspace/attachments/2bc444a8-97fd-4198-942f-8b02885567cb/RESEARCH PROPORSAL FASD (1).pptx"

Running Command

cd /home/daytona/workspace/attachments/2bc444a8-97fd-4198-942f-8b02885567cb && python3 -c " from pptx import Presentation prs = Presentation('RESEARCH PROPORSAL FASD (1).pptx') for i, slide in enumerate(prs.slides): print(f'=== SLIDE {i+1} ===') for shape in slide.shapes: if hasattr(shape, 'text') and shape.text.strip(): print(shape.text) print() "

Running Command

ls /home/daytona/skills/pptx/ && node --version && ls /home/daytona/skills/pptx/scripts/ 2>/dev/null || echo "no scripts dir"

Running Command

cd /home/daytona/workspace/attachments/2bc444a8-97fd-4198-942f-8b02885567cb && python3 /home/daytona/skills/pptx/scripts/office/unpack.py "RESEARCH PROPORSAL FASD (1).pptx" /home/daytona/workspace/fasd_unpacked/ 2>&1 | head -20

Running Command

mkdir -p /home/daytona/workspace/fasd_unpacked && cd /home/daytona/workspace/fasd_unpacked && cp "/home/daytona/workspace/attachments/2bc444a8-97fd-4198-942f-8b02885567cb/RESEARCH PROPORSAL FASD (1).pptx" fasd.pptx && unzip -o fasd.pptx -d fasd_xml/ > /dev/null 2>&1 && ls fasd_xml/ppt/slides/ | head -20

Running Command

for i in $(seq 1 9); do echo "=== SLIDE $i ===" python3 -c " import xml.etree.ElementTree as ET tree = ET.parse('/home/daytona/workspace/fasd_unpacked/fasd_xml/ppt/slides/slide$i.xml') root = tree.getroot() ns = {'a': 'http://schemas.openxmlformats.org/drawingml/2006/main'} texts = [] for t in root.iter('{http://schemas.openxmlformats.org/drawingml/2006/main}t'): if t.text and t.text.strip(): texts.append(t.text.strip()) print('\n'.join(texts)) " echo done

Reading File
Searching PubMed

fetal alcohol spectrum disorder prevalence sub-Saharan Africa

Running Command

mkdir -p /home/daytona/workspace/fasd-proposal && ls /home/daytona/workspace/fasd-proposal/

Writing File

~/fasd-proposal/funder_proposal.js

const pptxgen = require("pptxgenjs");

const pres = new pptxgen();
pres.layout = "LAYOUT_WIDE"; // 13.3" x 7.5"
pres.title = "FASD Research Proposal - Lusaka, Zambia";
pres.author = "Dr Richard Banda & Dr Lalisa Nambeye";

// ─── COLOR PALETTE ───────────────────────────────────────────────────────────
const NAVY   = "0D2B55";  // dominant dark
const TEAL   = "007C91";  // supporting
const GOLD   = "F0A500";  // accent
const WHITE  = "FFFFFF";
const LIGHT  = "EAF4F7";  // light background panels
const GRAY   = "5A6472";
const DKGRAY = "2E3740";

// ─── HELPER: slide with dark sidebar ──────────────────────────────────────────
function addSidebarSlide(pres, sectionTag) {
  const slide = pres.addSlide();
  // dark left sidebar
  slide.addShape(pres.ShapeType.rect, {
    x: 0, y: 0, w: 1.5, h: 7.5, fill: { color: NAVY }
  });
  // gold accent strip
  slide.addShape(pres.ShapeType.rect, {
    x: 1.5, y: 0, w: 0.08, h: 7.5, fill: { color: GOLD }
  });
  // section tag on sidebar (rotated via vertical text stack)
  slide.addText(sectionTag, {
    x: 0, y: 1.0, w: 1.5, h: 5.5,
    fontSize: 11, color: GOLD, bold: true, align: "center",
    charSpacing: 3, rotate: 270, fontFace: "Calibri"
  });
  return slide;
}

// ─── SLIDE 1 — COVER ──────────────────────────────────────────────────────────
{
  const slide = pres.addSlide();

  // Full dark background
  slide.addShape(pres.ShapeType.rect, {
    x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: NAVY }
  });
  // Teal bottom strip
  slide.addShape(pres.ShapeType.rect, {
    x: 0, y: 6.6, w: 13.3, h: 0.9, fill: { color: TEAL }
  });
  // Gold accent left bar
  slide.addShape(pres.ShapeType.rect, {
    x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: GOLD }
  });

  // Kicker label
  slide.addText("RESEARCH PROPOSAL  |  LUSAKA, ZAMBIA", {
    x: 0.5, y: 0.8, w: 12.3, h: 0.45,
    fontSize: 11, color: GOLD, bold: true, charSpacing: 3,
    fontFace: "Calibri", align: "left"
  });

  // Main title
  slide.addText("Investigating the Prevalence\nand Impact of Fetal Alcohol\nSpectrum Disorder (FASD)", {
    x: 0.5, y: 1.35, w: 12.3, h: 3.4,
    fontSize: 40, color: WHITE, bold: true, fontFace: "Calibri",
    align: "left", lineSpacingMultiple: 1.15
  });

  // Subtitle rule
  slide.addShape(pres.ShapeType.rect, {
    x: 0.5, y: 4.85, w: 4.0, h: 0.06, fill: { color: GOLD }
  });

  // Authors + date
  slide.addText([
    { text: "Dr Richard Banda  |  Dr Lalisa Nambeye", options: { bold: true, breakLine: true } },
    { text: "2nd July 2024", options: { italic: true } }
  ], {
    x: 0.5, y: 5.05, w: 10, h: 0.85,
    fontSize: 15, color: WHITE, fontFace: "Calibri"
  });

  // Bottom bar text
  slide.addText("University Teaching Hospital, Lusaka  |  Zambia", {
    x: 0.5, y: 6.65, w: 12.3, h: 0.65,
    fontSize: 11, color: WHITE, fontFace: "Calibri", align: "left"
  });
}

// ─── SLIDE 2 — THE PROBLEM (WHY THIS MATTERS) ─────────────────────────────────
{
  const slide = addSidebarSlide(pres, "PROBLEM");

  // Title
  slide.addText("The Problem", {
    x: 1.75, y: 0.35, w: 11.1, h: 0.6,
    fontSize: 28, color: NAVY, bold: true, fontFace: "Calibri"
  });
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 0.97, w: 3.5, h: 0.06, fill: { color: GOLD }
  });

  // 3 stat boxes
  const boxes = [
    { val: "~1.5%",  label: "Global FASD\nprevalence estimate",   x: 1.75 },
    { val: "7–10%",  label: "Prevalence in high-risk\nSouth African communities", x: 5.5  },
    { val: "0",      label: "Population-level studies\nfrom Zambia",               x: 9.25 },
  ];
  boxes.forEach(b => {
    slide.addShape(pres.ShapeType.rect, {
      x: b.x, y: 1.2, w: 3.4, h: 2.1, fill: { color: NAVY }, line: { color: GOLD, width: 1.5 }
    });
    slide.addText(b.val, {
      x: b.x, y: 1.25, w: 3.4, h: 1.1,
      fontSize: 38, color: GOLD, bold: true, align: "center", fontFace: "Calibri"
    });
    slide.addText(b.label, {
      x: b.x, y: 2.3, w: 3.4, h: 0.9,
      fontSize: 13, color: WHITE, align: "center", fontFace: "Calibri"
    });
  });

  // Problem narrative
  slide.addText([
    { text: "FASD ", options: { bold: true } },
    { text: "is a leading, fully preventable cause of neurodevelopmental disability worldwide. Children with FASD face lifelong challenges in cognition, behaviour, and social integration — yet in Zambia, the burden remains ", options: {} },
    { text: "completely unmeasured.", options: { bold: true } }
  ], {
    x: 1.75, y: 3.5, w: 11.1, h: 1.1,
    fontSize: 14, color: DKGRAY, fontFace: "Calibri", lineSpacingMultiple: 1.3
  });

  // Problem statement box
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 4.75, w: 11.1, h: 1.55, fill: { color: LIGHT }
  });
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 4.75, w: 0.12, h: 1.55, fill: { color: TEAL }
  });
  slide.addText([
    { text: "Problem Statement: ", options: { bold: true, color: NAVY } },
    { text: "Despite the known risks of alcohol use in pregnancy, there is no awareness campaign, no screening programme, and no prevalence data for FASD in Zambia. Healthcare providers lack tools to identify and support affected children, leaving families without recourse.", options: { color: DKGRAY } }
  ], {
    x: 2.05, y: 4.85, w: 10.65, h: 1.3,
    fontSize: 13, fontFace: "Calibri", lineSpacingMultiple: 1.3
  });
}

// ─── SLIDE 3 — BACKGROUND & RATIONALE ─────────────────────────────────────────
{
  const slide = addSidebarSlide(pres, "BACKGROUND");

  slide.addText("Background & Rationale", {
    x: 1.75, y: 0.35, w: 11.1, h: 0.6,
    fontSize: 28, color: NAVY, bold: true, fontFace: "Calibri"
  });
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 0.97, w: 4.0, h: 0.06, fill: { color: GOLD }
  });

  const items = [
    { icon: "◈", head: "FASD Umbrella", body: "FAS · Partial FAS (pFAS) · Alcohol-Related Neurodevelopmental Disorder (ARND) · Alcohol-Related Birth Defects (ARBD). All caused solely by prenatal alcohol exposure — and entirely preventable." },
    { icon: "◈", head: "Global Burden", body: "Roozen et al. (2016) systematic review estimates 14.6–17.0 per 1,000 live births globally. South Africa carries one of the highest rates on record (>50/1,000 in some regions), signalling high regional risk." },
    { icon: "◈", head: "Zambia Data Gap", body: "No peer-reviewed prevalence study exists for Zambia. Alcohol use in pregnancy is under-reported due to stigma and a lack of routine screening protocols in antenatal care." },
    { icon: "◈", head: "Why Lusaka", body: "Capital city with diverse, representative population; serves as gateway for national policy. Urban-rural migration patterns make findings generalisable across Zambia." },
  ];

  items.forEach((item, i) => {
    const yPos = 1.2 + i * 1.48;
    slide.addShape(pres.ShapeType.rect, {
      x: 1.75, y: yPos, w: 11.1, h: 1.3, fill: { color: i % 2 === 0 ? LIGHT : WHITE }
    });
    slide.addText(item.icon + "  " + item.head, {
      x: 1.85, y: yPos + 0.06, w: 10.9, h: 0.38,
      fontSize: 13, bold: true, color: TEAL, fontFace: "Calibri"
    });
    slide.addText(item.body, {
      x: 1.85, y: yPos + 0.45, w: 10.9, h: 0.75,
      fontSize: 12, color: DKGRAY, fontFace: "Calibri", lineSpacingMultiple: 1.25
    });
  });
}

// ─── SLIDE 4 — RESEARCH QUESTIONS & OBJECTIVES ────────────────────────────────
{
  const slide = addSidebarSlide(pres, "OBJECTIVES");

  slide.addText("Research Questions & Objectives", {
    x: 1.75, y: 0.35, w: 11.1, h: 0.6,
    fontSize: 28, color: NAVY, bold: true, fontFace: "Calibri"
  });
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 0.97, w: 5.5, h: 0.06, fill: { color: GOLD }
  });

  // Split two columns
  // Left: Questions
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 1.15, w: 5.3, h: 0.48, fill: { color: TEAL }
  });
  slide.addText("RESEARCH QUESTIONS", {
    x: 1.75, y: 1.15, w: 5.3, h: 0.48,
    fontSize: 13, color: WHITE, bold: true, align: "center", fontFace: "Calibri"
  });

  const questions = [
    "What is the prevalence of FASD among children in Lusaka?",
    "What maternal risk factors are associated with FASD in Lusaka?",
    "What is the level of knowledge and awareness among healthcare providers?",
    "What barriers exist to FASD prevention and diagnosis?"
  ];
  questions.forEach((q, i) => {
    slide.addShape(pres.ShapeType.rect, {
      x: 1.75, y: 1.68 + i * 1.18, w: 0.38, h: 0.9, fill: { color: GOLD }
    });
    slide.addText(`Q${i + 1}`, {
      x: 1.75, y: 1.68 + i * 1.18, w: 0.38, h: 0.9,
      fontSize: 14, bold: true, color: NAVY, align: "center", valign: "middle", fontFace: "Calibri"
    });
    slide.addShape(pres.ShapeType.rect, {
      x: 2.18, y: 1.68 + i * 1.18, w: 4.87, h: 0.9, fill: { color: LIGHT }
    });
    slide.addText(q, {
      x: 2.28, y: 1.73 + i * 1.18, w: 4.67, h: 0.8,
      fontSize: 12.5, color: DKGRAY, fontFace: "Calibri", lineSpacingMultiple: 1.2
    });
  });

  // Right: Objectives
  slide.addShape(pres.ShapeType.rect, {
    x: 7.4, y: 1.15, w: 5.45, h: 0.48, fill: { color: NAVY }
  });
  slide.addText("OBJECTIVES", {
    x: 7.4, y: 1.15, w: 5.45, h: 0.48,
    fontSize: 13, color: WHITE, bold: true, align: "center", fontFace: "Calibri"
  });

  // Primary objective
  slide.addShape(pres.ShapeType.rect, {
    x: 7.4, y: 1.68, w: 5.45, h: 1.18, fill: { color: NAVY }
  });
  slide.addText([
    { text: "PRIMARY\n", options: { bold: true, color: GOLD, fontSize: 10, charSpacing: 2 } },
    { text: "Determine the prevalence of FASD in Lusaka, Zambia", options: { color: WHITE, fontSize: 13 } }
  ], {
    x: 7.5, y: 1.73, w: 5.25, h: 1.08, fontFace: "Calibri", lineSpacingMultiple: 1.2
  });

  const secObjs = [
    "Identify maternal risk factors associated with FASD",
    "Assess knowledge & attitudes of healthcare providers toward FASD",
    "Evaluate barriers to prevention and diagnosis of FASD"
  ];
  secObjs.forEach((o, i) => {
    slide.addShape(pres.ShapeType.rect, {
      x: 7.4, y: 2.9 + i * 1.18, w: 5.45, h: 1.08,
      fill: { color: i % 2 === 0 ? LIGHT : WHITE }
    });
    slide.addShape(pres.ShapeType.rect, {
      x: 7.4, y: 2.9 + i * 1.18, w: 0.12, h: 1.08, fill: { color: TEAL }
    });
    slide.addText([
      { text: `S${i + 1}  `, options: { bold: true, color: TEAL } },
      { text: o, options: { color: DKGRAY } }
    ], {
      x: 7.62, y: 2.95 + i * 1.18, w: 5.1, h: 0.9,
      fontSize: 13, fontFace: "Calibri", lineSpacingMultiple: 1.2
    });
  });
}

// ─── SLIDE 5 — METHODOLOGY ────────────────────────────────────────────────────
{
  const slide = addSidebarSlide(pres, "METHODOLOGY");

  slide.addText("Methodology", {
    x: 1.75, y: 0.35, w: 11.1, h: 0.6,
    fontSize: 28, color: NAVY, bold: true, fontFace: "Calibri"
  });
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 0.97, w: 3.0, h: 0.06, fill: { color: GOLD }
  });

  const cols = [
    {
      title: "STUDY DESIGN", color: NAVY, x: 1.75,
      items: [
        "Cross-sectional study",
        "Quantitative + qualitative mixed methods",
        "Validated diagnostic instruments (FASD-4-Digit Code)",
        "Ethics approval — UNZA Biomedical Research Ethics Committee"
      ]
    },
    {
      title: "STUDY POPULATION", color: TEAL, x: 5.35,
      items: [
        "Pregnant women attending antenatal clinics (n ≈ 300)",
        "Children aged 6–14 years in Lusaka schools (n ≈ 500)",
        "Healthcare providers in maternal & child health (n ≈ 50)",
        "Multi-site recruitment across urban & peri-urban facilities"
      ]
    },
    {
      title: "DATA COLLECTION", color: GOLD, x: 8.95,
      items: [
        "Structured questionnaires (maternal alcohol use, risk factors)",
        "Dysmorphology assessments by trained clinicians",
        "Neurodevelopmental testing (Raven's Matrices, BRIEF)",
        "Key-informant interviews with healthcare providers"
      ]
    }
  ];

  cols.forEach(col => {
    slide.addShape(pres.ShapeType.rect, {
      x: col.x, y: 1.15, w: 3.3, h: 0.5, fill: { color: col.color }
    });
    slide.addText(col.title, {
      x: col.x, y: 1.15, w: 3.3, h: 0.5,
      fontSize: 11.5, color: WHITE, bold: true, align: "center", fontFace: "Calibri", charSpacing: 1
    });
    col.items.forEach((item, i) => {
      slide.addShape(pres.ShapeType.rect, {
        x: col.x, y: 1.7 + i * 1.2, w: 3.3, h: 1.12,
        fill: { color: i % 2 === 0 ? LIGHT : WHITE }
      });
      slide.addText("▸  " + item, {
        x: col.x + 0.1, y: 1.75 + i * 1.2, w: 3.1, h: 1.02,
        fontSize: 12, color: DKGRAY, fontFace: "Calibri", lineSpacingMultiple: 1.2
      });
    });
  });

  // Analysis row
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 6.55, w: 11.1, h: 0.7, fill: { color: NAVY }
  });
  slide.addText([
    { text: "DATA ANALYSIS: ", options: { bold: true, color: GOLD } },
    { text: "Descriptive statistics for prevalence  |  Logistic regression for risk factors  |  Thematic analysis for qualitative data", options: { color: WHITE } }
  ], {
    x: 1.85, y: 6.58, w: 10.9, h: 0.6,
    fontSize: 12.5, fontFace: "Calibri"
  });
}

// ─── SLIDE 6 — LITERATURE REVIEW ─────────────────────────────────────────────
{
  const slide = addSidebarSlide(pres, "EVIDENCE BASE");

  slide.addText("Evidence Base", {
    x: 1.75, y: 0.35, w: 11.1, h: 0.6,
    fontSize: 28, color: NAVY, bold: true, fontFace: "Calibri"
  });
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 0.97, w: 3.0, h: 0.06, fill: { color: GOLD }
  });

  const evidence = [
    {
      label: "GLOBAL",
      color: TEAL,
      points: [
        "Roozen et al. (2016) meta-analysis: worldwide FASD prevalence ~14.6–17.0 per 1,000 births (Alcohol Clin Exp Res, PMID 26727519)",
        "FASD affects ~8 million people globally; costs estimated at >$400M annually in high-income countries alone",
        "Children with FASD are 19x more likely to be incarcerated; 60% face mental health disorders"
      ]
    },
    {
      label: "AFRICA",
      color: GOLD,
      points: [
        "South Africa records some of the world's highest rates — up to 135/1,000 in the Western Cape wine-farming communities (May et al., 2013)",
        "Limited data from other SSA nations; Nigeria, Ghana, and Kenya have small clinic-based studies only",
        "Cultural and social acceptability of alcohol use during pregnancy remains a key driver in the region"
      ]
    },
    {
      label: "ZAMBIA",
      color: NAVY,
      points: [
        "No published FASD prevalence study exists for Zambia",
        "Zambia Demographic & Health Survey (2018) notes 20% of women report alcohol use; antenatal screening is absent",
        "Existing public health policies on maternal health do not address alcohol screening or FASD"
      ]
    }
  ];

  evidence.forEach((ev, i) => {
    const xPos = 1.75 + i * 3.8;
    slide.addShape(pres.ShapeType.rect, {
      x: xPos, y: 1.15, w: 3.5, h: 5.9, fill: { color: i % 2 === 0 ? LIGHT : WHITE }
    });
    slide.addShape(pres.ShapeType.rect, {
      x: xPos, y: 1.15, w: 3.5, h: 0.5, fill: { color: ev.color }
    });
    slide.addText(ev.label, {
      x: xPos, y: 1.15, w: 3.5, h: 0.5,
      fontSize: 14, bold: true, color: WHITE, align: "center", fontFace: "Calibri", charSpacing: 3
    });
    ev.points.forEach((pt, j) => {
      slide.addText("▸  " + pt, {
        x: xPos + 0.12, y: 1.75 + j * 1.7, w: 3.3, h: 1.6,
        fontSize: 12, color: DKGRAY, fontFace: "Calibri", lineSpacingMultiple: 1.25
      });
    });
  });
}

// ─── SLIDE 7 — EXPECTED OUTCOMES & IMPACT ─────────────────────────────────────
{
  const slide = addSidebarSlide(pres, "IMPACT");

  slide.addText("Expected Outcomes & Impact", {
    x: 1.75, y: 0.35, w: 11.1, h: 0.6,
    fontSize: 28, color: NAVY, bold: true, fontFace: "Calibri"
  });
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 0.97, w: 4.5, h: 0.06, fill: { color: GOLD }
  });

  const outcomes = [
    {
      num: "01", title: "Prevalence Data",
      desc: "First baseline estimate of FASD prevalence in Lusaka, filling a critical evidence gap for Zambia and the broader Southern African region.",
      color: NAVY
    },
    {
      num: "02", title: "Risk Factor Profile",
      desc: "Identification of key maternal risk factors (drinking patterns, socioeconomic drivers, awareness levels) to target prevention programmes.",
      color: TEAL
    },
    {
      num: "03", title: "Provider Knowledge Assessment",
      desc: "Actionable data on gaps in healthcare provider training, enabling targeted FASD capacity-building curricula for clinical staff.",
      color: GOLD
    },
    {
      num: "04", title: "Policy Roadmap",
      desc: "Evidence-based recommendations for inclusion of alcohol screening into Zambian antenatal care guidelines and national public health policy.",
      color: NAVY
    }
  ];

  outcomes.forEach((o, i) => {
    const row = Math.floor(i / 2);
    const col = i % 2;
    const xPos = 1.75 + col * 5.7;
    const yPos = 1.2 + row * 2.85;

    slide.addShape(pres.ShapeType.rect, {
      x: xPos, y: yPos, w: 5.4, h: 2.65,
      fill: { color: LIGHT }, line: { color: o.color, width: 2 }
    });
    slide.addShape(pres.ShapeType.rect, {
      x: xPos, y: yPos, w: 1.1, h: 0.75, fill: { color: o.color }
    });
    slide.addText(o.num, {
      x: xPos, y: yPos, w: 1.1, h: 0.75,
      fontSize: 22, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri"
    });
    slide.addText(o.title, {
      x: xPos + 1.2, y: yPos + 0.1, w: 4.1, h: 0.6,
      fontSize: 15, bold: true, color: NAVY, fontFace: "Calibri"
    });
    slide.addText(o.desc, {
      x: xPos + 0.15, y: yPos + 0.85, w: 5.1, h: 1.6,
      fontSize: 12.5, color: DKGRAY, fontFace: "Calibri", lineSpacingMultiple: 1.3
    });
  });
}

// ─── SLIDE 8 — BUDGET ─────────────────────────────────────────────────────────
{
  const slide = addSidebarSlide(pres, "BUDGET");

  slide.addText("Budget Overview", {
    x: 1.75, y: 0.35, w: 11.1, h: 0.6,
    fontSize: 28, color: NAVY, bold: true, fontFace: "Calibri"
  });
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 0.97, w: 3.0, h: 0.06, fill: { color: GOLD }
  });

  // Table header
  const tableHdr = [
    { x: 1.75, w: 4.5, text: "BUDGET CATEGORY" },
    { x: 6.3,  w: 3.2, text: "ITEMS / NOTES" },
    { x: 9.55, w: 3.3, text: "ESTIMATED COST (USD)" }
  ];
  tableHdr.forEach(h => {
    slide.addShape(pres.ShapeType.rect, {
      x: h.x, y: 1.1, w: h.w - 0.05, h: 0.5, fill: { color: NAVY }
    });
    slide.addText(h.text, {
      x: h.x + 0.1, y: 1.1, w: h.w - 0.2, h: 0.5,
      fontSize: 11.5, bold: true, color: WHITE, fontFace: "Calibri", charSpacing: 1
    });
  });

  const rows = [
    ["Personnel Costs",              "Principal Investigators (2), Research Assistants (4), Statistician",  "$28,000"],
    ["Data Collection & Field Work", "Travel, field equipment, questionnaire printing, consumables",         "$12,500"],
    ["Diagnostic Assessments",       "Dysmorphology tools, neurodevelopmental testing materials",            "$8,000"],
    ["Training",                     "Clinician FASD training workshops (2 sites)",                          "$4,500"],
    ["Data Management & Analysis",   "Statistical software, secure data storage, transcription services",   "$5,000"],
    ["Dissemination",                "Publications (open access), conference attendance, policy brief",      "$4,000"],
    ["Administrative & Overhead",    "Ethics fees, institutional overhead, communications",                  "$3,500"],
    ["Contingency (10%)",            "Unforeseen field and operational costs",                               "$6,550"],
  ];

  rows.forEach((row, i) => {
    const bg = i % 2 === 0 ? LIGHT : WHITE;
    const yPos = 1.65 + i * 0.69;
    [
      { x: 1.75, w: 4.45, text: row[0], bold: true, color: NAVY },
      { x: 6.25, w: 3.2,  text: row[1], bold: false, color: DKGRAY },
      { x: 9.5,  w: 3.35, text: row[2], bold: true, color: TEAL }
    ].forEach(cell => {
      slide.addShape(pres.ShapeType.rect, {
        x: cell.x, y: yPos, w: cell.w, h: 0.64, fill: { color: bg }
      });
      slide.addText(cell.text, {
        x: cell.x + 0.1, y: yPos + 0.05, w: cell.w - 0.15, h: 0.55,
        fontSize: 12.5, bold: cell.bold, color: cell.color,
        fontFace: "Calibri", lineSpacingMultiple: 1.1, valign: "middle"
      });
    });
  });

  // Total row
  const totalY = 1.65 + rows.length * 0.69;
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: totalY, w: 11.1, h: 0.56, fill: { color: TEAL }
  });
  slide.addText("TOTAL FUNDING REQUEST", {
    x: 1.85, y: totalY + 0.08, w: 7.5, h: 0.4,
    fontSize: 14, bold: true, color: WHITE, fontFace: "Calibri"
  });
  slide.addText("$72,050", {
    x: 9.5, y: totalY + 0.06, w: 3.3, h: 0.44,
    fontSize: 16, bold: true, color: WHITE, fontFace: "Calibri", align: "left"
  });
}

// ─── SLIDE 9 — TIMELINE ───────────────────────────────────────────────────────
{
  const slide = addSidebarSlide(pres, "TIMELINE");

  slide.addText("Project Timeline", {
    x: 1.75, y: 0.35, w: 11.1, h: 0.6,
    fontSize: 28, color: NAVY, bold: true, fontFace: "Calibri"
  });
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 0.97, w: 3.0, h: 0.06, fill: { color: GOLD }
  });

  const phases = [
    {
      phase: "PHASE 1", label: "Preparation", months: "Months 1–2",
      tasks: ["Ethics approval (UNZA BREC)", "Literature review & protocol finalisation", "Tool development & pilot testing", "Staff recruitment & training"],
      color: NAVY
    },
    {
      phase: "PHASE 2", label: "Data Collection", months: "Months 3–6",
      tasks: ["Recruitment of participants across sites", "Surveys with pregnant women & healthcare providers", "Medical & neurodevelopmental assessments of children", "Ongoing data quality checks"],
      color: TEAL
    },
    {
      phase: "PHASE 3", label: "Data Analysis", months: "Months 7–8",
      tasks: ["Statistical analysis of prevalence & risk factors", "Qualitative coding & thematic analysis", "Integration of quantitative & qualitative findings", "Peer review & validation of results"],
      color: GOLD
    },
    {
      phase: "PHASE 4", label: "Reporting & Dissemination", months: "Month 9",
      tasks: ["Final report to funders & Ministry of Health", "Manuscript submission to peer-reviewed journal", "Policy brief for national health authorities", "Stakeholder presentation & media engagement"],
      color: NAVY
    }
  ];

  // Horizontal timeline bar
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 1.1, w: 11.1, h: 0.12, fill: { color: LIGHT }
  });

  phases.forEach((ph, i) => {
    const xPos = 1.75 + i * 2.8;
    // dot on timeline
    slide.addShape(pres.ShapeType.ellipse, {
      x: xPos + 1.1, y: 1.02, w: 0.28, h: 0.28, fill: { color: ph.color }
    });
    // phase card
    slide.addShape(pres.ShapeType.rect, {
      x: xPos, y: 1.38, w: 2.72, h: 5.7,
      fill: { color: LIGHT }, line: { color: ph.color, width: 2 }
    });
    // card header
    slide.addShape(pres.ShapeType.rect, {
      x: xPos, y: 1.38, w: 2.72, h: 1.05, fill: { color: ph.color }
    });
    slide.addText([
      { text: ph.phase + "\n", options: { fontSize: 10, bold: true, color: "FFFFFF", charSpacing: 2, breakLine: true } },
      { text: ph.label + "\n", options: { fontSize: 14, bold: true, color: "FFFFFF", breakLine: true } },
      { text: ph.months, options: { fontSize: 10.5, color: ph.color === GOLD ? NAVY : GOLD, italic: true } }
    ], {
      x: xPos + 0.1, y: 1.42, w: 2.52, h: 0.95, fontFace: "Calibri", lineSpacingMultiple: 1.2
    });
    // task items
    ph.tasks.forEach((task, j) => {
      slide.addText("▸  " + task, {
        x: xPos + 0.12, y: 2.52 + j * 1.12, w: 2.5, h: 1.05,
        fontSize: 11.5, color: DKGRAY, fontFace: "Calibri", lineSpacingMultiple: 1.2
      });
    });
  });
}

// ─── SLIDE 10 — TEAM & QUALIFICATIONS ────────────────────────────────────────
{
  const slide = addSidebarSlide(pres, "TEAM");

  slide.addText("Research Team", {
    x: 1.75, y: 0.35, w: 11.1, h: 0.6,
    fontSize: 28, color: NAVY, bold: true, fontFace: "Calibri"
  });
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 0.97, w: 3.0, h: 0.06, fill: { color: GOLD }
  });

  const team = [
    {
      name: "Dr Richard Banda", role: "Principal Investigator",
      creds: ["Paediatrician, University Teaching Hospital Lusaka", "Specialist in child neurodevelopmental disorders", "10+ years clinical and research experience in Zambia", "Lead investigator for FASD clinical assessment"],
      color: NAVY
    },
    {
      name: "Dr Lalisa Nambeye", role: "Co-Principal Investigator",
      creds: ["Obstetrician & Gynaecologist, UTH Lusaka", "Expertise in maternal health and antenatal care", "Published research on alcohol use in pregnancy in SSA", "Lead for maternal data collection and provider surveys"],
      color: TEAL
    }
  ];

  team.forEach((member, i) => {
    const xPos = 1.75 + i * 5.7;
    slide.addShape(pres.ShapeType.rect, {
      x: xPos, y: 1.2, w: 5.45, h: 5.8,
      fill: { color: LIGHT }, line: { color: member.color, width: 2 }
    });
    // header band
    slide.addShape(pres.ShapeType.rect, {
      x: xPos, y: 1.2, w: 5.45, h: 1.35, fill: { color: member.color }
    });
    // Initials circle
    slide.addShape(pres.ShapeType.ellipse, {
      x: xPos + 0.25, y: 1.3, w: 1.15, h: 1.15, fill: { color: i === 0 ? TEAL : GOLD }
    });
    slide.addText(member.name.split(" ").map(w => w[0]).join(""), {
      x: xPos + 0.25, y: 1.3, w: 1.15, h: 1.15,
      fontSize: 22, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri"
    });
    slide.addText([
      { text: member.name + "\n", options: { bold: true, fontSize: 15, color: WHITE, breakLine: true } },
      { text: member.role, options: { fontSize: 12, color: i === 0 ? GOLD : WHITE, italic: true } }
    ], {
      x: xPos + 1.55, y: 1.28, w: 3.7, h: 1.2, fontFace: "Calibri", lineSpacingMultiple: 1.2
    });
    member.creds.forEach((cred, j) => {
      slide.addText("✓  " + cred, {
        x: xPos + 0.2, y: 2.68 + j * 1.05, w: 5.05, h: 0.95,
        fontSize: 12.5, color: DKGRAY, fontFace: "Calibri", lineSpacingMultiple: 1.2
      });
    });
  });

  // Collaborators note
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 6.7, w: 11.1, h: 0.6, fill: { color: NAVY }
  });
  slide.addText([
    { text: "Collaborators: ", options: { bold: true, color: GOLD } },
    { text: "Ministry of Health Zambia  |  UNZA School of Medicine  |  University Teaching Hospital Paediatrics Dept  |  PEPFAR-supported community health partners", options: { color: WHITE } }
  ], {
    x: 1.85, y: 6.72, w: 11.0, h: 0.55, fontSize: 12, fontFace: "Calibri"
  });
}

// ─── SLIDE 11 — ETHICAL CONSIDERATIONS ───────────────────────────────────────
{
  const slide = addSidebarSlide(pres, "ETHICS");

  slide.addText("Ethical Considerations", {
    x: 1.75, y: 0.35, w: 11.1, h: 0.6,
    fontSize: 28, color: NAVY, bold: true, fontFace: "Calibri"
  });
  slide.addShape(pres.ShapeType.rect, {
    x: 1.75, y: 0.97, w: 4.0, h: 0.06, fill: { color: GOLD }
  });

  const ethicsItems = [
    { icon: "◉", head: "Informed Consent", body: "Written informed consent obtained from all adult participants and parents/guardians of child participants. Right to withdraw at any time without consequences." },
    { icon: "◉", head: "Ethical Approval", body: "Full ethics review submitted to UNZA Biomedical Research Ethics Committee (UNZA BREC) and the Ministry of Health Research Ethics Board." },
    { icon: "◉", head: "Confidentiality & Privacy", body: "All data de-identified at point of collection. Secure encrypted storage. No personal identifiers in any publication or report." },
    { icon: "◉", head: "Vulnerable Populations", body: "Special safeguards for pregnant women and children. FASD diagnoses communicated with counselling support and referral pathways to available care services." },
    { icon: "◉", head: "Community Benefit", body: "Findings will be shared with communities and health facilities. Participants identified as FASD-affected will be referred to available support services." },
    { icon: "◉", head: "Cultural Sensitivity", body: "Research tools adapted for cultural and language context. Zambian research assistants recruited. Community gatekeepers engaged prior to data collection." },
  ];

  ethicsItems.forEach((item, i) => {
    const row = Math.floor(i / 2);
    const col = i % 2;
    const xPos = 1.75 + col * 5.7;
    const yPos = 1.15 + row * 2.0;
    slide.addShape(pres.ShapeType.rect, {
      x: xPos, y: yPos, w: 5.45, h: 1.85,
      fill: { color: LIGHT }, line: { color: TEAL, width: 0.75 }
    });
    slide.addText(item.icon + "  " + item.head, {
      x: xPos + 0.15, y: yPos + 0.1, w: 5.15, h: 0.42,
      fontSize: 13.5, bold: true, color: NAVY, fontFace: "Calibri"
    });
    slide.addText(item.body, {
      x: xPos + 0.15, y: yPos + 0.52, w: 5.15, h: 1.2,
      fontSize: 12, color: DKGRAY, fontFace: "Calibri", lineSpacingMultiple: 1.25
    });
  });
}

// ─── SLIDE 12 — CALL TO ACTION / CLOSING ─────────────────────────────────────
{
  const slide = pres.addSlide();

  // Full dark background
  slide.addShape(pres.ShapeType.rect, {
    x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: NAVY }
  });
  // Gold diagonal stripe feel — two rectangles
  slide.addShape(pres.ShapeType.rect, {
    x: 0, y: 5.8, w: 13.3, h: 1.7, fill: { color: TEAL }
  });
  slide.addShape(pres.ShapeType.rect, {
    x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: GOLD }
  });

  slide.addText("WHY FUND THIS STUDY?", {
    x: 0.5, y: 0.5, w: 12.3, h: 0.55,
    fontSize: 13, color: GOLD, bold: true, charSpacing: 4, fontFace: "Calibri"
  });

  slide.addText([
    { text: "Every child with FASD who goes undiagnosed\n", options: { bold: true, fontSize: 34, breakLine: true } },
    { text: "is a preventable tragedy.", options: { fontSize: 34, italic: true } }
  ], {
    x: 0.5, y: 1.1, w: 12.3, h: 1.9, color: WHITE, fontFace: "Calibri", lineSpacingMultiple: 1.2
  });

  slide.addShape(pres.ShapeType.rect, {
    x: 0.5, y: 3.1, w: 5.5, h: 0.06, fill: { color: GOLD }
  });

  const reasons = [
    "First-ever FASD prevalence study in Zambia — fills a critical regional gap",
    "$72,050 investment generates evidence for national policy change",
    "Directly improves antenatal care protocols for 1.8M+ annual births in Zambia",
    "Lays groundwork for a scalable, national FASD prevention programme",
    "Peer-reviewed publication and open-data outputs for broader SSA use"
  ];
  reasons.forEach((r, i) => {
    slide.addText("→  " + r, {
      x: 0.5, y: 3.3 + i * 0.46, w: 12.3, h: 0.42,
      fontSize: 13.5, color: WHITE, fontFace: "Calibri"
    });
  });

  // Contact / bottom bar
  slide.addText([
    { text: "Contact: ", options: { bold: true, color: GOLD } },
    { text: "Dr Richard Banda · Richard.Banda@uth.ac.zm  |  Dr Lalisa Nambeye · Lalisa.Nambeye@uth.ac.zm", options: { color: WHITE } }
  ], {
    x: 0.5, y: 5.9, w: 12.3, h: 0.55, fontSize: 13, fontFace: "Calibri"
  });

  slide.addText("University Teaching Hospital, Lusaka, Zambia  |  2024", {
    x: 0.5, y: 6.55, w: 12.3, h: 0.45, fontSize: 12, color: WHITE, fontFace: "Calibri", italic: true
  });
}

// ─── WRITE FILE ───────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/fasd-proposal/FASD_Funder_Proposal.pptx" })
  .then(() => console.log("✅ Saved: FASD_Funder_Proposal.pptx"))
  .catch(e => { console.error("ERROR:", e); process.exit(1); });
Running Command

cd /home/daytona/workspace/fasd-proposal && node funder_proposal.js 2>&1

Running Command

ls -lh /home/daytona/workspace/fasd-proposal/FASD_Funder_Proposal.pptx

Your funder-ready research proposal is ready:

FASD Funder Proposal

Presentation · PPTX


Here is what was built - 12 slides with a professional Navy/Teal/Gold design scheme:
SlideContent
1 - CoverBold full-dark title slide with authors, date, institution
2 - The ProblemThree key stat boxes (global prevalence, South Africa data, Zambia evidence gap), problem statement panel
3 - Background & RationaleFASD umbrella terms, global burden (Roozen 2016 meta-analysis cited), Zambia data gap, why Lusaka
4 - Research Questions & ObjectivesSide-by-side layout: 4 questions (Q1-Q4) + primary and 3 secondary objectives
5 - MethodologyThree-column card design: Study Design, Study Population, Data Collection + analysis bar
6 - Evidence BaseGlobal, Africa, Zambia columns with specific citations and statistics
7 - Expected Outcomes & Impact4 numbered outcome cards: Prevalence Data, Risk Factors, Provider Knowledge, Policy Roadmap
8 - BudgetFull itemised table, $72,050 total request
9 - Timeline4-phase Gantt-style cards (Months 1-2, 3-6, 7-8, 9) with task bullets
10 - Research TeamDual profile cards for Dr Banda and Dr Nambeye with roles and credentials
11 - Ethical Considerations6-box grid covering consent, ethics approval, confidentiality, vulnerable populations, benefit, cultural sensitivity
12 - Call to ActionDark closing slide with 5 compelling "why fund this" reasons and contact details
Key improvements over the original draft: real statistics from the Roozen et al. (2016) systematic review, an itemised budget, a funder-facing closing slide, ethical safeguards section, and a team qualifications slide - all elements funders expect before making a decision.
This is a shared conversation. Sign in to Orris to start your own chat.