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.

Original CSV: 12 synthetic records
source_rowsession_idparticipant_idattendance_status
R01S01P001present
R02S01P002present
R03S01P003absent
R04S01P004present
R05S01P005Unknown (blank)
R06S01P002present
R07S02P001present
R08S02P002absent
R09S02P003present
R10S02P006present
R11S02P007present
R12S02P008absent

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.