Type something to search...

Attendance Tracking from Microsoft Teams Report

Summary

I built this to stop matching Microsoft Teams attendance by hand. It normalizes participant names, fuzzy-matches them against the official database, and syncs the result through a Streamlit web application.

Problem

Tracking attendance from Microsoft Teams used to mean manually lining up an attendance report against a participant database.

What made that painful:

  • Participant names never agree with each other
    • People get abbreviated
    • Some show up as first name–last name only
    • Some arrive with extra labels like (Unverified), (External), (guest)
    • Capitalization, punctuation, and formatting all drift
  • There was a lot of it
    • 10+ classes, all handled the same way
    • Several sessions per class, each with dozens of participants
  • Doing it by hand is slow and fragile
    • It takes hours, and human error is basically guaranteed
    • Auditing the result is hard, and keeping it consistent is harder

So attendance tracking quietly turned into an operational bottleneck — a lot of time and effort spent on a task nobody should be spending time on.


Solution

I built an Attendance Synchronization & Matching System in Python. It:

  • Ingests Microsoft Teams attendance reports
  • Preprocesses and normalizes participant names
  • Matches participants against the official database using fuzzy string matching
  • Generates attendance summaries on its own (present/absent plus statistics)
graph LR
    A[Upload Participant DB] --> B[Upload Teams Report]
    B --> C{Process}
    C --> D[Normalize Names]
    D --> E[Fuzzy Match]
    E --> F[Set Status]
    F --> G[Download Results]

Workflow:

  1. Upload the participant database
  2. Upload the Microsoft Teams attendance report
  3. The system takes it from there:
    • Cleans and standardizes participant names
    • Applies fuzzy matching with a threshold you can tune
    • Determines attendance status
    • Aggregates attendance data across sessions
  4. Download the results — no manual cleanup afterwards

It runs as a Streamlit web application, so the people who actually need it never touch Python.


Impact

  • ⏱️ Time back
    • Work that took hours now takes seconds
  • 📉 Fewer mistakes
    • Name matching is standardized and consistent
  • 📊 Clean, structured attendance data
    • Easier to analyze, report, and audit
  • 🚀 Reusable
    • Runs across multiple classes with no workflow changes
  • 💼 Ready for real use
    • Fits Edu-Tech programs, training programs, and stakeholder reporting

Tech Stack

  • Python
  • Pandas – data processing and aggregation
  • RapidFuzz – fuzzy string matching
  • Regex (re) – text preprocessing and normalization
  • Streamlit – interactive web application
  • Microsoft Teams Attendance Report – data source

Extras (Optional)

  • The fuzzy matching threshold is configurable, so it adapts to how messy the data is
  • Modular code structure, which makes it easy to extend
  • What I’d add next:
    • CSV / Excel export
    • Analytics dashboard
    • Direct database or LMS integration
    • Automated attendance reporting