Skip to content
A. Bekkour
Quebec, Canada · Remote or relocation · Available now

Al Mokhtar
Bekkour

I build and scale multi-tenant SaaS — the kind running thousands of tenants on one platform, tuned so a slow query or a double-billed webhook never reaches the customer.

Seven years shipping production SaaS and fintech in Rails, plus Go for the performance-critical parts. Right now I own the backend — billing, scheduling, document generation — for a multi-tenant platform serving 1,000+ contractors, and the AWS it runs on.

What I want
Senior or staff — Rails / Go backend
Remote in Canada, or relocate
Distributed teams that ship
Numbers

7+ years, senior

40% faster Postgres queries

1,000+ tenants on one platform

Thousands of jobs a month

Open to
Full-time · Contract · Advisory

Experience

7+ years, 5 roles
2021 — Now

C-CUBE

Senior Software Engineer

Lead engineer on a multi-tenant SaaS for 1,000+ roofing contractors — I own the backend for billing, scheduling and document generation. Cut median query time 40% with indexing and query refactoring, built the Sidekiq + AWS SQS jobs running thousands of PDF generations, email syncs and billing events a month, and brought Go in for the CLI tooling that handles tenant data ops, backfills and migrations. I own the AWS side (EC2/RDS/S3), the CI/CD, and the Prometheus/Grafana stack.

Rails · Go · PostgreSQL · AWS

2020 — 2021

Rounded

Senior Software Engineer

Bookkeeping and tax-compliance features for a fintech SaaS serving 10,000+ Australian freelancers. Integrated FreshBooks and Stripe for real-time transaction sync under strict financial-accuracy requirements, and automated invoicing and tax calculation — cutting users' manual bookkeeping by an estimated 60%.

Rails · React · Stripe

2019 — 2020

HiFive Group

Senior Software Engineer

Built ProCRM from zero — a CRM for multinational call-center operations across Tangier and London. Designed a PostgreSQL schema for millions of customer records under heavy write load, and shipped the REST APIs and real-time dashboards management used for cross-office KPIs.

Rails · Vue · PostgreSQL

2018 — 2019

AgriVillage

Software Engineer

Marketplace features for an agritourism platform across France — booking flows, Stripe payments, listing management. Tuned queries and caching to keep response times down under load.

Rails · Nuxt · Stripe

2017 — 2018

Com en Scène

Software Engineer

Shipped 15+ client sites and kept production CMS deployments running for a varied client portfolio. Where I learned to hit someone else's deadline.

PHP · Symfony · Drupal

App Academy (full-stack web) · OFPPT (computer science)

Stack

Backend

Ruby on Rails · Go · Sidekiq · REST · GraphQL

Data

PostgreSQL — tuning, indexing, multi-tenant · Redis · MySQL

Cloud & DevOps

AWS — EC2 · RDS · S3 · SQS · Lambda · Docker · Kubernetes · GitHub Actions

Observability

Prometheus · Grafana · Loki · OpenTelemetry

Payments & integrations

Stripe · QuickBooks · Chargebee · FreshBooks · Nylas · Intercom

Frontend

React · Ember · Vue · Nuxt · Hotwire

How I work

Most outages I've dealt with weren't interesting — a missing index, or a webhook that ran twice on a retry. I build for both before they happen.

Boring on purpose

How I think about it

I'd rather ship something boring that works than something clever I have to babysit. New tools have to earn their place — I've maintained enough of other people's excitement.

Legacy code isn't the enemy. It's running the business, and it usually works for reasons that aren't obvious from reading it once. I read it before I change it, and I change as little as I can get away with.

The goal is a system the next person can understand without me in the room.

Fewer moving parts than the problem seems to need.

What broke, what I changed

Things that broke

A partner sync ran the same event twice.

On a retry, the financial integration replayed a webhook — the kind of thing that quietly throws off reconciliation until the numbers stop matching.

Fix Idempotency keys, replay-safe handlers, reconciliation checks. Now an outage just delays the sync instead of corrupting data.

Queries fine at a few tenants crawled across a thousand.

Wrong indexes, and query shapes whose real cost only showed once every tenant's data sat behind the filter.

Fix Reworked the indexes and the queries — about 40% off median query time. Not clever, just necessary.

Backfills ran as Rake scripts and didn't scale.

Tenant data ops and migrations were one-off Rake scripts — fine on a laptop, painful on production-sized data.

Fix Moved them into Go CLI tooling. Runtime on the big batch jobs dropped enough that we stopped scheduling the business around them.

Work

Side projects

Constat

B2B SaaS

A jam.dev-style capture tool: one link records a customer's screen, console and network so support can replay the exact repro instead of asking them to explain it. A browser extension and TypeScript recorder up front, a Rails 8 backend, and a Go service streaming the uploads over WebSockets.

Rails 8 · Go · Hotwire · WebSockets

Railyard

Distributed systems

A Cloud66-style one-click deploy platform for Rails apps on AWS — a Rails orchestrator driving a fleet of Go agents over gRPC. Per-server routing, Docker builds, deploy logs streaming live.

Rails · Go · gRPC · Docker

Tally

Analytics infra

A self-hosted Mixpanel alternative — event tracking, funnels, retention, anomaly detection and a live dashboard, with zero-dependency SDKs for Ruby, JavaScript, Python and Node. Rails 8, PostgreSQL, Solid Queue, Hotwire.

Rails 8 · PostgreSQL · Hotwire

Material Estimations

Construction SaaS

Roofing and construction estimation — mark measurements up on a blueprint canvas, roll costs with waste, labour and Canadian GST/QST, export print-ready reports. My exact industry at C-CUBE, built solo. Vue 3, TypeScript, Pinia.

Vue 3 · TypeScript · Vite

How I think it through

Case studies

PDFify

HTML-to-PDF SaaS

Multi-tenant quota enforcement, Stripe billing idempotency, and a reconciliation trail for every generated document — a DocRaptor alternative at ~half the price.

ErrorWatch

Error tracking

Multi-tenant data isolation and a hot path that stays under 200ms when a single deploy floods it with thousands of errors — deterministic fingerprinting to group them.

Field Service

Offline-first mobile

Zero-data-loss time tracking for technicians with no signal — an ACID offline queue, GPS geofencing, and deterministic conflict resolution on sync.

Salah Watch

Embedded systems

Astronomical prayer-time math on a Garmin watch — fully offline, power-aware GPS, five calculation methods, implemented from first principles with no external libraries.

Approach

Owning it end to end — schema to dashboards

I'm comfortable owning a feature from the database it lives in to the AWS it runs on. It usually goes in three passes.

Schema and queries first

Design the Postgres for the access pattern and the multi-tenant filter, and index for it before it's a problem. That's where the 40% query win at C-CUBE came from — not cleverness, just shaping the data for how it's actually read.

Jobs and integrations

The async work goes on Sidekiq + SQS — thousands of PDF generations, syncs and billing events a month. Financial integrations get built idempotent and reconciled from the start, so a retry or a partner outage never corrupts the numbers.

Infra and the eyes on it

It runs on AWS I own — EC2, RDS, S3 — shipped through GitHub Actions, watched through Prometheus and Grafana. So when it moves, someone can actually see it.

Schema to dashboards — one person who can own the whole column.

Built for myself

Contact

Get in
touch.