Skip to content

Portfolio

Ten builds, ten written case studies

Client names are withheld where required, but the problems, decisions and numbers are real. Filter by the kind of work you need.

dashboard · workflows

Runs

1284

Success

99.4%

Queued

3

AI

AI Workflow Automation Platform

A workflow builder that routes incoming client requests through AI classification, approvals and notifications.

Problem
An operations team triaged every inbound request by hand in a shared inbox. Requests were missed, and nobody could say how long anything took.
Outcome
Manual triage went from a full-time task to a short daily review, with every request timestamped and traceable.
  • Next.js
  • TypeScript
  • Supabase
  • OpenAI
  • n8n
  • Vercel
admin.shopify.com/inventory
SKU-1042synced
SKU-2298synced
SKU-3311synced
SKU-4470synced

Shopify

Shopify Automation Dashboard

Order, inventory and fulfilment automation for a multi-warehouse Shopify brand.

Problem
Stock counts drifted between two warehouses and Shopify, so oversells happened during every promotion.
Outcome
Oversells stopped, and the fulfilment team works from one screen instead of three tabs.
  • Shopify Admin API
  • Node.js
  • Supabase
  • n8n
  • React
support widget · mobile

AI

AI Customer Support Agent

A retrieval-backed support agent that answers from your own documentation and escalates when unsure.

Problem
Support answered the same twenty questions daily, and generic chatbots invented policies that did not exist.
Outcome
First-response time dropped sharply while escalations kept the human tone customers expect.
  • OpenAI
  • Supabase pgvector
  • Next.js
  • TypeScript
supabase · table editor
idskuon_handreorder_at#100046#100458#100870#101282

SaaS

Inventory Management SaaS

Multi-tenant stock, purchase order and low-stock forecasting tool for small distributors.

Problem
Spreadsheets could not answer 'what do we reorder this week' without a day of manual work.
Outcome
Reordering became a fifteen-minute weekly task backed by actual sales data.
  • Next.js
  • PostgreSQL
  • Supabase
  • React Query
  • Zod
POST /v1/integrations/sync

200 OK · 142 ms

{
  "queued": 42,
  "idempotent_skips": 3,
  "dead_letter": 0
}

Automation

API Integration Platform

A middleware layer connecting CRM, billing, email and internal tooling behind one consistent API.

Problem
Five services each had their own auth, payload shape and failure mode, and every integration was rewritten from scratch.
Outcome
New integrations now take days rather than weeks, and failures are visible instead of silent.
  • Node.js
  • Express
  • TypeScript
  • Redis
  • Docker
app.example.com/sign-in

SaaS

Authentication & Access Dashboard

Email and OAuth sign-in, role management and audit logging for an internal team tool.

Problem
Access was managed by sharing a single login, so nobody could tell who changed what.
Outcome
Access reviews are now a report instead of an investigation.
  • Supabase Auth
  • Next.js
  • PostgreSQL
  • TypeScript
analytics · overview

Runs

1284

Success

99.4%

Queued

3

SaaS

Business Analytics Dashboard

Revenue, retention and channel reporting pulled from several sources into one daily view.

Problem
Weekly reporting meant exporting four CSVs and rebuilding the same pivot table every Monday.
Outcome
Monday reporting became automatic, and the numbers finally reconcile across sources.
  • React
  • PostgreSQL
  • Recharts
  • Node.js
  • Vercel
app.example.com · custom crm system

New

Contacted

Won

SaaS

Custom CRM System

A pipeline and follow-up CRM for a services business that outgrew its spreadsheet.

Problem
Leads were tracked in a spreadsheet, follow-ups depended on memory, and deals went cold silently.
Outcome
Follow-ups happen on schedule, and the pipeline reflects reality.
  • Next.js
  • Supabase
  • React Hook Form
  • Zod
  • Tailwind
src/lib/pipeline.ts — VS Code
export async function run(job: Job) {
  const key = idempotencyKey(job)
  if (await seen(key)) return skip(job)
  const result = await withRetry(() =>
    provider.execute(job.payload), { max: 5 })
  await persist(result)
  return ok(result)
}

SaaS

Project Management Platform

Task, time and client-visibility tooling for a small agency running parallel projects.

Problem
Clients asked for status updates constantly because there was nowhere to see progress.
Outcome
Status-update emails largely disappeared, and project scope stayed visible to everyone.
  • React
  • TypeScript
  • Supabase
  • React Query
zsh — deploy
 vercel deploy --prod
Building… done in 24s
Uploading assets… ok
 Production: live
Rollback target: a91f3c2

DevOps

Cloud Deployment Dashboard

Deployment visibility across environments with build status, rollbacks and environment variable auditing.

Problem
Nobody could say which commit was live in which environment, and rollbacks meant a frantic search.
Outcome
Recovery from a bad release dropped from a stressful half hour to under two minutes.
  • Docker
  • GitHub Actions
  • Vercel
  • Node.js
  • Next.js