Selected work

Case study 10

Attendance. Daily operations inside Discord.

An internal HR platform for check-in, remote work, leave, and daily reporting. The team already worked in Discord. The record lives outside the chat.

Sector
People operations across eight departments
Type
Internal HR bot and attendance record
Role
End-to-end owner: HR rules, Discord experience, data model, persistence, deployment, and tests

The business problem

ITHRAccountingBusiness DevelopmentMedia ProductionAccounts ManagementHelp DeskMedia Buying
  • Managers could not see who was in the office, who was remote and why, and who arrived late.
  • Accept or reject had no consistent record.
  • Leave had no path from the employee to the team leader and then to HR.
  • Daily updates were unstructured.
  • A new employee meant repeating rules and task lists by hand.

What the system changes

How long a morning round used to take is not listed.

Check-in in a private message

A second check-in the same day is blocked. Anyone not on the roster is blocked.

On-site or remote

Remote work requires a written reason before the request can be sent.

One lateness rule

11:00 Cairo time, with a 10-minute grace window. The record stores On Time or the delay.

Approval makes it official

An authorized admin approves it. The employee is notified. The row stores the approver.

A live morning board

It shows who is present, who is late, and who is remote. Names are not shown here.

One daily report

Tasks are predefined per section. The report is posted and stored in Sheets, in a company index and on the department sheet.

Leave has two decisions

The team leader can approve, reject, or pass it up. HR records the final decision.

Hiring from Discord

The new hire receives the rules and the section task list. HR can resend tasks to one person or to the roster.

Check-in

  1. 01Check-in in a direct message
  2. 02Active, and not already checked in today
  3. 03On Site, or Remotely plus a reason
  4. 04Compute delay against the start and the grace period
  5. 05Admin chooses Allow or Reject
  6. 06On allow: save date, time, type, delay, and approver, and update the board

Technical architecture

BotPython 3.11 and discord.py
RecordGoogle Sheets through gspread, with a service account
RunDocker, set up for AWS ECS Fargate or EC2. The token and Google credentials stay outside the image
LayersDomain, application, infrastructure, and Discord presentation
TestsDelay rule, check-in, reports, holidays, the board, and the Sheets repositories