Open source · local-first

Cardiac screening that explains itself.

PulseIQ takes a patient's own words, resolves them against a curated cardiac vocabulary, and returns an explained risk estimate with the follow-up questions and investigations a clinician would reach for next — then carries the encounter through to a structured report.

13model inputs
8capture languages
7workspace screens
0API keys required
Capabilities

One workspace, the whole pathway

Screening, live capture, mapping and reporting share a single local reasoning engine.

Symptom screening

Free-text narrative in, explained probability out, with every detected concept and mapped model input shown alongside the score.

Live copilot

Speech is transcribed as the encounter runs. Guidance panels refresh on every pass, including suggested questions and red flags.

Body pain mapping

Described pain locations are plotted onto a front and back diagram, so regional patterns are visible at a glance.

Structured reports

Close an encounter and export a formatted PDF carrying the summary, advice, plan and escalation notes.

History and review

The last twenty screenings are kept on the device with band distribution and mean probability, so drift is easy to spot.

Modular agents

Each capability is an isolated, rule-grounded module with an explicit responsibility, replaceable without disturbing the pipeline.

How it works

From a sentence to a defensible score

Five deterministic stages. Nothing is hidden behind a single opaque model call.

01Narrative intakeFree text or dictated symptoms, in eight languages
02Symptom extractionLay phrasing normalised to clinical concepts
03Feature mappingConcepts resolved to the 13 model inputs, with explicit ranges
04Risk estimationGradient-boosted forest, stratified cross-validated
05Attribution and guidanceFeature trace, band, questions, tests and escalation notes
Corrected an inverted target column

The widely circulated heart.csv ships with target=1 meaning healthy. Screening labels are flipped at training time, and the script now asserts on textbook disease and healthy profiles so the inversion cannot return silently.

Symptom mapping calibrated against the model

Feature tiers were measured empirically rather than guessed, so a clear exertional presentation scores high and an unrelated complaint stays low, instead of both drifting to the same band.

Three tiers of reasoning, none of them required

A built-in rule engine answers immediately. If a local model is present it is used instead. A hosted model is optional, never a prerequisite — there is no key to configure.

Walkthrough

The workspace in motion

One take, recorded against the running app: sign in, a live consultation in two languages, a report whose lipid fraction is worked out and labelled, the visit saved, and the same patient reviewed for medication safety.

full walkthrough · 1440×940 · 1:52 · no audio
Screens

The workspace, as it runs

Captured from the live application, not a design file.

Overview screen with the screening pipeline and entry points
01 / Overview
Symptom screening intake with the clinical narrative field
02 / Screening intake
Screening result with risk estimate, band and model inputs
03 / Explained result
Live copilot with transcript, guidance panels and body map
04 / Live copilot
Consultation workflow stages
05 / Consultation entry
Consultation session with visit details and capture controls
06 / Session capture
Screening history with band distribution
07 / History
Module registry listing each agent and its responsibility
08 / Agent registry
Overview on a narrow viewport with the mobile tab bar
09 / Narrow viewport
Quickstart

Two terminals, no configuration

Python 3.10+ and Node 18+. Nothing is sent anywhere.

# backend
cd cardio-ai-system
python -m venv .venv
.venv/Scripts/python -m pip install -r requirements.txt   # Windows
.venv/Scripts/python -m uvicorn backend.api_server:app --port 8000

# frontend, in a second terminal
cd cardio-ai-system/frontend
npm install
npm run dev            # http://localhost:5173

On Windows the bundled Start-PulseIQ.cmd performs both steps.

Clinical scope

PulseIQ is a screening and documentation aid. It does not diagnose, and its output must be reviewed by a qualified clinician before informing care.

Any presentation suggesting acute coronary syndrome — ongoing chest pain, syncope or respiratory distress — must be escalated on clinical grounds alone, irrespective of what this software reports.

Records are held in local browser storage. Use anonymised data unless you have a lawful basis for holding identifiable patient information on the device.