People & recruitment
- Staff & payroll: employees, positions, payroll, permits, suspensions, welfare and statements
- Recruitment: job postings, applications, interviews and guarantor documents
- Users: profiles and invite-only registration
Case study · SCusH
SCusH, short for Stock, Customer and Human resource, runs the day-to-day operations of a beverages distributor: recruitment, payroll, warehousing, sales accounting and cash, in one place.
Why it exists
Stock, customer records, payroll and policies were handled across separate tools. That meant duplicate entry, slow reports and constant reconciliation errors.
Each part of the business got its own focused module on a shared database, with payroll, KPI tracking, documents, notifications and report emails automated.
Fewer bottlenecks, reports on time, and month-end figures that can't change behind anyone's back, so leadership decides on reliable data.
What's inside
The part I'm proudest of
Accounting software is only trusted if the numbers can't quietly change. SCusH enforces that in the system itself, not by policy.
Once a month is closed, it's locked, and the record keeps who locked it and when.
Changes to trade records are logged with the user, the time and exactly what changed.
Cash disbursements, material requests, customer credit and document re-uploads each need someone to approve them.
An employee can't be paid twice for the same period. The database itself refuses it.
Idle sessions sign out after ten minutes, because shared office computers are a real risk.
class Payroll(models.Model):
staff = models.ForeignKey(Employee, ...)
period = models.CharField(...)
...
class Meta:
constraints = [
models.UniqueConstraint(
fields=['staff', 'period'],
name='unique_payroll_staff_period',
)
]
# a second payroll run for the same person and
# month is rejected by PostgreSQL, not just the form
Under the hood
First version goes into production
Locked periods, audit log, the payroll guarantee and a new recruitment module
Still in daily use, still evolving
The dashboard illustration uses placeholder figures. No real company data is shown.