Building Internal LLM Tools with Security and Privacy Focus

wealthsimple · Finance · 2024 · source Agentic: no · promotional bias: med · source-backed · extracted with prompt 0.5.5 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Internal fintech LLM platform

Wealthsimple wanted employees to use LLMs for productivity and operations without leaking sensitive company, customer, or code data to external providers. The platform had to make secure usage easy, preserve optionality across models and techniques, support RAG and multimodal workflows, and help a very small ML/platform team prioritize what to build versus buy.

Constraints:

Architecture

Wealthsimple built an internal LLM platform around a central LLM Gateway. Employees use the Gateway to select external models, self-hosted models, or multimodal Gemini models. Inputs bound for external providers pass through an in-house PII redaction model, while self-hosted models run inside Wealthsimple's cloud/VPC without PII masking. The platform also supports conversation checkpointing across models, multimodal file/image/audio inputs, self-hosted open-source LLM deployment, and Booster Pack, a RAG tool with public, private, and limited knowledge bases. For operations optimization, they extended a Transformer-based ticket triage workflow with self-hosted Whisper transcription and self-hosted LLM-generated metadata.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  employee-user[Employee user] --> llm-gateway[LLM Gateway]
  employee-user --> booster-pack-rag[Booster Pack RAG]
  llm-gateway --> pii-redaction-model[PII redaction model]
  pii-redaction-model --> external-genai-providers[External GenAI providers]
  llm-gateway --> self-hosted-llms[Self-hosted LLMs]
  llm-gateway --> gemini-multimodal-models[Gemini multimodal models]
  llm-gateway --> conversation-checkpoint-store[Conversation checkpoint store]
  booster-pack-rag --> knowledge-bases[Knowledge bases]
  nightly-refresh-jobs[Nightly refresh jobs] --> knowledge-bases
  internal-data-applications-platform[Internal data applications platform] --> booster-pack-rag
  internal-data-applications-platform --> employee-user
  client-experience-triage-workflow[Client experience triage workflow] --> transformer-ticket-classifier[Transformer ticket classifier]
  client-experience-triage-workflow --> whisper-transcription-model[Whisper transcription model]
  client-experience-triage-workflow --> self-hosted-llms
  client-experience-triage-workflow --> cx-agents-and-annotators[CX agents and annotators]
  ml-engineering-platform-team[ML engineering platform team] --> llm-gateway
  ml-engineering-platform-team --> self-hosted-llms
  ml-engineering-platform-team --> booster-pack-rag
  ml-engineering-platform-team --> client-experience-triage-workflow
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Employee user Internal Wealthsimple user seeking productivity help, programming support, content generation, retrieval, or multimodal analysis. LLM Gateway, Booster Pack RAG
LLM Gateway Central internal interface between employees and external or self-hosted LLMs, with model selection, redaction, checkpointing, and multimodal support. PII redaction model, External GenAI providers, Self-hosted LLMs, Gemini multimodal models, Conversation checkpoint store
PII redaction model In-house model that masks standard and Wealthsimple-specific PII before external-provider calls. LLM Gateway, External GenAI providers
External GenAI providers Hosted model providers such as OpenAI, Cohere, and Gemini/GCP services used through the Gateway. LLM Gateway
Self-hosted LLMs Open-source and code-specialized models deployed in Wealthsimple's cloud/VPC for workflows where data should not leave the environment. LLM Gateway, Client experience triage workflow
Gemini multimodal models Long-context multimodal models used by the Gateway to process files, images, and audio by extracting them into prompt context. LLM Gateway
Conversation checkpoint store CSV export/import mechanism that lets users resume or edit conversations across different models. LLM Gateway
Booster Pack RAG Internal RAG tool for grounding conversations against uploaded or pre-created knowledge bases. Knowledge bases, Employee user
Knowledge bases Public, private, and limited sources including source code, help-center content, financial newsletters, Notion documents, and personal documents. Booster Pack RAG, Nightly refresh jobs
Nightly refresh jobs Jobs that keep common public knowledge bases such as source code, help center, and Notion documents up to date. Knowledge bases
Internal data applications platform Platform that lets data scientists and some non-technical employees prototype and share new GenAI tools. Booster Pack RAG, Employee user
Client experience triage workflow Operations workflow that routes customer support tickets and extends triage coverage with voice transcription and LLM-enriched metadata. Transformer ticket classifier, Whisper transcription model, Self-hosted LLMs, CX agents and annotators
Transformer ticket classifier Existing in-house model that maps support tickets to topic and subtopic for routing heuristics. Client experience triage workflow
Whisper transcription model Self-hosted voice transcription model that converts voice-call tickets into text for triage. Client experience triage workflow
CX agents and annotators Customer experience staff and labelers who receive routed tickets, enriched metadata, and annotation support. Client experience triage workflow
ML engineering platform team Three-person team responsible for GenAI tools, production GenAI use cases, and the broader ML platform. LLM Gateway, Self-hosted LLMs, Booster Pack RAG, Client experience triage workflow

Data flow

An employee sends a prompt, document, image, or audio input into the LLM Gateway. The user selects a model from external providers or self-hosted models. For external GenAI partners, the Gateway sends the input through Wealthsimple's PII redaction model before forwarding it; for self-hosted models, the data remains in the company cloud and is not redacted. Multimodal requests use Gemini 1.5's long context to extract file or media content into the prompt. RAG use cases go through Booster Pack, where uploaded or nightly refreshed knowledge bases are indexed and queried as public, private, or limited sources. In client-experience triage, tickets or transcribed voice calls flow through an existing Transformer classifier and are enriched by self-hosted LLM metadata for agents and annotators.

7 supporting quotes
“we wanted to inject this Gateway between all LMS that we use and eventually this included our internal uh LMS as in addition to the external llms”transcript, stated
“because this is an external gen provider the pi redaction model will redact any sensitive information before sharing it”transcript, stated
“because this data never leaves our Cloud environment uh we don't have the Pi redaction model running here and the same prompt will not be redacted so I'm just showing with the same prompt that okay like llama 3 which is one of our cellos and models was able”transcript, stated
“we can actually take the file uh or the multimodal input extract the information out of it and bake it within the prompt itself”transcript, stated
“very similar to like how we approach the multimodal outputs um the distinction here is that this uses a retrieval augmented generation so it uses a rag system um and one difference in that is that whereas for multimo you're enriching the conversation with like the other types of”transcript, stated
“voice transcription model takes an audio recording and transcribes that into like plain text so we have a whisper model um because it's open source we have it open source within our Cloud environment and with whisper we were able to extend triaging to all”transcript, stated
“we're using Generations from our self-hosted LMS to enrich the classification so we're adding a lot of the metadata that's helpful to our CX agents”transcript, stated

Why this architecture

The platform makes the secure path the easiest path. A Gateway gives employees model optionality while inserting PII redaction before external calls. Self-hosted models preserve sensitive workflows inside Wealthsimple's cloud. Booster Pack separates retrieval-grounded work from multimodal prompt enrichment. The build-vs-buy strategy keeps internal investment focused on security/privacy, speed/cost, and proprietary-data leverage rather than buying every vendor's GenAI integration.

5 supporting quotes
“our goal was to really make the secure path the path of lease resistance so that we can enable the freedom to explore while also protecting our data”transcript, stated
“we recog ized there wasn't one single method that would do a given task best and we wanted to leave this decision to our end users”transcript, stated
“if you talk to any of our models are our s hosted because this data never leaves our Cloud environment uh we don't have the Pi redaction model running here”transcript, stated
“whereas for multimo you're enriching the conversation with like the other types of outputs here we're really grounding the conversation against the context that's uploaded”transcript, stated
“if we spend all of our time building tools that we could be buying like that's taking us away from doing things that only we can do with our proprietary data”transcript, stated

Models used: GPT-4 · GPT-3.5 Turbo · Gemini 1.5 · Cohere models · Llama 3 · self-hosted open-source LLMs · self-hosted code-specialized models · Whisper · Transformer-based in-house classifier

Scale

Alternatives considered (roads not taken)

Let employees use public ChatGPT/OpenAI directly.

Rejected because: The team was worried about fourth-party data sharing and oversharing sensitive information, so they inserted a Gateway and redaction path before external models.

3 supporting quotes
“when Chad GPT first became popularized uh the general awareness for fourth-party data sharing was not at the same level it is today”transcript, stated
“a lot of companies inadvertently over shared information with open aai which led to a lot of the sensitive information being uh available publicly”transcript, stated
“with the Gateway we wanted to avoid that we wanted to inject this Gateway between all LMS that we use and eventually this included our internal uh LMS as in addition to the external llms we want to put this Gateway between these models and well simple to”transcript, stated

Redact PII for every model call.

Rejected because: Self-hosted models run inside the company cloud, so redaction is skipped there to preserve workflows that need PII while keeping data inside the environment.

“because this data never leaves our Cloud environment uh we don't have the Pi redaction model running here and the same prompt will not be redacted so I'm just showing with the same prompt that okay like llama 3 which is one of our cellos and models was able”transcript, stated
“the same prompt will not be redacted so I'm just showing with the same prompt that okay like llama 3 which is one of our cellos and models was able to see the unredacted output and the next feature I kind of want to show is what we internally call our”transcript, stated

Buy every vendor's GenAI integration.

Rejected because: The speaker compared the vendor landscape to streaming subscriptions: many useful integrations exist, but buying all of them is not economical and must be weighed against time-to-market, cost, and proprietary-data leverage.

3 supporting quotes
“every single vendor almost every single vendor out there is coming up with their own very unique very bespoke gen products”transcript, stated
“it's not economical for us to buy every single one of them but on the other hand we have to think about time to Market and the cost”transcript, stated
“if we spend all of our time building tools that we could be buying like that's taking us away from doing things that only we can do with our proprietary data”transcript, stated

Treat multimodal upload and retrieval grounding as one tool pattern.

Rejected because: The team described Booster Pack's RAG grounding as distinct from multimodal prompt enrichment, while also planning better consolidation for user experience.

3 supporting quotes
“the distinction here is that this uses a retrieval augmented generation so it uses a rag system um and one difference in that is that whereas for multimo you're enriching the conversation with like the other types of outputs here we're really grounding the”transcript, stated
“whereas for multimo you're enriching the conversation with like the other types of outputs here we're really grounding the conversation against the context that's uploaded”transcript, stated
“conversation against the context that's uploaded um so going forward we do have plans of kind of cons better consolidating these tools but for the time being like one unique way that people are using booster pack is in Pre recreating public knowledge bases um like and then building a retrieval”transcript, stated

Force GenAI into every operational workflow.

Rejected because: The team explicitly wanted organic extensions where GenAI addressed a real gap, as in voice-ticket triage and metadata enrichment.

“we don't want it to be a hammer in search of nails we don't want to just like force gen into every single existing workflow”transcript, stated
“we want this to be a lot more organic and this use case kind of like came up as we were like looking at gaps with the existing client experience triaging workflows”transcript, stated

Patterns

privacy-preserving-processing (security)

External model calls pass through an in-house PII redaction model, while sensitive workflows can use self-hosted models whose data stays inside Wealthsimple's cloud/VPC.

3 supporting quotes
“anything that before we send it externally to one of our gen Partners we will pass the inputs to our PI redaction model”transcript, stated
“this data never leaves our Cloud environment uh we don't have the Pi redaction model running here”transcript, stated
“fine-tuned on code so that's a lot of the cell phones and models people are using for programming support and those live within our VPC so we're very comfortable using them um we also do so we're primarily an AWS shop but we do have like a Google like we do have a Google Cloud account as”transcript, stated

model-routing (model-operations)

The Gateway lets users choose among external provider models and self-hosted models, including GPT, Cohere, Gemini, Llama 3, and code-specialized models.

3 supporting quotes
“we can select any one of these models uh that are either self-hosted on our Cloud environment or from one of our external third-party uh gen Partners”transcript, stated
“that are either self-hosted on our Cloud environment or from one of our external third-party uh gen Partners so we have models from open aai cohere and also from geni Gemini the foundational GC models so first I'm going to show um a quick demo with GPT 4 and um because this is an external gen”transcript, stated
“llama 3 which is one of our cellos and models was able to see the unredacted output”transcript, stated

rag-retrieval (retrieval)

Booster Pack grounds conversations against uploaded or maintained knowledge bases, including public, private, and limited sources.

4 supporting quotes
“with a lot of popularity and a lot of usage um so one thing I want to say before I start playing this demo is booster pack is a tool we've had for a while and I think as as you watch the demo you'll notice is actually very similar to like how we approach the multimodal outputs um the”transcript, stated
“this uses a retrieval augmented generation so it uses a rag system”transcript, stated
“we're really grounding the conversation against the context that's uploaded”transcript, stated
“we have a few nightly jobs that actually takes knowledge bases that are pertinent to most of the company so our source code help center”transcript, stated

tool-use-orchestration (llm-platform)

The internal platform offers a suite of tools, including Gateway, Booster Pack, data-app prototyping, multimodal uploads, checkpointing, and production triage extensions, rather than one monolithic chat UI.

3 supporting quotes
“in addition to the LM Gateway we have a suite of other gen tools”transcript, stated
“developed an internal data applications platform that makes it really easy for people to prototype and share and just kind of test out new tools”transcript, stated
“we have the option to download conversations and also upload conversations”transcript, stated

guardrails-io-filtering (safety)

The platform masks PII before external calls and bakes prompt guidance about masking into production prompts.

3 supporting quotes
“the pi redaction model will redact any sensitive information before sharing it”transcript, stated
“we do mask pii if you see Tilda this is pi being masked so it is baked a little bit in the prompt”transcript, stated
“I do think we could probably do a better job on the user experience part to show them what was mass”transcript, stated

data-quality-loop (operations)

Self-hosted LLM generations enrich ticket classifications and support annotator workflows as new model iterations are evaluated.

3 supporting quotes
“we're using Generations from our self-hosted LMS to enrich the classification so we're adding a lot of the metadata that's helpful to our CX agents”transcript, stated
“we're actually using this as as a way to like label um and close and just and um help our annotators like help our annotators with their workflows”transcript, stated
“like label um and close and just and um help our annotators like help our annotators with their workflows um as as we're evaluating new iterations of these models so this is the kind of patterns that we're looking for when applying gen um for our clients like really just looking for that very”transcript, stated

Tradeoffs

Use a Gateway with redaction for external models.

Chose central Gateway plus PII redaction before external-provider calls over unmediated employee use of public model providers.

Rationale: The Gateway let Wealthsimple give employees accessible LLM usage while reducing fourth-party data-sharing risk and oversharing of sensitive information.

3 supporting quotes
“with the Gateway we wanted to avoid that we wanted to inject this Gateway between all LMS that we use”transcript, stated
“because this is an external gen provider the pi redaction model will redact any sensitive information before sharing it”transcript, stated
“ensure that they were super accessible uh we're talking to them in a secure way”transcript, stated

Support both external and self-hosted models.

Chose model optionality across external partners and self-hosted cloud/VPC models over one model/provider for every task.

Rationale: No single model or technique fit every use case, and self-hosting preserved workflows that could not tolerate PII masking.

3 supporting quotes
“we recog ized there wasn't one single method that would do a given task best and we wanted to leave this decision to our end users”transcript, stated
“we can select any one of these models uh that are either self-hosted on our Cloud environment or from one of our external third-party uh gen Partners”transcript, stated
“fine-tuned on code so that's a lot of the cell phones and models people are using for programming support and those live within our VPC so we're very comfortable using them um we also do so we're primarily an AWS shop but we do have like a Google like we do have a Google Cloud account as”transcript, stated

Build internal tools while the vendor landscape was immature.

Chose building Gateway, Booster Pack, and platform guardrails over buying all available AI vendor integrations.

Rationale: Building created expertise, guardrails, and confidence, but the team acknowledged improved vendor security could make buying more attractive over time.

3 supporting quotes
“a lot of the tools that we chose to build in the past we may not have chosen to build again”transcript, stated
“we had a lot of learnings internally from creating and evangelizing those tools and we've built up not only expertise internally but a lot of the confidence and the guard rails”transcript, stated
“general security and privacy awareness in vendors are actually improving a lot”transcript, stated

Use Gemini multimodal inputs through prompt enrichment.

Chose extracting multimodal content into the prompt using Gemini 1.5 long context over requiring users to manually translate screenshots, files, images, or audio into text.

Rationale: The team saw manual extraction from screenshots and documents as toil, and long-context multimodal models reduced friction for technical and non-technical users.

3 supporting quotes
“it's actually a lot of toil like extracting the information out of that to like make sense of it”transcript, stated
“Gemini 1.5 has 1 million or 2 million um they can accept 1 to two million tokens”transcript, stated
“we can actually take the file uh or the multimodal input extract the information out of it and bake it within the prompt itself”transcript, stated

Improve ticket triage by extending an existing ML workflow.

Chose Whisper transcription and self-hosted LLM metadata enrichment over replacing the existing Transformer ticket-classification workflow wholesale.

Rationale: The existing classifier already improved routing; GenAI added coverage for voice tickets and richer metadata where it naturally fit gaps in the workflow.

3 supporting quotes
“what we built was a Transformer based model that we developed in house and what the model would do is would take a ticket”transcript, stated
“with whisper we were able to extend triaging to all tickets so before we could only use this workflow for um like text based tickets”transcript, stated
“we're using Generations from our self-hosted LMS to enrich the classification so we're adding a lot of the metadata that's helpful to our CX agents”transcript, stated

Gotchas (what bit them)

PII redaction can make legitimate work impossible when employees need the sensitive fields.

Root cause: Masking customer or company data before external-provider calls also obscures information required for some internal workflows.

Resolution: Offer self-hosted models inside the cloud/VPC for sensitive workflows where data should remain unredacted.

3 supporting quotes
“the pi redaction models we really interfered with their use cases”transcript, stated
“when we redact it it obscures this information and doesn't allow them to like Leverage like chat gbt where the open AI models like at their fullest potential”transcript, stated
“one solution that we put forward this to kind of mitigate this concern is to self start self-hosting our own models with no TPI masking”transcript, stated

More internal GenAI tools can increase cognitive load instead of adoption.

Root cause: Users had to visit multiple places and choose among overlapping tools such as Gateway multimodal support and Booster Pack.

Resolution: Consolidate tools and abstract the cognitive complexity of selecting the right tool for the job.

3 supporting quotes
“having to visit multiple places of work for Gen is a very confusing experience”transcript, stated
“as a number of tools grew most people stuck to using a single tool”transcript, stated
“we want to abstract that Co cognitive complexity of choosing the right tool for the right job from our end users”transcript, stated

External GenAI vendor sprawl makes buy decisions economically and strategically messy.

Root cause: Many vendors added bespoke AI integrations, so purchasing every integration would recreate the streaming-platform problem.

Resolution: Evaluate build-vs-buy through security/privacy, time-to-market/cost, and proprietary-data leverage.

3 supporting quotes
“what's happening in the Gen vendor space is very similar to this whole streaming versus cable dilemma”transcript, stated
“products like we have the slack AI integration we have um you know like notion has its own AI integration and it's not economical for us to buy every single one of them but on the other hand we have to think about time to Market and the cost if we were able to De if we were developing this inh”transcript, stated
“there's three things that we take into consideration the first is of course security and privacy”transcript, stated

Hallucination and reliability were not fully handled by retrieval-system guardrails.

Root cause: The team had not integrated additional hallucination checks into retrieval systems, relying instead on education, grounding, prompts, and future fine-tuning.

Resolution: Use grounding and user education now, but treat technical hallucination checks as an acknowledged gap.

3 supporting quotes
“the general risk around gen like bias hallucination um uh like no updates in the training data like some of these common concerns within the industry”transcript, stated
“we don't have a perfect solution for this but some of the ways that we're mitigating against bi bias and Hallucination is like one elevating best practices”transcript, stated
“nothing like within our like retrieval systems that additionally provides that provides additional guard rails”transcript, stated

A tiny platform team has to balance new GenAI tools, model maintenance, production use cases, and the broader ML platform.

Root cause: Only three ML engineering people were responsible for both GenAI and non-GenAI ML platform work.

Resolution: Automate model deployment and drive roadmap decisions from stakeholders, end-user interviews, team interest, and business priorities.

3 supporting quotes
“on the ml engineering front it's a very small team there's only actually three people”transcript, stated
“they're not just responsible for the Gen tools and the Gen like uh the like the use cases in production but they're also the machine learning platform team”transcript, stated
“the first cellos model that we deployed it took two weeks but then the last one took 20 minutes”transcript, stated

Evaluation

Wealthsimple evaluated the platform primarily through adoption metrics, surveys, user interviews, engagement trends, use-case sampling, and production workflow impact. They tracked daily/weekly/monthly Gateway use, surveyed both users and non-users, studied engagement patterns, and used production triage outcomes such as ticket coverage and annotator support. The source also explicitly acknowledges that hallucination checks were not yet integrated into retrieval systems.

Metrics: daily active users · weekly active users · monthly active users · share of company using the Gateway · adoption share from R&D teams · top use-case categories · survey-reported productivity lift · self-hosted model deployment time · Gemini rate-limit headroom · ticket triage coverage

5 supporting quotes
“these are our daily active users weekly active users and then monthly active users since last September that's around the time we started actually tracking these metrics”transcript, stated
“almost everyone who used llms found it to have significantly increased their productivity”transcript, stated
“this was based on a sampled use case the top three categories are programming support content generation information retrieval”transcript, stated
“we are tracking them and we're not very close to hitting the rate limit”transcript, stated
“nothing like within our like retrieval systems that additionally provides that provides additional guard rails”transcript, stated

Outcomes

The case reports Gateway usage by over half the company, four deployed open-source LLMs, Gemini 1.5 context windows of 1-2 million tokens, close to 50% of adoption from R&D, an initial five-day Gateway build plus hundreds of iteration hours, a self-hosted model deployment improvement from two weeks to 20 minutes, and a three-person ML engineering/platform team.

6 supporting quotes
“around a year ago we developed an open source our llm Gateway which is used internally by over half of the company”transcript, stated
“We've also developed and shipped our own inhouse Pi redaction model”transcript, stated
“today we've deployed four open source llms this way and we've built up the platform support for fine-tuning and mod training with Hardware acceleration”transcript, stated
“booster pack have been met with a lot of popularity and a lot of usage”transcript, stated
“almost everyone who used llms found it to have significantly increased their productivity”transcript, stated
“with whisper we were able to extend triaging to all tickets so before we could only use this workflow for um like text based tickets”transcript, stated