Synthetic data · No sign-up
NGO attendance reporting: a small AI workflow example
A duplicated row and a blank attendance status can change an activity report. Try this 12-row example to see what staff need to check before drafting the summary.
This is a synthetic teaching example. Every participant ID and record is invented. It contains no real beneficiary information and is not a client case study or evidence of time savings.
1. Start with the input
Download synthetic-attendance.csv: 12 rows across two sessions, S01 and S02. Columns are source_row, session_id, participant_id and attendance_status. “present” means attendance is recorded, “absent” means absence is recorded, and a blank means unknown. R01–R12 are permanent source references, not spreadsheet line numbers. The CSV header is line 1; R01 is line 2.
| source_row | session_id | participant_id | attendance_status |
|---|---|---|---|
| R01 | S01 | P001 | present |
| R02 | S01 | P002 | present |
| R03 | S01 | P003 | absent |
| R04 | S01 | P004 | present |
| R05 | S01 | P005 | Unknown (blank) |
| R06 | S01 | P002 | present |
| R07 | S02 | P001 | present |
| R08 | S02 | P002 | absent |
| R09 | S02 | P003 | present |
| R10 | S02 | P006 | present |
| R11 | S02 | P007 | present |
| R12 | S02 | P008 | absent |
2. Check before counting
Count attendance by participant AND session. P001 attending two sessions is two attendance instances but one unique attendee. A repeated participant/session pair needs review. A missing status is neither attendance nor absence.
3. Make the staff decisions visible
- R02 and R06 both record P002 as present at S01. For this demo, treat R06 as a duplicate and count R02 once. Keep the original CSV and record the decision. In real work, confirm the duplicate against the source attendance record first.
- R05 records P005 at S01 with no status. Leave it unresolved; ask the responsible colleague to check the original record. Do not guess or silently mark it absent.
4. Check the result
S01: 3 attendance instances (R01, R02, R04), 1 absence (R03), 1 unknown (R05).
S02: 4 attendance instances (R07, R09, R10, R11), 2 absences (R08, R12), no unknowns.
Overall: 11 participant/session records after excluding one duplicate. These comprise 7 confirmed attendance instances, 3 absences and 1 unknown. The 7 attendance instances involve 6 unique attendees: P001, P002, P003, P004, P006 and P007. There are 8 distinct participant IDs in the input; that is not the attendance headcount.
Checked report paragraph
“Across two sessions, the synthetic dataset records 7 confirmed attendance instances involving 6 unique attendees. One duplicated entry was excluded from the count. Three participant/session records show absence, and one attendance status remains unconfirmed. That unconfirmed record is excluded from both confirmed attendance and absence totals.”
Where AI fits
The downloadable Python checker uses explicit rules; it does not call an AI service. AI can help draft a plain-language paragraph from the checked totals and exception list. It must not infer the missing status, decide whether real records are duplicates, or invent explanations. A staff member checks every figure, source reference and caveat before using the draft. This is a teaching example, not a deployed integration or a claim about production security.
Try it with your team
Download the synthetic CSV and blank bilingual review checklist. No upload or real beneficiary data is needed to use this example. For real workflows, agree your organisation’s data-handling and tool-approval requirements first.
Practise with your team.
Label Less is a Hong Kong data annotation and human-review social enterprise. Enquire about free practical AI workflow training.
Describe the task you want to practise; please do not email beneficiary records. Training is free. Paid tools and production implementation are separate and may involve additional costs.