I was looking in the wrong place the whole time
For weeks the system ran without errors but flagged every single network flow as safe, even on a dataset full of attacks. The models weren't broken. The code wasn't broken. The problem was something I had overlooked from the very beginning — the preprocessing pipeline had never been properly fitted on the actual training data.

Quick update on Project Watchtower 🛡️
As part of my Computer Technology studies at JKUAT I've been building an ML-based system that detects network attacks.
For a while the system was running fine, no errors, no crashes , but it was predicting every single flow as safe. On a dataset full of attacks. I kept looking at the models, kept questioning everything, and the whole time the real issue was something I had overlooked from the very beginning.
I had never properly fitted the preprocessing pipeline on the actual training data. Once I went back, fixed that, and rebuilt it correctly — everything changed. The system started detecting attacks the way it was supposed to.
Sometimes the bug isn't where you're looking. Sometimes you have to go all the way back to the foundation.
The project isn't done yet, few more components to go.
But this felt like a major unlock and I had to share it.
2 comments