Hi, my name is

Kiyarash Fazeli.

Senior Software Engineer

Dev Team Lead at Maktabkhooneh, based in Muscat, Oman. I work on Django backends, search and recommendations, and contribute to open-source machine learning libraries.

Kiyarash Fazeli profile image

About Me

Software engineer at maktabkhooneh.org for over ten years. I’ve worked on the Django backend, search, recommendations and the move to Kubernetes. I now lead the dev team.

I organize the Tehran Python User Group (2,000+ active members) and give regular talks there on using ideas from CS research in everyday engineering work.

Outside work I enjoy sitcoms (especially Seinfeld), World War II history, discrete math and cryptography, and applications of logic in computer science.

I go by Kiyarash; Mohammad is the name on my passport.

Skills I work with most:
  • Machine Learning
  • Natural Language Processing
  • Python
  • Django
  • Kubernetes
  • Linux

Experience

Dev Team Lead - Maktabkhooneh
2023 – present
I lead the backend and frontend engineers and run sprint planning and bug triage; my focus is API performance, Core Web Vitals, error tracking with Sentry, and the move to Nuxt 4.
SRE Team Lead
2020 – 2023
Rewrote search ranking, built a personalized-PageRank recommendation engine, rolled out CI/CD across the company, moved all services to Kubernetes and redesigned the interview process.
Senior Software Engineer, DevOps
2018 – 2020
Rebuilt disaster recovery for video delivery, spread infrastructure across two availability zones, and built an internal tool that automates the video edit-and-publish pipeline.
Software Engineer (part-time)
2015 – 2018
Built the Android app and migrated the backend to Django while studying for my B.Sc. and M.Sc.

Open Source

Python Array API
scikit-learn
Made LinearDiscriminantAnalysis work with array API inputs whose namespace and device differ, such as mixed NumPy and PyTorch/GPU arrays (merged).
Python Online ML
river
Added preprocessing.GapEncoder, a streaming version of skrub’s GapEncoder that maps messy categorical strings to latent topics one sample at a time; a worked example is in review.
Python Cython Recommender systems
implicit
Logistic matrix factorization (LMF) was quietly broken: its negative sampling barely showed the model any negatives. I found and fixed four bugs, including a clobbered loop variable that drew one negative instead of neg_prop × seen items and a loop bound tied to the embedding width instead of the catalogue size. Five regression tests now cover them (in review).
Python PostgreSQL
BeanQueue (bq)
Made workers exit promptly on Ctrl-C and other kill signals: the metrics and worker-update threads now get a thread-safe stop signal instead of being joined with a timeout and killed.
Python NLP
spaCy
Fixes for quadratic regex backtracking in URL matching, NER format autodetection, and the Greek and Portuguese affix rules (in review).

Projects

Python spaCy NLP
spacy-persian
Persian (Farsi) NLP pipeline for spaCy: named entity recognition, part-of-speech tagging, dependency parsing and lemmatization. The transformer pipeline beats Hazm’s published BERT dependency parser on the same treebank (LAS 90.79 vs 89.34, UAS 93.87 vs 92.46), with 97.6% POS and 97.3% lemma accuracy.
Python PyTorch spaCy
floret-torch
GPU training for floret (fastText + Bloom subword table) vectors in PyTorch, exporting spaCy-compatible .floret and .vec files. About 20× faster than CPU floret, and the vectors are just as good (WordSim-353 0.4740 vs 0.4738).
Python spaCy Transformers
Persian sentiment analysis (SnappFood)
spaCy text classifiers for SnappFood food-delivery reviews. Fine-tuned ParsBERT reaches 87.3 macro F, just behind the best published results (ParsBERT and mBERT, 87.9–88.1). A floret-vector CNN (86.2) beats the published ALBERT-fa fine-tune and every frozen-embedding result.
Python pandas
yfinance-ir
yfinance-shaped market data for the Iranian markets: TSETMC, Codal, TGJU and CPI.
JavaScript MkDocs
chess-tutorial
Interactive Farsi chess opening course built with MkDocs, chessground and Stockfish.

Talks

Reproducible Machine Learning Using DVC

PyData & PyCon Yerevan, 2026

A small DVC pipeline on 20 Newsgroups, built up over six git tags, with two deliberate bugs and their fixes.
Writing a WSGI Framework from Scratch

Tehran Python User Group workshop, 2024

Design of a Robust, Secure Backup System for Maktabkhooneh

2021

Machine Learning on Persian Text

WSS 2020 workshop

Transfer learning with word and document vectors (word2vec and doc2vec).

Education

2016 – 2019
M.Sc. Computer Science
Sharif University of Technology
Thesis: Doc2vec and word2vec language models in Persian.
2012 – 2016
B.Sc. Computer Science
Kashani University
Graduated magna cum laude.

Achievements

Rank 1, Ph.D. entrance exam

Iran's national Ph.D. entrance exam in Computer Science

Ranked 1st among about 300 participants.
Rank 13, M.Sc. entrance exam

Iran's national M.Sc. entrance exam in Computer Science

Ranked 13th among about 3,000 participants.

Get in Touch

Whether it’s about a role, a talk or one of my projects, email is the best way to reach me.