▸ Business Automation Engineer
I replace spreadsheets with scalable software.
From Excel and Google Sheets to AI-powered React + Express + PostgreSQL platforms.
Excel→ SAP→ Google Sheets→ AppSheet→ React→ Express→ PostgreSQL
What problems I solve
Your company has
- ✗ Excel everywhere
- ✗ Google Sheets with 50k rows
- ✗ AppSheet becoming too slow
- ✗ Shopify processes done manually
- ✗ Employees copying data between systems
- ✗ Several disconnected tools
I can build
- ✓ Multi-tenant CRM
- ✓ Shopify integrations
- ✓ Internal business tools
- ✓ AI-assisted workflows
- ✓ React frontends + Express APIs
- ✓ PostgreSQL databases
Typical projects
Migration
- Excel↓
- Google Sheets↓
- AppSheet↓
- React↓
- Express↓
- PostgreSQL
Automation
- Manual process↓
- API integration↓
- Background jobs↓
- Notifications↓
- Analytics
Commerce
- Shopify↓
- Inventory↓
- Orders↓
- CRM↓
- Accounting
What's your pain?
Pick the one that sounds like your situation — I'll show the closest case I've shipped.
Pick the one that sounds like your situation — I'll show the closest case I've shipped, with the measured result.
Case studies
Migrating an AppSheet CRM to Express + PostgreSQL
Replaced a no-code AppSheet CRM hitting its limits with a typed Express + PostgreSQL backend and a React front-end — without losing a single record.
Result Cut manual data-sync from ~6 hrs/week to near-zero; eliminated the daily row-count reconciliation.
★ FeaturedBuilding a Multi-tenant CRM
A single Postgres-backed CRM serving multiple isolated tenants — schema-per-tenant isolation, shared application code, and zero cross-tenant data leaks.
Result 5 tenants on one codebase; isolation guaranteed by an automated property test on every PR; per-tenant export in one command.
Uploading 150 MB Audio Files to S3 Without Killing the Server
A direct-to-S3 multipart upload pipeline for large audio — presigned URLs, client-driven parts, and a worker that finalizes assembly. Zero bytes touch the app server.
Result Server memory flat (~120 MB) regardless of file size; ~300 MB uploads in under a minute on a 1-core box; resumable after drops.