Case studies Six systems, end to end

The full stories behindthe systems I've shipped.

Who the client was, what was slowing them down, what I built, and what changed. Every one designed, built, and deployed solo.

Case Study 01Operations · SaaS

Sign shop management system, quote to cash

A full job lifecycle system for a sign shop. Walk-in customers are quoted at the counter with itemised pricing, pay a card deposit, review design proofs through a link with no login, approve, then move through production to final payment.

TypeJob management SaaS
IndustrySignage and print
StatusIn daily use
StackNuxt · Workers · D1 · R2

The pain point

The shop ran on spreadsheets, a shared inbox, and a whiteboard. Quotes were typed twice, deposits were chased from memory, and proof approvals were buried in email threads where nobody could tell which version the customer had actually signed off on.

What I built

  1. One pipeline, nine stages. Every job runs from walk-in to done with automatic stage history, due-date urgency, and a stale flag on anything left sitting in one stage for four days.
  2. Counter intake in three steps. Live customer search, several job types on a single job, and itemised quoting with fractional quantities, so a walk-in is quoted and booked in minutes.
  3. Proofs and payments in one flow. Versioned design proofs carry a shared staff and customer thread. Card deposits and balances drive the same state machine as the cash path, so a shop with no payment processor configured still works.
  4. Numbers the owner can trust. Invoices are generated live from the job current quote lines and payment state, and an owner-only view shows revenue, material cost, and profit per job. Material costs are snapshotted at the time of use, so later price changes never rewrite what a finished job cost.

Decisions worth calling out

  1. Customers never create an account. Every customer touchpoint is a tokenised link, so quoting, proofing, and approval work with no signup and no password to reset.
  2. The quote locks once the deposit is paid. Nobody can quietly alter what the customer agreed to, so the invoice always matches the approved lines.
  3. Payments survive a dropped webhook. Webhook driven with a short poll as a backstop, so a paid job never sits showing unpaid. Mismatched amounts are flagged for a human rather than applied automatically.
  4. Tests run against a real database. The suite migrates an in-memory D1 from the actual migration files instead of mocking it, so schema drift shows up as a failing test.
jobs / pipeline
Quoted
Window graphics
Vehicle wrap
Proofing
Shopfront sign
Production
Banner ✓
Deposit · 50%PaidLocked
Proof v3ApprovedSigned off
Balance due on collection
Live demo

Try the system yourself

A guided tour running on demo data. No signup and nothing to install, just sign in with the details below.

Open the live demo
Email
owner@signstudio.demo
Password
OwnerDemo!2026
9
Pipeline stages

Walk-in to done, with stage history, due-date urgency, and a stale flag on anything sitting four days.

No login
For customers

Quotes, proofs, and approvals all reach the customer through a tokenised link instead of an account.

Daily
In production use

Counter intake takes minutes, and job status lives on one board instead of in someone's head.

Case Study 02Internal CRM

APR Sales CRM

A sales CRM integrated directly into the APR task system, giving the team a full history of their deals and generating export documents instantly from offer data through an 11-step funnel.

ClientAPR Solutions
IndustryMachinery export
EngagementFixed-scope build
StackDjango · PostgreSQL
deals / export-docs
Export document · live preview
Click fields or highlight to edit
Generated from offer data instantly

The pain point

APR Solutions had been using Zoho CRM but found it overly complicated for their team. Export documents still needed to be drafted by hand, pulling details from old emails and previous paperwork. Retyping introduced errors, versions drifted, and finding a document from a past deal meant digging through folders.

How I solved it

  1. Full sales history. Every deal, contact, and document lives in the CRM, giving the team a complete record of their sales without hunting through inboxes.
  2. 11-step offer funnel. Each offer moves through a structured funnel where most steps either collect a file upload or generate a PDF automatically from the offer data.
  3. Live editable PDF preview. Documents open as a web preview the user can edit in real time, clicking into fields or highlighting and changing text directly before exporting.
11
Step offer funnel

Every deal moves through a structured pipeline where most steps generate or collect a document automatically.

Instant
Document generation

Export paperwork is generated from offer data the moment it is needed, with zero retyping.

Full
Sales history

Every deal, document, and contact stored in one place and searchable across the team.

Case Study 03Manufacturing

APR Task Manager

A modernized task and materials platform replacing outdated software at APR Solutions. Each technician has their own account, earns points per task, and can flag missing materials without leaving the system.

ClientAPR Solutions
IndustryManufacturing
EngagementFixed-scope build
StackDjango · PostgreSQL

The pain point

APR Solutions were running on outdated software with a poor UI that frustrated technicians daily. Task visibility was limited, tracking materials was a manual afterthought, and there was no way to measure or reward individual technician output.

How I solved it

  1. Personal technician accounts. Every tech logs in to see their assigned tasks, update statuses, and track their own progress with no shared terminals and no confusion.
  2. Points per task. Technicians earn reward points as they move tasks through statuses, giving managers a live performance signal and giving techs a reason to keep the system updated.
  3. Built-in materials requests. When materials are missing, techs raise a request directly in the system. Requests are batched and sent to sales automatically each week by email and surfaced on the management dashboard.
floor / tasks
Queued
Cut order #218
QC batch 14
On the floor
Assembly line B
Done
Packed & logged ✓
Modern
UI upgrade

Replaced frustrating legacy software with a clean system technicians actually want to use.

Weekly
Auto materials reports

Material requests raised by techs are batched and sent to sales by email every week automatically.

Live
Performance visibility

Managers see task progress and technician points in real time via the management dashboard.

Case Study 04SaaS · Medical AI

Dental AI platform

An in-house SaaS built to replace scattered Excel sheets with a single source of truth: all patient history, visit data, and AI-powered X-ray findings in one platform.

TypeIn-house SaaS
IndustryHealthcare
EngagementOngoing product
StackYOLO · FastAPI · Python
xray / analysis
Patient record · Ava Thompson
X-ray findings flagged in 240ms
Visit PDF generated for the patient
Full history stored in one record

The pain point

Dental clinics were juggling patient data across multiple Excel sheets: one for records, another for appointments, another for billing. There was no unified view of a patient's history, and finding anything across visits was slow and error-prone.

How I built it

  1. One source of truth. All patient history, visit status, clinical notes, and data live in one platform instead of scattered spreadsheets.
  2. AI X-ray analysis. A YOLO model analyses dental X-rays in 240ms on CPU and flags findings for the dentist to confirm, with no GPU hardware required.
  3. Automatic visit PDFs. Each visit generates a per-patient PDF report from the same record, so sharing findings with patients takes seconds.
1
Source of truth

All patient history, visits, and data in one platform instead of multiple Excel sheets.

240ms
X-ray analysis on CPU

AI findings flagged without any specialist hardware at the clinic.

Auto
Visit PDFs

Every patient gets a findings report generated from their record with no manual work.

Case Study 05Platform

Sentinel Hosting platform

A full hosting storefront with Stripe-powered automatic billing, server provisioning, and a loyalty system that gives clients Discord roles and subscription discounts as they spend.

ClientSentinel Hosting
IndustryHosting & infrastructure
EngagementOngoing retainer
IntegrationStripe · Discord

The pain point

Selling hosting by hand doesn't scale: every order meant someone noticing the payment, setting up the server manually, and emailing credentials back. Customers waited, and billing lived in a different place from the servers it was supposed to control.

How I solved it

  1. Stripe-powered automatic billing. Payments, renewals, invoicing, and suspensions all run through Stripe without anyone touching an order. Clients are billed on a recurring subscription, not a one-off.
  2. Payment triggers provisioning. A successful charge spins up the server automatically. The client gets access without any manual step in between.
  3. Loyalty system with real rewards. As clients accumulate spend, they unlock Discord roles and percentage discounts off their subscriptions. Tiers are calculated automatically from Stripe billing history.
orders / provisioning
#2041 · Game serverPaidProvisioned
#2042 · VPS 8GBPaidProvisioned
#2043 · VPS 4GBPendingAwaiting payment
💳⚙️🖥️
Auto
Billing and invoicing

Stripe handles recurring payments, renewals, and invoices without any manual intervention.

0
Manual provisioning

Payment confirmation triggers server setup automatically, around the clock.

Tiered
Loyalty rewards

Clients earn Discord roles and subscription discounts automatically as their cumulative spend grows.

Case Study 06Real Estate · 3D

3D Compound Viewer in Unreal Engine 5

A full residential compound rebuilt 1:1 in Unreal Engine 5, where buyers explore the streets, check live villa availability, and open prices, rooms, and photos from an interactive 3D view.

Built forReal estate sales teams
IndustryReal estate
EngineUnreal Engine 5
TypeInteractive 3D sales tool
compound / villas
Villa status · live
Villa 12 · 4 roomsZone AAvailable
Villa 27 · 5 roomsZone BReserved
Villa 03 · 4 roomsZone ASold
Click any villa for photos, price & rooms

The pain point

Real estate sales teams sell villas from 2D masterplans, brochures, and showroom maquettes. Buyers struggle to picture where a villa actually sits, what surrounds it, and how far the amenities are, and availability lives in a separate sheet the sales rep has to check mid-conversation.

How I built it

  1. A 1:1 digital compound. Every street and villa location is modeled to match the real masterplan exactly, including the amenities and surrounding services.
  2. Status at a glance. Each villa carries a color-coded box: blue for available, yellow for reserved, red for sold, so the whole compound's availability reads instantly in 3D.
  3. Click to explore. Clicking any box focuses the camera on that villa and opens its images, details, price, and number of rooms, all without leaving the 3D view.
1:1
Compound accuracy

Streets, villa locations, and amenities match the real masterplan exactly.

3
Status colors

Blue, yellow, and red boxes show available, reserved, and sold across the whole compound at a glance.

Full 3D
Immersive exploration

Buyers see exactly where they would live, the compound layout, and the surrounding services before committing.

Your operation could be the next one

Email me and I'll walk through your current workflows and show you what a system built around them looks like.

Email me