Montréal · open to backend & platform roles

Kapil Soni

Backend & platform engineer

I help small engineering teams ship faster and keep their backends solid while they grow. At Lightspeed I work on a sales-creation endpoint handling 28M+ requests a week. The part I'm proudest of is that it's boring to run.

01 · About

Kapil Soni
Kapil Soni · Montréal, Canada

I keep backends boring to run.

Most small teams don't need another platform rewrite. They need the two or three things that will break first as they grow, found early and fixed properly: clear monitoring, safe rollouts, and a service nobody has to babysit.

That's the work I do at Lightspeed on an endpoint taking tens of millions of requests a week. I'm looking for a backend or platform role where that work matters, in Montréal or remote. I also take fixed-scope contract engagements alongside it.

Away from the terminal I run a YouTube channel, shoot street and portrait photography, and cook for anyone who'll sit down.

  • 28M+requests / week
  • 25%faster incident triage
  • 8Sev-0 & Sev-1 resolved
  • 5+years shipping

Figures measured at Lightspeed on the X-Series sales-creation path. Ask and I will walk you through how each was counted.

02 · Experience

Where I've shipped

  1. 2025 – present

    Software Developer

    Lightspeed Commerce · Montréal. Joined as an intern in 2025, full-time since 2026

    • Optimised a high-traffic X-Series sales-creation endpoint carrying 28M+ requests a week, with stronger monitoring, alerting and production-readiness practices.
    • Built time-versioned APIs and backend services in Go with PostgreSQL, Redis, gRPC, GraphQL and Protobuf.
    • Added Kafka event processing to move work off synchronous request paths.
    • Shipped safely with canary, feature-flag and shadow deployments backed by Datadog SLOs.
    • Helped resolve 5 Sev-0 and 3 Sev-1 incidents and cut incident investigation time by 25%.
    GoKafkagRPCGraphQLProtobufPostgreSQLRedisDatadog
  2. May – Aug 2024

    Software Developer Intern

    OneSpan · Montréal

    • Enhanced the Java Mobile Security Suite used inside banking apps: secure REST integrations with OAuth 2.0, JWT, TLS 1.3 and mutual certificate validation.
    • Built React document-signing and verification workflows, including digital-signature validation and real-time camera checks for in-branch authentication.
    JavaReactOAuth 2.0JWTTLS 1.3mTLS
  3. 2021 – 2024

    Software Developer

    Bacancy · Ahmedabad, India

    • Delivered full-stack products for clients: Go microservices with clean API boundaries and goroutine-based concurrency.
    • Built React/TypeScript front-ends with Redux and code-splitting.
    • Ran workloads on Kubernetes with ArgoCD; built AWS infrastructure on RDS, Aurora, SQS, SNS and S3.
    • Tuned PostgreSQL and MySQL schemas and indexes.
    • Cut manual release effort with reusable Dockerfiles, Jenkins pipelines and Git-based CI/CD.
    GoKubernetesArgoCDAWSReactTypeScriptJenkinsDocker

03 · Selected work

Things I built

Freelance engagements, built and shipped for clients. Each one I owned end to end: the design, the code, the deploy, and the call at the point where two approaches were both defensible. They are also the evidence behind the contract work further down. All four are Go, with a React front-end where there is one. They are client engagements, so there are no public repos — the schematics are the architecture, redrawn.

Text and image queries are embedded, ranked in parallel by OpenSearch and pgvector, then merged into one hybrid result. QUERYIMAGEEMBEDKEYWORDVECTORHYBRIDOPENSEARCHPGVECTORRANKED
01

Catalog Semantic Search

E-commerce · Search

Embeds product text and images so a natural-language query, or an uploaded photo, returns matching SKUs with price filters applied. OpenSearch ranks the words, pgvector ranks the pictures, and a merge step reconciles the two orderings into one result set. A React storefront runs it against a real catalogue.

The call: one index or two. A single vector index was simpler to operate, but it ranked exact SKU and brand matches worse than plain keyword search did. Two indexes and a merge step cost more to run and answered both query shapes correctly.

Go · PostgreSQL · pgvector · OpenSearch · React

Hybrid merge at query time · filters pushed down before ranking

Chat reaches a typed tool gate; only calls that cross the trust boundary reach the order, fulfilment and inventory APIs. A guardrail hands off to a human, and every call is written to an audit log. HUMANCHATGATEORDERFULFILMENTINVENTORYAUDITGUARDRAILTRUST BOUNDARYTYPED CALLSALL CALLS
02

Order Support Assistant

E-commerce · Support automation

Order status and returns, answered only from live order, fulfilment and inventory APIs through a typed tool layer. Anything the tools cannot answer is refused at the boundary rather than guessed, and a guardrail hands the conversation to a human. Every call the assistant makes is written to an audit log.

The call: a typed tool layer instead of free-form prompting. It refuses some questions a looser system would have answered, and in exchange there is no path by which the assistant can state an order fact that no API returned.

Go · gRPC · PostgreSQL · Redis · React

Deny by default at the trust boundary · every tool call audited

A Kafka topic streams into a classifier that splits into high-confidence automatic decisions and a low-confidence human review queue, with an appeals path back into review and queue depth exported to Prometheus. KAFKACLASSIFYAUTOPROMETHEUSPOSTS · IMAGESHIGHLOWAPPEALSREVIEW QUEUEQUEUE DEPTH
03

Content Moderation Pipeline

Social · Streaming

A Kafka topic of posts and images streams into a classifier. High-confidence decisions apply automatically; low-confidence items land in a human review queue, and appeals route back into that same queue rather than a separate path. Queue depth and decision latency are exported to Prometheus.

The call: where the confidence threshold sits. Moving it toward automation shrinks the review queue and raises the cost of a wrong auto-decision; moving it toward review does the reverse. It is configuration rather than a compiled-in constant, because the right value is a policy question and it changes.

Go · Kafka · PostgreSQL · Kubernetes · React

Idempotent consumers, replay-safe · backlog visible before it hurts

Checkout events stream into a rules engine; clear cases go straight to Kafka, ambiguous ones take a model review path, and throughput and false positives are tracked in Grafana. RULESMODELKAFKAGRAFANACHECKOUTCLEARAMBIGUOUSDECISIONSTHRUPUT · FP
04

Fraud & Chargeback Scoring

Payments · Real time

Scores checkout events as they happen. A rules engine settles the clear cases outright, so only the ambiguous remainder reaches the model and the expensive path stays off the majority of traffic. Decisions publish back to Kafka, and throughput and false positives are tracked in Grafana.

The call: rules first, rather than scoring every event. It buys a rule set somebody has to maintain, and it keeps model latency and cost off the checkout path for the traffic that never needed it.

Go · Kafka · Redis · Prometheus · Grafana

Rules short-circuit before the model · decisions replayable from the topic

Earlier work

04 · Stack

What I reach for

Every technology here, where it was used, and what came out of it.

GoLightspeed · Bacancy · Freelance
Time-versioned APIs and backend services at Lightspeed. Client microservices with goroutine-based concurrency at Bacancy. All four freelance builds, with Gin over the top.
Kafka, SQS/SNSLightspeed · Bacancy · Freelance
Moved work off synchronous request paths at Lightspeed. The moderation and fraud pipelines are built on it end to end.
gRPC, GraphQL, Protobuf, RESTLightspeed
Service interfaces for the X-Series sales-creation path.
PostgreSQL, MySQL, RedisLightspeed · Bacancy · Freelance
Backing stores for those services, plus schema and index tuning at Bacancy on the queries that actually hurt.
OpenSearch, pgvectorFreelance
Hybrid keyword and vector ranking for catalogue search, so a photo and a sentence hit the same index.
Datadog, Prometheus, Grafana, SLOsLightspeed · Freelance
Monitoring and alerting behind canary, feature-flag and shadow deployments. Queue depth, decision latency and false positives on the freelance pipelines.
Kubernetes, ArgoCD, DockerBacancy · Freelance
Ran client workloads and the deployments that put them there.
AWSBacancy
RDS, Aurora, SQS, SNS and S3 for client infrastructure.
Jenkins, GitHub & GitLab CIBacancy · OneSpan
Reusable Dockerfiles and pipelines that cut manual release effort, including the SDK build and publish chain at OneSpan.
Java, Spring BootOneSpan · Bacancy
Mobile Security Suite: REST integrations with OAuth 2.0, JWT, TLS 1.3 and mutual certificate validation.
TypeScript, React, Redux, JestOneSpan · Bacancy · Freelance
Document-signing and verification workflows. Client front-ends with code-splitting. The storefront and console UIs on the freelance builds.

05 · How I work

Three habits

  1. 01

    Start in production

    Dashboards, incident history and the deploy pipeline before opinions. What breaks shows where to spend your money.

  2. 02

    Ship in safe slices

    Feature flags, canaries and shadow traffic. Every change is small enough to roll back in a minute.

  3. 03

    Leave the team stronger

    Runbooks, alerts and tests stay with you, so you don't need me on call after the engagement ends.

Also available for contract work

Separately from looking for a full-time role, I take fixed-scope engagements. The four systems under Selected work came out of exactly this. Week one, I read your codebase, infrastructure and how you ship today. You get a short prioritised list of what will slow you down or break first as you grow, and what each fix costs. From there we pick what fits.

1 weekStart here

Readiness audit

You get
A ranked list of risks with a cost against each one

A read of the code, the infra and the pipeline, ending in a ranked list of risks with a cost against each one. Useful on its own even if we stop there.

2–4 weeks

Hardening sprint

You get
The top items fixed, with the runbooks and alerts they need

We take the top items off that list and fix them: monitoring, alerting, safe rollouts, the query that falls over at 3× traffic. Runbooks included.

By feature

Extra senior engineer

You get
The feature shipped, documented and handed over

You have a backend feature that needs shipping and no one free to ship it. I join the team, build it, document it and hand it over.

Currently booking new engagements. Fixed price, clear scope, and everything I build stays with your team. Tell me what's slowing you down →

06 · References

What they said

People who managed or worked alongside me at OneSpan, Bacancy and Simform.

Kapil has been a Software Developer intern in the MSS team at OneSpan. During his time with us, Kapil has consistently demonstrated exceptional technical skills, a strong work ethic, and a collaborative spirit that has significantly contributed to our projects. I highly recommend him for any software development positions.

Sina Moetakef Sina MoetakefProduct Manager, OneSpan

Kapil's strongest attributes include exceptional quick learning ability and technology proficiency, enabling him to swiftly adapt to new technologies and stay abreast of industry trends. His decision-making abilities are commendable. Moreover, Kapil demonstrates a strong client focus and leadership skills.

Vaidehee Vala Vaidehee ValaDirector of Engineering, Bacancy

Kapil turned from my intern into an app developer within a few months. He took the initiative to conduct thorough research, exploring various algorithms and methodologies to find the best solution. What impressed me most was his dedication to understanding the underlying principles of the technology he was working with.

Saurabh Detharia Saurabh DethariaSenior Software Developer, Simform

As a project manager and certified scrum master, I had the opportunity to work with Kapil on several projects: Dayo Dating, Core Lite Safety Plan, and GH Labs. Kapil's technical skills, attention to detail, and leadership abilities were critical to completing them.

Leading the feature team on the Dayo project, Kapil showed outstanding leadership, communication skills, and the capacity to collaborate productively. Kapil built great lower-level video processing commands for iOS and Android in Dayo, and single-handedly released the applications to the App Store and Play Store.

Khushboo Rathod Khushboo RathodFormer Project Manager, Bacancy

07 · Education

What I studied, and where

Ahmedabad, India in 2021 to Montréal, Canada in 2024 AHMEDABAD, IN 2021 · first prod deploy MONTREAL, CA 2024 · masters & beyond 12,800 KM · SAME MISSION, BIGGER SYSTEMS

08 · Offline

When the laptop shuts

Four things I do when I'm not writing code.

▶

YouTube

I run a channel and do all of it myself: writing, shooting, editing. Explaining something on camera is the fastest way to find out you don't actually understand it.

◉

Photography

Street and portrait work, mostly around Montréal. Composition, light, and knowing when not to press the shutter.

✦

Content & writing

Short-form video, dev explainers and the occasional written piece. Mostly things I had to learn the hard way.

Get in touch →
✻

Cooking

Gujarati food I grew up on, plus whatever Montréal has talked me into since.

Come for dinner →

09 · Contact

Let's talk.

Open to backend and platform roles in Montréal or remote, and to fixed-scope contract work alongside. Happy to just talk shop about Go, queues and incidents.

developer.kapil333@gmail.com