← Mikaeel Faraz

An internal app that grew from a set of guides into the operations team’s daily tool

Role
Designed and built it; run it in production
Users
Operations, account management, support and leadership
Period
Apr 2026 to now
Stack
React, Vite, Netlify Functions, Supabase Postgres, Google sign-in
Status
In production

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 flow from sources through logic and storage to the places people see the resultssourceslogicstorewhere people see itBI toolCRMHelpdeskInternal APIsMerchant formsProduction alertsPublic web dataCRM automationServerless functionsPython jobsPostgresBackground jobsCRM tasksDashboardsSlack and WhatsAppSupport ticketsMerchant setupReports
trace
  1. Data comes from the BI tool, the CRM, the helpdesk and internal APIs.
  2. CRM automation turns it into tasks and Slack messages.
  3. Serverless functions write it to Postgres, which the dashboards read, and send alerts to Slack and WhatsApp.
  4. Production alerts become support tickets; merchant forms become live setups.
  5. 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

BeforeAfter
Where the team found numbers and proceduresSpreadsheets and chat threadsOne internal app
Data refreshManual exportsScheduled, 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.