Engineering notes
Building production ML and software systems.
Engineering notes from real systems I build: machine-learning pipelines, SaaS architecture, background jobs, data ingestion, decision systems, deployment, and the trade-offs behind them.
Building a Multi-Tenant SaaS with FastAPI and PostgreSQL
How I structure workspace isolation, permissions, background jobs, billing and audit state when turning a FastAPI application into a multi-tenant SaaS.
- FastAPI
- PostgreSQL
- SaaS
What Went Wrong While Ingesting TED Procurement Data
The data-model and reliability problems that shaped TenderWise's TED ingestion pipeline, from notice versions and lots to multilingual fields, retries and semi-structured qualification criteria.
- Data Engineering
- ETL
- PostgreSQL
Temporal Validation for Late-Payment Prediction
Why late-payment prediction needs more than a chronological train/test split, and how I reconstruct what was actually knowable when each Payrithm prediction would have been made.
- Machine Learning
- Time Series
- Scikit-learn
Operating PostgreSQL, Redis and Celery on an 8 GB VPS
What running PostgreSQL, Redis, Celery workers and multiple SaaS applications on an 8 GB VPS taught me about resource budgets, concurrency, queues and operational simplicity.
- DevOps
- PostgreSQL
- Redis
Building TenderWise: Rules-Based Bid/No-Bid Intelligence for European Tenders
How I designed TenderWise as a multilingual procurement SaaS that ingests TED notices, applies deterministic profile matching, separates relevance from qualification, and turns tender analysis into collaborative bid preparation.
- Software Engineering
- FastAPI
- React
Building an Invoice Late-Payment Predictor with Python and Scikit-learn
How I designed Payrithm’s machine-learning pipeline to predict late invoice payments without data leakage, evaluate probability quality, and turn model outputs into actionable collection priorities.
- Machine Learning
- Scikit-learn
- Python
Feature Engineering for Machine Learning: Practical Techniques
The often-overlooked craft of transforming raw data into informative features — covering encoding, scaling, missing values, interactions, and selection.
- Feature Engineering
- Machine Learning
- Scikit-learn
Diffusion Models Explained: The Math Behind Stable Diffusion
How denoising diffusion probabilistic models learn to generate images by reversing a gradual noising process — explained from the ground up.
- Generative AI
- Diffusion Models
- Deep Learning
Time Series Anomaly Detection with LSTMs
How to build a robust anomaly detection pipeline for multivariate sensor data using LSTM autoencoders in PyTorch, with practical tips on thresholding and deployment.
- Time Series
- LSTM
- Anomaly Detection
Convolutional Neural Networks: How Machines See
A ground-up explanation of CNNs — convolution, pooling, receptive fields, and the architectural choices that made deep learning work for images.
- Computer Vision
- CNN
- Deep Learning
Gradient Descent Optimizers: From SGD to Adam
A practical guide to the most widely used optimization algorithms in deep learning — what they compute, why they differ, and when to use each one.
- Deep Learning
- Optimization
- PyTorch
Understanding Transformers: The Architecture Behind Modern NLP
A deep dive into the self-attention mechanism and how transformers replaced recurrent networks to become the foundation of modern language models.
- NLP
- Deep Learning
- Transformers