We are opening a clinic in general medicine an take a role on chairman, chief physician ,surgeon ,therapist or family doctor , pediatrician , financier , hr manager ,marketer, IT specialist , lawyer or regulator make a ppt including intro, mission,goals,strategy and budget in tenge and appropriate salaries for the above staffs
Kazakhstan Astana general medicine clinic doctor salary tenge 2025 2026
mkdir -p /home/daytona/workspace/clinic-ppt && ls /home/daytona/workspace/clinic…
~/clinic-ppt/build.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "MediCare Astana – General Medicine Clinic";
pres.author = "MediCare Astana";
// ── PALETTE ──────────────────────────────────────────────────────────────────
const C = {
navy: "0A2240", // dominant dark
teal: "0D7E7E", // supporting accent
mint: "A8D8D8", // light teal
gold: "C9A84C", // accent/highlight
white: "FFFFFF",
offWhite:"F4F8FA",
gray: "5E6E7A",
lightGray:"D6E4EC",
};
// Helper: add a coloured full-slide background rectangle
function bg(slide, color) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 5.625, fill: { color } });
}
// Helper: accent bar across top
function topBar(slide, color = C.teal) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.12, fill: { color } });
}
// Helper: accent bar at bottom
function bottomBar(slide, color = C.gold) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 5.50, w: 10, h: 0.125, fill: { color } });
}
// Helper: section label chip
function chip(slide, text, x, y) {
slide.addShape(pres.ShapeType.roundRect, {
x, y, w: 2.2, h: 0.30, rectRadius: 0.05,
fill: { color: C.teal }, line: { color: C.teal }
});
slide.addText(text, {
x, y, w: 2.2, h: 0.30, align: "center", valign: "middle",
fontSize: 9, bold: true, color: C.white, margin: 0
});
}
// ╔══════════════════════════════════════════════════════════════╗
// ║ SLIDE 1 – TITLE / COVER ║
// ╚══════════════════════════════════════════════════════════════╝
{
const s = pres.addSlide();
bg(s, C.navy);
// Decorative teal panel left side
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 3.8, h: 5.625, fill: { color: C.teal } });
// Mint vertical stripe
s.addShape(pres.ShapeType.rect, { x: 3.8, y: 0, w: 0.08, h: 5.625, fill: { color: C.mint } });
// Cross / plus medical icon (white) on teal
s.addShape(pres.ShapeType.rect, { x: 1.5, y: 1.5, w: 0.8, h: 0.25, fill: { color: C.white } });
s.addShape(pres.ShapeType.rect, { x: 1.775, y: 1.22, w: 0.25, h: 0.8, fill: { color: C.white } });
// Clinic name (left panel)
s.addText("MediCare\nAstana", {
x: 0.3, y: 2.1, w: 3.2, h: 1.6,
fontSize: 32, bold: true, color: C.white,
align: "left", valign: "top", lineSpacingMultiple: 1.2
});
// Tagline
s.addText("Your Health. Our Priority.", {
x: 0.3, y: 3.8, w: 3.2, h: 0.45,
fontSize: 12, italic: true, color: C.mint, align: "left"
});
// Right-side headline
s.addText("General Medicine Clinic", {
x: 4.1, y: 1.6, w: 5.6, h: 0.6,
fontSize: 22, bold: true, color: C.white, align: "left"
});
s.addText("Business Presentation", {
x: 4.1, y: 2.25, w: 5.6, h: 0.4,
fontSize: 14, color: C.mint, align: "left"
});
// Divider line
s.addShape(pres.ShapeType.rect, { x: 4.1, y: 2.75, w: 5.0, h: 0.04, fill: { color: C.gold } });
// Sub-details
s.addText([
{ text: "Location: ", options: { bold: true } },
{ text: "Astana, Republic of Kazakhstan\n" },
{ text: "Year: ", options: { bold: true } },
{ text: "2026\n" },
{ text: "Sector: ", options: { bold: true } },
{ text: "Private General Medicine" }
], {
x: 4.1, y: 2.9, w: 5.6, h: 1.2,
fontSize: 12, color: C.offWhite, align: "left", lineSpacingMultiple: 1.4
});
// Footer
s.addText("Confidential | MediCare Astana © 2026", {
x: 4.1, y: 5.2, w: 5.6, h: 0.3,
fontSize: 9, color: C.gray, align: "right"
});
}
// ╔══════════════════════════════════════════════════════════════╗
// ║ SLIDE 2 – AGENDA / TABLE OF CONTENTS ║
// ╚══════════════════════════════════════════════════════════════╝
{
const s = pres.addSlide();
bg(s, C.offWhite);
topBar(s);
bottomBar(s);
s.addText("What We Cover Today", {
x: 0.5, y: 0.3, w: 9, h: 0.55,
fontSize: 22, bold: true, color: C.navy, align: "left"
});
s.addShape(pres.ShapeType.rect, { x: 0.5, y: 0.88, w: 1.0, h: 0.04, fill: { color: C.teal } });
const items = [
["01", "Introduction", "Who we are & the opportunity"],
["02", "Mission & Vision", "Our purpose and long-term aspiration"],
["03", "Goals", "Short-term and long-term targets"],
["04", "Strategy", "How we will achieve our goals"],
["05", "Team & Roles", "Leadership and clinical staff"],
["06", "Budget", "Startup costs & operating budget (KZT)"],
["07", "Salaries", "Remuneration plan for all staff"],
["08", "Next Steps", "Action plan & call to action"],
];
items.forEach(([num, title, sub], i) => {
const col = i < 4 ? 0 : 1;
const row = i < 4 ? i : i - 4;
const x = 0.5 + col * 4.8;
const y = 1.1 + row * 1.0;
s.addShape(pres.ShapeType.roundRect, {
x, y, w: 4.4, h: 0.82, rectRadius: 0.06,
fill: { color: C.white }, line: { color: C.lightGray, pt: 1 }
});
// Number chip
s.addShape(pres.ShapeType.roundRect, {
x: x + 0.08, y: y + 0.12, w: 0.46, h: 0.55, rectRadius: 0.05,
fill: { color: C.navy }
});
s.addText(num, {
x: x + 0.08, y: y + 0.12, w: 0.46, h: 0.55,
fontSize: 13, bold: true, color: C.gold,
align: "center", valign: "middle", margin: 0
});
s.addText(title, {
x: x + 0.64, y: y + 0.06, w: 3.6, h: 0.34,
fontSize: 12, bold: true, color: C.navy
});
s.addText(sub, {
x: x + 0.64, y: y + 0.42, w: 3.6, h: 0.28,
fontSize: 9, color: C.gray, italic: true
});
});
}
// ╔══════════════════════════════════════════════════════════════╗
// ║ SLIDE 3 – INTRODUCTION ║
// ╚══════════════════════════════════════════════════════════════╝
{
const s = pres.addSlide();
bg(s, C.navy);
// Teal accent strip right
s.addShape(pres.ShapeType.rect, { x: 6.8, y: 0, w: 3.2, h: 5.625, fill: { color: "0B3556" } });
topBar(s, C.gold);
bottomBar(s, C.teal);
chip(s, "INTRODUCTION", 0.5, 0.25);
s.addText("Why MediCare Astana?", {
x: 0.5, y: 0.65, w: 6.0, h: 0.55,
fontSize: 22, bold: true, color: C.white
});
const points = [
{ icon: "⚕", title: "Market Gap", body: "Astana has 1.5 M+ residents yet faces a shortage of integrated, patient-centred private general medicine clinics." },
{ icon: "📈", title: "Growing Demand", body: "Kazakhstan healthcare spending rose +18% YoY (2025). Middle-class demand for quality outpatient care is surging." },
{ icon: "🏛", title: "Strong Location", body: "New Administrative Capital with a young, employed, insured population – ideal for a full-service general medicine clinic." },
{ icon: "🤝", title: "Our Approach", body: "One roof, multi-disciplinary team: general medicine, surgery, therapy, pediatrics, and administrative excellence." },
];
points.forEach((p, i) => {
const y = 1.3 + i * 0.97;
s.addShape(pres.ShapeType.roundRect, {
x: 0.5, y, w: 6.1, h: 0.82, rectRadius: 0.06,
fill: { color: "0E2F4F" }, line: { color: C.teal, pt: 1 }
});
s.addText(p.icon, { x: 0.58, y: y + 0.15, w: 0.5, h: 0.5, fontSize: 18 });
s.addText(p.title, { x: 1.18, y: y + 0.06, w: 5.2, h: 0.32, fontSize: 11, bold: true, color: C.gold });
s.addText(p.body, { x: 1.18, y: y + 0.38, w: 5.2, h: 0.36, fontSize: 9.5, color: C.mint });
});
// Right panel stat
s.addText("Astana\nPopulation", { x: 7.0, y: 1.0, w: 2.8, h: 0.7, fontSize: 11, color: C.mint, align: "center" });
s.addText("1.5M+", { x: 7.0, y: 1.7, w: 2.8, h: 0.7, fontSize: 32, bold: true, color: C.gold, align: "center" });
s.addShape(pres.ShapeType.rect, { x: 7.5, y: 2.5, w: 1.8, h: 0.04, fill: { color: C.teal } });
s.addText("Healthcare\nGrowth Rate", { x: 7.0, y: 2.65, w: 2.8, h: 0.6, fontSize: 11, color: C.mint, align: "center" });
s.addText("+18% YoY", { x: 7.0, y: 3.3, w: 2.8, h: 0.6, fontSize: 20, bold: true, color: C.gold, align: "center" });
s.addShape(pres.ShapeType.rect, { x: 7.5, y: 4.0, w: 1.8, h: 0.04, fill: { color: C.teal } });
s.addText("Min. Wage\n(KZT 2026)", { x: 7.0, y: 4.1, w: 2.8, h: 0.5, fontSize: 11, color: C.mint, align: "center" });
s.addText("85,000", { x: 7.0, y: 4.62, w: 2.8, h: 0.5, fontSize: 20, bold: true, color: C.gold, align: "center" });
}
// ╔══════════════════════════════════════════════════════════════╗
// ║ SLIDE 4 – MISSION & VISION ║
// ╚══════════════════════════════════════════════════════════════╝
{
const s = pres.addSlide();
bg(s, C.offWhite);
topBar(s);
bottomBar(s);
chip(s, "MISSION & VISION", 0.5, 0.2);
// Mission block
s.addShape(pres.ShapeType.roundRect, {
x: 0.5, y: 0.6, w: 4.3, h: 4.7, rectRadius: 0.1,
fill: { color: C.navy }, line: { color: C.teal, pt: 2 }
});
s.addText("MISSION", {
x: 0.7, y: 0.75, w: 3.9, h: 0.42,
fontSize: 16, bold: true, color: C.gold, align: "center", charSpacing: 4
});
s.addShape(pres.ShapeType.rect, { x: 1.3, y: 1.22, w: 2.7, h: 0.04, fill: { color: C.teal } });
s.addText(
"To deliver accessible, evidence-based, and compassionate general medical care to the people of Astana – " +
"combining experienced clinical professionals with modern diagnostic technology to improve patient outcomes " +
"and quality of life.",
{
x: 0.7, y: 1.35, w: 3.9, h: 2.0,
fontSize: 10.5, color: C.white, align: "left",
lineSpacingMultiple: 1.5, valign: "top"
}
);
// 3 pillars
[["Accessible", "Affordable consultations for all income groups"],
["Evidence-Based", "Clinical decisions grounded in current guidelines"],
["Compassionate", "Patient dignity and empathy at every touchpoint"]
].forEach(([t, b], i) => {
const y = 3.55 + i * 0.55;
s.addShape(pres.ShapeType.rect, { x: 0.7, y: y + 0.05, w: 0.06, h: 0.32, fill: { color: C.teal } });
s.addText(t, { x: 0.88, y, w: 3.6, h: 0.24, fontSize: 10, bold: true, color: C.mint });
s.addText(b, { x: 0.88, y: y + 0.24, w: 3.6, h: 0.22, fontSize: 8.5, color: C.lightGray });
});
// Vision block
s.addShape(pres.ShapeType.roundRect, {
x: 5.2, y: 0.6, w: 4.3, h: 4.7, rectRadius: 0.1,
fill: { color: C.teal }, line: { color: C.navy, pt: 2 }
});
s.addText("VISION", {
x: 5.4, y: 0.75, w: 3.9, h: 0.42,
fontSize: 16, bold: true, color: C.navy, align: "center", charSpacing: 4
});
s.addShape(pres.ShapeType.rect, { x: 6.0, y: 1.22, w: 2.7, h: 0.04, fill: { color: C.navy } });
s.addText(
"To become the most trusted private general medicine clinic in Astana by 2030 – " +
"recognised for clinical excellence, technological innovation, and holistic patient care across all age groups.",
{
x: 5.4, y: 1.35, w: 3.9, h: 1.8,
fontSize: 10.5, color: C.white, align: "left",
lineSpacingMultiple: 1.5, valign: "top"
}
);
[["#1 Trusted Clinic", "Top-rated by patient satisfaction surveys in Astana"],
["Technology Leader", "AI-assisted diagnostics and electronic health records by 2027"],
["Community Impact", "Free annual health screenings for 500+ low-income residents"]
].forEach(([t, b], i) => {
const y = 3.2 + i * 0.6;
s.addShape(pres.ShapeType.rect, { x: 5.4, y: y + 0.05, w: 0.06, h: 0.32, fill: { color: C.navy } });
s.addText(t, { x: 5.58, y, w: 3.6, h: 0.24, fontSize: 10, bold: true, color: C.navy });
s.addText(b, { x: 5.58, y: y + 0.24, w: 3.6, h: 0.26, fontSize: 8.5, color: "0E2F4F" });
});
}
// ╔══════════════════════════════════════════════════════════════╗
// ║ SLIDE 5 – GOALS ║
// ╚══════════════════════════════════════════════════════════════╝
{
const s = pres.addSlide();
bg(s, C.offWhite);
topBar(s);
bottomBar(s);
chip(s, "GOALS", 0.5, 0.2);
s.addText("Our Strategic Goals", {
x: 0.5, y: 0.55, w: 9, h: 0.45,
fontSize: 20, bold: true, color: C.navy
});
// Short-term column
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 1.1, w: 4.3, h: 4.25, rectRadius: 0.08,
fill: { color: C.navy }
});
s.addText("SHORT-TERM (Year 1–2)", {
x: 0.5, y: 1.18, w: 4.1, h: 0.38,
fontSize: 10, bold: true, color: C.gold, align: "center", charSpacing: 2
});
s.addShape(pres.ShapeType.rect, { x: 1.0, y: 1.6, w: 3.0, h: 0.04, fill: { color: C.teal } });
const stGoals = [
"Register & license the clinic in Astana",
"Hire full medical & administrative team (11 staff)",
"Achieve 200+ patient visits per month by Month 6",
"Break even on operating costs within 18 months",
"Implement Electronic Medical Records (EMR) system",
"Obtain ISO 9001 quality management certification",
];
stGoals.forEach((g, i) => {
s.addText([
{ text: "✓ ", options: { color: C.teal, bold: true } },
{ text: g, options: { color: C.white } }
], {
x: 0.55, y: 1.72 + i * 0.55, w: 3.98, h: 0.44,
fontSize: 9.5, valign: "middle"
});
});
// Long-term column
s.addShape(pres.ShapeType.roundRect, {
x: 5.3, y: 1.1, w: 4.3, h: 4.25, rectRadius: 0.08,
fill: { color: C.teal }
});
s.addText("LONG-TERM (Year 3–5)", {
x: 5.4, y: 1.18, w: 4.1, h: 0.38,
fontSize: 10, bold: true, color: C.navy, align: "center", charSpacing: 2
});
s.addShape(pres.ShapeType.rect, { x: 5.9, y: 1.6, w: 3.0, h: 0.04, fill: { color: C.navy } });
const ltGoals = [
"Expand to second clinic location in Astana",
"Serve 800+ patients/month across both branches",
"Launch telemedicine platform for remote consultations",
"Establish corporate health partnership with 20+ companies",
"Introduce specialist departments: cardiology, neurology",
"Achieve 95%+ patient satisfaction rating",
];
ltGoals.forEach((g, i) => {
s.addText([
{ text: "★ ", options: { color: C.navy, bold: true } },
{ text: g, options: { color: C.white } }
], {
x: 5.45, y: 1.72 + i * 0.55, w: 3.98, h: 0.44,
fontSize: 9.5, valign: "middle"
});
});
}
// ╔══════════════════════════════════════════════════════════════╗
// ║ SLIDE 6 – STRATEGY ║
// ╚══════════════════════════════════════════════════════════════╝
{
const s = pres.addSlide();
bg(s, C.navy);
topBar(s, C.gold);
bottomBar(s, C.teal);
chip(s, "STRATEGY", 0.5, 0.22);
s.addText("How We Win", {
x: 0.5, y: 0.6, w: 9, h: 0.5,
fontSize: 20, bold: true, color: C.white
});
const strategies = [
{
no: "1", color: C.teal, title: "Clinical Excellence",
lines: ["Recruit board-certified physicians", "Evidence-based treatment protocols", "Continuous medical education (CME) quarterly"],
},
{
no: "2", color: C.gold, title: "Patient Experience",
lines: ["Online booking & 24h support line", "Average wait time < 15 minutes", "Patient portal with records & results"],
},
{
no: "3", color: "2E8B57", title: "Financial Discipline",
lines: ["Cost-control via smart procurement", "Mix of insurance + fee-for-service", "Monthly KPI dashboards for all depts"],
},
{
no: "4", color: "9B59B6", title: "Marketing & Growth",
lines: ["Digital-first marketing (SEO, social)", "Corporate wellness partnerships", "Community health events & screenings"],
},
{
no: "5", color: "E67E22", title: "Technology",
lines: ["EMR & telemedicine platform (Year 1)", "AI triage chatbot (Year 2)", "Data analytics for outcome tracking"],
},
{
no: "6", color: "C0392B", title: "Compliance & Legal",
lines: ["Full MoH licensing compliance", "GDPR-equivalent data protection", "Annual external clinical audit"],
},
];
strategies.forEach((st, i) => {
const col = i % 3;
const row = Math.floor(i / 3);
const x = 0.35 + col * 3.2;
const y = 1.25 + row * 2.0;
s.addShape(pres.ShapeType.roundRect, {
x, y, w: 3.0, h: 1.75, rectRadius: 0.08,
fill: { color: "0E2F4F" }, line: { color: st.color, pt: 1.5 }
});
// Number
s.addShape(pres.ShapeType.ellipse, {
x: x + 0.1, y: y + 0.1, w: 0.4, h: 0.4,
fill: { color: st.color }
});
s.addText(st.no, {
x: x + 0.1, y: y + 0.1, w: 0.4, h: 0.4,
fontSize: 12, bold: true, color: C.navy,
align: "center", valign: "middle", margin: 0
});
s.addText(st.title, {
x: x + 0.58, y: y + 0.12, w: 2.3, h: 0.32,
fontSize: 10.5, bold: true, color: st.color
});
st.lines.forEach((line, li) => {
s.addText("• " + line, {
x: x + 0.12, y: y + 0.52 + li * 0.38, w: 2.75, h: 0.35,
fontSize: 8.5, color: C.lightGray
});
});
});
}
// ╔══════════════════════════════════════════════════════════════╗
// ║ SLIDE 7 – TEAM & ROLES ║
// ╚══════════════════════════════════════════════════════════════╝
{
const s = pres.addSlide();
bg(s, C.offWhite);
topBar(s);
bottomBar(s);
chip(s, "TEAM & ROLES", 0.5, 0.2);
s.addText("Our People", {
x: 0.5, y: 0.55, w: 9, h: 0.45,
fontSize: 20, bold: true, color: C.navy
});
const staff = [
{ role: "Chairman", dept: "Governance", icon: "👑", desc: "Sets strategic direction; chairs Board of Directors; oversees all departments and investor relations." },
{ role: "Chief Physician", dept: "Medical", icon: "🩺", desc: "Medical director; ensures clinical standards, supervises doctors, manages patient safety protocols." },
{ role: "Surgeon", dept: "Medical", icon: "🔬", desc: "Performs outpatient surgical procedures; collaborates with physicians on complex case management." },
{ role: "Therapist", dept: "Medical", icon: "💊", desc: "Diagnoses and treats internal disease; manages chronic conditions, referrals, and follow-up care." },
{ role: "Family Doctor", dept: "Medical", icon: "🏥", desc: "Primary care for all ages; preventive medicine, immunisations, health screenings, and chronic disease management." },
{ role: "Pediatrician", dept: "Medical", icon: "👶", desc: "Child and adolescent health (0–18 yrs); growth monitoring, vaccinations, acute and developmental care." },
{ role: "Financier", dept: "Admin/Finance", icon: "💰", desc: "Financial planning, budgeting, payroll, insurance billing, and regulatory financial reporting." },
{ role: "HR Manager", dept: "Admin", icon: "🤝", desc: "Recruitment, onboarding, staff welfare, compliance with Kazakh labour law, and performance management." },
{ role: "Marketer", dept: "Growth", icon: "📣", desc: "Digital and offline marketing, brand management, patient acquisition campaigns, and community outreach." },
{ role: "IT Specialist", dept: "Technology", icon: "💻", desc: "EMR system administration, cybersecurity, telemedicine platform, and hardware/software support." },
{ role: "Lawyer/Regulator",dept: "Legal", icon: "⚖", desc: "Ensures MoH licensing, GDPR compliance, contract review, litigation management, and regulatory filings." },
];
// 4 columns x 3 rows (last row has 3 items)
staff.forEach((m, i) => {
const col = i % 4;
const row = Math.floor(i / 4);
const x = 0.25 + col * 2.37;
const y = 1.1 + row * 1.52;
const deptColor = m.dept === "Medical" ? C.teal
: m.dept === "Governance" ? C.navy
: m.dept === "Admin/Finance" ? "2E8B57"
: m.dept === "Admin" ? "9B59B6"
: m.dept === "Growth" ? "E67E22"
: m.dept === "Technology" ? "2980B9"
: "C0392B";
s.addShape(pres.ShapeType.roundRect, {
x, y, w: 2.22, h: 1.36, rectRadius: 0.07,
fill: { color: C.white }, line: { color: deptColor, pt: 1.5 }
});
s.addText(m.icon, { x: x + 0.08, y: y + 0.06, w: 0.45, h: 0.45, fontSize: 16 });
s.addText(m.role, {
x: x + 0.56, y: y + 0.06, w: 1.58, h: 0.34,
fontSize: 9, bold: true, color: C.navy
});
s.addShape(pres.ShapeType.roundRect, {
x: x + 0.56, y: y + 0.42, w: 1.25, h: 0.2, rectRadius: 0.04,
fill: { color: deptColor }
});
s.addText(m.dept, {
x: x + 0.56, y: y + 0.42, w: 1.25, h: 0.2,
fontSize: 7, bold: true, color: C.white, align: "center", valign: "middle", margin: 0
});
s.addText(m.desc, {
x: x + 0.08, y: y + 0.68, w: 2.06, h: 0.62,
fontSize: 7.2, color: C.gray, lineSpacingMultiple: 1.25
});
});
}
// ╔══════════════════════════════════════════════════════════════╗
// ║ SLIDE 8 – BUDGET (KZT) ║
// ╚══════════════════════════════════════════════════════════════╝
{
const s = pres.addSlide();
bg(s, C.navy);
topBar(s, C.gold);
bottomBar(s, C.teal);
chip(s, "BUDGET", 0.5, 0.22);
s.addText("Startup & Annual Operating Budget", {
x: 0.5, y: 0.6, w: 9, h: 0.48,
fontSize: 19, bold: true, color: C.white
});
// ── STARTUP COSTS TABLE ──
s.addText("STARTUP COSTS (One-Time)", {
x: 0.4, y: 1.15, w: 4.5, h: 0.3,
fontSize: 10, bold: true, color: C.gold, charSpacing: 1
});
const startup = [
["Clinic Premises (lease deposit 3mo)", "18,000,000"],
["Renovation & Interior Fit-Out", "25,000,000"],
["Medical Equipment & Instruments", "40,000,000"],
["IT Infrastructure & EMR System", "8,000,000"],
["Licensing & Legal Fees", "3,500,000"],
["Branding, Website & Marketing Launch", "4,000,000"],
["Staff Recruitment & Training", "2,500,000"],
["Working Capital Reserve (3 months)", "30,000,000"],
["TOTAL STARTUP", "131,000,000"],
];
startup.forEach(([item, amount], i) => {
const y = 1.5 + i * 0.38;
const isTotal = item.startsWith("TOTAL");
const bgColor = isTotal ? C.gold : i % 2 === 0 ? "0E2F4F" : "112E4A";
const textColor = isTotal ? C.navy : C.white;
s.addShape(pres.ShapeType.rect, {
x: 0.4, y, w: 4.3, h: 0.34,
fill: { color: bgColor }
});
s.addText(item, {
x: 0.5, y: y + 0.03, w: 3.0, h: 0.28,
fontSize: isTotal ? 9.5 : 8.8,
bold: isTotal, color: textColor
});
s.addText(amount + " ₸", {
x: 3.3, y: y + 0.03, w: 1.3, h: 0.28,
fontSize: isTotal ? 9.5 : 8.8,
bold: isTotal, color: isTotal ? C.navy : C.gold, align: "right"
});
});
// ── ANNUAL OPERATING TABLE ──
s.addText("ANNUAL OPERATING COSTS (Year 1)", {
x: 5.0, y: 1.15, w: 4.6, h: 0.3,
fontSize: 10, bold: true, color: C.gold, charSpacing: 1
});
const annual = [
["Staff Salaries (11 staff × 12 mo)", "162,000,000"],
["Premises Rent (monthly × 12)", "36,000,000"],
["Medical Supplies & Consumables", "18,000,000"],
["Utility Bills & Maintenance", "7,200,000"],
["Marketing & Advertising", "6,000,000"],
["IT Support & Software Licences", "3,600,000"],
["Insurance (Liability + Property)", "4,800,000"],
["Miscellaneous & Contingency (5%)", "11,880,000"],
["TOTAL ANNUAL OPEX", "249,480,000"],
];
annual.forEach(([item, amount], i) => {
const y = 1.5 + i * 0.38;
const isTotal = item.startsWith("TOTAL");
const bgColor = isTotal ? C.teal : i % 2 === 0 ? "0E2F4F" : "112E4A";
const textColor = isTotal ? C.navy : C.white;
s.addShape(pres.ShapeType.rect, {
x: 5.0, y, w: 4.6, h: 0.34,
fill: { color: bgColor }
});
s.addText(item, {
x: 5.1, y: y + 0.03, w: 3.2, h: 0.28,
fontSize: isTotal ? 9.5 : 8.8,
bold: isTotal, color: textColor
});
s.addText(amount + " ₸", {
x: 7.9, y: y + 0.03, w: 1.6, h: 0.28,
fontSize: isTotal ? 9.5 : 8.8,
bold: isTotal, color: isTotal ? C.navy : C.gold, align: "right"
});
});
// Note
s.addText("* All figures in Kazakhstani Tenge (KZT/₸). Exchange rate ~471 KZT/USD (May 2026). Salary line includes all 11 roles.", {
x: 0.4, y: 5.25, w: 9.2, h: 0.25,
fontSize: 7.5, color: C.gray, italic: true
});
}
// ╔══════════════════════════════════════════════════════════════╗
// ║ SLIDE 9 – SALARIES ║
// ╚══════════════════════════════════════════════════════════════╝
{
const s = pres.addSlide();
bg(s, C.offWhite);
topBar(s);
bottomBar(s);
chip(s, "SALARIES", 0.5, 0.2);
s.addText("Staff Remuneration Plan — Astana, 2026", {
x: 0.5, y: 0.55, w: 9, h: 0.45,
fontSize: 18, bold: true, color: C.navy
});
// Table header
const headers = ["Role", "Dept", "Gross Monthly Salary (₸)", "Annual Salary (₸)", "Market Benchmark"];
const colW = [2.2, 1.1, 2.4, 2.4, 1.5];
const colX = [0.3, 2.52, 3.64, 6.06, 8.48];
s.addShape(pres.ShapeType.rect, { x: 0.3, y: 1.08, w: 9.4, h: 0.32, fill: { color: C.navy } });
headers.forEach((h, i) => {
s.addText(h, {
x: colX[i] + 0.05, y: 1.1, w: colW[i], h: 0.28,
fontSize: 8.5, bold: true, color: C.gold, valign: "middle"
});
});
const rows = [
// [Role, Dept, monthly, annual, benchmark]
["Chairman", "Governance", "900,000", "10,800,000", "Above Market"],
["Chief Physician", "Medical", "800,000", "9,600,000", "Above Market"],
["Surgeon", "Medical", "750,000", "9,000,000", "Competitive"],
["Therapist", "Medical", "600,000", "7,200,000", "Competitive"],
["Family Doctor", "Medical", "550,000", "6,600,000", "At Market"],
["Pediatrician", "Medical", "550,000", "6,600,000", "At Market"],
["Financier", "Admin/Finance", "500,000", "6,000,000", "At Market"],
["HR Manager", "Admin", "450,000", "5,400,000", "At Market"],
["Marketer", "Growth", "420,000", "5,040,000", "At Market"],
["IT Specialist", "Technology", "480,000", "5,760,000", "Competitive"],
["Lawyer/Regulator", "Legal", "500,000", "6,000,000", "Competitive"],
["TOTAL (11 Staff)", "", "6,500,000", "78,000,000", ""],
];
rows.forEach((row, ri) => {
const y = 1.42 + ri * 0.34;
const isTotal = row[0].startsWith("TOTAL");
const bg2 = isTotal ? C.navy : ri % 2 === 0 ? C.white : C.lightGray;
s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 9.4, h: 0.32, fill: { color: bg2 } });
// Benchmark chip colour
const bColor = row[4] === "Above Market" ? "2E8B57" : row[4] === "Competitive" ? C.teal : "E67E22";
row.forEach((cell, ci) => {
if (ci === 4 && cell) {
// Chip for benchmark
s.addShape(pres.ShapeType.roundRect, {
x: colX[ci] + 0.05, y: y + 0.04, w: 1.35, h: 0.22,
rectRadius: 0.04, fill: { color: bColor }
});
s.addText(cell, {
x: colX[ci] + 0.05, y: y + 0.04, w: 1.35, h: 0.22,
fontSize: 7, bold: true, color: C.white,
align: "center", valign: "middle", margin: 0
});
} else {
s.addText(cell, {
x: colX[ci] + 0.05, y: y + 0.04, w: colW[ci], h: 0.24,
fontSize: isTotal ? 9 : 8.5,
bold: isTotal,
color: isTotal ? C.gold : C.navy,
valign: "middle"
});
}
});
});
// Note
s.addText(
"Gross monthly salaries include employer social contributions (~21.5%). " +
"Benchmarks based on Kazakhstan National Statistics Bureau data (Q1 2025) and Times of Central Asia medical salary survey. " +
"Performance bonuses (up to 20%) may be added quarterly.",
{
x: 0.3, y: 5.25, w: 9.4, h: 0.28,
fontSize: 7.5, color: C.gray, italic: true
}
);
}
// ╔══════════════════════════════════════════════════════════════╗
// ║ SLIDE 10 – NEXT STEPS / CALL TO ACTION ║
// ╚══════════════════════════════════════════════════════════════╝
{
const s = pres.addSlide();
bg(s, C.navy);
topBar(s, C.gold);
// Large teal arc-like block top-right for visual
s.addShape(pres.ShapeType.roundRect, {
x: 6.5, y: -0.5, w: 4.5, h: 4.5, rectRadius: 0.5,
fill: { color: C.teal }
});
s.addText("Ready to\nLaunch!", {
x: 6.6, y: 0.3, w: 3.9, h: 1.5,
fontSize: 26, bold: true, color: C.white,
align: "center", lineSpacingMultiple: 1.2
});
s.addText("MediCare Astana", {
x: 6.6, y: 1.85, w: 3.9, h: 0.45,
fontSize: 13, color: C.mint, align: "center", italic: true
});
chip(s, "NEXT STEPS", 0.4, 0.22);
s.addText("Action Plan", {
x: 0.4, y: 0.6, w: 5.8, h: 0.5,
fontSize: 20, bold: true, color: C.white
});
const steps = [
["Q3 2026", "Company registration & MoH licensing application"],
["Q3 2026", "Secure clinic premises lease in Astana city centre"],
["Q3 2026", "Complete renovation & medical equipment procurement"],
["Q4 2026", "Full staff recruitment & onboarding"],
["Q4 2026", "IT infrastructure & EMR system deployment"],
["Q4 2026", "Soft launch — first patient appointments accepted"],
["Q1 2027", "Grand opening & marketing campaign launch"],
["Q2 2027", "Review KPIs — adjust strategy for Year 2"],
];
steps.forEach(([qtr, text], i) => {
const y = 1.2 + i * 0.51;
// Connector dot
s.addShape(pres.ShapeType.ellipse, {
x: 0.4, y: y + 0.09, w: 0.22, h: 0.22,
fill: { color: i < 3 ? C.gold : i < 6 ? C.teal : C.mint }
});
if (i < steps.length - 1) {
s.addShape(pres.ShapeType.rect, {
x: 0.505, y: y + 0.31, w: 0.01, h: 0.22,
fill: { color: C.gray }
});
}
s.addShape(pres.ShapeType.roundRect, {
x: 0.76, y, w: 0.7, h: 0.28, rectRadius: 0.04,
fill: { color: i < 3 ? C.gold : i < 6 ? C.teal : C.mint }
});
s.addText(qtr, {
x: 0.76, y, w: 0.7, h: 0.28,
fontSize: 7.5, bold: true,
color: i < 3 ? C.navy : C.navy,
align: "center", valign: "middle", margin: 0
});
s.addText(text, {
x: 1.58, y: y + 0.02, w: 4.8, h: 0.28,
fontSize: 9.5, color: C.white, valign: "middle"
});
});
// Bottom CTA
s.addShape(pres.ShapeType.roundRect, {
x: 0.4, y: 5.1, w: 9.2, h: 0.38, rectRadius: 0.06,
fill: { color: C.gold }
});
s.addText("MediCare Astana — Better Health for Every Resident of Astana", {
x: 0.4, y: 5.1, w: 9.2, h: 0.38,
fontSize: 12, bold: true, color: C.navy,
align: "center", valign: "middle", margin: 0
});
}
// ── WRITE FILE ────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/workspace/clinic-ppt/MediCare_Astana_Clinic.pptx" })
.then(() => console.log("SUCCESS: /home/daytona/workspace/clinic-ppt/MediCare_Astana_Clinic.pptx"))
.catch(e => { console.error("ERROR:", e); process.exit(1); });
cd /home/daytona/workspace/clinic-ppt && node build.js 2>&1
ls -lh /home/daytona/workspace/clinic-ppt/MediCare_Astana_Clinic.pptx
MediCare Astana Clinic
Presentation · PPTX
| # | Slide | Key Content |
|---|---|---|
| 1 | Cover | MediCare Astana branding, navy/teal/gold palette with medical cross |
| 2 | Agenda | 8-section table of contents with numbered chips |
| 3 | Introduction | Market gap, 1.5M Astana population, +18% healthcare growth stats |
| 4 | Mission & Vision | Side-by-side cards - mission (evidence-based care) vs vision (top clinic by 2030) |
| 5 | Goals | Short-term (Yr 1-2) vs Long-term (Yr 3-5) in two columns |
| 6 | Strategy | 6 pillars: Clinical Excellence, Patient Experience, Financial Discipline, Marketing, Technology, Legal |
| 7 | Team & Roles | All 11 roles with descriptions, colour-coded by department |
| 8 | Budget (₸) | Startup costs (131,000,000 ₸) + Annual OPEX (249,480,000 ₸) |
| 9 | Salaries | Full remuneration table with market benchmark chips |
| 10 | Next Steps | Q3 2026 - Q2 2027 action timeline with CTA bar |
| Role | Monthly (₸) | Annual (₸) |
|---|---|---|
| Chairman | 900,000 | 10,800,000 |
| Chief Physician | 800,000 | 9,600,000 |
| Surgeon | 750,000 | 9,000,000 |
| Therapist | 600,000 | 7,200,000 |
| Family Doctor / Pediatrician | 550,000 each | 6,600,000 |
| IT Specialist | 480,000 | 5,760,000 |
| Financier / Lawyer | 500,000 each | 6,000,000 |
| HR Manager | 450,000 | 5,400,000 |
| Marketer | 420,000 | 5,040,000 |
| Total (11 staff) | 6,500,000/mo | 78,000,000/yr |