ProductsClinical
ProductsPatients & billing
ProductsScheduling
PlatformBuild on it
PlatformRun the clinic
PlatformTrust
Who it’s forBy practice
Who it’s forBy province
CompanyQlynic
Nothing matches that. Try a shorter word.
AI Scribe · one visit, live Illustrative words · real path
A microphone is on in an exam room. The only question the patient in that room actually has is where the sound goes — so that is the first thing this page answers, before anything about notes or codes.
“she’s had the cough about a week now”
“worse at night, no fever, no shortness of breath”
“chest is clear, throat a little red”
“let’s try a week of rest and fluids and reassess”
scribe-session.ashx
The microphone is opened in the browser, downsampled to 16 kHz mono and pushed into Azure AI Speech’s own stream, in the canadacentral region, recognised as en-CA. Qlynic’s servers are not on that path at all — they never see a frame of it. What comes back is text, and the text lives in the tab you are looking at until you turn it into a note.
canadacentral
en-CA
Nothing starts until somebody says so. The record button is disabled until the consent box is ticked, and the moment it is pressed the visit notes who confirmed it and the second they did, with two lines written into your activity log beside it: consent given, recording started. A patient who would rather not be transcribed at all is marked once on their record, and every future session for them is refused before the microphone is ever opened.
The pass is worth mentioning because it is the part that is easy to get wrong. Azure’s passes last about ten minutes; we treat them as nine, and the browser replaces its own at eight. Two margins, neither of which is the one that actually runs out, so a long consult cannot die mid-sentence.
AI Scribe · one minute of a consult Illustrative timing · real constants
Azure charges for every second of audio it is sent. A scribe that streams a whole appointment is charging you for the examination, the typing and the silence in between — so this one does not send those.
Every frame of microphone audio gets an RMS check in the browser before it goes anywhere. Under the threshold, nothing is pushed — and because Azure bills per second of audio it receives, a second that is never sent is a second nobody charges for. The panel tells you which state it is in while it is happening.
Two things stop that from eating your words. The gate stays open for 1.8 seconds after the last voiced frame, so a pause in the middle of a sentence never cuts the stream. And the browser keeps a rolling 600 milliseconds of the silence you are currently in, and flushes it the instant you speak again — so the syllable that woke the gate was already on its way before the gate opened. The comment above those two constants in the source explains the tuning in one line: clipping a word costs more than a second of billed silence.
What reaches the server on stop is the billed figure, not the wall clock — durationSeconds is the streamed total. It is rounded up to the minute there (Math.Ceiling) and taken off your scribe wallet; anything past the balance accrues as overage at ten cents a minute rather than stopping you mid-visit. And if you would rather it simply streamed everything, Smart listening is a switch on the panel, not a setting somewhere.
durationSeconds
Math.Ceiling
AI Scribe · the draft it hands back Illustrative note · verbatim rules
Every scribe on the market will give you a note. The question worth asking is what it is allowed to put in one, and what happens to it the moment it exists.
Draft · returned to the browser claude-sonnet-4-6 · max 1500 tokens
Cough for approximately one week, worse at night. Reports no fever and no shortness of breath.
Chest clear on auscultation. Oropharynx mildly erythematous. Temperature not recorded this visit.[verify]
Likely viral upper respiratory tract infection.
Supportive care — rest and fluids for one week. Reassess if symptoms persist or fever develops.
nothing crosses this line
The note in the chart unchanged
The note comes back to the browser and lands in the same box you would have typed into. That is the end of what the scribe does with it. Writing the note leaves exactly one mark on your records — a line on the session saying a note was generated and how much work it took — and it cannot touch the note in the chart at all. Your own Save Record is the only thing that ever has.
What the model is given is assembled on the server and not accepted from the browser: the AI history summary for that encounter, which already carries the allergies and contraindications, and whatever you had already written. So the page cannot smuggle context in, and it cannot leave context out either. If you record twice in one visit, the second draft is told to integrate the first rather than replace it — the rule is that no fact already in the note may be dropped.
Two smaller things, both deliberate. The credit check runs before the model is called, on an estimate, so an exhausted wallet costs you a message rather than a bill. And the metering runs after, wrapped, so that if the accounting fails the note still comes back and the response simply says it was not billed. The comment in the source is the whole design in six words: never lose the note over accounting.
AI Scribe · the second pass Illustrative codes · real rule
Having written the note, it reads it back and proposes the billing. This is the part that would be dangerous if anybody took the model’s word for it — so nothing it says about a code is used except the code itself, as a lookup key.
Every code the AI proposes is checked against Alberta’s own lists before you ever see it — the exact code first, then a ranked match on the description. Anything that does not resolve is dropped. The description and the fee always come from Alberta’s list, never from the model. The rule, as it is written into the software
A model that has read the whole internet is good at medicine and unreliable about which code set a particular province pays on. So the second pass treats every code it returns as a guess at a lookup key, nothing more. The key is tried against your own AHCIP tables — exact code first, then the same ranked description match the billing pickers use — and if neither finds a live row, the suggestion is discarded without ever reaching your screen. Even when the code matches exactly, the description the model wrote is thrown away and the table’s own wording is used instead.
Nothing here writes anything. The doctrine comment on the method says so in one line — suggest only; the client renders chips, the doctor acts — and the caps are in the code rather than in a policy document: at most four diagnostic codes, at most four service codes, at most six medications, anything under a confidence of 50 discarded, and two proposals that resolve to the same row collapsed into one.
Two more guards worth knowing about. If the user is not allowed to manage claims, the code sections are refused twice over: the prompt is told to return empty arrays, and the block that parses them never runs. And every suggested medication is re-checked against the patient’s allergies by local code after the model answers — including whole drug classes, which is how a sulfa allergy still catches Bactrim — so the model saying allergyConflict: false is not the last word on it.
allergyConflict: false
AI Scribe · stopping Two writes · one transaction
The interesting failures in billing software are not the loud ones. They are the ones where two records that should agree quietly stop agreeing, and nobody finds out for a quarter.
one transaction · both or neither
Finishing the session and taking the minutes off your balance used to be two separate steps. A crash in between left a session that looked finished with minutes nobody was ever charged for — the log and the balance permanently out of step, and usage that quietly went unbilled. They are one step now: both or neither. Fixed 18 August 2026
scribe.consented
scribe.session_started
scribe.session_completed
scribe.note_generated
When you press stop, two things have to be true at once: the session has to be marked finished with its duration on it, and your minute wallet has to be debited for those minutes. Until August they were two separate statements, and a process recycle in the gap between them produced a session that looked complete and minutes nobody was ever charged for. They are now one transaction, so a failure anywhere leaves the session still recording and the wallet untouched — a state you can see and retry, rather than a discrepancy you find later.
Stopping only ever matches a session that is still recording. Press stop twice, double-click it, or lose the connection halfway through and the second attempt finds nothing to stop and changes nothing. A retried request, a double-click or a flaky line cannot bill you twice for the same minute.
Minutes are rounded up per session, once, at the end — not per request and not per sentence. Past your balance they accrue as overage rather than cutting you off mid-consult, and the seconds and characters are clamped on the way in so a stuck browser cannot report a four-hour visit that did not happen.
Qlynic’s scribe is a witness, not a filing clerk. It listens because you asked it to and someone said yes; it hands you a draft and never files it; it proposes billing and lets your own tables throw out anything they do not recognise. Everything it keeps is a number you can add up, and everything it heard is already gone.
I'm Qlynic Assistant, an AI. I answer from the help centre — pricing, Alberta billing, setup, privacy — and point you to the page.
AI can make mistakes — confirm prices at checkout. Conversations may be reviewed to improve support.