Skip to content
Open to remote roles and contracts

Johnson
Bolhayon

Data automation engineer / full-stack web developer

I turn repetitive, high-volume data work into systems teams rely on.

9+ yrs
data automation
140+
franchises served
In production
on Google Cloud

PWX Tool Trackers

01 / Flagship

A support team managing product, inventory and cost operations across 140+ franchises in three countries was running on spreadsheets, manual POS exports and one-off scripts. Every monthly report meant dozens of downloads per store, and nothing recorded who changed what.

Sole developerPoolwerxIn production since Jul 2026Next.js · Supabase · Google Cloud

Designed, built and operate an internal web platform end-to-end as the sole developer, AI-assisted with Claude Code. Next.js 14 App Router, TypeScript, Tailwind and Supabase (PostgreSQL), shipped as a Docker container on Google Cloud Run behind a custom HTTPS domain with Cloud Build deploys, Secret Manager and Cloud Scheduler jobs. Every export engine is verified cell-for-cell against the manual report it replaces before it ships.

In daily production use since July 2026: a suite of Lightspeed POS tools, a no-code tracker builder, Jira / Freshdesk / Confluence in one dashboard, Gemini-powered ticket summaries, and a platform-wide audit log with one-click undo.

140+

franchises

AU, NZ and US

78

API routes

~55k

lines of TypeScript

12

tools

~150

store tokens secured

~130k

support tickets mirrored

3 yrs

of exports in minutes

0

diffs vs the legacy reports

Inside the platform

Four screens, recreated in the product's own dark chrome and running on synthetic data - the real tool never leaves the corporate network.

The Dashboard: the signed-in user's open tasks and tickets beside a tool-usage leaderboard counting fetch-push sessions.
Sales Export: months stream through a bounded worker pool, each writing a sales and item-count workbook, then the run is verified against the legacy export.
The no-code tracker builder: typed columns, multi-assignee members, and a status set to Completed stamps the completion date server-side.
The audit log: every write stores a before and after snapshot, and a wrong edit is restored with one click.

How it is wired

The browser never touches the database. Every read and write is a Zod-validated server route; secrets stay on the server.

Platform architectureBrowser and NextAuth talk only to server API routes. Routes read Secret Manager, write Supabase Postgres under default-deny row-level security, log every write to the audit table, and call the external systems. Cloud Scheduler triggers the sync routes.BrowserNext.js App Router · SWRNextAuthGoogle OAuth · JWT · approvalsCloud Scheduler3x daily · every 30 minServer API routes78 routes · Zod on writesSupabase PostgresRLS default-denySecret Manager~150 store tokensAudit logbefore/after JSON · undoExternal systemsLightspeed · Google · Atlassian
Architecture as built. The browser never reaches the database - every read and write is a Zod-validated server route. Cloud Run hosts the container; Cloud Build deploys it.

Integrations

Seven external systems, each behind the server routes.

  • Lightspeed X-Series

    Products, inventory, sales history, suppliers, price books. Parallel version-cursor walks for big histories.

    read + write
  • Google Drive and Sheets

    Formatted stock-take sheets, month-by-month export trees, tracker archives - all via a service account.

    writes
  • Google Apps Script webhooks

    Two separate web apps: sheet actions and assignment emails. The origin story, still in production.

    writes
  • Jira and Confluence

    Each user's open issues and the team knowledge base, read with one scoped service token.

    reads
  • Freshdesk

    Live ticket queues per agent and a whole-account mirror behind the Team Analytics dashboard.

    reads
  • Google Gemini

    Structured-output ticket summaries, knowledge-base suggestions and product categorisation, quota-guarded with a model fallback chain.

    reads
  • Xero

    Per-year COGS journals generated from POS sales, validated to zero diffs against a real export.

    writes

Security posture

Default-deny, audited, and dry-run by default.

  • Domain-restricted Google OAuth

    NextAuth v5 with the corporate domain as the gate, plus a per-user approval list and an admin role. Sessions expire daily and approval is re-checked every 15 minutes.

  • Default-deny row-level security

    Every table has RLS on with no anonymous policies. The browser never talks to the database; every read and write flows through a server-side API route validated with Zod.

  • Secrets never leave the server

    About 150 per-store POS tokens and every service key live in GCP Secret Manager. They are read server-side, cached briefly, and never logged or shipped to the client.

  • Everything is auditable

    Every write across the platform is logged with before/after JSON snapshots, powering a filterable audit-log viewer with one-click undo and restore.

  • Write tools earn the right to write

    Long scans stream progress as NDJSON, a 30-minute HMAC-signed receipt proves the review happened, pushes are dry-run by default, and the operator re-types the target store code before anything is written.

The toolkit

Twelve operational tools plus the tracker builder, each replacing a manual job and each carrying its own safety rail.

Store setup

  • Supplier Update

    Replaces name-only supplier records left behind by a store migration.

  • Price Book Migration

    Replaces rebuilding custom price books by hand on a new account.

  • Import Products

    Replaces the CSV export/import that drops multi-SKU codes, suppliers and composites.

  • Create Product Category

    Replaces hand-building the standard three-level category tree in every new store.

Maintenance

  • Sales Export

    Replaces dozens of manual monthly POS downloads per store.

  • Product Avg Cost Export

    Replaces the manual product export feeding the average-cost workbook.

  • Delete Products

    Replaces a purge of dormant products nobody dared do by hand.

  • Category Fix

    Replaces products invisible to the data warehouse because of empty or off-scope categories.

  • Composite Units Check

    Replaces silent margin corruption from wrong parent-to-composite unit breakdowns.

  • Bulk Price Update

    Replaces updating one product's price store by store across the network.

Inventory

  • Stock Take Export

    Replaces the manual inventory report download before every stocktake.

Reporting

  • Freshdesk Team Analytics

    Replaces a monthly PDF ticket-volume report.

No-code builder

  • Adhoc Tracker Builder

    Replaces yet another shared spreadsheet for every new team process.

Nine years, one direction

02 / Experience

Every role automated the repetitive work of the last one. Spreadsheets taught the discipline, scripts scaled it, and the platform is where it all runs now.

  1. Jun 2025 - Present

    Full-stack

    Data and Inventory Transformation Specialist

    Poolwerx Corporation Pty Ltd - Australia (Remote)

    Sole developer of PWX Tool Trackers, an internal franchise-operations platform used daily by the support team across 140+ franchises. Also support the Lightspeed-Xero-Vital trading-terms integration, automate catalogue management via the Lightspeed API, and write ad hoc Snowflake SQL.

    Read the flagship case study
  2. May 2024 - Jun 2025

    Apps Script

    Data Migration Executive

    Poolwerx Corporation Pty Ltd - Australia (Remote)

    End-to-end data processing for migrations across tech stacks for 140+ franchise partners: VBA macro tools for ETL and reconciliation, Apps Script tools for multi-sheet processing and API integration, and migration monitoring dashboards.

  3. Nov 2022 - Jun 2025

    Apps Script

    Data Analyst / Data Migration Specialist

    Kreloses PLT (SaaS platform) - Malaysia (Remote)

    Restructured raw data from free-form Excel, POS exports and SQL dumps into import-ready formats. Built C# (LINQ) transformation tools, wrote MySQL / SQL Server / Firebird queries, and ran post-migration QA directly with clients. Full-time to May 2024, part-time after.

  4. Feb 2018 - Apr 2022

    Excel VBA

    Data Analyst / Spreadsheet Specialist

    IQVIA - Philippines (Hybrid)

    Point of contact for the Product Reference Management team (Middle East and Africa). Self-taught Excel VBA and built the team's QC, data-input and product-processing automation. IQVIA Impact Program Award for innovations in data efficiency and quality control.

  5. Aug 2017 - Jan 2018

    Excel VBA

    Pharmacy Benefits Analyst

    Optum - Philippines (Onsite)

    Reviewed pharmacy benefit requests for US healthcare clients in a high-volume, deadline-driven environment. Where the habit of getting data exactly right began.

Selected work

03 / Projects

The systems behind the platform, and the years of scripting and data work that led to it. Open any card for the detail.

Full-stackPoolwerx / 2025 - 2026

Evo Platform Toolkit

The support team needed to pull customer, product, sales and inventory exports from Lightspeed and other platforms for many stores, each with its own credentials, without anyone ever handling a raw API token.

Approach

A stateless web toolkit: FastAPI backend and a React 18 / TypeScript / Vite frontend. Per-store credentials are pulled at runtime from AWS Parameter Store under a least-privilege IAM group, exports stream straight to the browser as CSV, and every run is audit-logged. Dev, staging and production environments run from Docker Compose behind nginx with Google SSO, plus a credential-free mock mode for local work.

Outcome

Versioned releases across three environments with real deploy discipline; the tool the later Next.js platform grew out of, and whose exports became the cell-for-cell reference for the automated replacements.

Python 3.11FastAPIReact 18TypeScriptViteMUIDocker ComposenginxAWS Parameter StoreIAM

Employer project - described here, not linked or screenshotted.

Full-stackPoolwerx / 2026

Evo Tooling Standards

Internal tools were being built by one person with AI assistance at a pace the rest of the team could not follow or reproduce. Without a shared way of working, every new tool would be a snowflake.

Approach

Wrote the team's single home for how internal tooling is built: an onboarding walkthrough, engineering conventions, a WSL2 / Windows dev setup, AI-agent (Claude Code) workflow rules, infrastructure patterns for Docker Compose, Cloud Run and secrets, copy-to-start project templates, and a read-only machine 'doctor' script that checks a workstation against the standard.

Outcome

A documented, repeatable path from a fresh laptop to a deployable tool - the engineering standards a solo builder leaves behind so the work outlives them.

MarkdownBashPythonDocker ComposeGoogle Cloud RunClaude Code

Employer project - described here, not linked or screenshotted.

Apps ScriptPoolwerx / 2025

COGS automation in Google Apps Script

Monthly cost-of-goods-sold posting for franchise stores was a hand-run sequence: import the product list, process SKU sales, map registers to outlets, freeze the month and produce a journal for Xero.

Approach

Built the whole workflow in Google Apps Script on top of Sheets: product-list imports, SKU sales processing, a monthly posting workflow with data freezing so closed months cannot drift, register-to-outlet mapping, and journal exports ready for Xero.

Outcome

A month-end that runs as a sequence of clicks instead of a day of spreadsheet surgery - and the direct ancestor of the API-driven Sales Export and Xero COGS engines in the later platform.

Google Apps ScriptGoogle SheetsXero

Employer project - described here, not linked or screenshotted.

Apps ScriptPoolwerx / May 2024 - Jun 2025

Franchise migration tooling and dashboards

140+ franchise partners were migrating across tech stacks. Each migration meant cleaning, validating, transforming and extracting data, reconciling records, deduplicating, and reporting status to stakeholders - repeatedly.

Approach

Custom VBA macro tools automated the repetitive ETL steps, consolidated stakeholder reports, reconciled records and flagged errors from logic rules. Google Apps Script tools handled multi-sheet processing, pulled and pushed data through APIs, sent automated status emails and managed Drive files dynamically. Migration monitoring dashboards tracked readiness and progress per franchise.

Outcome

Rule-based validation and QA testing kept data accuracy and referential integrity across every migration, with progress visible to the business at a glance.

140+ franchise partners migrated
Excel VBAGoogle Apps ScriptGoogle Sheets APIGoogle Drive API

Employer project - described here, not linked or screenshotted.

Apps ScriptKreloses PLT / Nov 2022 - Jun 2025

SaaS onboarding data migration

Every new client arrived with data in a different shape - free-form Excel, POS exports, SQL dumps - and all of it had to match the platform's import schema before go-live.

Approach

Built C# (LINQ) tools to automate complex transformations and standardise records from large datasets; wrote SQL against MySQL, SQL Server and Firebird to filter, clean and export exactly what the import needed; ran post-migration QA on record counts and format compliance, and worked directly with clients to define goals and manage the transition from legacy systems.

Outcome

Import-ready data on a repeatable pipeline instead of a per-client scramble, with QA evidence clients could sign off on.

C# (LINQ)MySQLSQL Server (SSMS)FirebirdExcel

Employer project - described here, not linked or screenshotted.

Excel VBAIQVIA / Feb 2018 - Apr 2022

Where it started: Excel VBA at IQVIA

The Product Reference Management team for the Middle East and Africa processed pharmaceutical product data by hand: QC checks, data input, product classification and migrations into internal databases, all under weekly and monthly production deadlines.

Approach

Taught myself Excel VBA and built the team's automation: an automated QC tool with role-based templates, a consumer-health product tracker that removed manual duplication, and a patent-intelligence tool that consolidated 60+ global pharmaceutical datasets. Led the weekly and monthly production meetings and coordinated with global teams.

Outcome

Product migrations and imports preserved structure and classification integrity, and the tooling earned the IQVIA Impact Program Award for innovations improving data efficiency and quality control.

60+ global datasets consolidated
Excel VBAAdvanced ExcelPivot tablesInternal databases

Employer project - described here, not linked or screenshotted.

What I bring

04 / Skills

Depth in spreadsheets and data pipelines, extended in the last two years into full-stack web, cloud and API integration.

expertproficientworking

Spreadsheets

  • Microsoft Excel (advanced formulas, pivots, Power Query, dashboards)
  • Excel VBA
  • Google Sheets

Data and analytics

  • Data migration, cleansing and validation
  • Deduplication and reconciliation
  • QA testing against reference outputs
  • Power BI and dashboards

Automation and scripting

  • Google Apps Script
  • C# (LINQ)
  • ETL pipelines and bulk imports

SQL and databases

  • PostgreSQL (RLS, migration-managed schemas)
  • Supabase
  • MySQL, SQL Server, Firebird
  • Snowflake

APIs and integrations

  • REST integration, OAuth and scoped tokens, HMAC signing, rate-limit handling
  • Lightspeed X-Series API
  • Google Sheets and Drive APIs (service accounts)
  • Atlassian (Jira, Confluence), Freshdesk, Xero APIs
  • Google Gemini API (structured output)

Web development

  • Next.js 14 (App Router), React, TypeScript
  • Tailwind CSS
  • NextAuth (Auth.js), Google OAuth, RBAC
  • Node.js, Git

Cloud and DevOps

  • Google Cloud: Cloud Run, Cloud Build, Artifact Registry, Secret Manager, Cloud Scheduler
  • Docker, WSL2
  • AWS Parameter Store and IAM

AI-assisted development

  • Claude Code: spec-driven, verification-first delivery
  • Shipping AI product features (Gemini summaries, KB suggestions, categorisation) with quota guards

How I work

Verification first

An automated report is not done until it matches the manual one cell for cell. Export engines ship with a diff against the real thing, and a zero is the only acceptable number.

Probe before you write

Every write shape against an external API is proven on a live test account before it reaches a real store. Dry run is the default; the push is the exception you earn.

Spec-driven, AI-assisted

I use Claude Code to deliver production software solo at team pace. The AI does not lower the bar: every change is specified, reviewed and verified like any other engineering work.

A live tool never breaks for a neighbour

Shared code between tools is copied with a note, not cross-imported. Deliberately anti-DRY where the alternative is a validated tool breaking because a different one needed something similar.

Leave a trail

Every write logs who, what and the before/after. Undo is a feature, not a database restore.

If your team has repetitive data work, I would like to make it disappear.

Open to remote roles and contracts in data automation, internal tooling and full-stack web.