One catalog for every number in ClinyPal
The Report Library, at /reports, is the front door to every report ClinyPal produces. Rather than scattering reports across the settings menu or burying them inside the module they relate to, ClinyPal keeps them in a single searchable catalog, grouped by category, so the question "is there a report for that?" almost always has a fast answer.
Most clinics build a habit around a small handful of reports — a manager checking Daily Takings every evening, an owner glancing at Practice Revenue once a week, a front-desk lead running Outstanding Balances before a billing run. The library is designed around that reality: the reports you use constantly should be one click away, and the ones you use rarely should still be easy to find without knowing exactly what they're called.
- How the report catalog is organized, and how to search or filter it
- What the Pinned KPI strip is, and why its seven tiles aren't reports of their own
- How "Explain this number" works on every KPI card, in full detail
- How the Refine row's AI-suggested filter chips and observations work, and why they can never show a hallucinated figure
- What every report looks like when the AI layer is unavailable
Finding the report you need
Below the Pinned strip, the catalog grid organizes every report into one of six categories:
| Category | What lives there |
|---|---|
| Financial | Cash-up, collections, outstanding debt, tax, discounts, and everything else touching money — see <a href="/reports-financial/daily-takings/">the financial reports</a> |
| Appointments | Schedule volume, cancellations and no-shows, note compliance, and location comparisons |
| Patients | Recalls, birthdays, lapsed patients, retention cohorts, and new-patient sources |
| Practitioners | Per-practitioner revenue, utilisation, rebook rate, and cancellations |
| Communications | Broadcast performance and SMS usage/balance |
| Compliance | The <a href="/reports-compliance/audit-log/">audit log</a> and consent/forms status |
Use the search box to filter the grid by report name when you already know roughly what you're looking for, or use the category filter to narrow the view to a single group and browse what's available. Clicking any report card opens that report's own page — see Reading a Report for how the viewer itself works once you're inside one.
The Pinned KPI strip
Across the top of the Report Library, a row of seven tiles gives you the numbers most clinics check daily without opening a single report:
- <strong>Revenue collected</strong> — recent payments taken
- <strong>Uninvoiced appointments</strong> — completed visits still waiting to be billed
- <strong>Rebook rate</strong> — how often patients book a follow-up visit
- <strong>SMS balance</strong> — remaining message credit
- <strong>Lapsed patients</strong> — patients overdue for a visit
- <strong>Outstanding balances</strong> — total unpaid across your patient base
- <strong>New patients</strong> — recently added to your patient list
Because the strip is a fixed set of seven, it's meant as a morning-glance dashboard rather than a customizable widget board — if the number you check daily isn't one of the seven, the fastest path is still the category grid or the search box below it.
"Explain this number": AI on every KPI card
Every KPI card, on every report in ClinyPal, carries a small ? button. Clicking it opens a popover with a short, plain-language explanation of why that number reads the way it does — for example, why revenue is down 12% compared to last period, or why the outstanding balance jumped this month. It's meant to save you the mental math of cross-referencing other reports just to explain a single figure to yourself or your team.
The important design detail is what happens behind that button: clicking ? doesn't summarize the number already on your screen from memory. It re-runs the report server-side, on the same filters you currently have applied, and generates the explanation from that fresh, verified result. ClinyPal never asks the AI layer to explain a number it hasn't independently recomputed — so the explanation is always grounded in the same data engine that produced the KPI in the first place, not a guess about what the number probably means.
The result is cached per click, so reopening the same popover a moment later doesn't trigger a second recalculation — you'll see the same explanation instantly. Changing a filter and clicking ? again produces a fresh explanation, since the underlying numbers have changed too.
For a closer look at this feature specifically, see "Explain This Number" on Reports.
Refine: suggested filters and observations
After any report finishes loading, a Refine row appears beneath the KPI cards with two things: a set of suggested filter chips, and one or more short, italic "observation" notes about the data currently on screen — things like a chip suggesting you narrow to a specific location, alongside an observation noting that one location accounts for a disproportionate share of the total.
Clicking a chip isn't cosmetic. It re-runs the actual report with that filter applied, the same as if you'd set the filter yourself in the filter bar — it's a shortcut into a genuinely filtered view, not a suggestion that just looks like one.
This is the same reasoning ClinyPal applies everywhere AI touches a number: the AI can suggest, phrase, and highlight, but it never gets to be the source of truth for a figure a clinic might act on. For the complete rundown of this mechanism, see AI Suggested Filters & Observations on Reports, and for the broader design philosophy behind every AI feature in the product, see AI in ClinyPal: Overview.