Leonardo Lob

Senior Full Stack Software Engineer

Senior Full Stack Software Engineer and hands-on architect with 25+ years of experience building production systems across commerce, logistics, fleet safety, and consumer products.

I work across the full stack with a strong backend foundation — high-concurrency order processing, distributed workflows, adaptive intelligence modules, and zero-downtime migrations. I combine deep backend engineering with full product ownership, from architecture decisions to mobile clients, and I've led teams and delivered solo projects that are live and in use today.

Selected Projects

Projects

CPT ERP System

Core B2B ERP for a large office-supplies distributor operating across multiple sales channels in Argentina. Operational backbone of the business — customers, orders, stock, invoicing, payments, logistics, and real-time external order ingestion under high concurrency.

9 years in production

RoleSenior Backend Engineer / hands-on Tech Lead — architecture, domain design, integrations, performance, and technical mentorship across a team of 5–7 developers.

  • 2,000–3,000 daily orders, peaks of 2,000 orders/minute during campaigns
  • Integrations with MercadoLibre, Shopify, VTex, Stripe, PayPal, and MercadoPago
  • Three embedded intelligence modules: warehouse, procurement, and credit risk
  • Picking error rate reduced by ~40% through adaptive warehouse recommendations
  • Node.js
  • TypeScript
  • Express
  • TypeORM
  • MySQL
  • Vue.js
  • Quasar
  • RabbitMQ
  • Docker
  • Kubernetes
Technical deep dive

Location Recommender

All orders are assembled manually at scale. The system tracks picking errors grouped by product similarity, such as same supplier or same category, identifying which article combinations generate the highest confusion rates. When a pattern crosses a threshold, the system generates a warehouse rearrangement suggestion. If the operator accepts it, the system enters a follow-up cycle spanning several days, monitoring subsequent picks on those articles until a statistically meaningful volume is reached, then reports whether the error rate improved. This closed feedback loop reduced picking errors by around 40%.

Purchase Recommender

Automated purchasing suggestions for the procurement team based on product rotation rates, supplier lead times, historical sales data, and seasonal demand patterns. When an operator approves a suggestion, the system automatically generates a purchase order and dispatches it to the supplier. Supplier delivery performance is then tracked against committed lead times; if a supplier consistently delivers early or late, the system adjusts future recommendation parameters accordingly. This created a self-improving procurement loop that became more accurate over time as supplier behavior data accumulated.

Credit Risk Recommender

Assisted order approval workflow built around each customer's payment history, outstanding orders, current balance, and post-dated checks in portfolio. The system automatically pre-approves or pre-rejects incoming orders, leaving the sector manager to manually review only the borderline cases. Risk parameters are fully configurable at multiple levels of granularity: global thresholds apply by default, but can be overridden per salesperson, per customer, or per time window. This layered configuration gave the business fine-grained control over credit exposure without requiring manual review of every order.

Mali ERP & Commerce Platform

ERP and commerce platform for one of the largest stationery retailers and wholesalers in Buenos Aires, serving retail, wholesale, and public-facing online channels. Built to sustain heavy transactional volume under intense seasonal demand — particularly the back-to-school cycle.

9 years in production

RoleSenior Backend Engineer / hands-on Tech Lead — architecture, domain design, integrations, and technical mentorship across a team of 4 developers.

  • ~50 sales per minute at peak, averaging 100+ items per sale
  • Integrations with Shopify and a proprietary web storefront for order ingestion
  • Stock optimization engine for partial-order fulfillment under high seasonal load
  • Credit risk module with automated pre-approval workflow
  • Node.js
  • TypeScript
  • Express
  • TypeORM
  • PostgreSQL
  • React
  • RabbitMQ
Technical deep dive

Stock Optimization Engine

Retail orders regularly contain 100 or more items, and stock gaps are common under peak seasonal demand. When an order cannot be fully fulfilled, the system automatically reallocates its available items to cover other orders that can be completed and shipped. Prioritization runs across multiple simultaneous criteria: VIP customers and large orders receive preference, previously paid orders take priority over cash-on-delivery, and the engine favors completing high-value shipments over holding stock for partial ones. This maximized fulfillment throughput during the back-to-school peak without requiring manual intervention.

Credit Risk Module

Assisted order approval workflow based on customer payment history, outstanding balances, and pending orders. The system automatically pre-approves or pre-rejects incoming orders, leaving managers to manually review only borderline cases. Simpler and more focused than a full multi-parameter engine, tuned specifically to Mali's wholesale credit exposure.

Driver Monitoring System — Experta Seguros

Real-time driver safety platform for transport fleets, focused on detecting fatigue, drowsiness, and distraction through continuous mobile camera analysis. Built around critical safety workflows where latency and reliability directly impact road safety.

6 years in production

RoleFull-stack engineer, primarily frontend and mobile — real-time event UI, alert flows, dashboard, and mobile client implementation across iOS and Android.

  • 180 concurrent vehicles monitored in production
  • On-device detection with real-time backend event pipeline and alert dispatch
  • Live location, speed, and surrounding traffic data via Google Maps integration
  • Node.js
  • MySQL
  • React
  • Swift
  • Kotlin
Technical deep dive

On-Device Detection

Fatigue and distraction detection ran entirely on the mobile device using platform-native computer vision libraries, with separate implementations for iOS and Android. The system established a facial baseline for each driver at session start, then continuously monitored eye closure levels and head inclination angle. Baseline calibration required specific tuning to handle physiological variation across driver populations, including structural differences in eye shape that affected closure detection accuracy.

Alert Pipeline

When a drowsiness or distraction event was detected on-device, the app immediately triggered an audible alarm on the mobile and dispatched an alert signal to the backend. Each alert carried real-time location, current speed, and surrounding traffic context sourced from Google Maps. A fleet dashboard gave operations teams visibility into active alerts and historical event data across all monitored vehicles.

SirenForecast

Public web app that estimates the statistical likelihood of rocket alert activity in any Israeli city, based on historical Tzeva Adom data. Built and launched within weeks of the start of the Iran conflict in February 2026. Around 1,000 daily visits.

Public access: sirenforecast.com/en

RoleFull product and engineering ownership — frontend, backend, data modeling, background jobs, and admin tooling. Built end to end as a solo project.

  • City-based alert probability by time window
  • Route risk analysis with best and worst travel time suggestions
  • News feed correlation layer using X to detect probability spikes
  • Multilingual support
  • Next.js
  • React
  • TypeScript
  • PostgreSQL
  • Prisma
Technical deep dive

Data Pipeline

Historical alert data is ingested from the official Tzeva Adom public API, with continuous sync, backfill, and city enrichment jobs running in the background to keep the dataset current and complete.

Probability Engine

Alert likelihood is calculated statistically over historical data, segmented by city and time window. A secondary layer monitors X news feeds in real time. Certain news patterns have shown correlation with increased alert activity, and the system factors these signals into its probability estimates when detected.

Route Risk Analyzer

Given an origin and destination, the system fetches the travel route via Google Maps and calculates alert probability for each city along the trajectory. It then models the risk across different departure times and surfaces the best and worst windows for making the trip.

Admin Tooling

Internal tools support data monitoring, manual backfill triggers, and city enrichment management, keeping the dataset operationally clean without direct database intervention.

BingoAdom

A lightweight social app that turns shared missile-siren moments into a humorous bingo experience. Launched two weeks after the Iran conflict began in February 2026. ~500 active users in its first three weeks.

Public access: www.bingoadom.com

RoleFull product and engineering ownership — product design, UX, full-stack implementation, and architecture. Built end to end as a solo project.

  • Randomly generated bingo cards from a pool of 36 real-life scenarios
  • Real-time public leaderboard and social interactions via WebSockets
  • Social sharing and posting to external networks
  • Vue.js
  • Quasar
  • Python
  • FastAPI
  • SQLAlchemy
  • PostgreSQL
  • Docker
  • Kubernetes
  • RabbitMQ
  • Redis
  • WebSockets
Technical deep dive

Card Generation

The app has 36 fixed real-life scenarios drawn from everyday siren-related situations. Each time a user requests a card, the system generates a unique one by randomly selecting 8 scenarios. No two sessions are identical.

Real-Time Social Layer

A public leaderboard shows active cards across all users, updated in real time via WebSockets. Users can like each other's cards and share them directly to social networks — turning a personal experience into a shared, collective one.

Scalable Architecture

The product was fully dockerized from day one and designed to scale horizontally. RabbitMQ decouples background processing from the main request path via dedicated workers, allowing heavier tasks to grow independently of the web layer. Redis was added as a caching layer to reduce repeated reads and keep the experience responsive under shared traffic.

Area54

Operational platform for physical storage management and logistics coordination across four warehouses in Argentina. Manages storage allocation, delivery routing, appointment scheduling, and specialized handling for high-value goods and cold-chain products.

6 years in production

RoleFull-stack engineer — operational workflows, data modeling, business logic, and incremental migration of a legacy VB/PHP codebase to modern stack with zero downtime.

  • 4 warehouses — ~20 aisles, ~30 shelves, ~20 slots each
  • 12 owned vehicles + 6 external, 3 delivery shifts per day
  • Multi-constraint route optimization via Google Maps
  • Restricted access workflows for high-value locked storage
  • Node.js
  • TypeScript
  • MySQL
  • PHP
  • Visual Basic
  • Vue.js
  • Quasar
  • Google Maps API
Technical deep dive

Zero-Downtime Legacy Migration

The system was originally built in Visual Basic and PHP with no tolerance for downtime — the operation ran continuously across three daily shifts. The migration to a modern stack was executed incrementally, replacing modules piece by piece while keeping the legacy system fully operational in parallel. No disruption to warehouse or delivery operations throughout the process.

Delivery Route Optimizer

Routing logic went beyond simple path optimization. The system matched delivery zones to appropriate vehicle sizes — large trucks excluded from dense urban areas where maneuvering is impractical — and sequenced cargo loading so that last-delivery items were loaded first. Routes were calculated via Google Maps and adjusted per shift across owned and external vehicles.

Restricted Access Workflows

High-value goods are stored in locked cages requiring authorized personnel to be present for access. The system managed availability scheduling for authorized staff as part of the fulfillment workflow, ensuring the right personnel were assigned before a pick or delivery could be confirmed.

Lyris Digital

B2B procurement platform connecting corporate clients and office-supply providers around more efficient purchasing workflows. Suppliers upload their catalogs, clients submit orders, and the system automatically matches each order to the best available supplier based on configurable business parameters.

7 years in productionPublic access: productos.lyrisdigital.com/quienes-somos

RoleFull-stack engineer — procurement workflows, matching engine, catalog management, and operational logic.

  • 100 daily orders under normal operation, peaks of 3,000 during campaigns
  • Real-time provisional matching at order submission
  • Nightly batch optimization pass to improve and correct assignments
  • Configurable parameters: profitability thresholds, preferred suppliers, and more
  • Node.js
  • TypeScript
  • Express
  • MySQL
  • Vue.js
  • Quasar
Technical deep dive

Two-Phase Matching Engine

When a client submits an order, the system immediately generates a provisional supplier match based on current catalog availability and configured business rules — giving the client instant feedback. Every night, a batch process revisits all pending assignments, incorporates updated pricing, availability, and optimization parameters, and corrects or improves matches made during the day. This two-phase approach balanced responsiveness with accuracy.

Configurable Matching Parameters

Matching logic was not fixed — each client could configure their own business rules: profitability thresholds, preferred supplier rankings, exclusions, and other operational constraints. The engine applied these parameters at both the real-time and batch phases, ensuring assignments reflected each client's commercial priorities rather than a one-size-fits-all algorithm.

Kenwin

Corporate training platform for synchronous and asynchronous learning programs, serving companies across Argentina. Manages course offerings, seat purchasing, attendance tracking, and live session coordination at scale.

4 years in productionPublic access: www.kenwin.net/home

RoleFull-stack engineer — platform workflows, backoffice, payment flows, seat management, and live session integration.

  • 10,000 users across 100 corporate clients
  • Up to 8 concurrent live training sessions
  • Multiple commercial models: individual seats, corporate seat packages, monthly quotas, priority add-ons
  • Evolved from proprietary video infrastructure to Zoom API integration
  • Node.js
  • TypeScript
  • MySQL
  • React
  • Zoom API
Technical deep dive

Commercial Model Complexity

The platform supported multiple purchasing structures simultaneously — individual seat purchases, corporate bulk packages, fixed monthly quotas with pre-assigned slots, and priority add-ons for companies needing guaranteed access. Each model had its own quota tracking, expiration, and priority logic running in parallel.

Synchronous Session Management

Live sessions included real-time attendance tracking and seat control. The platform originally ran on a proprietary video infrastructure built in-house. When Zoom became the industry standard, the system was migrated to the Zoom API — a pragmatic architectural decision that reduced maintenance overhead and improved reliability for end users.

Asynchronous Learning

On-demand courses combined uploaded video content with post-session questionnaires, tracked per user and per corporate account for reporting and compliance purposes.

ShopWise

Collaborative family shopping app with real-time list synchronization across devices. Available on the web, App Store, and Google Play.

3 months in productionPublic access: www.shopwiseweb.com

RoleFull product and engineering ownership — product design, backend, web, iOS, and Android. Built end to end as a solo project.

  • Real-time sync via WebSockets — items marked as purchased update instantly across all family members' devices
  • AI-powered duplicate detection and voice dictation for list entry
  • Multi-family support — one user can belong to multiple family groups simultaneously
  • AI features in active development: recipe-to-list parsing and visual product matching via photo
  • Node.js
  • Express
  • TypeScript
  • MySQL
  • Quasar
  • SwiftUI
  • Kotlin
Technical deep dive

Real-Time Collaboration

List synchronization runs over WebSockets — a hard requirement given the core use case. When one family member marks an item as purchased at the supermarket, it updates immediately on every other member's device without requiring a manual refresh. The system supports multi-family membership, so a user can belong to and actively collaborate on lists across multiple family groups simultaneously.

AI Layer

Duplicate detection uses AI to identify when the same item is added twice under different names or phrasings — catching variations a simple string comparison would miss. Voice dictation goes beyond transcription, interpreting spoken shopping lists naturally. Two additional AI features are currently in development: uploading a recipe and automatically extracting the required ingredients as a shopping list, and visual product matching — photographing an item in the supermarket to confirm whether it matches what's on the list.

Inner Attack Reloaded

Fast-paced arcade space shooter for iPhone built around short, addictive sessions and progressively intelligent enemy behavior.

RoleFull product and engineering ownership — game design, physics, AI, and implementation. Built end to end as a solo project.

  • Custom movement physics and collision detection via SpriteKit
  • Four-stage enemy AI progression from passive to predictive
  • Score-driven gameplay focused on agility and survival
  • Swift
  • SpriteKit
  • iOS
Technical deep dive

Enemy AI Progression

Enemy behavior evolves across four distinct stages. In early levels, enemies don't fire at all. As difficulty increases they begin shooting at random intervals, then aim directly at the player's current position. At the highest level, enemies analyze the player's movement pattern and attempt to predict future position — firing ahead of where the player is heading rather than where they are. This created a natural difficulty curve that rewarded experienced players while remaining approachable early on.

Physics Engine

Movement and collision detection were built on SpriteKit, with custom physics tuning for responsive ship movement and precise missile collision behavior across varying enemy attack patterns.