One system for Faris Petrol’s customer service and field teams (calls, tickets, visits and messages) and for HR, where punches become shifts. Built with one other developer.
Faris Petrol issues Faris electronic cards and runs Clever, a loyalty app with partner stores. I joined in 2019 as a full-stack developer, and from September 2020 I built, with one other developer, the system its customer service, field and HR teams work in. One side is a CRM linked to the phone system and Clever; the other is HR, with attendance read from the company’s access-control devices.
The month's store visits in front, with the attendance sheet and the employees beside it.
Everything in the systemCRMcustomer service and the field teamContactscards, notes, ticketsand callsCallsthe caller on screen,every call loggedTicketsan owner, a priorityand remindersPartner storessynced from Clever,low-balance alertsVisit plansa monthly visit toevery active storeMessagesSMS from templates,WhatsApp in bulkHRHR and managersEmployeesimported fromspreadsheetsContractstype, payand datesShiftsday shifts and24-hour shiftsLeave & holidaysby type, for eachemployeeAttendancepunches from theaccess-control devicesReportshours worked, leaveand holidaysboth sides shareNotifications, in the system and team chatRoles and permissions: who sees what
CRM & HR at a glanceAgentsField teamHRManagersone web system · roles decide who sees whatCRMContactsCallsTicketsVisitsStoresMessagesHREmployeesContractsShiftsLeaveHolidaysAttendanceNotifications: in the system and team chatPhone systemshows the caller,logs every callCleverpartner stores, branches,balances, customersMessagingSMS, WhatsAppand TelegramAccess-control devicesthe people on each deviceand their punchesDatabaseQueues & schedulessyncs Clever, sends messages,imports and pairs punches
One system for every team, with the outside systems feeding it.
Roles decide what each person sees, from station supervisors to the field team and HR. Queues and schedules do the slow work, so nobody waits on screen for a sync or a message to send.
Calls and contactsWhen a call comes inCustomerPhone systemCRM: who isthis number?known: the agent openstheir record and callsunknown: the numberis kept for laterWhen the call endsPhone systemreports itCall log: in,out or missedlogged on the contact,with agent and times
The agent knows who is calling before answering.
An unknown number is kept, so an agent can link it to a contact later.
From punches to shiftsAccess-controldeviceseach person on adevice is linkedto an employeeImportthe punchespulled for a periodand kept rawPair theminto shiftsthe shift says whenit starts, ends andon which dayAttendanceHR fixes a missedpunch, or re-runsa day after an outageReportshours worked,leave and holidaysOne rule, for a day shift and a 24-hour shiftday 1day 2midnightday shiftinoutone shift24-hour shiftinoutone shift, across midnight
A day shift and a 24-hour shift go through the same rule.
Each employee’s shift tells the rule when it starts and on which day it ends. After a power or network outage, HR re-runs the period.