Money paths that don't break
Stripe payment intents, off-session capture, consent records and webhook reconciliation — designed so a retry, a race or an expired authorization never turns into a double charge.
Payments · Pricing · Platform
I build the parts of a product that cannot afford to be wrong — payment capture, pricing engines and the services that move real money.
Toolkit
Deep where it matters — TypeScript, Prisma and GCP — and comfortable across the rest.
About
Systems engineer, building software professionally since 2021. Today I work on SELLIT9, Canada's tech trade-in platform, where I own payments, the dynamic pricing engine, multi-region expansion and a serverless backend of 30+ Cloud Functions on GCP. I move comfortably from a Prisma migration to a Next.js 16 interface — and I care most about the seams in between.
I like the unglamorous work: the migration that has to preserve every row, the guard that makes a retry idempotent, the test that pins down a rounding rule. Most of what I ship is invisible when it works — and that is the point.
Stripe payment intents, off-session capture, consent records and webhook reconciliation — designed so a retry, a race or an expired authorization never turns into a double charge.
An extensible condition-tier engine with per-category, per-buyer and per-location overrides, decimal-exact math, price snapshots and "up to" previews for conditions with no fixed price.
GCP Cloud Functions, API Gateway with OpenAPI contracts, Cloud Workflows, Cloud Build pipelines and load-balancer routing — infrastructure kept in code, reviewed like code.
Selected work
Canada's tech trade-in platform. Seven domains I designed, shipped and still own — from the database migration up to the interface an operator uses every day.
Stripe · webhooks · concurrency
Owner of the payment path end to end: intent creation, hold consent, capture and reconciliation across the platform's trade-in journeys.
condition tiers · decimals · snapshots
Replaced a fixed condition enum with an extensible tier system that lets every category, buyer and location price its own condition matrix.
Canada → United States
Carried region and currency awareness through every layer so the platform could open a second country without forking the product.
schema → cloud function → two portals
Designed and shipped the whole bad-grading dispute feature: when a buyer disagrees with how an item was graded, they can now contest it with evidence and get a documented verdict.
operator tooling
Built the internal surfaces the operations team lives in, with the guardrails that keep order data trustworthy.
GCP · IaC · observability
The delivery substrate under all of the above — kept declarative, reviewable and deployable per function.
commerce · finance · logistics
Connected the platform to the systems merchants and operators already use.
Experience
Five years across fintech and commerce — banking integrations in Colombia, then a payments and pricing platform serving Canada and the US.
Full Stack Developer
Nov 2024 — Present · Remote · Canada
Canada's tech trade-in platform. I work across the whole stack: NestJS API gateway, a Prisma schema shared as a versioned package, 30+ Cloud Functions, GCP infrastructure as code, and four Next.js front ends.
Full Stack Developer
Aug 2021 — Nov 2024 · Pereira, Colombia
Fintech platform integrating Colombian banking products. Backend in Django and Node.js, front ends in Angular and React, deployed on AWS.
Intern Developer
Feb 2021 — Aug 2021 · Buga, Colombia
Full stack development of the company's internal web application for online sales and hosting management.
Education
Unidad Central del Valle del Cauca (UCEVA)
2016 — 2022 · Tuluá, Colombia
Contact
I'm open to backend, full stack and platform roles — remote or hybrid. The fastest way to reach me is email.
luis@topeluis.dev