An internal app that grew from a set of guides into the operations team’s daily tool
It started as written guides for the operations team. It now holds their dashboards, guides and forms, plus the scheduled jobs that keep the data fresh, behind a single company sign-in.
How the pieces connect. Pick a system to trace it step by step
- Data comes from the BI tool, the CRM, the helpdesk and internal APIs.
- CRM automation turns it into tasks and Slack messages.
- Serverless functions write it to Postgres, which the dashboards read, and send alerts to Slack and WhatsApp.
- Production alerts become support tickets; merchant forms become live setups.
- Separately, Python jobs turn public web data into monthly reports.
Shape of the system
A React app on Netlify with serverless functions behind it. Some run on a schedule and some serve forms, approvals and live reads. Data lives in Postgres behind row-level security.
The functions read from the company’s BI, CRM and helpdesk tools and write back out to the places people already work, such as Slack and email.
Running it
I also run it: deployments, credentials, access and fixes. Each time something went wrong I added a guard so it could not happen the same way again, such as regression tests and checks that run before a deploy.
Decisions
- Compare complete periods only. Partial days are where dashboards mislead.
- Protect the data on the server, not just the page in the browser.
- Test the logic offline and build page layouts against mock data, so day-to-day work never needs production credentials.
Before and after
| Before | After | |
|---|---|---|
| Where the team found numbers and procedures | Spreadsheets and chat threads | One internal app |
| Data refresh | Manual exports | Scheduled, and runnable on demand |
This describes internal work at qlub. Names, internal rules and business data are left out on purpose. If you want the detail behind any of it, email mikaeel2013@gmail.com and I will walk you through it.