make a research proposal to convince funders
python -m markitdown "/home/daytona/workspace/attachments/2bc444a8-97fd-4198-942f-8b02885567cb/RESEARCH PROPORSAL FASD (1).pptx"
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() "
ls /home/daytona/skills/pptx/ && node --version && ls /home/daytona/skills/pptx/scripts/ 2>/dev/null || echo "no scripts dir"
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
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
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
fetal alcohol spectrum disorder prevalence sub-Saharan Africa
mkdir -p /home/daytona/workspace/fasd-proposal && ls /home/daytona/workspace/fasd-proposal/
~/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); });
cd /home/daytona/workspace/fasd-proposal && node funder_proposal.js 2>&1
ls -lh /home/daytona/workspace/fasd-proposal/FASD_Funder_Proposal.pptx
FASD Funder Proposal
Presentation · PPTX
| Slide | Content |
|---|---|
| 1 - Cover | Bold full-dark title slide with authors, date, institution |
| 2 - The Problem | Three key stat boxes (global prevalence, South Africa data, Zambia evidence gap), problem statement panel |
| 3 - Background & Rationale | FASD umbrella terms, global burden (Roozen 2016 meta-analysis cited), Zambia data gap, why Lusaka |
| 4 - Research Questions & Objectives | Side-by-side layout: 4 questions (Q1-Q4) + primary and 3 secondary objectives |
| 5 - Methodology | Three-column card design: Study Design, Study Population, Data Collection + analysis bar |
| 6 - Evidence Base | Global, Africa, Zambia columns with specific citations and statistics |
| 7 - Expected Outcomes & Impact | 4 numbered outcome cards: Prevalence Data, Risk Factors, Provider Knowledge, Policy Roadmap |
| 8 - Budget | Full itemised table, $72,050 total request |
| 9 - Timeline | 4-phase Gantt-style cards (Months 1-2, 3-6, 7-8, 9) with task bullets |
| 10 - Research Team | Dual profile cards for Dr Banda and Dr Nambeye with roles and credentials |
| 11 - Ethical Considerations | 6-box grid covering consent, ethics approval, confidentiality, vulnerable populations, benefit, cultural sensitivity |
| 12 - Call to Action | Dark closing slide with 5 compelling "why fund this" reasons and contact details |