Skip to content
jcbnesh.com — home, Yagub Ismayilli
About

So, who am I?

Yagub Ismayilli, Data Scientist / AI Engineer / SQL Developer

Data Science and AI specialist with hands-on experience fine-tuning Transformer models across two industrial research internships — handwritten text recognition for Azerbaijani, and a customer-support chatbot. Works in PyTorch, Hugging Face Transformers, TensorFlow, Pandas and NumPy, on top of strong Oracle SQL and PL/SQL foundations. Double master's degree in Data Science and Artificial Intelligence. Also builds and ships full-stack applications in React and Node, which helps in delivering models as usable products.

Based in
Baku, Azerbaijan
Role
Data Scientist / AI Engineer / SQL Developer
Languages
Azerbaijani (Native), Turkish (C1), English (B2), German (B1)

Short version

I'm Yagub Ismayilli. I work on making machine learning useful for Azerbaijani — a language most models were never trained to read.

I finished a double master's in Data Science and Artificial Intelligence at UFAZ and the University of Strasbourg in 2026. My thesis built a handwritten text recognition system for Azerbaijani and got the character error rate down to 3.47%, about five times better than the baselines I trained against. The year before, I fine-tuned a conversational model into a customer-support chatbot inside a 4 GB GPU.

I also build web applications in React and Node, and I have a strong Oracle SQL and PL/SQL background. That combination is deliberate: a model nobody can use isn't finished.

Longer version

How I got here

I studied Computer Science at Khazar University, finishing in 2023. In my last semester there I took a class called Introduction to Neural Networks, taught by Izat Shahsenov — who runs Waverity. That class is the reason for everything on this page.

The first reaction was the obvious one: computers can actually think. Then you look at what is underneath and it is solid mathematics, all the way down. Somehow that made it more interesting rather than less. It was also genuinely hard — a lot of maths, and a new topic every single lesson, arriving faster than I could get comfortable with the last one. I could not stop being curious about it.

On Izat's recommendation I went to UFAZ for the master's in Data Science and Artificial Intelligence. I went in wanting computer vision and large language models, and I have ended up working on the seam between them — a handwriting recognition system is a vision problem and a language problem at the same time, and the language half is where the difficulty lives when the language is Azerbaijani.

Alongside the Khazar degree I taught programming at Meridian Course — data structures and algorithms, mostly reviewing student code and helping people debug. Teaching a thing is the fastest way to find out whether you actually understand it.

What I've been working on

Handwritten Azerbaijani. My master's thesis, done inside the IT department at Evler.az. They hold handwritten documents — rental applications, ownership forms, client notes — that need to become searchable text, and no OCR system reads Azerbaijani handwriting well. It is a low-resource language: the annotated data does not exist.

I started from the LocalDoc Azerbaijani synthetic handwriting dataset, which is public, because at the beginning of the project there was nothing else large enough to train on. Fine-tuning TrOCR on 25,000 synthetic lines reached 6.40% character error rate. Then I collected and annotated 5,000 lines of real Azerbaijani handwriting — the part that did not exist before — and ran a second fine-tuning stage on top. That took it to 3.47% CER, 10.4% word error rate, and 75.7% of lines transcribed exactly right. The baselines I trained to compare against, TrOCR-small and CNN–BiLSTM–CTC, sat at 21.44% and 17.23%.

What I would emphasise is the ratio, not the number. Going from 5,000 to 25,000 synthetic lines — twenty thousand more images — improved the error rate by about 1.89×. Adding five thousand real ones improved it by a further 1.84×. Four times fewer images for the same proportional gain. Where the data came from mattered about as much as how much of it there was, and that is the thing I would tell anyone starting a low-resource problem.

The other lesson was a negative result. I tried to clean up the model's output with hand-written correction rules for Azerbaijani-specific characters, and it made the model measurably worse — 6.40% CER became 6.56%. A rule that fixes ə → a where the model got it wrong also breaks it where the model got it right, and no substitution table can tell those cases apart. I kept the raw output and wrote up why.

A chatbot in 4 GB. In early 2025 I fine-tuned DialoGPT-small, a 117M-parameter GPT-2 variant, into a customer-support assistant. The corpus came from the 3M-tweet Twitter Customer Support dataset; I rebuilt the conversation threads and pulled out about 20,000 clean prompt–response pairs.

The constraint was the interesting part. An RTX 3050 with 4 GB of VRAM rules out most of the obvious approaches. Mixed precision, a batch size of two and a 64-token sequence limit got it to fit, and loss went from 4.6 to 3.3 with no overfitting.

The part I care about is the write-up of what it couldn't do: no memory past a single turn, a register shaped by the one brand whose support account the data came from, and no factual grounding at all, so it will state something false exactly as fluently as something true. Profiling the corpus is what made that clear — most of the agent responses in the dataset are variations on "please send us a DM", so the model learned the sound of support without learning to resolve anything. That section mattered more to me than the loss curve.

Freelance work, since 2023 — mostly data analytics, plus some web development when a client needs the analysis to become something they can click on.

Also

I speak Azerbaijani natively, Turkish at C1, English at B2 and German at B1. Outside the technical work I have done a stretch of jobs that had nothing to do with code — head bartender at a high-volume venue, inventory accounting, running logistics for medical conferences.

Last updated 2026-08-17