I ran BPO support operations for 900+ agents, then became a cloud engineer.
Now I help support teams handle more customers without adding headcount, using process, automation, integrations and AI,
and prove it in the numbers leadership already watches: cost per contact, service levels and customer satisfaction.
Results from my professional roles. Operations first, because that is where technology has to pay off.
900+
BPO agents directedBell Canada · support operation across multiple lines of business
+15%
SLA attainmentBell Canada · analytics that removed tier-1 support bottlenecks
+30%
Cross-sell close rateBell Canada · training program for a 176-agent team
~30%
Fewer failed deploymentsBell Media · automated release pipelines, several releases a week
5+ hrs
Saved per sprintBell Media · internal tooling that removed repetitive setup work
~25%
Faster release cycleCallTek · standardized Jenkins, Docker and Helm pipelines
~30%
Less environment setup effortCallTek · reusable Terraform and Ansible modules
~20%
Lower compute costCallTek · right-sized Kubernetes workloads, no loss of availability
01 · FROM THE OPERATIONS FLOOR
The dashboard that hid our SLA breaches
A short case study from running BPO support operations. It is the lens I bring to every support team I work with.
Professional experience · Bell Canada · 2020 to 2022
Context
A support operation that grew from a 176-agent team I managed directly to 900+ BPO agents across several lines of business, all measured on service level agreements (SLAs).
Problem
Leaders saw performance through lagging, manually built reports. By the time a breach showed up, the day was already lost, and the same tier-1 bottlenecks kept repeating.
What I did
Replaced lagging reports with real-time KPI dashboards
Used the data to find and remove recurring tier-1 bottlenecks
Redesigned staffing and shift models to cut overtime
Worked with IT on monitoring alerts that caught issues before customers did
Result
SLA attainment up 15%, fewer undetected breaches, lower overtime spend, and clear ownership during incidents.
Why it matters now: most support problems I see today have the same shape. Nobody sees the right number in time, and nobody owns fixing it. I set up the measurement first, then fix the process, automation and AI behind it.
02 · EXPERIENCE
Career Timeline
Senior DevOps Engineer · CallTek
Oct 2024 – Present
Designed Jenkins CI/CD pipelines with Docker and Helm across dev, staging, and production. −25% deploy time
Built reusable Terraform & Ansible modules for AWS and GCP multi-region environments. −30% provisioning effort
Automated backup and disaster recovery workflows, improving RTO and platform resilience against unplanned outages.
Optimized container resource allocation and workload scheduling on managed EKS clusters. −20% compute cost
Delivered cloud infrastructure, full-stack apps, and DevOps tooling for multiple clients, consistently on schedule.
Shipped React and Node.js applications end-to-end: UI, API integration, and AWS deployment with automated CI/CD.
Built and maintained personal AWS projects at production-grade reliability using containerization and automated pipelines.
Configured AWS-native services including S3, CloudFront, Lambda, and API Gateway for client production workloads.
DevOps / Software Engineer · Bell Media
Mar 2022 – Oct 2023
Implemented automated CI/CD pipelines enabling multiple production releases per week. −30% deploy failures
Built React components and Node.js REST APIs for internal editorial and content-ops tooling.
Created internal developer tooling that standardized environment setup and deployment. 5+ hrs saved/sprint
Embedded vulnerability scanning and secrets detection into delivery pipelines with the security team.
Senior Operations Manager · Bell Canada
Feb 2021 – Mar 2022
Directed BPO support operations spanning 900+ agents across multiple lines of business, maintaining SLA targets for enterprise service delivery. 900+ BPO agents
Identified bottlenecks across tier-1 support workflows using data analytics and reporting. +15% SLA attainment
Led cross-functional incident response coordination, reducing mean time to resolution across business units.
Aligned operational reporting with ISO 27001 governance requirements across multiple business units.
Operations Manager · Bell Canada
Apr 2020 – Feb 2021
Managed 176 agents and implemented targeted training programs. +30% cross-sell close rate
Deployed KPI reporting dashboards that measurably reduced undetected SLA breaches across service lines.
Optimized staffing allocation models and shift workflows, reducing overtime costs.
Worked with IT to implement proactive monitoring alerts for earlier issue detection before customer impact.
03 · PROJECTS
Featured Work
Personal projects, built to production patterns. They show how I build; each one says why it matters to a business.
Spring Boot
→
Maven
→
Docker
→
GH Actions
→
Helm
→
Kubernetes
→
Kafka
Personal project
// Java + Kubernetes + Platform Engineering
Spring Boot Service to Production
Takes a Java Spring Boot service the whole way to production: a Maven build, a small container image,
a Helm chart on Kubernetes that rolls out new versions with no failed requests, a pipeline that publishes
every tested commit, and a Kafka lab for event streaming. Each stage was tested on purpose, including
breaking things to measure what goes wrong.
Why it matters to a business: customers keep getting answers while new versions ship, Java services don't get killed for running out of memory, and only tested code ever reaches the image registry.
Multi-stage Dockerfile: Maven and the JDK build the app, only the JRE and JAR ship, running as a non-root user
Reproduced an OOMKill (exit code 137) in a 256 MB container, then fixed it with container-aware heap sizing
Helm chart with startup, readiness and liveness probes, graceful shutdown and atomic rollback
GitHub Actions builds, tests and checks the chart, then publishes images tagged by commit
Kafka lab on consumer groups and lag, including a hot partition caused by key skew
Every result is written up in the repository, with commands to reproduce it
Tickets
→
Contact reasons
→
Readable rules
→
Local model
→
Cost model
→
Report
Personal project
// Support operations + AI automation
Support Ticket Diagnostic
Reads a support ticket export and answers three questions: what customers contact you about,
which of those contacts can be handled without a person, and what the difference is worth per
month. The output is one shareable report with every input and its source printed on the page.
Sample run on a public dataset of 26,872 support messages.
Why it matters to a business: automation is costed against measured routing accuracy rather than a vendor's assumption that routing is perfect, and the contact reasons that need a person are named as such instead of being automated badly.
26,872
tickets classified
95.8%
accuracy on unseen tickets
0.9%
held back for a person
$0
AI cost per ticket
01 · Contact reason taxonomy02 · Rules a client can edit03 · Local language model04 · Cost modelDecision records
27 raw intents grouped into 16 contact reasons, each tagged by how it should be resolved
Readable rules classify 88.1% correctly on held-out tickets, four passes to get there
A local model handles only what the rules cannot match, taking the total to 95.8%
Weak matches are held for a person rather than guessed, so confident misrouting stays rare
Containment targets are cut by measured accuracy, so the business case never assumes perfect routing
Every assumption, limitation and reversed decision is recorded in the repository
GitHub
→
GH Actions
→
OIDC Auth
→
API Gateway
→
Lambda
→
DynamoDB
→
CloudFront
Personal project
// AWS Solutions Architecture + DevOps
AWS Hybrid Architecture Portfolio
Four AWS builds, each documented the way a team would hand it over: architecture, security,
operations and teardown notes, with decision records for the key trade-offs. Built and tested in a
live AWS account, and the static site deploys through GitHub Actions with OIDC, so no AWS keys are stored.
Why it matters to a business: every design choice is written down with its trade-offs, and deployments need no stored cloud credentials that could leak.
4
AWS builds
0
stored AWS keys
ADRs
for key trade-offs
Teardown
steps for every build
01 · Serverless API02 · Event-Driven Architecture03 · Static Site + CDN04 · CI/CD with OIDCADR Decision Records
Serverless REST API on API Gateway, Lambda and DynamoDB, with decision records on Lambda vs EC2 and DynamoDB vs RDS
Event-driven system with SNS, SQS and dead-letter queues, with failure handling documented
Secure static delivery with S3 and CloudFront, using a private origin
GitHub Actions deploys through OIDC, with zero long-lived AWS credentials
Security, operations and teardown notes for every build
Built and tested in a live AWS account, with screenshots as evidence
Pull Request
→
GH Actions
→
OIDC · Entra ID
→
Approval Gate
→
Terraform
→
Azure
Personal project
// Azure DevOps + Platform Engineering
Azure Terraform Pipeline with OIDC
A GitHub Actions pipeline that builds Azure infrastructure with Terraform without storing a single password.
Every pull request gets a security scan and a Terraform plan posted for review, and production changes
wait for a person to approve them.
Why it matters to a business: every infrastructure change is reviewed, approved and traceable, with no stored credentials to leak. Changes made by hand outside the pipeline are caught and reversed.
0
stored secrets
PR
plan posted for review
1
approver before prod
Drift
detected and reverted
01 · OIDC Sign-in02 · Plan on Pull Request03 · Approval Gate04 · Locked Remote StateDrift Detection
Workload identity federation, no secrets in GitHub
Least-privilege identity scoped to one resource group
Format check, Checkov scan and plan on every PR
Protected prod environment with a required approver
State in Azure Storage: keyless, versioned, locked
Drift caught by plan and traced in the Activity Log
Docker
→
Ollama
→
RAG / LangChain
→
FastAPI Agent
→
Prometheus
→
React UI
Personal project
// MLOps / LLMOps Platform Engineering
LLMOps Reference Platform
6 stagesLLMOps platform
End-to-end LLMOps platform built to production deployment standards: model serving, RAG pipelines
with vector search, CI/CD-gated evaluation, Prometheus observability, and multi-agent
orchestration — deployed on containerized infrastructure reflecting enterprise AI patterns.
Why it matters to a business: AI answers are tested before anyone sees them. A 32-test evaluation suite runs on every model or prompt change, the same discipline support teams need before an AI agent talks to customers.
6
MLOps stages
Local
first inference
Live
WebSocket UI
Eval
CI pipeline
Stage 1 · Model ServingStage 2 · RAG PipelineStage 2.5 · DevOps AI AgentStage 3 · CI/CD for AIStage 4 · ObservabilityStage 5–6 · Multi-Agent UISecurity Hardening
Full LLMOps lifecycle: model serving, RAG, CI/CD evaluation, and observability
Local-first inference via Ollama, with optional fallback to Amazon Bedrock; MLflow experiment tracking
DevOps AI agent with Docker socket access for container orchestration via natural language
CI/CD evaluation gate: automated pytest eval suite runs on every model or prompt change
Production observability: Prometheus, Grafana, and Evidently AI for model drift monitoring
Multi-agent orchestration with streaming React/WebSocket UI
04 · ARCHITECTURE EXPLORER
Cloud Architecture Explorer
Interactive diagram of the AWS Hybrid Architecture Portfolio. Click any service to learn more.
05 · SKILLS
Toolkit
Operations and engineering skills come from professional roles; AI tooling comes from my personal projects.