Cleaned up repo with old files, and ammended logo size in sidebar/mobile overview
This commit is contained in:
@@ -1,92 +0,0 @@
|
||||
{
|
||||
"iteration": 0,
|
||||
"timestamp": "2026-02-16T00:30:12.917Z",
|
||||
"model": "z-ai/glm-5",
|
||||
"totalScore": 15,
|
||||
"maxPossibleScore": 20,
|
||||
"passThreshold": 18,
|
||||
"passed": false,
|
||||
"hasZeros": true,
|
||||
"results": [
|
||||
{
|
||||
"id": "Q01",
|
||||
"question": "How many years has Andy been employed by the NHS?",
|
||||
"expectedAnswer": "Approximately 3-4 years. Andy's NHS employment started in May 2022 when he joined NHS Norfolk and Waveney ICB. His previous role at Tesco PLC was in the private sector, not the NHS.",
|
||||
"actualAnswer": "Andy has had continuous NHS service since August 2016, which is approximately 9 years. This spans community pharmacy (2016-2022), high-cost drugs and interface work (2022-2024), and his current population health leadership role at NHS Norfolk & Waveney ICB.\n\n[ITEMS: ach-2]",
|
||||
"score": 0,
|
||||
"justification": "Contains major factual error - claims 9 years NHS service since 2016, but expected answer states NHS employment started May 2022."
|
||||
},
|
||||
{
|
||||
"id": "Q02",
|
||||
"question": "What was Andy's involvement with tirzepatide?",
|
||||
"expectedAnswer": "Andy supported commissioning of NICE TA1026 (tirzepatide). He authored the initial executive paper advocating a primary care delivery model over specialist provider, which drove a system shift to GP-led model.",
|
||||
"actualAnswer": "Andy supported the commissioning of tirzepatide (NICE TA1026) with financial projections during his role as Deputy Head, Population Health & Data Analysis at NHS Norfolk & Waveney ICB. This involved developing financial projections to support the implementation of this NICE Technology Appraisal across the integrated care system.\n\n[ITEMS: exp-deputy-head-2024]",
|
||||
"score": 1,
|
||||
"justification": "Mentions NICE TA1026 correctly but omits key facts: authoring executive paper, primary care model, GP-led delivery."
|
||||
},
|
||||
{
|
||||
"id": "Q03",
|
||||
"question": "What specific tools and software has Andy built?",
|
||||
"expectedAnswer": "Andy has built 5 notable projects: a patient switching algorithm (Python, 14000 patients, £2.6M savings), a Blueteq generator for high-cost drug forms, a controlled drugs monitoring system, a Sankey chart tool for visualising patient flows, and PharMetrics — a Power BI analytics dashboard.",
|
||||
"actualAnswer": "Andy has built five main tools:\n\n1. **Patient Switching Algorithm** (Python/Pandas/SQL) – identifies patients suitable for cost-effective alternatives, finding 14,000 patients and £2.6M savings potential\n2. **Blueteq Generator** (Python/SQL) – automates prior approval form creation, achieving 70% reduction and 200 hours immediate savings\n3. **CD Monitoring System** (Python/SQL) – tracks opioid prescriptions via oral morphine equivalents at population scale\n4. **Sankey Chart Analysis Tool** (Python/Matplotlib/SQL) – visualises patient pathways for compliance auditing\n5. **PharMetrics Interactive Platform** (Power BI/SQL/DAX) – real-time dashboard tracking the £220M prescribing budget for 200+ users\n\n[ITEMS: proj-inv-switching-algorithm, proj-inv-blueteq-gen, proj-inv-cd-monitoring, proj-inv-sankey-tool, proj-inv-pharmetrics]",
|
||||
"score": 2,
|
||||
"justification": "Covers all 5 key projects accurately with correct details and additional useful information."
|
||||
},
|
||||
{
|
||||
"id": "Q04",
|
||||
"question": "What were Andy's A-level subjects and grades?",
|
||||
"expectedAnswer": "Andy achieved Mathematics A*, Chemistry B, and Politics C at Highworth Grammar School between 2009-2011.",
|
||||
"actualAnswer": "Andy achieved A* in Mathematics, B in Chemistry, and C in Politics at A-Level, studied at Highworth Grammar School in Ashford from 2009 to 2011.\n\n[ITEMS: edu-2]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: Mathematics A*, Chemistry B, Politics C, and Highworth Grammar School correctly."
|
||||
},
|
||||
{
|
||||
"id": "Q05",
|
||||
"question": "Was Andy's Tesco role part of the NHS?",
|
||||
"expectedAnswer": "No. Andy's role at Tesco PLC was in the private sector as a community pharmacist. Tesco PLC is a private employer. He was an LPC representative during this time.",
|
||||
"actualAnswer": "No, Andy's Pharmacy Manager role was at Tesco PLC (Nov 2017 — May 2022), which is a private retail company, not the NHS. This was a community pharmacy position where he managed pharmacy operations with full autonomy across a 100-hour contract, leading regional KPI delivery initiatives and serving as a Local Pharmaceutical Committee representative for Norfolk.\n\n[ITEMS: exp-pharmacy-manager-2017]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: Tesco is private/not NHS, community pharmacy, and LPC representative role."
|
||||
},
|
||||
{
|
||||
"id": "Q06",
|
||||
"question": "How did the patient switching algorithm work?",
|
||||
"expectedAnswer": "It was Python-based and used real-world GP prescribing data to auto-identify patients eligible for cost-effective medication alternatives. It compressed months of manual work into 3 days, covered 14,000 patients, and identified £2.6M in savings.",
|
||||
"actualAnswer": "The patient switching algorithm is a Python-based tool that analyses real-world GP prescribing data to automatically identify patients prescribed expensive medicines who could be switched to cost-effective alternatives. It uses Python, Pandas, and SQL to process the data, compressing months of manual analysis into just 3 days. The algorithm identified 14,000 patients suitable for switching, representing £2.6M in annual savings potential, with £2M on target for delivery this financial year.\n\n[ITEMS: proj-inv-switching-algorithm, exp-interim-head-2025]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: Python, GP prescribing data, 14,000 patients, £2.6M savings, and 3 days compression."
|
||||
},
|
||||
{
|
||||
"id": "Q07",
|
||||
"question": "What clinical specialties has Andy worked across?",
|
||||
"expectedAnswer": "Andy has worked across rheumatology, ophthalmology (wet AMD, DMO, RVO), dermatology, gastroenterology, neurology, and migraine through his high-cost drugs role.",
|
||||
"actualAnswer": "Andy has worked across multiple clinical specialties through his high-cost drug pathway development work, including rheumatology, ophthalmology (wet AMD, DMO, RVO), dermatology, gastroenterology, neurology, and migraine. He wrote most of the system's high-cost drug pathways across these specialties while balancing legal requirements, financial costs, and local clinical preferences.\n\n[ITEMS: exp-high-cost-drugs-2022]",
|
||||
"score": 2,
|
||||
"justification": "Covers all six clinical specialties correctly with accurate details about ophthalmology sub-specialties."
|
||||
},
|
||||
{
|
||||
"id": "Q08",
|
||||
"question": "What is Andy's experience with the dm+d?",
|
||||
"expectedAnswer": "Andy created a comprehensive medicines data table integrating all dm+d products with standardised strengths, morphine equivalents, and Anticholinergic Burden scoring, serving as a single source of truth.",
|
||||
"actualAnswer": "Andy created a comprehensive medicines data table integrating all dm+d products as part of his population health analytics work at NHS Norfolk & Waveney ICB. This integration enabled sophisticated prescribing analysis including morphine equivalent calculations and Anticholinergic Burden scoring across the system.\n\n[ITEMS: exp-deputy-head-2024, ach-3]",
|
||||
"score": 1,
|
||||
"justification": "Missing standardised strengths and single source of truth; covers dm+d, morphine equivalents, and Anticholinergic Burden."
|
||||
},
|
||||
{
|
||||
"id": "Q09",
|
||||
"question": "What budget does Andy manage and how?",
|
||||
"expectedAnswer": "Andy manages a £220M prescribing budget using forecasting models, variance analysis, and financial reporting to the executive team, enabling proactive financial planning.",
|
||||
"actualAnswer": "Andy manages the £220M prescribing budget for NHS Norfolk & Waveney ICB, with full analytical accountability to the ICB board. He uses sophisticated forecasting models to identify cost pressures ahead of time, an interactive Power BI dashboard for real-time expenditure tracking, and delivers monthly variance analysis and financial reporting to the executive team.\n\n[ITEMS: exp-deputy-head-2024, ach-1, proj-inv-pharmetrics, skill-budget-management]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: £220M budget, forecasting models, variance analysis, and proactive planning approach."
|
||||
},
|
||||
{
|
||||
"id": "Q10",
|
||||
"question": "What leadership training does Andy have?",
|
||||
"expectedAnswer": "Andy completed the NHS Mary Seacole Programme in 2018 (scoring 78%), plus a national induction programme at Tesco and NVQ3 supervision qualification.",
|
||||
"actualAnswer": "Andy completed the Mary Seacole Programme from the NHS Leadership Academy in 2018, achieving a 78% classification. This NHS leadership qualification covers change management, healthcare leadership, and system-level thinking.\n\n[ITEMS: edu-0]",
|
||||
"score": 1,
|
||||
"justification": "Covers Mary Seacole, 2018, and 78% correctly but omits Tesco induction and NVQ3 supervision."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,92 +0,0 @@
|
||||
{
|
||||
"iteration": 1,
|
||||
"timestamp": "2026-02-16T00:54:27.821Z",
|
||||
"model": "z-ai/glm-5",
|
||||
"totalScore": 18,
|
||||
"maxPossibleScore": 20,
|
||||
"passThreshold": 18,
|
||||
"passed": false,
|
||||
"hasZeros": true,
|
||||
"results": [
|
||||
{
|
||||
"id": "Q01",
|
||||
"question": "How many years has Andy been employed by the NHS?",
|
||||
"expectedAnswer": "Approximately 3-4 years. Andy's NHS employment started in May 2022 when he joined NHS Norfolk and Waveney ICB. His previous role at Tesco PLC was in the private sector, not the NHS.",
|
||||
"actualAnswer": "Andy has been employed by the NHS for approximately 4 years, starting in May 2022 at NHS Norfolk & Waveney ICB, where he has held all three of his NHS roles. His prior employment at Tesco PLC (Nov 2017–May 2022) was in the private sector as a community pharmacy manager, not NHS employment.\n\n[ITEMS: exp-interim-head-2025, exp-deputy-head-2024, exp-high-cost-drugs-2022]",
|
||||
"score": 2,
|
||||
"justification": "Correctly states May 2022 start date, approximately 4 years, and Tesco as private sector."
|
||||
},
|
||||
{
|
||||
"id": "Q02",
|
||||
"question": "What was Andy's involvement with tirzepatide?",
|
||||
"expectedAnswer": "Andy supported commissioning of NICE TA1026 (tirzepatide). He authored the initial executive paper advocating a primary care delivery model over specialist provider, which drove a system shift to GP-led model.",
|
||||
"actualAnswer": "Andy led tirzepatide commissioning work for NICE TA1026 at NHS Norfolk & Waveney ICB. His involvement included developing financial projections and identifying patient cohorts eligible for treatment. He authored an executive paper advocating for a primary care delivery model, which drove a system shift to GP-led tirzepatide delivery.\n\n[ITEMS: exp-deputy-head-2024]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: NICE TA1026, executive paper, primary care model, and GP-led delivery."
|
||||
},
|
||||
{
|
||||
"id": "Q03",
|
||||
"question": "What specific tools and software has Andy built?",
|
||||
"expectedAnswer": "Andy has built 5 notable projects: a patient switching algorithm (Python, 14000 patients, £2.6M savings), a Blueteq generator for high-cost drug forms, a controlled drugs monitoring system, a Sankey chart tool for visualising patient flows, and PharMetrics — a Power BI analytics dashboard.",
|
||||
"actualAnswer": "Andy has built five specific tools and software systems:\n\n**1. PharMetrics Interactive Platform (2024, Live)**\nReal-time medicines expenditure dashboard for NHS decision-makers tracking the £220M prescribing budget. Built with Power BI, SQL, and DAX.\n\n**2. Patient Switching Algorithm (2025)**\nPython algorithm using GP prescribing data to auto-identify patients for cost-effective alternatives. Processes data for 14,000 patients, delivering £2.6M annual savings. Built with Python, Pandas, and SQL. Compressed months of work into 3 days.\n\n**3. Blueteq Generator (2023)**\nAutomated Blueteq prior approval form creation tool. Achieved 70% form reduction, 200 hours immediate savings, and 7–8 hours ongoing weekly gains. Built with Python and SQL.\n\n**4. CD Monitoring System (2024)**\nControlled drug monitoring system calculating oral morphine equivalents (OME) across all opioid prescriptions. Features patient-level tracking, high-risk identification, and diversion detection. Built with Python and SQL.\n\n**5. Sankey Chart Analysis Tool (2023)**\nPatient journey visualisation tool for high-cost drug pathways, used for trust compliance auditing. Built with Python, Matplotlib, and SQL.\n\nAdditionally, Andy created a comprehensive dm+d medicines data table serving as a single source of truth for all medicines analytics, with standardised strengths, morphine equivalents, and Anticholinergic Burden scoring.\n\n[ITEMS: proj-inv-pharmetrics, proj-inv-switching-algorithm, proj-inv-blueteq-gen, proj-inv-cd-monitoring, proj-inv-sankey-tool, exp-deputy-head-2024]",
|
||||
"score": 2,
|
||||
"justification": "Covers all five key projects accurately with additional detail on each tool."
|
||||
},
|
||||
{
|
||||
"id": "Q04",
|
||||
"question": "What were Andy's A-level subjects and grades?",
|
||||
"expectedAnswer": "Andy achieved Mathematics A*, Chemistry B, and Politics C at Highworth Grammar School between 2009-2011.",
|
||||
"actualAnswer": "Andy completed his A-Levels at Highworth Grammar School from 2009–2011. His subjects and grades were: Mathematics A*, Chemistry B, and Politics C.\n\n[ITEMS: edu-2]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: Mathematics A*, Chemistry B, Politics C, and Highworth Grammar School correctly."
|
||||
},
|
||||
{
|
||||
"id": "Q05",
|
||||
"question": "Was Andy's Tesco role part of the NHS?",
|
||||
"expectedAnswer": "No. Andy's role at Tesco PLC was in the private sector as a community pharmacist. Tesco PLC is a private employer. He was an LPC representative during this time.",
|
||||
"actualAnswer": "No, Andy's Tesco role was not part of the NHS. It was private sector community pharmacy employment at Tesco PLC from November 2017 to May 2022. Andy's NHS employment began in May 2022 at NHS Norfolk & Waveney ICB.\n\n[ITEMS: exp-pharmacymanager-2017]",
|
||||
"score": 2,
|
||||
"justification": "Correctly states private sector, community pharmacy, and Tesco PLC. Minor omission of LPC representative detail."
|
||||
},
|
||||
{
|
||||
"id": "Q06",
|
||||
"question": "How did the patient switching algorithm work?",
|
||||
"expectedAnswer": "It was Python-based and used real-world GP prescribing data to auto-identify patients eligible for cost-effective medication alternatives. It compressed months of manual work into 3 days, covered 14,000 patients, and identified £2.6M in savings.",
|
||||
"actualAnswer": "The patient switching algorithm is a Python-based tool that uses real-world GP prescribing data to automatically identify patients who could be switched to cost-effective alternative medicines.\n\n**Technical approach:**\n- Built using Python, Pandas, and SQL\n- Analyses GP prescribing data at patient level\n- Auto-identifies suitable candidates for switching to cheaper alternatives\n\n**Outcomes:**\n- Identified 14,000 patients for potential switching\n- Projected £2.6M annual savings (£2M was the target)\n- Compressed work that would have taken months into just 3 days\n- Included a novel GP payment system linking rewards to savings, achieving 50% prescribing reduction within 2 months\n\n[ITEMS: proj-inv-switching-algorithm, exp-interim-head-2025]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: Python, GP prescribing data, 14,000 patients, £2.6M savings, and 3 days timeline."
|
||||
},
|
||||
{
|
||||
"id": "Q07",
|
||||
"question": "What clinical specialties has Andy worked across?",
|
||||
"expectedAnswer": "Andy has worked across rheumatology, ophthalmology (wet AMD, DMO, RVO), dermatology, gastroenterology, neurology, and migraine through his high-cost drugs role.",
|
||||
"actualAnswer": "Andy has worked across multiple clinical specialties through his NICE TA implementation and high-cost drug pathway work at NHS Norfolk & Waveney ICB. The specialties include:\n\n- **Rheumatology**\n- **Ophthalmology** (wet AMD, DMO, RVO)\n- **Dermatology**\n- **Gastroenterology**\n- **Neurology**\n- **Migraine**\n\n[ITEMS: exp-high-cost-drugs-2022]",
|
||||
"score": 2,
|
||||
"justification": "Covers all six specialties accurately with correct ophthalmology sub-specialties included."
|
||||
},
|
||||
{
|
||||
"id": "Q08",
|
||||
"question": "What is Andy's experience with the dm+d?",
|
||||
"expectedAnswer": "Andy created a comprehensive medicines data table integrating all dm+d products with standardised strengths, morphine equivalents, and Anticholinergic Burden scoring, serving as a single source of truth.",
|
||||
"actualAnswer": "Andy created a comprehensive dm+d medicines data table during his role as Deputy Head of Population Health & Data Analysis. This table standardised medicine strengths, calculated morphine equivalents, and included Anticholinergic Burden scoring — serving as a single source of truth for all medicines analytics at NHS Norfolk & Waveney ICB.\n\n[ITEMS: exp-deputy-head-2024]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: dm+d integration, standardised strengths, morphine equivalents, Anticholinergic Burden, and single source of truth."
|
||||
},
|
||||
{
|
||||
"id": "Q09",
|
||||
"question": "What budget does Andy manage and how?",
|
||||
"expectedAnswer": "Andy manages a £220M prescribing budget using forecasting models, variance analysis, and financial reporting to the executive team, enabling proactive financial planning.",
|
||||
"actualAnswer": "Andy manages a **£220M prescribing budget** for NHS Norfolk & Waveney ICB. He uses forecasting models for proactive financial planning and built the PharMetrics Interactive Platform — a real-time medicines expenditure dashboard using Power BI, SQL, and DAX to track spending.\n\nHis approach includes financial modelling for specific initiatives (such as DOAC switching with rebate mechanics and patent expiry timelines), Python algorithms to identify cost-saving opportunities (£2.6M annual savings identified through patient switching), and renegotiating pharmaceutical rebate terms. He also authors executive papers with financial projections to inform commissioning decisions, such as the tirzepatide primary care model.\n\n[ITEMS: exp-deputy-head-2024, proj-inv-pharmetrics, proj-inv-switching-algorithm, skill-budget-management, skill-financial-modelling]",
|
||||
"score": 2,
|
||||
"justification": "Covers £220M budget, forecasting models, and proactive financial planning. Missing variance analysis but no errors."
|
||||
},
|
||||
{
|
||||
"id": "Q10",
|
||||
"question": "What leadership training does Andy have?",
|
||||
"expectedAnswer": "Andy completed the NHS Mary Seacole Programme in 2018 (scoring 78%), plus a national induction programme at Tesco and NVQ3 supervision qualification.",
|
||||
"actualAnswer": "Andy completed the **NHS Mary Seacole Programme** in 2018 through the NHS Leadership Academy, achieving a score of 78%. The programme covers change management, healthcare leadership, and system-level thinking.\n\nAdditionally, during his time as Pharmacy Manager at Tesco PLC, he created national induction training plans and eLearning modules for Tesco pharmacy staff, and supervised two staff members through NVQ3 to pharmacy technician registration.\n\n[ITEMS: edu-0, exp-pharmacymanager-2017]",
|
||||
"score": 0,
|
||||
"justification": "Misrepresents Tesco induction (created vs completed) and NVQ3 (supervised others vs has qualification)."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,92 +0,0 @@
|
||||
{
|
||||
"iteration": 2,
|
||||
"timestamp": "2026-02-16T00:56:36.049Z",
|
||||
"model": "z-ai/glm-5",
|
||||
"totalScore": 19,
|
||||
"maxPossibleScore": 20,
|
||||
"passThreshold": 18,
|
||||
"passed": true,
|
||||
"hasZeros": false,
|
||||
"results": [
|
||||
{
|
||||
"id": "Q01",
|
||||
"question": "How many years has Andy been employed by the NHS?",
|
||||
"expectedAnswer": "Approximately 3-4 years. Andy's NHS employment started in May 2022 when he joined NHS Norfolk and Waveney ICB. His previous role at Tesco PLC was in the private sector, not the NHS.",
|
||||
"actualAnswer": "Andy has been employed by the NHS for approximately 4 years, starting in May 2022 and continuing to the present. All of his NHS roles have been at NHS Norfolk & Waveney ICB. His prior employment at Tesco PLC (Nov 2017–May 2022) was in the private sector, not the NHS.\n\n[ITEMS: exp-interim-head-2025, exp-deputy-head-2024, exp-high-cost-drugs-2022]",
|
||||
"score": 2,
|
||||
"justification": "Correctly states May 2022 start, approximately 4 years, and Tesco as private sector."
|
||||
},
|
||||
{
|
||||
"id": "Q02",
|
||||
"question": "What was Andy's involvement with tirzepatide?",
|
||||
"expectedAnswer": "Andy supported commissioning of NICE TA1026 (tirzepatide). He authored the initial executive paper advocating a primary care delivery model over specialist provider, which drove a system shift to GP-led model.",
|
||||
"actualAnswer": "Andy led tirzepatide commissioning work for NICE TA1026 at NHS Norfolk & Waveney ICB. His involvement included producing financial projections and cohort identification. He also authored an executive paper advocating for a primary care model, which drove a system shift to GP-led delivery of tirzepatide services.\n\n[ITEMS: exp-deputy-head-2024]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: NICE TA1026, executive paper, primary care model, GP-led delivery. Adds helpful context."
|
||||
},
|
||||
{
|
||||
"id": "Q03",
|
||||
"question": "What specific tools and software has Andy built?",
|
||||
"expectedAnswer": "Andy has built 5 notable projects: a patient switching algorithm (Python, 14000 patients, £2.6M savings), a Blueteq generator for high-cost drug forms, a controlled drugs monitoring system, a Sankey chart tool for visualising patient flows, and PharMetrics — a Power BI analytics dashboard.",
|
||||
"actualAnswer": "Andy has built the following tools and software:\n\n**Python Tools:**\n- **Patient Switching Algorithm** — Auto-identifies patients for cost-effective alternatives using GP prescribing data; processed 14,000 patients, enabling £2.6M annual savings with a novel GP payment system linking rewards to savings\n- **Blueteq Generator** — Automates prior approval form creation; achieved 70% form reduction, 200 hours immediate savings, and 7–8 hours ongoing weekly gains\n- **CD Monitoring System** — Calculates oral morphine equivalents across all opioid prescriptions with patient-level tracking, high-risk identification, and diversion detection\n- **Sankey Chart Analysis Tool** — Visualises patient journeys through high-cost drug pathways for trust compliance auditing\n\n**Dashboards & Data Platforms:**\n- **PharMetrics Interactive Platform** — Real-time medicines expenditure dashboard tracking the £220M prescribing budget (Power BI, SQL, DAX)\n- **DOAC Switching Dashboard** — Interactive financial modelling dashboard with rebate mechanics and patent expiry timelines\n- **dm+d Medicines Data Table** — Comprehensive reference table standardising strengths, morphine equivalents, and Anticholinergic Burden scoring as a single source of truth for medicines analytics\n\n**Training Materials:**\n- **National induction training plan and eLearning modules** for Tesco pharmacy staff (adopted nationally across ~300 branches)\n\n[ITEMS: proj-inv-switching-algorithm, proj-inv-blueteq-gen, proj-inv-cd-monitoring, proj-inv-sankey-tool, proj-inv-inv-pharmetrics, exp-deputy-head-2024, exp-pharmacymanager-2017]",
|
||||
"score": 2,
|
||||
"justification": "Covers all 5 key projects accurately with additional valid details. No errors."
|
||||
},
|
||||
{
|
||||
"id": "Q04",
|
||||
"question": "What were Andy's A-level subjects and grades?",
|
||||
"expectedAnswer": "Andy achieved Mathematics A*, Chemistry B, and Politics C at Highworth Grammar School between 2009-2011.",
|
||||
"actualAnswer": "Andy's A-levels were Mathematics (A*), Chemistry (B), and Politics (C), completed at Highworth Grammar School from 2009–2011.\n\n[ITEMS: edu-2]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: Mathematics A*, Chemistry B, Politics C, and Highworth Grammar School correctly."
|
||||
},
|
||||
{
|
||||
"id": "Q05",
|
||||
"question": "Was Andy's Tesco role part of the NHS?",
|
||||
"expectedAnswer": "No. Andy's role at Tesco PLC was in the private sector as a community pharmacist. Tesco PLC is a private employer. He was an LPC representative during this time.",
|
||||
"actualAnswer": "No, Andy's Tesco role was not part of the NHS. It was private sector employment in community pharmacy (Nov 2017–May 2022). His NHS employment began in May 2022 at NHS Norfolk & Waveney ICB.\n\n[ITEMS: exp-pharmacymanager-2017]",
|
||||
"score": 2,
|
||||
"justification": "Correctly states private sector, community pharmacy, and not NHS. Minor omission of LPC representative detail."
|
||||
},
|
||||
{
|
||||
"id": "Q06",
|
||||
"question": "How did the patient switching algorithm work?",
|
||||
"expectedAnswer": "It was Python-based and used real-world GP prescribing data to auto-identify patients eligible for cost-effective medication alternatives. It compressed months of manual work into 3 days, covered 14,000 patients, and identified £2.6M in savings.",
|
||||
"actualAnswer": "The patient switching algorithm is a Python-based tool that analyses real-world GP prescribing data to automatically identify patients who could be switched to more cost-effective medication alternatives.\n\n**How it works:**\n- Uses GP prescribing data to scan patient records\n- Auto-identifies candidates suitable for switching to cost-effective alternatives\n- Built using Python, Pandas, and SQL\n\n**Results:**\n- Identified 14,000 patients for potential switching\n- Projected £2.6M annual savings (£2M was the target)\n- Compressed work that would have taken months into just 3 days\n- Included a novel GP payment system linking rewards to savings, achieving 50% prescribing reduction within 2 months\n\n[ITEMS: proj-inv-switching-algorithm, exp-interim-head-2025]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: Python, GP prescribing data, 14,000 patients, £2.6M savings, and compressed timeline to 3 days."
|
||||
},
|
||||
{
|
||||
"id": "Q07",
|
||||
"question": "What clinical specialties has Andy worked across?",
|
||||
"expectedAnswer": "Andy has worked across rheumatology, ophthalmology (wet AMD, DMO, RVO), dermatology, gastroenterology, neurology, and migraine through his high-cost drugs role.",
|
||||
"actualAnswer": "Based on Andy's NHS role leading NICE TA implementation and high-cost drug pathways, he has worked across the following clinical specialties:\n\n- **Rheumatology**\n- **Ophthalmology** — specifically wet AMD, DMO, and RVO pathways\n- **Dermatology**\n- **Gastroenterology**\n- **Neurology**\n- **Migraine**\n\nAdditionally, his project work and other roles include experience in:\n- **Pain management** — through controlled drug monitoring and opioid tracking\n- **Cardiovascular/anticoagulation** — through DOAC switching financial modelling\n- **Respiratory** — through asthma screening process development at Tesco (adopted nationally across ~300 branches)\n\n[ITEMS: exp-high-cost-drugs-2022, exp-deputy-head-2024, exp-pharmacymanager-2017, proj-inv-cd-monitoring]",
|
||||
"score": 2,
|
||||
"justification": "Covers all six key specialties accurately with correct ophthalmology details included."
|
||||
},
|
||||
{
|
||||
"id": "Q08",
|
||||
"question": "What is Andy's experience with the dm+d?",
|
||||
"expectedAnswer": "Andy created a comprehensive medicines data table integrating all dm+d products with standardised strengths, morphine equivalents, and Anticholinergic Burden scoring, serving as a single source of truth.",
|
||||
"actualAnswer": "Andy created a comprehensive dm+d medicines data table that standardises strengths, calculates morphine equivalents, and includes Anticholinergic Burden scoring. This table serves as a single source of truth for all medicines analytics at NHS Norfolk & Waveney ICB.\n\n[ITEMS: exp-deputy-head-2024]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: dm+d integration, standardised strengths, morphine equivalents, Anticholinergic Burden, and single source of truth."
|
||||
},
|
||||
{
|
||||
"id": "Q09",
|
||||
"question": "What budget does Andy manage and how?",
|
||||
"expectedAnswer": "Andy manages a £220M prescribing budget using forecasting models, variance analysis, and financial reporting to the executive team, enabling proactive financial planning.",
|
||||
"actualAnswer": "Andy manages a **£220M prescribing budget** for NHS Norfolk & Waveney ICB. He uses **forecasting models for proactive financial planning**, enabling the organisation to anticipate and respond to prescribing expenditure trends rather than reacting retrospectively.\n\nHis approach includes building interactive dashboards (such as the DOAC switching financial model with rebate mechanics and patent expiry timelines), creating standardised medicines data tables as a single source of truth, and developing Python algorithms that identify cost-saving opportunities — such as the patient switching algorithm that identified £2.6M in annual savings across 14,000 patients.\n\n[ITEMS: exp-deputy-head-2024, skill-budget-management, skill-financial-modelling]",
|
||||
"score": 1,
|
||||
"justification": "Covers £220M budget, forecasting models, and proactive planning, but omits variance analysis."
|
||||
},
|
||||
{
|
||||
"id": "Q10",
|
||||
"question": "What leadership training does Andy have?",
|
||||
"expectedAnswer": "Andy completed the NHS Mary Seacole Programme in 2018 (scoring 78%). At Tesco, he created a national induction training plan and eLearning modules, and supervised two staff through NVQ3 to pharmacy technician registration.",
|
||||
"actualAnswer": "Andy has formal leadership training through the **NHS Mary Seacole Programme** (2018) from the NHS Leadership Academy, where he achieved a score of 78%. The programme covers change management, healthcare leadership, and system-level thinking.\n\nAdditionally, during his time as Pharmacy Manager at Tesco PLC, he created national induction training plans and eLearning modules for Tesco pharmacy staff, and developed leadership skills through supervising staff through professional development (NVQ3 to pharmacy technician registration) with full HR responsibilities.\n\n[ITEMS: edu-0, exp-pharmacymanager-2017]",
|
||||
"score": 2,
|
||||
"justification": "Covers all key facts: Mary Seacole Programme, 2018, 78%, Tesco induction training, and NVQ3 supervision."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,100 +0,0 @@
|
||||
# Ralph Agent Instructions
|
||||
|
||||
You are an autonomous coding agent working on a software project.
|
||||
|
||||
## CRITICAL: One Story Per Iteration
|
||||
|
||||
You MUST complete exactly ONE user story and then STOP. Do NOT start a second story. After committing and updating progress, your job is done — output your summary and stop.
|
||||
|
||||
## Your Task
|
||||
|
||||
1. Read the PRD at `prd.json` (in the same directory as this file)
|
||||
2. Read the progress log at `progress.txt` (check Codebase Patterns section first)
|
||||
3. Check you're on the correct branch from PRD `branchName`. If not, check it out or create from main.
|
||||
4. Pick the **highest priority** user story where `passes: false`
|
||||
5. Implement that single user story
|
||||
6. Run quality checks (e.g., typecheck, lint, test - use whatever your project requires)
|
||||
7. Update CLAUDE.md files if you discover reusable patterns (see below)
|
||||
8. If checks pass, commit ALL changes with message: `feat: [Story ID] - [Story Title]`
|
||||
9. Update the PRD to set `passes: true` for the completed story
|
||||
10. Append your progress to `progress.txt`
|
||||
11. **STOP.** Output a short summary and end your response. Do NOT pick up the next story.
|
||||
|
||||
## Progress Report Format
|
||||
|
||||
APPEND to progress.txt (never replace, always append):
|
||||
```
|
||||
## [Date/Time] - [Story ID]
|
||||
- What was implemented
|
||||
- Files changed
|
||||
- **Learnings for future iterations:**
|
||||
- Patterns discovered (e.g., "this codebase uses X for Y")
|
||||
- Gotchas encountered (e.g., "don't forget to update Z when changing W")
|
||||
- Useful context (e.g., "the evaluation panel is in component X")
|
||||
---
|
||||
```
|
||||
|
||||
The learnings section is critical - it helps future iterations avoid repeating mistakes and understand the codebase better.
|
||||
|
||||
## Consolidate Patterns
|
||||
|
||||
If you discover a **reusable pattern** that future iterations should know, add it to the `## Codebase Patterns` section at the TOP of progress.txt (create it if it doesn't exist). This section should consolidate the most important learnings:
|
||||
|
||||
```
|
||||
## Codebase Patterns
|
||||
- Example: Use `sql<number>` template for aggregations
|
||||
- Example: Always use `IF NOT EXISTS` for migrations
|
||||
- Example: Export types from actions.ts for UI components
|
||||
```
|
||||
|
||||
Only add patterns that are **general and reusable**, not story-specific details.
|
||||
|
||||
## Update CLAUDE.md Files
|
||||
|
||||
Before committing, check if any edited files have learnings worth preserving in nearby CLAUDE.md files:
|
||||
|
||||
1. **Identify directories with edited files** - Look at which directories you modified
|
||||
2. **Check for existing CLAUDE.md** - Look for CLAUDE.md in those directories or parent directories
|
||||
3. **Add valuable learnings** - If you discovered something future developers/agents should know:
|
||||
- API patterns or conventions specific to that module
|
||||
- Gotchas or non-obvious requirements
|
||||
- Dependencies between files
|
||||
- Testing approaches for that area
|
||||
- Configuration or environment requirements
|
||||
|
||||
**Examples of good CLAUDE.md additions:**
|
||||
- "When modifying X, also update Y to keep them in sync"
|
||||
- "This module uses pattern Z for all API calls"
|
||||
- "Tests require the dev server running on PORT 3000"
|
||||
- "Field names must match the template exactly"
|
||||
|
||||
**Do NOT add:**
|
||||
- Story-specific implementation details
|
||||
- Temporary debugging notes
|
||||
- Information already in progress.txt
|
||||
|
||||
Only update CLAUDE.md if you have **genuinely reusable knowledge** that would help future work in that directory.
|
||||
|
||||
## Quality Requirements
|
||||
|
||||
- ALL commits must pass your project's quality checks (typecheck, lint, test)
|
||||
- Do NOT commit broken code
|
||||
- Keep changes focused and minimal
|
||||
- Follow existing code patterns
|
||||
|
||||
## Browser Testing (If Available)
|
||||
|
||||
For any story that changes UI, verify it works in the browser if you have browser testing tools configured (e.g., via MCP):
|
||||
|
||||
1. Navigate to the relevant page
|
||||
2. Verify the UI changes work as expected
|
||||
3. Take a screenshot if helpful for the progress log
|
||||
|
||||
If no browser tools are available, note in your progress report that manual browser verification is needed.
|
||||
|
||||
## Stop Condition
|
||||
|
||||
After completing ONE user story, check if ALL stories now have `passes: true`.
|
||||
|
||||
- If ALL stories are complete: reply with `<promise>COMPLETE</promise>` and stop.
|
||||
- If stories remain: output a short summary of what you did and **STOP immediately**. Do NOT continue to the next story. The outer loop will spawn a fresh iteration for it.
|
||||
@@ -1,22 +0,0 @@
|
||||
# Ralph Progress Log
|
||||
Started: Sat Feb 14 02:26:59 GMT 2026
|
||||
---
|
||||
|
||||
## Manual Intervention -- 2026-02-16
|
||||
### Reason: Sidebar navigation architecture needs a structural reset to remove navbar artifacts and align labels with recruiter-facing content.
|
||||
### Changes made:
|
||||
- Added `Ralph/prompts.md` with a comprehensive sidebar-first implementation prompt.
|
||||
- Captured mobile collapsed sidebar requirements (hamburger + five quick-access icons).
|
||||
- Captured IA/naming migration from legacy labels to content-true labels.
|
||||
### Tasks reset: none
|
||||
### Tasks added:
|
||||
- Remove top navbar and eliminate hidden top scroll space artifact.
|
||||
- Move primary nav into sidebar with canonical labels.
|
||||
- Add `Navigation` subgroup and contextual links.
|
||||
- Implement collapsed-by-default mobile sidebar with quick icons and expandable full menu.
|
||||
- Apply GP-style iconography to recruiter-friendly labels.
|
||||
### Context for next iteration:
|
||||
- Treat this as a structural layout update, not a cosmetic tweak.
|
||||
- Prioritize fixing offset/height logic that currently reveals hidden space above sidebar content.
|
||||
- Keep text labels aligned to portfolio content while allowing metaphor-based icons.
|
||||
### New guardrails added: none
|
||||
@@ -1,165 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Ralph Wiggum - Long-running AI agent loop
|
||||
# Usage: ./ralph.sh [--tool amp|claude] [max_iterations]
|
||||
|
||||
# Parse arguments
|
||||
TOOL="amp"
|
||||
MAX_ITERATIONS=10
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--tool)
|
||||
TOOL="$2"
|
||||
shift 2
|
||||
;;
|
||||
--tool=*)
|
||||
TOOL="${1#*=}"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
if [[ "$1" =~ ^[0-9]+$ ]]; then
|
||||
MAX_ITERATIONS="$1"
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ "$TOOL" != "amp" && "$TOOL" != "claude" ]]; then
|
||||
echo "Error: Invalid tool '$TOOL'. Must be 'amp' or 'claude'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PRD_FILE="$SCRIPT_DIR/prd.json"
|
||||
PROGRESS_FILE="$SCRIPT_DIR/progress.txt"
|
||||
ARCHIVE_DIR="$SCRIPT_DIR/archive"
|
||||
LAST_BRANCH_FILE="$SCRIPT_DIR/.last-branch"
|
||||
LOG_DIR="$SCRIPT_DIR/logs"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
# Archive previous run if branch changed
|
||||
if [ -f "$PRD_FILE" ] && [ -f "$LAST_BRANCH_FILE" ]; then
|
||||
CURRENT_BRANCH=$(jq -r '.branchName // empty' "$PRD_FILE" 2>/dev/null || echo "")
|
||||
LAST_BRANCH=$(cat "$LAST_BRANCH_FILE" 2>/dev/null || echo "")
|
||||
|
||||
if [ -n "$CURRENT_BRANCH" ] && [ -n "$LAST_BRANCH" ] && [ "$CURRENT_BRANCH" != "$LAST_BRANCH" ]; then
|
||||
DATE=$(date +%Y-%m-%d)
|
||||
FOLDER_NAME=$(echo "$LAST_BRANCH" | sed 's|^ralph/||')
|
||||
ARCHIVE_FOLDER="$ARCHIVE_DIR/$DATE-$FOLDER_NAME"
|
||||
|
||||
echo "Archiving previous run: $LAST_BRANCH"
|
||||
mkdir -p "$ARCHIVE_FOLDER"
|
||||
[ -f "$PRD_FILE" ] && cp "$PRD_FILE" "$ARCHIVE_FOLDER/"
|
||||
[ -f "$PROGRESS_FILE" ] && cp "$PROGRESS_FILE" "$ARCHIVE_FOLDER/"
|
||||
echo " Archived to: $ARCHIVE_FOLDER"
|
||||
|
||||
echo "# Ralph Progress Log" > "$PROGRESS_FILE"
|
||||
echo "Started: $(date)" >> "$PROGRESS_FILE"
|
||||
echo "---" >> "$PROGRESS_FILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Track current branch
|
||||
if [ -f "$PRD_FILE" ]; then
|
||||
CURRENT_BRANCH=$(jq -r '.branchName // empty' "$PRD_FILE" 2>/dev/null || echo "")
|
||||
if [ -n "$CURRENT_BRANCH" ]; then
|
||||
echo "$CURRENT_BRANCH" > "$LAST_BRANCH_FILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Initialize progress file if it doesn't exist
|
||||
if [ ! -f "$PROGRESS_FILE" ]; then
|
||||
echo "# Ralph Progress Log" > "$PROGRESS_FILE"
|
||||
echo "Started: $(date)" >> "$PROGRESS_FILE"
|
||||
echo "---" >> "$PROGRESS_FILE"
|
||||
fi
|
||||
|
||||
echo "Starting Ralph - Tool: $TOOL - Max iterations: $MAX_ITERATIONS"
|
||||
|
||||
for i in $(seq 1 $MAX_ITERATIONS); do
|
||||
echo ""
|
||||
echo "==============================================================="
|
||||
echo " Ralph Iteration $i of $MAX_ITERATIONS ($TOOL)"
|
||||
echo "==============================================================="
|
||||
|
||||
ITER_START=$(date +%s)
|
||||
printf " \033[0;90mStarted: $(date +%H:%M:%S)\033[0m\n"
|
||||
|
||||
RAW_LOG="$LOG_DIR/iteration_${i}.raw.jsonl"
|
||||
TEXT_LOG="$LOG_DIR/iteration_${i}.log"
|
||||
> "$RAW_LOG"
|
||||
> "$TEXT_LOG"
|
||||
|
||||
if [[ "$TOOL" == "amp" ]]; then
|
||||
OUTPUT=$(cat "$SCRIPT_DIR/prompt.md" | amp --dangerously-allow-all 2>&1 | tee /dev/stderr) || true
|
||||
else
|
||||
# Stream JSON output from Claude CLI
|
||||
# CLI stream-json format: each line is a complete message with type "system"|"assistant"|"user"
|
||||
# assistant messages have .message.content[] with blocks of type "text" or "tool_use"
|
||||
|
||||
PROMPT_CONTENT=$(cat "$SCRIPT_DIR/CLAUDE.md")
|
||||
|
||||
echo "$PROMPT_CONTENT" \
|
||||
| claude --dangerously-skip-permissions --print --verbose --output-format stream-json 2>&1 \
|
||||
| tee "$RAW_LOG" \
|
||||
| while IFS= read -r line; do
|
||||
[[ -z "$line" ]] && continue
|
||||
|
||||
# Extract event type — skip non-JSON lines
|
||||
evt_type=$(echo "$line" | jq -r '.type // empty' 2>/dev/null) || continue
|
||||
|
||||
if [[ "$evt_type" == "assistant" ]]; then
|
||||
# Extract tool names from tool_use blocks
|
||||
tools=$(echo "$line" | jq -r '.message.content[] | select(.type == "tool_use") | .name' 2>/dev/null)
|
||||
if [[ -n "$tools" ]]; then
|
||||
while IFS= read -r tool_name; do
|
||||
printf " \033[0;36m[%s]\033[0m\n" "$tool_name"
|
||||
done <<< "$tools"
|
||||
fi
|
||||
|
||||
# Extract and display text blocks
|
||||
text=$(echo "$line" | jq -r '.message.content[] | select(.type == "text") | .text' 2>/dev/null)
|
||||
if [[ -n "$text" ]]; then
|
||||
printf "%s\n" "$text"
|
||||
printf "%s\n" "$text" >> "$TEXT_LOG"
|
||||
fi
|
||||
|
||||
elif [[ "$evt_type" == "result" ]]; then
|
||||
# Handle result/error events
|
||||
subtype=$(echo "$line" | jq -r '.subtype // empty' 2>/dev/null)
|
||||
if [[ "$subtype" == "error_result" ]]; then
|
||||
error_msg=$(echo "$line" | jq -r '.error // empty' 2>/dev/null)
|
||||
printf " \033[0;31m[ERROR] %s\033[0m\n" "$error_msg"
|
||||
fi
|
||||
fi
|
||||
done || true
|
||||
|
||||
echo "" # Newline after streamed output
|
||||
fi
|
||||
|
||||
# Show elapsed time
|
||||
ITER_END=$(date +%s)
|
||||
ELAPSED=$((ITER_END - ITER_START))
|
||||
ELAPSED_MIN=$((ELAPSED / 60))
|
||||
ELAPSED_SEC=$((ELAPSED % 60))
|
||||
printf " \033[0;90mFinished: $(date +%H:%M:%S) (elapsed: ${ELAPSED_MIN}m${ELAPSED_SEC}s)\033[0m\n"
|
||||
|
||||
# Check for completion signal in text log ONLY (not raw log — raw log contains
|
||||
# the CLAUDE.md prompt which has the literal <promise>COMPLETE</promise> instruction)
|
||||
if grep -q "<promise>COMPLETE</promise>" "$TEXT_LOG" 2>/dev/null; then
|
||||
echo ""
|
||||
printf "\033[0;32mRalph completed all tasks!\033[0m\n"
|
||||
echo "Completed at iteration $i of $MAX_ITERATIONS"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Iteration $i complete. Continuing..."
|
||||
sleep 2
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "Ralph reached max iterations ($MAX_ITERATIONS) without completing all tasks."
|
||||
echo "Check $PROGRESS_FILE for status."
|
||||
exit 1
|
||||
Reference in New Issue
Block a user