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:
- Upload the participant database
- Upload the Microsoft Teams attendance report
- 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
- 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