pH Atlas

pH Atlas — VBA Script

Executive-level PowerPoint generator (17 slides)

How to use
Generate the full executive deck in PowerPoint
  1. Download the .bas file below or copy the script to clipboard.
  2. Open PowerPoint and press Alt + F11 to open the VBA Editor.
  3. In the VBA Editor: File → Import File… and select the downloaded PHAtlas_Deck.bas.
  4. Press Ctrl + G to open the Immediate Window.
  5. Type CreatePHAtlasDeck and press Enter.
  6. A 17-slide executive deck will be generated automatically.
36,544 chars · 17 slides
Option Explicit

' ============================================================================
' pH Atlas — Executive-Level Presentation Generator (Updated)
' Run CreatePHAtlasDeck() in the PowerPoint VBA Editor (Alt+F11 -> Immediate Window)
' Late-binding version — no references required.
'
' Integrates all current app features:
'   - 13 body sites across 6 systems
'   - 38 peer-reviewed sources (Library)
'   - Interactive pH Checker with electrolyte/organ impacts & disease patterns
'   - AI-powered pH Interpreter
'   - Quiz (Challenge mode + AI Tutor)
'   - Community notes (questions, insights, references)
'   - History tracking with charts, weekly summary, and CSV export
'   - Citrate/bicarbonate buffering context per site
' ============================================================================

' ---- Brand palette ----
Private Const CLR_BG As Long = 15921906      ' #F4F8F9 light medical white
Private Const CLR_DARK As Long = 2500134    ' #262626 near-black
Private Const CLR_TEAL As Long = 5964801     ' #5B9B96 muted teal
Private Const CLR_ACCENT As Long = 13340159  ' #7FCBC4 light teal
Private Const CLR_MUTED As Long = 8421504    ' #808080 mid gray
Private Const CLR_WHITE As Long = 16777215
Private Const CLR_EMER As Long = 51200       ' emerald
Private Const CLR_AMBER As Long = 39423       ' amber
Private Const CLR_ROSE As Long = 255          ' rose
Private Const CLR_BLUE As Long = 13369344     ' #7CA8DC soft blue
Private Const CLR_PURPLE As Long = 13369599   ' #8B7FD4 soft purple

' ---- Enum constants (late binding) ----
Private Const msoTrue As Long = -1
Private Const msoFalse As Long = 0
Private Const msoAlignLeft As Long = 1
Private Const msoAlignCenter As Long = 2
Private Const msoAlignRight As Long = 3
Private Const msoTextOrientationHorizontal As Long = 1
Private Const msoShapeRectangle As Long = 1
Private Const msoShapeRoundedRectangle As Long = 5
Private Const ppLayoutBlank As Long = 12
Private Const ppSlideSizeOnScreen16x9 As Long = 15

' ---- Entry point ----
Public Sub CreatePHAtlasDeck()
    Dim prs As Object
    Set prs = Application.Presentations.Add(msoTrue)

    ' Use 16:9
    prs.PageSetup.SlideSize = ppSlideSizeOnScreen16x9
    prs.PageSetup.SlideWidth = 960
    prs.PageSetup.SlideHeight = 540

    Slide_Title prs
    Slide_Agenda prs
    Slide_ExecutiveSummary prs
    Slide_Problem prs
    Slide_Solution prs
    Slide_PlatformFeatures prs
    Slide_ClinicalData prs
    Slide_SystemMap prs
    Slide_CheckerFlow prs
    Slide_ElectrolyteImpacts prs
    Slide_AIInterpreter prs
    Slide_QuizCommunity prs
    Slide_HistoryTracking prs
    Slide_MarketPosition prs
    Slide_Roadmap prs
    Slide_NextSteps prs
    Slide_ThankYou prs

    MsgBox "pH Atlas executive deck generated: " & prs.Slides.Count & " slides.", vbInformation, "pH Atlas"
End Sub

' =========================================================================
' Helper: add a slide with a clean background
' =========================================================================
Private Function NewSlide(ByVal prs As Object, ByVal layout As Long) As Object
    Dim sld As Object
    Set sld = prs.Slides.Add(prs.Slides.Count + 1, layout)
    sld.Layout = ppLayoutBlank
    sld.FollowMasterBackground = msoFalse
    sld.Background.Fill.ForeColor.RGB = CLR_BG
    Set NewSlide = sld
End Function

Private Sub AddBar(ByVal sld As Object, ByVal Left As Single, ByVal Top As Single, ByVal Width As Single, ByVal Height As Single, ByVal color As Long)
    Dim shp As Object
    Set shp = sld.Shapes.AddShape(msoShapeRectangle, Left, Top, Width, Height)
    shp.Fill.ForeColor.RGB = color
    shp.Line.Visible = msoFalse
    shp.Shadow.Visible = msoFalse
End Sub

Private Sub AddText(ByVal sld As Object, ByVal Left As Single, ByVal Top As Single, ByVal Width As Single, ByVal Height As Single, _
                   ByVal text As String, ByVal fontSize As Single, ByVal color As Long, ByVal bold As Boolean, _
                   Optional ByVal align As Long = msoAlignLeft, Optional ByVal fontName As String = "Calibri")
    Dim shp As Object
    Set shp = sld.Shapes.AddTextbox(msoTextOrientationHorizontal, Left, Top, Width, Height)
    shp.TextFrame.WordWrap = msoTrue
    shp.TextFrame.MarginLeft = 0
    shp.TextFrame.MarginRight = 0
    shp.TextFrame.MarginTop = 0
    shp.TextFrame.MarginBottom = 0
    With shp.TextFrame.TextRange
        .text = text
        .Font.Size = fontSize
        .Font.Color.RGB = color
        .Font.bold = bold
        .Font.name = fontName
        .ParagraphFormat.Alignment = align
    End With
End Sub

Private Sub AddTitleBar(ByVal sld As Object, ByVal title As String, ByVal subtitle As String)
    AddBar sld, 0, 0, 960, 6, CLR_TEAL
    AddText sld, 60, 36, 840, 36, title, 26, CLR_DARK, True
    If Len(subtitle) > 0 Then
        AddText sld, 60, 78, 840, 28, subtitle, 13, CLR_MUTED, False
    End If
    AddBar sld, 60, 72, 40, 2, CLR_ACCENT
End Sub

Private Sub AddFooter(ByVal sld As Object, ByVal pageNum As Integer)
    AddText sld, 60, 510, 400, 20, "pH Atlas  ·  Executive Brief  ·  Educational use only", 8, CLR_MUTED, False
    AddText sld, 820, 510, 80, 20, CStr(pageNum), 8, CLR_MUTED, False, msoAlignRight
End Sub

Private Sub AddCard(ByVal sld As Object, ByVal Left As Single, ByVal Top As Single, ByVal Width As Single, ByVal Height As Single, _
                    ByVal heading As String, ByVal body As String, Optional ByVal accentColor As Long = CLR_TEAL)
    Dim shp As Object
    Set shp = sld.Shapes.AddShape(msoShapeRoundedRectangle, Left, Top, Width, Height)
    shp.Fill.ForeColor.RGB = CLR_WHITE
    shp.Line.ForeColor.RGB = RGB(226, 232, 240)
    shp.Line.Weight = 1
    shp.Adjustments(1) = 0.04
    shp.Shadow.Visible = msoTrue
    shp.Shadow.Size = 3
    shp.Shadow.OffsetX = 0
    shp.Shadow.OffsetY = 1
    shp.Shadow.Transparency = 0.7

    Dim bar As Object
    Set bar = sld.Shapes.AddShape(msoShapeRoundedRectangle, Left, Top, 4, Height)
    bar.Fill.ForeColor.RGB = accentColor
    bar.Line.Visible = msoFalse
    bar.Adjustments(1) = 0.5

    AddText sld, Left + 16, Top + 12, Width - 28, 24, heading, 12, CLR_DARK, True
    AddText sld, Left + 16, Top + 40, Width - 28, Height - 52, body, 10, CLR_MUTED, False
End Sub

Private Sub AddStatBox(ByVal sld As Object, ByVal Left As Single, ByVal Top As Single, ByVal Width As Single, ByVal Height As Single, _
                       ByVal number As String, ByVal label As String, Optional ByVal accentColor As Long = CLR_TEAL)
    Dim shp As Object
    Set shp = sld.Shapes.AddShape(msoShapeRoundedRectangle, Left, Top, Width, Height)
    shp.Fill.ForeColor.RGB = CLR_WHITE
    shp.Line.ForeColor.RGB = RGB(226, 232, 240)
    shp.Line.Weight = 1
    shp.Adjustments(1) = 0.06
    shp.Shadow.Visible = msoTrue
    shp.Shadow.Size = 3
    shp.Shadow.OffsetX = 0
    shp.Shadow.OffsetY = 1
    shp.Shadow.Transparency = 0.7

    AddBar sld, Left, Top, Width, 3, accentColor
    AddText sld, Left, Top + 18, Width, 36, number, 28, accentColor, True, msoAlignCenter
    AddText sld, Left, Top + 56, Width, 20, label, 9, CLR_MUTED, False, msoAlignCenter
End Sub

' =========================================================================
' SLIDE 1 — Title
' =========================================================================
Private Sub Slide_Title(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    sld.Background.Fill.ForeColor.RGB = CLR_BG
    AddBar sld, 0, 0, 960, 540, CLR_BG
    AddBar sld, 0, 0, 340, 540, CLR_TEAL
    AddText sld, 60, 230, 260, 40, "pH", 72, CLR_WHITE, True, msoAlignLeft
    AddText sld, 60, 310, 260, 30, "ATLAS", 28, CLR_ACCENT, True, msoAlignLeft
    AddText sld, 60, 350, 260, 20, "Clinical Reference Platform", 11, CLR_WHITE, False

    AddText sld, 400, 150, 500, 30, "EXECUTIVE BRIEF", 11, CLR_TEAL, True
    AddText sld, 400, 190, 500, 60, "pH Atlas", 44, CLR_DARK, True
    AddText sld, 400, 260, 500, 60, "A community-friendly map of pH across the human body.", 16, CLR_MUTED, False
    AddText sld, 400, 330, 500, 40, "13 body sites  ·  6 systems  ·  38 sources  ·  AI interpreter  ·  Quiz  ·  Community", 10, CLR_MUTED, False

    AddBar sld, 400, 410, 60, 3, CLR_ACCENT
    AddText sld, 400, 426, 500, 20, "Prepared for Executive Review", 10, CLR_MUTED, False
    AddFooter sld, 1
End Sub

' =========================================================================
' SLIDE 2 — Agenda
' =========================================================================
Private Sub Slide_Agenda(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "Agenda", "What we'll cover today"

    Dim items As Variant
    items = Array( _
        "01  Executive Summary", _
        "02  The Problem", _
        "03  Our Solution", _
        "04  Platform Features", _
        "05  Clinical Data Foundation", _
        "06  System Map & Checker", _
        "07  Electrolyte & Organ Impacts", _
        "08  AI Interpreter & Quiz", _
        "09  History & Community", _
        "10  Market Positioning & Roadmap")

    Dim i As Integer
    Dim y As Single
    For i = 0 To UBound(items)
        y = 130 + i * 36
        AddText sld, 80, y, 600, 28, items(i), 13, CLR_DARK, False
        AddBar sld, 80, y + 26, 180, 1, RGB(226, 232, 240)
    Next i
    AddFooter sld, 2
End Sub

' =========================================================================
' SLIDE 3 — Executive Summary
' =========================================================================
Private Sub Slide_ExecutiveSummary(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "Executive Summary", "pH Atlas at a glance"

    ' Top stats row
    AddStatBox sld, 60, 120, 200, 90, "13", "Body sites mapped", CLR_TEAL
    AddStatBox sld, 280, 120, 200, 90, "6", "Body systems covered", CLR_ACCENT
    AddStatBox sld, 500, 120, 200, 90, "38", "Peer-reviewed sources", CLR_BLUE
    AddStatBox sld, 720, 120, 180, 90, "AI", "pH interpreter", CLR_PURPLE

    AddCard sld, 60, 230, 410, 130, "What", _
        "A web-based clinical reference platform that maps physiological pH values across every major body system onto a single interactive spectrum — with an AI interpreter, interactive checker, quiz, and community knowledge base.", CLR_TEAL
    AddCard sld, 490, 230, 410, 130, "Why", _
        "pH values are scattered across dozens of disconnected references. pH Atlas consolidates them into one accessible, community-friendly interface — lowering the barrier to understanding acid-base health.", CLR_ACCENT
    AddCard sld, 60, 380, 410, 110, "Who", _
        "Designed for health-curious individuals, students, and clinicians who want a fast, reliable pH reference — with clear guidance to seek professional interpretation.", CLR_TEAL
    AddCard sld, 490, 380, 410, 110, "Impact", _
        "Multi-site pH coverage differentiates from ABG-only tools. Electrolyte/organ impact panels and buffering context per site provide depth no single-reference tool offers.", CLR_ACCENT
    AddFooter sld, 3
End Sub

' =========================================================================
' SLIDE 4 — The Problem
' =========================================================================
Private Sub Slide_Problem(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "The Problem", "pH information is fragmented and inaccessible"

    AddCard sld, 60, 130, 410, 110, "Scattered References", _
        "Normal pH ranges live in dozens of textbooks, journal articles, and clinical guidelines — each covering one body site or system, with no single source of truth.", CLR_ROSE
    AddCard sld, 490, 130, 410, 110, "ABG-Only Tools", _
        "Existing pH calculators focus almost exclusively on arterial blood gas. Vaginal, skin, urine, CSF, and reproductive tract pH have no accessible interactive reference.", CLR_AMBER
    AddCard sld, 60, 260, 410, 110, "No Interpretation Layer", _
        "Even when a reference range is found, there is no guidance on what an out-of-range value means — electrolyte shifts, organ impacts, disease patterns, or buffering context.", CLR_ROSE
    AddCard sld, 490, 260, 410, 110, "No Tracking or Community", _
        "No tool lets a user save readings over time, ask an AI about a result, test their knowledge, or share insights with peers studying the same material.", CLR_AMBER
    AddCard sld, 60, 390, 840, 90, "The Gap", _
        "There is no single, accessible place to look up what a normal pH range is for different parts of the body — or what a reading outside that range might mean in context.", CLR_TEAL
    AddFooter sld, 4
End Sub

' =========================================================================
' SLIDE 5 — Our Solution
' =========================================================================
Private Sub Slide_Solution(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "Our Solution", "One spectrum, every body site, plain-language context"

    AddCard sld, 60, 130, 280, 160, "Unified Spectrum", _
        "All 13 body sites mapped onto a single pH 0-14 color spectrum. Users see at a glance where every fluid falls — from stomach acid (1.5) to pancreatic fluid (8.3).", CLR_TEAL
    AddCard sld, 360, 130, 280, 160, "Interactive Checker", _
        "Enter a measured pH value for any site. The checker places it on the spectrum, flags in-range or out-of-range, and generates recommended clinical checks and disease pattern suggestions.", CLR_ACCENT
    AddCard sld, 660, 130, 240, 160, "AI Interpreter", _
        "A conversational AI assistant interprets any reading in plain language — describing what it means, what to watch for, and when to seek clinical evaluation.", CLR_PURPLE
    AddCard sld, 60, 310, 280, 160, "Quiz & Community", _
        "A gamified quiz (Challenge + AI Tutor) reinforces learning. A community board lets users share questions, insights, and references with peers.", CLR_BLUE
    AddCard sld, 360, 310, 280, 160, "History & Export", _
        "Save readings to a personal log with progress summaries, weekly trend charts, and CSV export. Track pH over time across multiple body sites and systems.", CLR_TEAL
    AddCard sld, 660, 310, 240, 160, "Sourced & Safe", _
        "Every range is sourced from 38 peer-reviewed references. Every result points toward consulting a qualified clinician. Educational use only — not a diagnostic tool.", CLR_ACCENT
    AddFooter sld, 5
End Sub

' =========================================================================
' SLIDE 6 — Platform Features
' =========================================================================
Private Sub Slide_PlatformFeatures(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "Platform Features", "Six integrated modules on one platform"

    ' Two columns of three cards
    AddCard sld, 60, 130, 410, 110, "1 · pH Atlas (Reference)", _
        "Full pH 0-14 spectrum with 13 body sites across 6 systems. Signals tab flags acidic/alkaline shifts. Library tab curates 38 peer-reviewed sources organized by topic.", CLR_TEAL
    AddCard sld, 490, 130, 410, 110, "2 · Interactive Checker", _
        "Select a body site, enter a pH value, and get instant classification. Result slip shows recommended checks, disease patterns, electrolyte impacts, and buffering context.", CLR_ACCENT
    AddCard sld, 60, 260, 410, 110, "3 · AI Interpreter", _
        "Chat-based assistant powered by the ph_interpreter agent. Describe any reading in natural language and receive a markdown-rendered clinical interpretation with abnormal-finding flags.", CLR_PURPLE
    AddCard sld, 490, 260, 410, 110, "4 · Quiz (Challenge + AI Tutor)", _
        "Gamified multiple-choice trivia tests knowledge of body-site pH ranges. AI Tutor mode generates custom quiz questions by system. Tracks score and streak across sessions.", CLR_BLUE
    AddCard sld, 60, 390, 410, 110, "5 · History & Tracking", _
        "Save readings to a personal log. Progress summary dashboard, weekly trend summary, daily submission chart. Search, filter by system, and export all records to CSV.", CLR_TEAL
    AddCard sld, 490, 390, 410, 110, "6 · Community", _
        "Post questions, insights, and references. Tag posts by topic. Browse peer contributions. Users can edit and delete their own posts. Public read, authenticated write.", CLR_ACCENT
    AddFooter sld, 6
End Sub

' =========================================================================
' SLIDE 7 — Clinical Data Foundation
' =========================================================================
Private Sub Slide_ClinicalData(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "Clinical Data Foundation", "13 sites · 6 systems · 38 sources"

    AddStatBox sld, 60, 120, 200, 80, "13", "Body sites", CLR_TEAL
    AddStatBox sld, 280, 120, 200, 80, "6", "Body systems", CLR_ACCENT
    AddStatBox sld, 500, 120, 200, 80, "38", "Peer-reviewed sources", CLR_BLUE
    AddStatBox sld, 720, 120, 180, 80, "9", "Spectrum color stops", CLR_PURPLE

    AddText sld, 60, 220, 840, 24, "Body sites covered:", 12, CLR_DARK, True

    Dim sites As Variant
    sites = Array( _
        "Arterial blood (7.35-7.45)", _
        "Venous blood (7.30-7.35)", _
        "Stomach / gastric (1.5-3.5)", _
        "Skin surface (4.7-5.7)", _
        "Saliva (6.2-7.6)", _
        "Small intestine (7.5-8.0)", _
        "Colon (5.5-7.0)", _
        "Urine (4.5-8.0)", _
        "Cerebrospinal fluid (7.3-7.5)", _
        "Vaginal (3.8-4.5)", _
        "Cervical mucus (6.4-8.0)", _
        "Uterine cavity (7.5-7.8)", _
        "Semen (7.2-8.0)")

    Dim i As Integer
    Dim col As Integer
    Dim row As Integer
    Dim x As Single
    Dim y As Single
    For i = 0 To UBound(sites)
        col = i Mod 3
        row = i \ 3
        x = 60 + col * 300
        y = 250 + row * 36
        AddBar sld, x, y, 3, 16, CLR_TEAL
        AddText sld, x + 10, y, 280, 18, sites(i), 10, CLR_MUTED, False
    Next i

    AddText sld, 60, 460, 840, 20, "Every range sourced from peer-reviewed literature. Buffering context (citrate/bicarbonate) provided per site where clinically relevant.", 9, CLR_MUTED, False
    AddFooter sld, 7
End Sub

' =========================================================================
' SLIDE 8 — System Map
' =========================================================================
Private Sub Slide_SystemMap(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "System Map", "6 body systems mapped on the pH spectrum"

    Dim systems As Variant
    Dim colors As Variant
    systems = Array( _
        Array("Circulatory", "Arterial blood 7.35-7.45 · Venous blood 7.30-7.35 · Myocardial (ischemic) ~6.5-7.0"), _
        Array("Digestive", "Stomach 1.5-3.5 · Small intestine 7.5-8.0 · Colon 5.5-7.0 · Saliva 6.2-7.6"), _
        Array("Nervous", "Cerebrospinal fluid 7.3-7.5 · Brain tissue ~7.1-7.2"), _
        Array("Integumentary", "Skin surface 4.7-5.7 (acid mantle)"), _
        Array("Renal / Urinary", "Urine 4.5-8.0 (wide compensatory range)"), _
        Array("Reproductive", "Vaginal 3.8-4.5 · Cervical mucus 6.4-8.0 · Uterine 7.5-7.8 · Semen 7.2-8.0"))
    colors = Array(CLR_TEAL, CLR_ACCENT, CLR_BLUE, CLR_PURPLE, CLR_EMER, CLR_AMBER)

    Dim i As Integer
    Dim y As Single
    For i = 0 To UBound(systems)
        y = 120 + i * 62
        Dim shp As Object
        Set shp = sld.Shapes.AddShape(msoShapeRoundedRectangle, 60, y, 840, 50)
        shp.Fill.ForeColor.RGB = CLR_WHITE
        shp.Line.ForeColor.RGB = RGB(226, 232, 240)
        shp.Line.Weight = 1
        shp.Adjustments(1) = 0.08
        shp.Shadow.Visible = msoTrue
        shp.Shadow.Size = 2
        shp.Shadow.OffsetX = 0
        shp.Shadow.OffsetY = 1
        shp.Shadow.Transparency = 0.7

        AddBar sld, 60, y, 4, 50, colors(i)
        AddText sld, 80, y + 8, 200, 20, systems(i)(0), 12, CLR_DARK, True
        AddText sld, 80, y + 28, 800, 18, systems(i)(1), 9, CLR_MUTED, False
    Next i
    AddFooter sld, 8
End Sub

' =========================================================================
' SLIDE 9 — Interactive Checker Flow
' =========================================================================
Private Sub Slide_CheckerFlow(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "Interactive Checker", "From measured value to clinical context in one click"

    ' Flow steps
    Dim steps As Variant
    steps = Array( _
        "1. Select body site (13 options)", _
        "2. Enter measured pH (0-14)", _
        "3. Run — spectrum shows position", _
        "4. In-range or out-of-range flag", _
        "5. Recommended clinical checks", _
        "6. Disease pattern suggestions", _
        "7. Electrolyte & organ impacts", _
        "8. Buffering context (citrate/bicarb)")
    Dim i As Integer
    Dim y As Single
    For i = 0 To UBound(steps)
        y = 130 + i * 42
        AddBar sld, 60, y, 3, 20, CLR_TEAL
        AddText sld, 75, y, 500, 20, steps(i), 11, CLR_DARK, False
    Next i

    ' Right side — example result
    AddCard sld, 520, 130, 380, 340, "Example: Arterial blood pH 7.28", _
        "Status: OUT OF RANGE (acidemia)" & vbCrLf & vbCrLf & _
        "Recommended checks:" & vbCrLf & _
        "• Consider metabolic or respiratory acidosis" & vbCrLf & _
        "• Review kidney function, lung status" & vbCrLf & _
        "• Check recent medications" & vbCrLf & vbCrLf & _
        "Disease patterns:" & vbCrLf & _
        "• DKA, lactic acidosis" & vbCrLf & _
        "• COPD, hypoventilation" & vbCrLf & _
        "• Renal failure with acid retention" & vbCrLf & vbCrLf & _
        "Always interpret with a clinician.", CLR_ROSE
    AddFooter sld, 9
End Sub

' =========================================================================
' SLIDE 10 — Electrolyte & Organ Impacts
' =========================================================================
Private Sub Slide_ElectrolyteImpacts(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "Electrolyte & Organ Impacts", "What an out-of-range pH means downstream"

    AddCard sld, 60, 130, 410, 180, "Acidemia (Blood pH < 7.35)", _
        "Electrolytes:" & vbCrLf & _
        "• H+ enters cells -> K+ out -> hyperkalemia risk" & vbCrLf & _
        "• HCO3- consumed as buffer -> serum HCO3- falls" & vbCrLf & _
        "• Chloride rises -> elevated anion gap" & vbCrLf & vbCrLf & _
        "Organs:" & vbCrLf & _
        "• Heart: reduced contractility, arrhythmia risk" & vbCrLf & _
        "• Brain: confusion, lethargy, coma in severe cases" & vbCrLf & _
        "• Lungs: compensatory hyperventilation (Kussmaul)", CLR_ROSE
    AddCard sld, 490, 130, 410, 180, "Alkalemia (Blood pH > 7.45)", _
        "Electrolytes:" & vbCrLf & _
        "• H+ leaves cells -> K+ in -> hypokalemia risk" & vbCrLf & _
        "• Ca2+ binds albumin -> ionized Ca2+ falls (tetany)" & vbCrLf & _
        "• Phosphate shifts into cells -> hypophosphatemia" & vbCrLf & vbCrLf & _
        "Organs:" & vbCrLf & _
        "• Heart: coronary vasospasm, arrhythmia" & vbCrLf & _
        "• Brain: vasoconstriction, seizures, tetany" & vbCrLf & _
        "• Lungs: compensatory hypoventilation", CLR_AMBER
    AddCard sld, 60, 330, 410, 160, "Site-Specific Impacts", _
        "Every body site has its own electrolyte and organ impact profile:" & vbCrLf & _
        "• Urine < 4.5: uric acid stones, K+ wasting" & vbCrLf & _
        "• Urine > 8.0: calcium phosphate stones, UTI risk" & vbCrLf & _
        "• Skin > 5.7: barrier dysfunction, eczema" & vbCrLf & _
        "• Vaginal > 4.5: bacterial vaginosis, trichomoniasis" & vbCrLf & _
        "• Stomach > 3.5: hypochlorhydria, H. pylori risk", CLR_TEAL
    AddCard sld, 490, 330, 410, 160, "Buffering Context", _
        "Citrate/bicarbonate buffering notes per site:" & vbCrLf & _
        "• Blood: sodium bicarb/citrate for diagnosed acidosis" & vbCrLf & _
        "• Urine: potassium citrate for stone prevention" & vbCrLf & _
        "• Stomach: not used (acid is deliberate)" & vbCrLf & _
        "• Skin: topical, not oral" & vbCrLf & _
        "• Saliva: local calcium/phosphate, not ingested", CLR_ACCENT
    AddFooter sld, 10
End Sub

' =========================================================================
' SLIDE 11 — AI Interpreter
' =========================================================================
Private Sub Slide_AIInterpreter(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "AI pH Interpreter", "Conversational clinical interpretation"

    AddCard sld, 60, 130, 410, 160, "How It Works", _
        "Powered by the ph_interpreter agent. Users describe a reading in natural language — e.g. 'Arterial blood pH 7.28' — and receive a markdown-rendered interpretation covering what the value means, what to watch for, and when to seek clinical evaluation.", CLR_PURPLE
    AddCard sld, 490, 130, 410, 160, "Key Capabilities", _
        "• Interprets any of the 13 body sites" & vbCrLf & _
        "• Flags abnormal findings automatically" & vbCrLf & _
        "• Provides plain-language explanations" & vbCrLf & _
        "• References saved history readings" & vbCrLf & _
        "• Always recommends clinical follow-up", CLR_BLUE

    ' Mock conversation
    Dim chatShp As Object
    Set chatShp = sld.Shapes.AddShape(msoShapeRoundedRectangle, 60, 310, 840, 180)
    chatShp.Fill.ForeColor.RGB = CLR_WHITE
    chatShp.Line.ForeColor.RGB = RGB(226, 232, 240)
    chatShp.Line.Weight = 1
    chatShp.Adjustments(1) = 0.03
    chatShp.Shadow.Visible = msoTrue
    chatShp.Shadow.Size = 2
    chatShp.Shadow.OffsetX = 0
    chatShp.Shadow.OffsetY = 1
    chatShp.Shadow.Transparency = 0.7

    AddText sld, 80, 322, 200, 18, "User:", 10, CLR_MUTED, True
    AddText sld, 80, 340, 800, 20, """Arterial blood pH 7.28 — what does this mean?""", 11, CLR_DARK, False
    AddText sld, 80, 366, 200, 18, "Interpreter:", 10, CLR_MUTED, True
    AddText sld, 80, 384, 800, 100, "pH 7.28 is below the arterial blood reference range (7.35-7.45), indicating acidemia. This suggests metabolic or respiratory acidosis — DKA, lactic acidosis, COPD, or renal failure are common causes. Hyperkalemia risk is elevated. This requires same-day clinical evaluation with a full blood gas panel, electrolytes, and metabolic workup.", 10, CLR_TEAL, False
    AddFooter sld, 11
End Sub

' =========================================================================
' SLIDE 12 — Quiz & Community
' =========================================================================
Private Sub Slide_QuizCommunity(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "Quiz & Community", "Learning reinforcement and peer knowledge sharing"

    AddCard sld, 60, 130, 410, 340, "Quiz — Challenge + AI Tutor", _
        "Two modes for different learning styles:" & vbCrLf & vbCrLf & _
        "Challenge Mode:" & vbCrLf & _
        "• Gamified multiple-choice trivia" & vbCrLf & _
        "• Randomized questions from 13 body sites" & vbCrLf & _
        "• Score and streak tracking" & vbCrLf & _
        "• Instant feedback on each answer" & vbCrLf & vbCrLf & _
        "AI Tutor Mode:" & vbCrLf & _
        "• Conversational quiz powered by ph_quiz agent" & vbCrLf & _
        "• Generates custom questions by system" & vbCrLf & _
        "• Adapts to user responses" & vbCrLf & _
        "• 'Quiz me on the circulatory system'", CLR_BLUE
    AddCard sld, 490, 130, 410, 340, "Community — Notes Board", _
        "A shared knowledge base for pH Atlas users:" & vbCrLf & vbCrLf & _
        "Post Types:" & vbCrLf & _
        "• Questions — ask the community" & vbCrLf & _
        "• Insights — share a clinical observation" & vbCrLf & _
        "• References — link a useful source" & vbCrLf & vbCrLf & _
        "Features:" & vbCrLf & _
        "• Tag posts by topic (blood, diabetes, skin)" & vbCrLf & _
        "• Author attribution" & vbCrLf & _
        "• Edit and delete your own posts" & vbCrLf & _
        "• Public read, authenticated write" & vbCrLf & _
        "• Browse and learn from peer contributions", CLR_ACCENT
    AddFooter sld, 12
End Sub

' =========================================================================
' SLIDE 13 — History & Tracking
' =========================================================================
Private Sub Slide_HistoryTracking(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "History & Tracking", "Save readings, visualize trends, export data"

    AddCard sld, 60, 130, 280, 160, "Reading Log", _
        "Save pH readings to a personal log with site, value, date, and notes. Each reading is automatically classified as in-range or out-of-range against its site-specific reference.", CLR_TEAL
    AddCard sld, 360, 130, 280, 160, "Progress Summary", _
        "Dashboard cards show total readings, weekly count, in-range percentage, critical count, average pH, and most-tracked site — all at a glance.", CLR_ACCENT
    AddCard sld, 660, 130, 240, 160, "Weekly Summary", _
        "Per-site weekly averages with trend direction (improving or declining) and a line chart showing readings against normal range bands.", CLR_BLUE
    AddCard sld, 60, 310, 280, 160, "Submission Trends", _
        "Daily submission trend chart visualizes reading frequency over time — helping users see engagement patterns and consistency.", CLR_PURPLE
    AddCard sld, 360, 310, 280, 160, "Search & Filter", _
        "Filter by site name, body system, or date range. Find any reading in seconds across a growing personal log of hundreds of entries.", CLR_TEAL
    AddCard sld, 660, 310, 240, 160, "CSV Export", _
        "Export all readings (not just filtered) to a CSV spreadsheet with date, site, system, pH, status, and notes — for clinical visits or personal records.", CLR_ACCENT
    AddFooter sld, 13
End Sub

' =========================================================================
' SLIDE 14 — Market Positioning
' =========================================================================
Private Sub Slide_MarketPosition(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "Market Positioning", "Multi-site pH Atlas — not just another ABG calculator"

    AddText sld, 60, 120, 840, 24, "How we differ from existing tools:", 13, CLR_DARK, True

    Dim competitors As Variant
    competitors = Array( _
        Array("MDCalc", "ABG-focused calculators", "13 body sites, not just arterial blood"), _
        Array("LITFL", "Reference articles per topic", "Interactive spectrum + AI interpreter"), _
        Array("MedSchool / Study Apps", "Static flashcards", "Live checker + quiz + community"), _
        Array("Lab Reference Apps", "One-page range tables", "Electrolyte/organ impacts + buffering"))

    Dim i As Integer
    Dim y As Single
    For i = 0 To UBound(competitors)
        y = 160 + i * 62
        Dim shp As Object
        Set shp = sld.Shapes.AddShape(msoShapeRoundedRectangle, 60, y, 840, 50)
        shp.Fill.ForeColor.RGB = CLR_WHITE
        shp.Line.ForeColor.RGB = RGB(226, 232, 240)
        shp.Line.Weight = 1
        shp.Adjustments(1) = 0.08
        shp.Shadow.Visible = msoTrue
        shp.Shadow.Size = 2
        shp.Shadow.OffsetX = 0
        shp.Shadow.OffsetY = 1
        shp.Shadow.Transparency = 0.7

        AddText sld, 80, y + 8, 200, 20, competitors(i)(0), 11, CLR_DARK, True
        AddText sld, 80, y + 28, 300, 18, competitors(i)(1), 9, CLR_MUTED, False
        AddBar sld, 400, y + 8, 3, 34, CLR_TEAL
        AddText sld, 415, y + 8, 460, 36, competitors(i)(2), 10, CLR_TEAL, False
    Next i

    AddText sld, 60, 430, 840, 20, "Only tool covering all 13 body sites with AI interpretation, quiz, community, and history tracking.", 10, CLR_DARK, True
    AddFooter sld, 14
End Sub

' =========================================================================
' SLIDE 15 — Roadmap
' =========================================================================
Private Sub Slide_Roadmap(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "Roadmap", "What's next for pH Atlas"

    AddCard sld, 60, 130, 280, 180, "Near Term", _
        "• Mobile app (iOS + Android)" & vbCrLf & _
        "• Push notifications for abnormal readings" & vbCrLf & _
        "• Weekly email report for admins" & vbCrLf & _
        "• Expanded quiz question bank", CLR_TEAL
    AddCard sld, 360, 130, 280, 180, "Mid Term", _
        "• Additional body sites (bile, pancreatic, tears)" & vbCrLf & _
        "• Trend analysis across multiple sites" & vbCrLf & _
        "• Community voting / upvoting" & vbCrLf & _
        "• Saved interpretation history", CLR_ACCENT
    AddCard sld, 660, 130, 240, 180, "Long Term", _
        "• Integration with EHR / lab systems" & vbCrLf & _
        "• Multi-language support" & vbCrLf & _
        "• Clinician-verified content track" & vbCrLf & _
        "• API for educational partners", CLR_BLUE

    AddCard sld, 60, 330, 840, 140, "Guiding Principles", _
        "Every range stays sourced from peer-reviewed literature. Every result points toward consulting a qualified clinician. The platform remains community-friendly and accessible — a learning reference, not a diagnostic tool. Growth comes from breadth (more body sites) and depth (more clinical context per site), not from replacing professional medical advice.", CLR_PURPLE
    AddFooter sld, 15
End Sub

' =========================================================================
' SLIDE 16 — Next Steps
' =========================================================================
Private Sub Slide_NextSteps(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    AddTitleBar sld, "Next Steps", "Immediate actions"

    AddCard sld, 60, 130, 410, 170, "Product", _
        "• Publish mobile app to App Store and Google Play" & vbCrLf & _
        "• Run app scan against store guidelines" & vbCrLf & _
        "• Instrument checker_used and quiz_session_started events" & vbCrLf & _
        "• SEO-optimize Atlas page for 'clinical pH reference'", CLR_TEAL
    AddCard sld, 490, 130, 410, 170, "Growth", _
        "• Engage medical education communities (Reddit, Discord)" & vbCrLf & _
        "• Share the 38-source Library page as a standalone resource" & vbCrLf & _
        "• Short-form video demos (TikTok / Reels)" & vbCrLf & _
        "• Target 500 weekly visitors in 60 days", CLR_ACCENT
    AddCard sld, 60, 320, 410, 160, "Clinical", _
        "• Audit all reference ranges against latest literature" & vbCrLf & _
        "• Verify no verbatim content from competitors" & vbCrLf & _
        "• Maintain original mnemonics and quiz content" & vbCrLf & _
        "• Ensure all disclaimers are prominent", CLR_BLUE
    AddCard sld, 490, 320, 410, 160, "Infrastructure", _
        "• Connect custom domain (clinicalphatlas.com)" & vbCrLf & _
        "• Unlink old domain (elite-pure-ph-pulse.com)" & vbCrLf & _
        "• Verify RLS on all entities" & vbCrLf & _
        "• Test weekly report workflow", CLR_PURPLE
    AddFooter sld, 16
End Sub

' =========================================================================
' SLIDE 17 — Thank You
' =========================================================================
Private Sub Slide_ThankYou(prs As Object)
    Dim sld As Object
    Set sld = NewSlide(prs, ppLayoutBlank)
    sld.Background.Fill.ForeColor.RGB = CLR_BG
    AddBar sld, 0, 0, 960, 540, CLR_BG
    AddBar sld, 0, 0, 960, 6, CLR_TEAL

    AddText sld, 60, 180, 840, 50, "Thank You", 44, CLR_DARK, True, msoAlignCenter
    AddBar sld, 430, 240, 100, 3, CLR_ACCENT
    AddText sld, 60, 270, 840, 30, "pH Atlas — A community-friendly map of pH across the human body.", 16, CLR_MUTED, False, msoAlignCenter

    AddText sld, 60, 340, 840, 20, "13 body sites  ·  6 systems  ·  38 sources  ·  AI interpreter  ·  Quiz  ·  Community", 11, CLR_TEAL, False, msoAlignCenter
    AddText sld, 60, 420, 840, 20, "Educational use only. Always interpret real readings alongside your clinician.", 9, CLR_MUTED, False, msoAlignCenter
    AddFooter sld, 17
End Sub

Reference ranges are representative population averages for learning purposes. Always interpret a real reading alongside your clinician and the full clinical picture.

© 2026 Shepherds Bond LLC. All rights reserved.

We use essential cookies for login and core functionality, plus analytics cookies to understand how the tool is used. See our privacy practices.

    Powered by Google TranslateTranslate