Meeting notes · model q-3 · v2.4.1

Decisions, owners and dates — pulled out of the call, not summarised into mush.

Quill takes a recording or a live stream and returns four things: a summary you can read in forty seconds, the decisions that were actually settled, action items with a named owner and a due date, and a flagged list of anything it could not resolve. It does not guess at those four things — where it is unsure, it says so in the output.

Median processing latency 38s for a 31-minute meeting. Audio deleted on a schedule you set — 0 days by default.

38s Median wall-clock time from final audio chunk to finished minutes, on a 31-minute en-GB meeting.
0 days Default audio retention. The recording is deleted as soon as the transcript is written, before the model runs.
31 Languages accepted for audio. Action-item extraction is trained and benchmarked on 9 of them.
4 things Summary, decisions, action items, uncertainty flags. Nothing else is returned, and no advice is offered.
01 — live demo

Watch one run end to end

Three real-shaped meetings. Pick one and it streams: each transcript line arrives with the timestamp it was spoken at, and the minutes panel on the right fills in only after the last line lands. The counter under each panel is the token count you would be billed for.

Ready
Input — transcript stream
Output — minutes
tokens 0 elapsed 0.0s confidence
02 — the output, in parts

Four fields, each with a different failure mode

A summary can be vague without being wrong. An action item can be wrong in a way that costs someone a week. Quill treats those as different problems and applies different thresholds to each.

Field 01 · summary

Written to be read once, in forty seconds

Three to five sentences, plain past tense, no bullet padding. It is generative — so the rule is that every sentence must be traceable to a span of the transcript. Open the trace view and each sentence highlights the lines it came from. If a sentence has no supporting span, it is dropped before you see it.

[00:02:14] "...eight weeks. If we cut the email builder —"
[00:02:31] "...then five, maybe four."
→ summary sentence 2 ← spans 00:02:14–00:02:31
Field 02 · decisions

Settled, not discussed

A decision is only extracted when someone states a conclusion in the past or present tense. "Could we drop it?" is left out. "We're dropping it" is captured, with the speaker and the timestamp.

Field 03 · actions

Owner and date, or it is flagged

An action item needs a verb, an object, and a person. If any of the three is missing, Quill does not invent an owner — the item moves to the uncertainties list with the sentence that triggered it.

Field 04 · uncertainties

The part most tools hide

Anything below the extraction threshold lands here in full, quoted, with a reason code. A name the diariser was not confident about, a date spoken as "some time next month", a decision that was hedged with a "probably" — all surfaced rather than smoothed over.

  • AMBIGUOUS_DATE — "end of next week" on a Thursday with no fiscal calendar attached.
  • LOW_SPEAKER_CONFIDENCE — two voices at 61% separation on a speakerphone.

Every field is also a JSON field

The same object the demo renders is the one the API returns. A caller can request any subset with fields=decisions,actions and skip generation you do not need — which is cheaper, because summary writing is where most tokens go.

Response schema v2 fields= filter trace view optional
03 — boundaries

What Quill does not do

Every limit below is deliberate. If one of them is a dealbreaker, Quill is the wrong tool for that call and we would rather you found out here than after a pilot.

Hard constraint

Quill never joins a call silently. If it is present, the meeting host sees a named participant and the participants hear a tone on join. There is no hidden-recorder mode and we will not add one.

01

It does not record video

Audio only, mono, 16 kHz after downsampling. Slides, screenshares and webcams are not captured — a decision made by pointing at a chart will be transcribed as "this one, here".

02

It does not speak, and it does not act

No agent turns, no scheduling on your behalf, no emailing the action list to anyone. Quill writes a document and stops. Delivery is your integration's job, not the model's.

03

It does not reliably name speakers it has never heard

Diarisation separates voices in the room; it cannot map a voice to a person without a prior enrollment or a transcript where someone is addressed by name. Two speakers on a phone line at similar pitch is still the weak case — 61% separation accuracy in our last test set.

04

It does not read tone as fact

Sentiment is never written into a field. An argument about a deadline appears as the decision and the dissent, not as "the room was tense".

05

It does not give advice

No risk scores, no recommended next steps beyond what a participant actually agreed to, no drafting of the reply. Asking for a recommendation returns the one thing it can give: what was said.

06

It does not train on your audio

Not on the audio, not on the transcript, not on the corrections your team makes. Corrections improve the model only through an opt-in job you run yourself and can withdraw.

07

It does not work well on heavy overlap or poor rooms

Four people talking over each other, or a speakerphone in a canteen, degrades both word error rate and diarisation. See the evaluation numbers below — they are split by audio quality on purpose.

04 — model and evaluation

Numbers, and the caveat on each

q-3 is a fine-tuned encoder–decoder pair: a streaming ASR front end feeding an extraction model that emits the four fields as a constrained schema. The figures below are from our own held-out set, not a customer cohort, and they are split by audio quality because a single aggregate number would hide the case you actually care about.

Word error rate by capture quality

n = 2,140 meetings
Headset or USB mic, single speaker at a time4.1%
Laptop array in a small room7.8%
Conference room, ceiling microphones11.4%
Speakerphone, two-plus speakers overlapping21.6%
Codec-compressed dial-in (8 kHz, packet loss)29.3%

How to read this: figures are mean WER across the held-out set, scored against human-corrected references. The bottom row is where accuracy stops being usable for owner attribution — at 29% WER, names are frequently wrong, which is why dial-in recordings above 8 minutes are rejected by default rather than processed and presented with false confidence. Figures on this page are illustrative placeholders for a template build — replace them with your own evaluation run before publishing.

Extraction quality

Action-item precision
94.2%
Action-item recall
81.7%
Owner attribution (named in call)
96.8%
Owner attribution (implied only)
54.1%
Decision precision
91.5%
Uncertainty flag rate
6.9%
Summary traceability
100%

Precision counts items that were correct out of everything surfaced; recall counts what was surfaced out of everything a human annotator found. The implied-only owner row is the honest one — if nobody says "Ravi, can you…", attribution is roughly a coin flip, and those items are flagged rather than silently assigned.

05 — data handling

What is stored, for how long, and where

Four classes of data, four different clocks. Audio is the one people worry about, so it has the shortest life by default and can be set to zero. Everything is encrypted at rest with per-tenant keys; the index is the only class that persists without an explicit action.

Default retention by data class. Every value here is configurable per workspace in Settings → Data, except the region pin, which is set at workspace creation.
Data classDefault retentionConfigurableEncryptionRegion
Audio recording 0 days (deleted at transcription) 0 – 30 days AES-256, per-tenant key Pinned at creation
Transcript 90 days 7 days – indefinite AES-256, per-tenant key Pinned at creation
Minutes (four fields) Indefinite, until deleted Any window AES-256, per-tenant key Pinned at creation
Search index Tied to source document Off entirely AES-256 Pinned at creation
Region pinning

Processing and storage happen in one region, chosen when the workspace is created: eu-central, us-east or ap-southeast. Audio never crosses a region boundary, including for model inference — the inference cluster for each region runs locally.

Deletion

DELETE /v2/meetings/{id} removes audio, transcript, minutes and index entries in one call. Purge is immediate for the index and within 24 hours for encrypted object storage copies, including backups.

Model training

Your content is excluded from any training run by contract, and the flag is enforced in the pipeline rather than left to policy. Corrections stay in your workspace unless an admin starts a opt-in contribution job, which can be withdrawn.

06 — integration

One endpoint, one webhook, most of the work

A meeting is a job. You POST a file or a stream URL, you get a job id back in under 200 ms, and the finished object arrives at your webhook. There is no polling loop to write and no session to keep alive.

Calendar & conferencingNative capture
Object storageDrop-in bucket
Notes & docsMinutes writer
Issue trackersAction sync
// Step 1 — submit. Returns in ~180ms; nothing here waits for inference.
const res = await fetch('https://api.quill.dev/v2/meetings', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.QUILL_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    source:    { uri: 's3://meetings/2026-03-11-standup.m4a' },
    region:    'eu-central',
    languages: ['en-GB', 'ja-JP'],
    fields:    ['summary', 'decisions', 'actions', 'uncertainties'],
    asr_hint:  { max_speakers: 4, vocabulary: ['Quill', 'Manafa'] },
    webhook:   'https://your.app/hooks/quill'
  })
});
const { job_id, billed_minutes } = await res.json();
// billed_minutes is rounded up per started minute, and returned up front
// so you can reconcile a bill without waiting for the result.
07 — pricing

Billed on processed minutes, rounded up per started minute

Not seats, not per-note. A minute of audio costs the same whether forty people were on the call or two. Failed jobs — audio the pipeline rejects — are not billed, and the rejection reason is returned anyway.

TrialNo card
€0300 minutes, once
  • All four output fields
  • 30-day transcript retention
  • One region, one API key
  • No webhook retries after the trial
Run the demo first
CommittedInvoice
€0.09per minute, 250,000-minute floor
  • Bring-your-own-bucket for audio
  • Custom extraction vocabulary, retrained quarterly
  • Named engineer, 4-hour response window
  • Unused floor credits roll for one month
See what needs legal review
120
31 min
Fields generated

Above 5,000 processed minutes in a month the rate drops from €0.18 to €0.14 per minute. The estimate below applies the tiered rate for you.

Estimated monthly charge
€669.60 / month, ex. VAT
Processed minutes
3,720 min
At €0.18 (first 5,000)
3,720 min
At €0.14 (beyond 5,000)
0 min
Effective rate per minute
€0.180

Transcript-only mode removes extraction and drops the rate to €0.06 per minute.

Stop paying and nothing is deleted. Jobs stop being accepted, the workspace goes read-only, and data follows the retention clocks above until you export or delete it.

08 — the awkward questions

Answered before you ask in a sales call

The model gets an owner or a date wrong. What happens then?

You correct it in the minutes view and the correction is stored against that meeting. It does not retrain anything by default — the model that produced the error is the model that produces the next meeting's output, which is why the accuracy figures above stay meaningful.

If you want corrections to affect future extraction, an admin can opt the workspace into a contribution job. It runs monthly, is reversible, and the training set is versioned so you can see exactly which meetings went in.

What exactly is a "processed minute"?

One minute of audio submitted for transcription, rounded up per started minute. A 31-minute meeting is 31 minutes regardless of the file's bitrate or how many tracks it contains — we do not bill per channel, and we do not bill by output tokens.

Minimum billable is one minute per job. Jobs that fail our pre-flight checks — silent audio, corrupt container, dial-in longer than 8 minutes — are rejected before inference and are not billed.

Can it run on-premise or in our own VPC?

Not self-serve. A deployment inside your cloud account is available on the committed plan, with the caveat that the inference cluster needs GPU capacity you provide and we cannot patch it for you — you take a versioned image and update on your own schedule.

The API surface is identical; the difference is who holds the keys and who is on the hook for the model weights' updates.

What happens to a meeting in a language the model was not benchmarked on?

Audio in any of the 31 supported languages is transcribed. If the language is outside the 9 that extraction is benchmarked on, the transcript is returned and the extraction fields come back empty with UNSUPPORTED_EXTRACTION_LANGUAGE rather than a low-quality guess. You are still billed for the transcription minutes, which is stated before submission.

Does anyone at the company listen to our recordings?

No, and with the default audio retention of 0 days there is nothing left to listen to — the recording is deleted at transcription, before extraction runs. Support can only see metadata: job ids, durations, error codes and the minutes documents you have not restricted.

The one exception is a workspace that explicitly joins the correction-quality programme, where a sampled transcript (never audio) is reviewed by a contracted annotator under NDA for accuracy scoring.

How do we move off Quill?

GET /v2/export returns every meeting as JSON plus the transcripts as plain text, one archive per region. It is the same schema the webhook delivers, so a migration script is a loop and a transform. There is no lock-in format and no export fee.

Start with the demo, not a call

Run a meeting through it before you talk to anyone

The demo above is the real pipeline on three pre-recorded meetings. When you have fed it one of your own recordings and compared the action items against your own notes, you will know whether the 81.7% recall is good enough for your team — no sales call will tell you that faster.

300 minutes free, no card. Audio deleted at transcription by default on the trial too.