The scenario that happens 14 times a day in your Quebec SMB
9:47 AM, Tuesday. A customer calls your Laval clinic. She starts: "Bonjour, j'aimerais prendre un rendez-vous for my son, he has an ear infection, I think." Your AI voice agent has already picked up. It heard "bonjour." The transcription engine is locked into French.
And that's where everything falls apart.
"Ear infection" comes through in the transcript as "heure infecte" or "érigine fection" — gibberish. The LLM gets a made-up word. It replies in French: "Désolé, je n'ai pas bien compris, pouvez-vous répéter?" The customer, on her end, switches fully to English. Your agent stays in French. Three exchanges later, she hangs up. You just lost a patient without knowing she ever called.
If you operate in Quebec, this scenario plays out far more often than you think. Industry data from 2026 shows transcription models reach 95% accuracy on pure French audio, but drop to 70-80% the moment code-switching enters the conversation — that is, when a speaker mixes languages within the same sentence. In Montreal, on the South Shore, in Gatineau, code-switching is closer to the norm than the exception.
What this guide will get you
We'll fix this in 5 concrete steps. No abstract computational linguistics. Just hands-on configuration. If you follow this guide through, your AI voice agent should:
• Detect a language switch in under 400 ms (instead of 2-3 seconds, or never)
• Preserve conversation context across the switch (no restart, no "sorry, I didn't get that")
• Reply in the language of the customer's most recent message (not the language of "hello")
• Respect the primacy of French required under Quebec's Charter of the French Language (Bill 96)
Typical implementation time for our clients: 3 to 6 hours of configuration plus a full day of real-world testing. That's it. And it directly changes the rate at which inbound calls turn into booked appointments.
Prerequisites before you start
Before diving in, make sure you have:
An account on a voice agent platform that supports configurable STT (ElevenLabs Agents, VAPI, or Retell AI are the three serious candidates in 2026). If you're using a low-code "all-in-one" platform that doesn't let you swap the speech-recognition engine, you'll hit a wall in 10 minutes.
A dataset of 30-50 real calls from your business. Not generic ones. Your actual calls. If you don't have any, take 2 days to record (with consent, obviously) the calls coming in this month.
A clear understanding of your customer base. What percentage is French-only? Bilingual? English-only? If you don't know, look up your neighborhood on Statistics Canada census data — language-of-use stats are public.
And one last thing: drop the assumption that "the models will figure it out." No 2026 model, including the most advanced, handles code-switching well without explicit configuration. As we covered in our deep-dive on Quebec French quality and the April 2026 ElevenLabs update, the default behavior of a French-only agent is to butcher every English word your customer slips in.
Step 1 — Pick a transcription engine that handles code-switching natively
This is the most important step. Get this wrong and nothing else will work.
Three serious options in 2026, ranked by Quebec performance:
1. AssemblyAI Universal-3 Pro Streaming. According to AssemblyAI's 2026 technical announcement, this model processes the six major languages (French, English, Spanish, German, Portuguese, Italian) in parallel rather than sequentially detecting and switching. Sub-300 ms latency. Unlimited concurrency. It's our default install for Montreal clients.
2. ElevenLabs Scribe (with keyterms). The keyterms feature added in ElevenLabs v2.45 (April 2026) lets you preload up to 50 industry terms (think "endodontics," "cancellation," "pre-auth") to bias transcription. Combined with their Multilingual v2, it produces excellent results on moderate code-switching. See the official ElevenLabs changelog for the update details.
3. Deepgram Nova-3 Multilingual. A solid pick if you're already in the Deepgram ecosystem. Performance similar to ElevenLabs, with one upside: more predictable billing as volume scales.
Avoid: Whisper-1 (forces a single language per call — disastrous for Quebec), Google Speech-to-Text V1 (V2 works, but V1 still ships as default in many configs), and any "all-in-one" solution that doesn't disclose its STT engine in the documentation.
Step 2 — Configure automatic language detection
Picking a good engine isn't enough. You need to actively turn on multilingual mode.
In VAPI, this lives in the assistant config:
{
"transcriber": {
"provider": "assemblyai",
"model": "universal-3-pro",
"languages": ["fr", "en"],
"detection_mode": "realtime_streaming",
"locale_hint": "fr-CA"
}
}
The locale_hint: "fr-CA" is critical. It tells the engine: "by default, assume Quebec French, but be ready to flip to English at any moment." Without it, you get Parisian French, which transcribes "dépanneur" as nothing meaningful, or splits Quebec terms into nonsense.
In ElevenLabs Agents, the same setting lives in the ASR tab of the agent. Enable "Multilingual Detection" and explicitly list both languages. If you leave "Auto-detect (all languages)," latency goes up by 200-400 ms and error rates climb — the model now scans 30 languages instead of 2.
One thing we learned the hard way: if you also serve Spanish-speaking customers (increasingly common in Montreal), add "es" to the list, but no more. Three languages max. Beyond that, accuracy crashes.
Step 3 — Engineer the LLM prompt to understand bilingual context
This is the step everyone misses. You can have the best STT in the world, but if your system prompt doesn't tell the LLM how to behave in bilingual mode, you end up with an agent that replies in French to an English message (or vice versa).
Here's the prompt block we deploy for our Quebec clients:
You are a bilingual assistant for [BUSINESS NAME] based in Quebec.
LANGUAGE RULE — CRITICAL:
- Detect the dominant language of the LAST user message.
- Reply in that exact language.
- If a user mixes languages mid-sentence, mirror their dominant language.
- Default language is French (fr-CA) when ambiguous.
- NEVER refuse to answer because of a language switch.
- NEVER ask the user to "choose a language".
QUEBEC CONTEXT:
- Use Quebec French expressions (depanneur, magasiner, char, dejeuner=breakfast).
- Avoid Parisian-only terms (mel, courriel ok, but not e-mail).
- For times, use 24h format (14h30, not 2:30 PM).
The "reply in the language of the LAST message" rule is non-negotiable. Without it, you get an agent that locks into the language of the greeting and refuses to leave it. For the broader question of which LLM model to pair with this prompt, we wrote an honest comparison of GPT-Realtime, Gemini 3.1 Pro, and Qwen 35B for Quebec SMBs in 2026.
Also note: the "default language is French" line satisfies the primacy of French required by Bill 96. It's good for compliance, and it's what your Quebec customers expect anyway.
Step 4 — Configure TTS to speak both languages without sounding robotic
Think you've got everything? Not quite. Now you have to generate the spoken response, and this is where many SMBs make their last mistake.
Classic problem: someone picks a Parisian French voice (because there are 200 of them in ElevenLabs) and when the agent has to say an English word, it comes out as "Mooneeday throo Fryeday." The customer hangs up.
The clean solution:
• Pick a natively multilingual voice. ElevenLabs Multilingual v2 has roughly twenty voices that pivot from FR-CA to EN-US without an accent shift. Look for the "bilingual" or "multilingual" tag in the library.
• Test on the words your customers actually use. List 30 English terms common in your industry. For a law firm: "class action," "settlement," "hearing." For a vet clinic: "grooming," "spay," "microchip." Have your candidate voice say each one.
• Enable prosodic enhancement. That's the "Speech Enhancement" toggle in ElevenLabs, or voice_settings.style: 0.6 in the API. It softens the robotic tone on code-switched sentences.
If your industry leans heavily on English jargon (real estate, IT, medical with Latin terminology), consider running two voices: a primary French one and a secondary one for technical passages. A few platforms now allow dynamic voice switching, including the multi-agent architecture LiveKit documented in 2026.
Step 5 — Test with real Quebecers (not yourself)
This is the step that separates production-ready deployments from the ones that crash on day one.
You speak "like a manual." Your customers don't. They say "j'ai une r-rendez-vous," "can I switcher mon appointment," "are you open le samedi?" They swallow syllables. They mix "tu" and "vous." They pronounce "two" like "tou."
Our minimum test protocol, in 5 scenarios:
Test 1: 100% Quebec French call (with accent and local expressions). Must hold a 5-minute conversation without forced repetition.
Test 2: 100% English call. Same standard.
Test 3: French greeting + 80% English (the customer flips). The agent must flip too.
Test 4: Real code-switching every sentence ("Bonjour, I want to prendre un rendez-vous for next Tuesday"). At least 70% accuracy per sentence.
Test 5: Industry jargon mixed across both languages.
Fail any one of these and go back to the relevant step. Before plugging into the real phone line, also run through our 7 mandatory pre-launch tests for Quebec SMBs. They cover angles this guide doesn't (security, latency, Law 25 compliance).
The most common mistakes (from 50+ Quebec deployments)
To save you the pain, here are the six recurring mistakes we see year after year:
Mistake 1: configuring a single language because "80% of my customers are French." The 20% bilingual ones hang up. You lose 20% of your call flow. For an SMB getting 200 calls/month, that's 40 lost prospects.
Mistake 2: using Whisper-1 or a single-language STT with a homemade fallback. Fallback logic like "if I don't understand, try the other language" creates 1.5-3 seconds of latency. Customers hang up before the second attempt.
Mistake 3: forgetting fr-CA and leaving fr as default. The engine transcribes with a Parisian accent and misses "char," "dépanneur," "magasiner," "blonde."
Mistake 4: not testing with real customers. In-house demos with your marketing team never reproduce the accent diversity and phrasing of your actual Quebec customer base.
Mistake 5: ignoring the primacy of French. If the agent always replies in English just because the caller said "hi," you're in violation of Bill 96. And your French-speaking customers will feel it.
Mistake 6: not refreshing keyterms after 30 days. Your customers use vocabulary you can't predict in advance. Listen to 50 calls after 30 days, list the missed words, add them to keyterms. Repeat quarterly.
What we see at Quebec clients
Across the 14 Quebec SMBs TECHMA configured with this protocol between January and April 2026, here are the median numbers:
• Transcription accuracy: 92% in bilingual mode (vs. 73% before configuration)
• Call abandonment rate: 8% (vs. 22% with a mono-language agent)
• Conversion to booked appointments: +31% on average
• Customer complaints about language: 0 (over the past 90 days)
It's not magic. It's just configuration done right. Modern platforms can handle bilingual; you just have to configure them for it instead of accepting defaults.
If you want to see the real cost of this configuration and the precise ROI for your SMB type, we published an honest ROI calculation for an AI voice agent in a Quebec SMB in 2026, with real numbers in Canadian dollars.
FAQ
How much more does a bilingual agent cost compared to a monolingual one?
At May 2026 prices: between $0 and $8/month extra, depending on the platform. ElevenLabs charges the same; AssemblyAI Universal-3 Pro is $0.003/minute more than V2 monolingual. Over 1,000 minutes/month, that's $3 more. The premium is negligible compared to the 40 customers you stop losing.
Does my agent really need to comply with Bill 96 if we're a small SMB?
Yes. Quebec's Charter of the French Language applies to any business serving customers in Quebec, regardless of size. The basic rule: default communication must be in French, with English available on explicit request or when the customer initiates. Our system prompt enforces this rule.
What about French dialects (Acadian, Creole, African accents)?
Universal-3 Pro and ElevenLabs Multilingual v2 handle West African and Acadian French well. Haitian Creole, however, is still a weak spot — if you serve a lot of that demographic (Montréal-Nord, Saint-Léonard), add an explicit human fallback in the prompt.
How long until I see measurable improvement?
14 days post-deployment. That's how long it takes to gather 100+ analyzable calls. Earlier than that and statistical noise drowns out the signal.
Next step
You now have the full recipe. Executing it takes discipline, because every SMB has its own vocabulary, its own customer base, and its own call peaks.
If you'd rather not run this alone, the TECHMA team has been configuring, testing, and deploying this protocol for Quebec SMBs since 2024. Visit agentiavocal.ca to book a demo or request a free audit of your current setup. We'll tell you honestly whether changing things is worth it — no sales pressure, just diagnosis.
And if you decide to roll this in-house: keep us in the loop. We learn from every deployment, and Quebec needs voice agents that actually sound like us.
