Context
Between 2021 and 2022, our principal built two ERPs as an independent engineer: one for Friendly Staffing, a Canadian staffing agency, and one for Vivekananda Khadi Bhandar, a multi-branch Indian retailer. Different continents, same disease: operations that had outgrown spreadsheets while off-the-shelf ERP demanded the business bend to the software.
The problem
Mid-sized operations live in an awkward gap — too complex for spreadsheets, too specific for generic ERP templates. The staffing firm needed hierarchy-based permissions matching how approvals actually flowed; the retailer needed inventory, sales, invoicing, and HR unified across branches.
What we built
For Friendly Staffing: a scalable, fault-tolerant Django application with business logic embedded in a clean MVC structure, hierarchy-based permissions, and a minimalist front end — running on Docker and Kubernetes on DigitalOcean with PostgreSQL, tuned to maximize uptime inside a firm budget. The UX focus paid measurably: registrations rose 13%.
For the retailer: an internal ERP with careful state management for invoices and payments, an inventory module that raises alerts at critical stock points, and automated monthly sales statements and account summaries across every branch.
Key decisions
Modeling the org chart in the permission system — most custom-ERP value is encoding how the business actually works, and most ERP failure is pretending it works like the template.
Outcome
Two operations running on software shaped to them: measurable registration growth at the agency, and reporting automation that helped the retailer scale up — the origin of JES’s ERP practice.