Naeem Nagori · Data analyst & curious mind

Open to opportunities

Curiosity first.
Clarity follows.

I’m Naeem. I bring a marketing mind to data: asking better questions, finding the patterns, and making the answer useful.

Based in Ahmedabad, India Shaped by Toronto

From curiosity to convergence

Found it · the lowest error on the whole surface.

Business questions.
Technical follow-through.

SQL / Python / Power BI / Machine learning

01 / A few questions I followed

Less guesswork.
More understanding.

8 projects across analytics and machine learning. Start with the hotel study: it’s where my interest in people meets my work with data. Explore the methods and code in each project.

Showing 8 projects
  1. SQL · Database design02 / 08
    Illustration · train booking schema, three related tables

    02SQL · Database design2025

    Booking and retail databases in SQL

    Two MySQL databases that keep their own data clean, plus the queries I used to analyse them.

    databases designed from scratch
    2
    triggers and stored procedures
    5+
    • MySQL
    • Triggers
    • Stored procedures
    • CTEs
    • Window functions
    Inside the projectProblem, method

    Problem

    If a booking database has mistakes in it, every report built on top of it has the same mistakes. Ages go out of date, a changed passenger ID leaves other tables pointing at nothing, and one duplicated employee can double a headcount.

    Method

    1. For the train booking system I built three linked tables, with triggers that work out each passenger's age from their date of birth and update IDs everywhere when they change.
    2. I added a five-character rule for Passenger_id and proper foreign keys, so bad rows can't get in at all.
    3. I made backup tables and an EMPTY_DATA() procedure, so I could reset a test run with one call.
    4. For the retail store data I ranked stores and employees, averaged sales by product, and matched up staff records using joins and DISTINCT.
    5. I removed duplicate employees directly in the table instead of copying the clean rows into a second one.
  2. Business intelligence03 / 08
    Illustration · churn trend, and the same rate cut three ways

    03Business intelligence2025

    Customer churn dashboard

    A Power BI report that shows not just how many customers left, but who they were and where they were.

    views in one report
    6
    breakdowns: demographics, plan, geography
    3
    • Power BI
    • Power BI Service
    • DAX
    Inside the projectProblem, method

    Problem

    A single churn number doesn't tell a manager much. They need to know which customers left, where they were and what they had in common. Without that, the report gets a nod in a meeting and is never opened again.

    Method

    1. I used a public churn dataset from Kaggle, so anyone can check my numbers against the source.
    2. I showed churn over time rather than as one figure, so there's always something to compare against.
    3. I broke the rate down by demographics, subscription plan and geography to see where it was highest.
    4. I kept every chart cross-filterable and exportable, so people can dig into it themselves.
  3. Deep learning · Classification04 / 08
    Illustration · feed-forward classifier trained on SMOTE-balanced data

    04Deep learning · Classification2024

    Telecom churn prediction

    Most customers don't leave, so a model can look accurate while missing the ones who do. I built this one to catch them.

    used to balance the training data
    SMOTE
    metrics used to judge the model
    5
    • Python
    • PyTorch
    • scikit-learn
    • SMOTE
    Inside the projectProblem, method

    Problem

    Telecom churn data is very unbalanced. A model can get a high accuracy score just by predicting that nobody leaves, and learn nothing useful about the customers who actually do.

    Method

    1. I explored the data first, using count plots and density plots to see how each column was spread.
    2. I encoded the categorical columns and scaled the numeric ones, so no single feature dominated training.
    3. I used SMOTE to create more examples of customers who churned, so the model had enough of them to learn from.
    4. I built a neural network in PyTorch and judged it on accuracy, precision, recall, F1 and AUC together, not accuracy alone.
  4. Regression05 / 08
    Illustration · predicted against actual sale price

    05Regression2024

    Toronto-area house price model

    How well can location, timing and listing activity predict what a house in the Toronto area sells for?

    R² with Gradient Boosting
    0.990
    R² with a neural network
    0.984
    cross-validation
    10-fold
    • Python
    • scikit-learn
    • Gradient Boosting
    • Neural network
    • KNN imputation
    Inside the projectProblem, method, sources

    Problem

    Toronto-area housing data mixes location, market timing and listing activity in one table. A careless model just memorises the neighbourhoods it has already seen instead of learning how prices actually move.

    Method

    1. I built features around four things: location, sales and prices, listing activity (new listings and the sale-to-list ratio), and timing (year and quarter).
    2. I filled in missing numbers with KNN imputation instead of throwing rows away, and one-hot encoded the categories.
    3. I compared linear regression and decision trees with a Gradient Boosting model, then tried a neural network with early stopping to see if it did any better.
    4. I checked the final model with ten-fold cross-validation rather than trusting a single train and test split.

    Sources

    • 0.990: 0.9898 on the test set
    • 0.984: 0.9844 with early stopping
  5. Classification · Ensemble06 / 08
    Illustration · three models vote; each verdict comes with its reasons

    06Classification · Ensemble2025

    Explainable spam detection

    A spam filter that tells you why it flagged an email, so people can actually trust it.

    accuracy on test data
    96-97%
    models voting together
    3
    engineered features
    15+
    • Python
    • scikit-learn
    • Naive Bayes
    • Logistic Regression
    • SVM
    • Streamlit
    Inside the projectProblem, method, sources

    Problem

    When a real email gets marked as spam with no explanation, people tend to loosen the filter. That's exactly when the dangerous phishing emails start slipping through.

    Method

    1. I combined three models (Naive Bayes, Logistic Regression and SVM), so no single model's blind spots decide the result.
    2. I engineered more than fifteen features beyond the text itself, like word and character counts, links and domains, urgent or money-related words, HTML structure and punctuation.
    3. I added a confidence score, so borderline emails can go to a person instead of being decided by a hard cutoff.
    4. Every prediction comes with a reason in plain English, and the whole thing runs in a Streamlit app that keeps track of its own performance.

    Sources

    • 96-97%: README: “~96-97% on test data”
  6. Computer vision · CNN07 / 08
    Illustration · one scan in, one of four ordered stages out

    07Computer vision · CNN2025

    Alzheimer's stage classifier

    It reads an MRI scan and places it in one of four stages of Alzheimer's, instead of just saying yes or no.

    validation accuracy
    99.21%
    test accuracy
    99%
    stages it can tell apart
    4
    • Python
    • TensorFlow
    • CNN
    • Streamlit
    Inside the projectProblem, method, sources

    Problem

    Most image classifiers only say whether something is there or not. With dementia that isn't very helpful, because catching it early matters most, and a plain yes or no can't show what stage someone is at.

    Method

    1. I trained the model to tell four stages apart: non-demented, very mild, mild and moderate.
    2. I built a convolutional neural network and trained it on the Well-Documented Alzheimer's Dataset from Kaggle.
    3. I published the model under an MIT licence and put it online, so anyone can try it on a real scan.

    Sources

    • 99.21%: README
    • 99%: README
  7. Reinforcement learning08 / 08
    Illustration · cumulative regret as arm rewards drift

    08Reinforcement learning2026

    Multi-armed bandits, by hand

    I wrote eight bandit algorithms from scratch and tested how they cope when the rewards keep changing.

    algorithms written from scratch
    8
    test environments, 2 of them drifting
    4
    • Python
    • NumPy
    • pytest
    • ruff
    • uv
    Inside the projectProblem, method

    Problem

    Bandit algorithms are usually tested in settings that never change, where careful strategies look clever. I wanted to see what happens when the rewards drift over time, because that's what real systems have to deal with.

    Method

    1. I implemented eight strategies myself: epsilon-greedy, UCB, KL-UCB, variance-aware UCB, Beta-Bernoulli and normal Thompson sampling, forgetting Thompson sampling, and sliding-window UCB.
    2. I built test environments where the rewards drift at two different speeds, plus steady ones to compare against.
    3. I wrote one shared evaluation setup with paired statistics, so every algorithm is tested under exactly the same conditions.
    4. I made the whole study reproducible, with pytest and ruff checking the code on every change.

More on GitHub (opens in a new tab)

02 / The person behind the projects

Marketing taught me to ask.
Data taught me to look closer.

I studied marketing at Seneca Polytechnic in Toronto, and I’ve always loved the point where business questions meet data. Marketing taught me to ask what a decision really needs before I reach for a chart.

I taught myself the technical side along the way: SQL, Python, Power BI and machine learning. That turned into four certificates and the eight projects above, all while I was working at Tim Hortons in Canada. Now I’m looking for my first data role, ideally somewhere people actually use the dashboards to make decisions.

Download résumé (PDF, opens in a new tab)
Looking for
Junior data analyst, data scientist or marketing analytics roles
Based in
Ahmedabad, India
Education
Marketing diplomaSeneca Polytechnic, 2025
Experience
Team Member, Tim HortonsCanada · Jul 2025 to Aug 2026
Languages
English, Hindi, GujaratiEnglish at C1 (IELTS 8.0)

What I bring to a team

  1. I think about the business first

    My diploma is in marketing, so before I touch the data I want to know who the customer is and what decision the numbers are meant to help with.

    Seneca diploma, HubSpot Inbound Marketing

  2. I can do the whole job

    I can take a messy spreadsheet all the way to a clean dataset, a SQL database, a Power BI report or a trained model. All of my code is on GitHub if you'd like to look.

    8 projects, Google Data Analytics

  3. I'm easy to work with

    I speak and write English fluently, and I spent over a year working shifts in a busy team at Tim Hortons in Canada. I turn up, I get things done, and I can explain what I did.

    IELTS 8.0, Tim Hortons 2025 to 2026

My toolkit, with the work to back it up

Skills

Click a number to see the project where I used that skill.

Data analysis

  • SQL (joins, CTEs, window functions)02
  • Data cleaning & preparation010405
  • Exploratory data analysis0104
  • StatisticsTOPS, Google
  • Advanced Excel & spreadsheetsTOPS, Google

Business intelligence

  • Power BI & DAX03
  • Dashboard design & reporting03
  • KPI & trend tracking03
  • Data visualisation010308
  • TableauGoogle, Udemy

Marketing intelligence

  • Customer segmentation & profiles01
  • Churn & retention analysis0304
  • Funnels, cohorts & A/B testingSeneca
  • Google Analytics & Ads, SEOSeneca
  • Inbound marketing & content strategyHubSpot
  • Data-driven marketingHubSpot, Seneca

Machine learning & AI

  • Predictive modelling040506
  • Clustering (K-Means, DBSCAN, HDBSCAN)01
  • Deep learning (PyTorch, TensorFlow)0407
  • Model testing & validation0405
  • Explainable predictions06

Tools

  • Python010405060708
  • pandas, NumPy & scikit-learn010506
  • Plotting (Matplotlib, Seaborn, Plotly)010405
  • MySQL02
  • Streamlit apps0607
  • Git & GitHubEvery project
  • Microsoft Office (Word, Excel, PowerPoint)Seneca, TOPS

Business & people

  • Turning business questions into analysis0103
  • Recommendations for decision-makers01
  • Explaining results in plain English0306
  • Attention to detail & data quality02
  • Clear writing & presenting (C1 English)IELTS 8.0
  • Teamwork & reliability under pressureTim Hortons
  • Working across culturesIndia & Canada

Education & certifications

My diploma taught me how businesses think, and these 4 certificates taught me the technical tools. You can check each one on the issuer’s site.

English
8.0/ 9IELTS General TrainingCEFR C1 · Jun 2025
School
Higher secondary, CommerceM.S. Public Higher Secondary School · 2021 to 2022

Certificates

  1. Sep 2025

    Google Data Analytics

    Professional Certificate, Google · Coursera

    Covered: Data lifecycle, SQL, Spreadsheets, Tableau, Visualisation

    Course page, View the Google Data Analytics programme (opens in a new tab)
  2. 2025

    Data Science, ML, DL & NLP Bootcamp

    Complete course certificate, Udemy

    Covered: Machine learning, Deep learning, NLP, Tableau

    Verify, Verify this Udemy certificate (opens in a new tab)
  3. Sep 2024

    Inbound Marketing

    Professional certification, HubSpot Academy

    Covered: Content strategy, Marketing funnel, Data-driven marketing

    Course page, View the HubSpot Inbound Marketing course (opens in a new tab)
  4. Oct 2023

    Data Analytics

    Classroom training & certification, TOPS Technologies

    Covered: Python, Statistics, Excel, SQL, Tableau

    Course page, Visit TOPS Technologies (opens in a new tab)

Your next question. Our starting point.

Good work starts
with a conversation.

Whether you’re hiring for a data role or just have a dataset you’d like a second opinion on, I’d love to hear from you. Email is the quickest way to reach me, and I usually reply within two days.

Or send a message