Self-hosted
Meeting and call transcription to CRM notes
faster-whisper or WhisperX transcribes and separates speakers on your own GPU, a local model writes the summary and the action items against a fixed schema, and n8n files the result against the right CRM record with a person approving before it is saved.
- Source
- Editorial recipe — no step evidence has been fetched yet
- Verified
- Evidence not verified
- Confidence
- Low
01Objective
Turn recorded meetings and calls into accurate transcripts, short summaries and structured CRM notes, without sending client conversations to a transcription service.
- use caseCall transcriptionTranscribing telephone calls — support lines, sales calls, advice sessions — usually from a contact-centre or telephony platform rather than a meeting app. Narrow-band audio and regulated recording rules make it a distinct problem.
- use caseCRM call summariesWriting the call back into the CRM: a summary, the next step, the fields a rep would otherwise type. The point is not the transcript but that the record exists at all and is consistent across the team.
- use caseMeeting transcriptionTurning internal meetings into a transcript, a summary and a list of actions. Usually a bot that joins the call, or an app that records the room. Value comes from the follow-up, not the transcript.
Reference deployments using this recipe
02Recommended stack
| Role | Component |
|---|---|
| Inference | Qwen2.5-14B-Instruct for summaries |
| Inference | Whisper large-v3 |
| Ingestion | faster-whisper |
| Ingestionoptional | WhisperX |
| Orchestration | n8n |
| Storage | PostgreSQL |
Architecture and data flow
Components
- Meeting owners (approval queue) — people
- Recording drop / calendar trigger — storage
- n8n workflow + approval screen — application
- Transcription (faster-whisper / WhisperX) → summarisation — retrieval
- CRM — external api
- PostgreSQL (transcripts, summaries, retention) — database
- Recording store (short retention) — storage
- vLLM + Whisper large-v3 on the GPU — inference server
- Whisper large-v3 · Qwen2.5-14B-Instruct — model
- Company GPU server (24 GB) — hardware
Connections
- Meeting owners (approval queue) to n8n workflow + approval screen — HTTPS (confidential data)
- Recording drop / calendar trigger to Transcription (faster-whisper / WhisperX) → summarisation — documents to index (confidential data)
- n8n workflow + approval screen to Transcription (faster-whisper / WhisperX) → summarisation — question + user groups (confidential data)
- Transcription (faster-whisper / WhisperX) → summarisation to PostgreSQL (transcripts, summaries, retention) — documents + permissions (confidential data)
- n8n workflow + approval screen to PostgreSQL (transcripts, summaries, retention) — chats, users, settings (personal data)
- Transcription (faster-whisper / WhisperX) → summarisation to Recording store (short retention) — original files (confidential data)
- Transcription (faster-whisper / WhisperX) → summarisation to vLLM + Whisper large-v3 on the GPU — prompt + retrieved passages (confidential data)
- vLLM + Whisper large-v3 on the GPU to Whisper large-v3 · Qwen2.5-14B-Instruct — loaded weights
- Whisper large-v3 · Qwen2.5-14B-Instruct to Company GPU server (24 GB) — GPU memory
- vLLM + Whisper large-v3 on the GPU to Company GPU server (24 GB) — GPU memory
- n8n workflow + approval screen to CRM — approved note (summary and action items) (confidential data)
External data transfer · SOME
- confidential content leaves your premises for your own cloud tenancy ("CRM"). You keep control of the account; the provider is a processor, so a DPA and a documented region apply.
- Audio and transcripts never leave your network. Only the approved note is written out, and only into your own CRM tenancy.
- If the CRM is a SaaS product, that final hop inherits the CRM vendor's terms — state it explicitly in the review.
03Suitable for
- Organisation size
- 10–500 employees
- Data classes
- confidential, personal
- Constraints
- recordings already exist, or you have a lawful basis and a consent process to create them; a CRM with an API; a 24 GB GPU handles transcription and summarisation for a small sales or advisory team; multilingual or accented audio needs testing before anyone is promised accuracy
- Industries
- Professional services, Financial services, Insurance, Real estate, Technology
- Jurisdictions
- any
04Hardware
On-premise single 24 GB GPU server
- GPU
- NVIDIA RTX 4090 24 GB (or NVIDIA L4 24 GB for a rack-mounted, 72 W alternative)
- VRAM
- 24 GB
- System RAM
- 64 GB
- Storage
- 2000 GB
- CPU
- 16-core x86 server CPU (AMD EPYC 7003/9004 or Intel Xeon Scalable)
- Form factor
- Tower server
Indicative costUS$4,000 – US$9,000
indicative build cost for the complete machine, USD, Aug 2026 — verify with a local supplier
The default box for a 20–60 person firm. Fits a 14B model at 4-bit with roughly 8 GB of KV cache left for concurrent chat, or an 8B model at fp16. NVMe storage sized for the model cache plus a document corpus and its embeddings. Add a UPS and an offsite backup target — this machine holds the whole knowledge base.
Cloud GPU instance — 1 × NVIDIA L4 24 GB
- GPU
- NVIDIA L4 24 GB (AWS G6, Azure NVadsA10/NCads equivalents, GCP G2)
- VRAM
- 24 GB
- System RAM
- 64 GB
- Storage
- 1000 GB
- CPU
- 8–16 vCPU
- Form factor
- Cloud instance
Indicative costUS$1 – US$2
indicative on-demand rental, USD per hour, Aug 2026 — verify against the provider price list for your region
The private-cloud counterpart of `onprem-small-24gb`: same model sizes, no capital outlay, and a region you choose explicitly. Running it continuously for a year usually costs more than buying the equivalent box, so it suits pilots, bursts and firms without a server room. The cloud provider becomes a data processor — a DPA and a documented region are required.
Apple Silicon workstation (unified memory)
- GPU
- Apple M4 Max (up to 128 GB unified) or M3 Ultra (up to 256 GB unified)
- VRAM
- 96 GB
- System RAM
- 128 GB
- Storage
- 2000 GB
- CPU
- Apple M4 Max / M3 Ultra
- Form factor
- Workstation
Indicative costUS$4,500 – US$12,000
indicative build cost for the complete machine, USD, Aug 2026 — verify with a local supplier
Quiet, standard-socket power draw, and a large memory pool — about 75% of installed unified memory is addressable by the GPU, which is where the 96 GB figure comes from on a 128 GB M4 Max. Memory bandwidth, not capacity, sets the ceiling: excellent for a pilot, a partner workstation or a single heavy user, weak for 40 people at once. Runs Ollama, llama.cpp and MLX; does not run CUDA builds of vLLM.
Indicative costUSD · one-off plus monthly
- Software licences
- All components are open source and self-installed. Check each licence for use limits.
- US$0
- Model usage
- Open weights served locally: no per-token charge. The GPU cost sits under infrastructure.
- US$0
- GPU server (24 GB class)
- Hardware profile onprem-small-24gb — indicative build cost, Aug 2026, verify locally.
- US$4,000 – US$9,000
- Implementation (6–15 FDE-days)
- 6–15 FDE-days at US$760–1940 per day, converted from the HK$6,000–15,000 band at the HKMA Linked Exchange Rate band of HK$7.75–7.85 to one US dollar. One-off; excludes internal staff time.
- US$4,560 – US$29,100
- 10–50 people recording meetings, one CRM, one language plus occasional others.
- Excludes legal advice on recording consent, which is a prerequisite rather than an option.
- Every figure is an assessment from the inputs listed, not a quotation.
05Difficulty
3 / 5
A project week with Linux, Docker and GPU experience
06Skills
- API integrationapi-integration
- development
- Compliance and governancecompliance-governance
- compliance
- Dockerdocker
- infrastructure
- Linuxlinux
- operations
- LLM inferencellm-inference
- ml
- Pythonpython
- development
- Speech to textspeech-to-text
- ml
- Workflow automationworkflow-automation
- operations
07Deployment steps
Commands are copied from each project’s own documentation, and the page they came from is linked under the step. 0 of 7 steps currently open an evidence record. The rest are linked to their source; §10 says which of those documents were fetched and which were fetched without their anchor being found — two different states, named differently there.
- 01
Settle recording consent and retention before building
AssessmentWho may be recorded, how they are told, how consent is captured and how long recordings and transcripts are kept. This is a legal question with a different answer in each jurisdiction you operate in, and it determines what the pipeline is allowed to do. Get it answered in writing first; everything below is cheaper than rebuilding around it later.
- 02
Transcribe with faster-whisper on the GPUversion-sensitive
AssessmentInstall faster-whisper and run the large-v3 model with float16 on GPU (or int8 to save memory). Turn on the VAD filter to drop silence, and use batched transcription for throughput on a backlog of recordings.
pip install faster-whisperfrom faster_whisper import WhisperModel model_size = "large-v3" # Run on GPU with FP16 model = WhisperModel(model_size, device="cuda", compute_type="float16")from the faster-whisper README
- 03
Add speaker labels where the summary needs themversion-sensitive
AssessmentWhisperX adds alignment and diarisation on top of Whisper. "The easiest way to install WhisperX is through PyPi." Diarisation needs a separate model and, for some pipelines, accepting the model licence — check that before assuming it will run offline.
pip install whisperx - 04
Summarise against a schemaversion-sensitive
AssessmentDecide the fields the CRM actually needs — summary, decisions, action items with owners and dates, next step, sentiment if it is genuinely used — and generate them under constrained decoding so every note has the same shape. Keep the transcript so any claim in the summary can be traced back to what was said.
docker run --runtime nvidia --gpus all \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=$HF_TOKEN" \ -p 8000:8000 \ --ipc=host \ vllm/vllm-openai:latest \ --model Qwen/Qwen3-0.6Bfrom the vLLM docs — substitute the summarisation model
- 05
Match the recording to the right CRM recordversion-sensitive
AssessmentMatching is where these projects fail quietly. Use the calendar invitee list or the dialled number rather than name matching on the transcript, and send anything ambiguous to a human queue. A note filed against the wrong client is worse than no note.
docker volume create n8n_data docker run -it --rm \ --name n8n \ -p 5678:5678 \ -e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \ -e TZ="<YOUR_TIMEZONE>" \ -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \ -e N8N_RUNNERS_ENABLED=true \ -v n8n_data:/home/node/.n8n \ docker.n8n.io/n8nio/n8nfrom the n8n docs
- 06
Require approval before anything reaches the CRM
AssessmentThe person who was in the meeting reviews the note and presses save. It takes thirty seconds, it catches the misattributed action item, and it is the difference between a useful tool and a CRM full of plausible fiction.
- 07
Automate deletion
AssessmentRecordings, transcripts and summaries each need a retention period and an actual deletion job — usually the recording goes first and the approved note stays. Store the timestamps so the deletion can be proved, not just asserted.
CREATE EXTENSION vector;only if you also want semantic search over transcripts
08Compliance considerations
Structured issue-spotting to support your own review — not legal advice. Verify against the cited primary sources and your counsel.
Applies everywhere
Consent · Personal data · Transparencyhigh
Recording a conversation is processing personal data about everyone in it, including the people who are not your employees. Consent or another lawful basis, and clear notice, are prerequisites — not a later refinement. Requirements differ materially by jurisdiction.
Retentionhigh
Three artefacts, three lifetimes: recording, transcript, approved note. Keeping recordings indefinitely because storage is cheap is the most common failure here.
Confidentiality · Professional secrecyhigh
Transcripts of client meetings inherit the confidentiality of the meeting. Restrict access to the people who were entitled to be in the room.
Human oversight · Bias and fairnessmedium
Transcription accuracy varies by accent and language, so a summary of a heavily accented speaker can be systematically worse. Measure per language before rollout, and require human approval regardless.
09Alternatives
A meeting-notes SaaS product
Joins the call, transcribes, summarises and writes to the CRM with no infrastructure at all. The right answer when the conversations are not sensitive.
- — Working within a day
- — Every recorded conversation goes to a processor — consent, retention and residency questions
- — Per-seat pricing that grows with the team
Transcription only, no CRM integration
Transcribe and summarise into a shared folder, and let people paste what matters. Removes the matching problem and most of the build.
- — A fraction of the work
- — Nothing is filed automatically; adoption depends on habit
No alternative recipe is published yet.
10Evidence
Not yet in the ledger
not yet fetched
not yet fetched
not yet fetched
not yet fetched
not yet fetched
not yet fetched
11Community
Deployed this stack, or hit something this page does not cover? Corrections, sources and implementation reports are what keep a recipe worth reading.
Improve this page
Sign in to contribute
From the field
0 deployments · 0 questions
Nobody has reported deploying this here yet, and no question has been opened against this page. Both appear once a reviewer accepts them.
12Hire an FDE
If you would rather not build it, we can introduce a forward-deployed engineer who has deployed this stack before. The enquiry form starts from this recipe.