psst · it also works nightsback to daylight

Systems · Websites · Stores · Site care · one designer-engineer

I build what you still run by hand.

I'm Haseeb. One person, both trades: design and engineering. Custom systems that run the business while you sleep: lead routing, quoting, inboxes, client portals, an AI on every channel. Websites and stores designed, built and looked after: WordPress, WooCommerce, Shopify, fast, ranking, cared for month to month. You own all of it.

And who runs all this?by the numbers
by the numbers
Channels into one inbox
8→1
Leads routed, nobody waiting
24/7
DB tables designed
220+
Person, both trades
1
01 / sound familiar

You’re running all of this by hand.

Response timeF-01

Your lead came in Friday night. Somebody saw it Monday.

manualhandled

→ handled means

I build intake that answers first: your lead scores and routes itself in seconds, any hour of the night. The reply is out before your competitor wakes up.

see it live

QuotingF-02

Your quote is a Word doc with last year’s prices in it.

manualhandled

→ handled means

A quoting engine with your real prices and your coverage maths. Area in, itemised quote out, price locked and sent inside a minute.

see it live

ChannelsF-03

WhatsApp, email, SMS, Instagram, the contact form, your phone. Six inboxes, one of you.

manualhandled

→ handled means

Not an inbox, a worker. An AI installs on your site, learns it by crawling it, and answers every channel: products shown, orders fetched, abandoned carts chased, humans woken only when needed.

see it live

Key personF-04

The one person who knows how it all works is on holiday.

manualhandled

→ handled means

The process leaves their head and becomes the system: written down, automated, and still working while they are at the beach.

see it live

Double entryF-05

Your orders get re-typed from one screen into another. Every day.

manualhandled

→ handled means

Your store, your CRM and your books talk to each other. Anything gets typed once and lands everywhere it needs to be.

see it live

AttributionF-06

Your traffic went up. Nobody can say what it earned.

manualhandled

→ handled means

Every lead carries its source all the way to the sale. You see what each channel earned, not just what it cost.

see it live

Handled means all of it.

The store, the site, and the machine behind them. You stay on selling; everything under the hood is my job.

02 / two ways in

Two ways I work.

SYS/01 · intakeopen

Custom systems

The operation you run by hand, turned into software that runs itself. One painful workflow at a time, not a two-year platform project.

feeds the console

WEB/02 · intakeopen

Design, build, manage

Your site or store done properly, then kept that way: speed, security, SEO, updates, backups, fixes. Build once or monthly care, your call.

feeds the console

The workflow you run by hand, rebuilt as software you own.

See systems I have shipped
  1. 01

    Lead routing

    geocoded, scored, assigned in seconds, 24/7

  2. 02

    Quoting engines

    real coverage maths, priced and locked

  3. 03

    Client portals

    dealers, installers, owners, each their slice

  4. 04

    Internal tools

    the spreadsheet you outgrew, as an app

  5. 05

    Dashboards

    the numbers that matter, live

ROUTINGLIVE
#03 · 21 mi#12 · 19 mi#05 · 12 mi#07 · 6.8 mi

23:42:31 · scored 12 · assigned #07 · 2.4 s

03 / shipped

Systems I’ve shipped.

Routing that never sleeps, quotes that price themselves, an AI on every channel, storefronts that stay fast. Designed and built by one pair of hands, running in production today.

CASE/A · lead routing21 tables · runs 24/7

Who gets lead #4821?

It used to wait for a human with an inbox. This desk replaced the wait, and it runs live in this frame. A lead lands from the form, or the AI takes it down in chat. The system checks it, scores all twelve crews on radius, tier and load, and the nearest one has the email in seconds. Send one yourself and watch.

live23:01
New lead
service

posts straight into the pipeline · nothing to install

The network12 crews · 4 metros
IPBBCCBFVSLCHCMFSCWCAFNE

lit up when scored · orange takes the job

Booked for Sat 9:00 am with Hutchins Coatings. 49.8 s from submit to calendar.

t+49.8 s
intakeassigned
#4821web form
R. Delgado

Plano, TX · 680 ft² · flake floor

in at 23:01 · (214) 555-0148

in their words

Two car garage, want the flake look before winter.

checks4 of 4 clear

phone format12 ms

+1 pattern ok

the crew can actually reach them

service area31 ms

75023 · inside network

crews cover this zip

duplicate scan118 ms

21 tables · 0 matches

first time we hear from them

spam score44 ms

0.03 · clean

written by a person

routing12 installers scored

Plano, TX33.06, -96.73weighted: radius · tier · load this week

Hutchins Coatings#07 · 6.8 mi · premium · open94
Vega Surfaces#05 · 12.1 mi · pro · 3 booked71
McKinney Floorworks#08 · 13.1 mi · pro · 5 booked63
Northline Epoxy#12 · 18.4 mi · pro · 3 booked58
the winner’s mathstart 100distance -13.7tier +8load -0= 94
notifysent · both

email · to the crew

todispatch@hutchinscoatings.com

subjectLead #4821 · flake floor · 680 ft² · Plano

R. Delgado, (214) 555-0148. Wants flake floor, about 680 ft². Claim it by 23:16 or it reroutes.

delivered · opened · accepted 47 s later · 14 min to spare

accepted

sms · to the customer

Hi R., you’re matched with Hutchins Coatings: 4.9★ and 6.8 mi from you. They call within 15 minutes.

delivered · 23:01

bookedon the calendar
9:00 am · Hutchins Coatings

R. Delgado · 680 ft² · flake floor

reminders set for both sides · reschedule link in the sms

event ledger8 events · 49.8 s

t+00.000lead #4821 in · web form

t+00.128phone ok · zip ok · not a duplicate

t+00.412geocoded · plano, tx

t+00.93312 installers scored · radius, tier, load

t+02.401assigned · hutchins coatings #07

t+02.688email to the crew · sms to the customer

t+49.310accepted by hutchins · sla met

t+49.822slot held · sat sep 5 · 9:00 am

21 tables12 installersuptime 99.98median assign 2.4 s

median 2.4 s from submit to assigned · ignored leads reroute in 15 min · no human involved · how the routing works →

CASE/D · storefrontswoo · shopify

Would you buy from it?

Not a theme with 34 plugins. Designed around the product, engineered like this page, and running live in this frame: scroll it, shop it, check out, then flip the screen.

A home with a freshly coated flake driveway

#ProFlakeSystems

The floor your garage deserves.

Pro-grade flake systems kitted to your exact square footage: colour-matched, batch-weighed, and at your door tomorrow.

4.9from 2,100+ floors coated

Next-day dispatchorder by 2 pm
A driveway finished in Autumn Quartz flake
colour · autumn quartz

Why Ember

A showroom floor, out of the box.

Every kit is batched by weight for your square footage, colour-checked against the blend standard, and packed with the primer, flake and top coat to finish the job in one weekend. No leftover buckets, no second trip.

2,100+floors coated86colours in stock10 yrwear warranty

See it first

Your floor, before you buy.

Upload a photo of your garage or driveway and the Ember visualizer lays any blend onto it, shadows and light kept. Drag the line and judge it on your own concrete.

Pick a colour
A driveway before coatingThe same driveway rendered in Autumn Quartz

New arrivals.

See more
NewStorm Grey flake blend

Storm Grey

from $259

NewTerracotta Blaze flake blend

Terracotta Blaze

from $289

NewBlue Granite flake blend

Blue Granite

from $289

NewCopper Canyon flake blend

Copper Canyon

from $279

Our colours.

See more
Autumn Quartz flake blend

Autumn Quartz

Warm neutral that hides tyre dust between sweeps

$279 / 40 lb kit

Ember Slate flake blend

Ember Slate

Deep charcoal with a rust fleck, reads clean forever

$269 / 40 lb kit

Winter Quartz flake blend

Winter Quartz

Bright and cool, makes a two-car feel twice the size

$259 / 40 lb kit

Desert Tan flake blend

Desert Tan

Soft sand tones for hard-working garages

$249 / 40 lb kit

Midnight flake blend

Midnight

Near-black with silver flecks, showroom serious

$249 / 40 lb kit

Alpine White flake blend

Alpine White

Cool light blend for studios and workshops

$259 / 40 lb kit

Floors people talk about.

“Went down in a weekend and looks like a dealership floor. The kit maths was spot on, nothing left over but half a bag of flake.”
Dan R.Homeowner · 2-car garage

“We install four of these a week. Batching by square footage means my crew stops doing maths in the van and starts rolling sooner.”
Priya S.Owner · coatings contractor

“Customers walk in and ask about the floor before they ask about the cars. That never once happened with grey paint.”
Marcus T.Detail studio owner

Pro-grade floor systems, kitted to the square foot and shipped next day across the country.

Contacthello@embersupply.com+1 214 555 0173Dallas, TX · Mon to Fri, 8 to 6
Colour drops, monthly

New blends and trade pricing, straight to your inbox.

© 2026 Ember Supply Co.designed & engineered by Norvahl

LCP 0.9 s · SEO 100 · headers A+ · every pixel in this frame is the build · why checkouts get slow →

BLEND LAB3d granules · spec sheets

Which mix goes on the order?

Customers blend granule colours and watch the slab render live. Percentages become pound weights, and the mix leaves as a spec sheet a crew can order from.

tap colours in or out · drag the slab to turn it

spec sheet · ready to order120 lb

16 colours in the full studio · presets or free mix · the weight maths done for them

CASE/B · quoting engine11 calculators · 100+ products

What does 680 ft² cost?

Coverage maths lived in one veteran’s head. Now area, depth and climate come back as an itemised bill, dew point checked, priced and locked before the customer cools off.

area680 ft²depth½″climateTX-N

slide the size · the bill re-prices itself

dew point spread 14°F · clear to coat

Ember Slate flake × 4 kits$1,036
Epoxy base · 14 gal$322
Poly top coat · 8 gal$596
Crack repair + grind$456
+1 spare kit, recommended$259
total · locked 24 h$2,669

→ added to cart · rep attached · priced in 90 s · when to quote on the site →

CASE/C · AI worker8 channels · 16 tools

Who answers at 11 pm?

Six inboxes used to close at 6 pm. Now one AI reads every channel, answers from your own site’s pages, and wakes a human only when it should not decide.

J. Whitfield · via whatsapp · 23:03

“hey is saturday install still possible??”

AI draft · schedule-policy

“Yes! Crews run Saturday 8 to 4. Want me to hold the 9 am slot?”

intent: schedulingkb hit 0.9211 steps logged

tonight · every channel handled

23:03whatsappslot held

21:12messengeranswered

19:47instagramanswered

16:03storefrontkits reserved

13:22web chatanswered

07:56smsrescheduled

06:40discordinvoice queued

02:18emailwarranty sent

tap a channel · the same brain answers there

sent 23:03:41 · full trace kept · the human slept · when AI should answer →

also shipped
RIYAAZ50 tables · workers + D1

Did the students practise?

A whole music school runs on it. Students upload the day’s practice, reviews go back with notes, streaks keep everyone honest, and leaves pause them fairly.

142students3,184submissions96%reviewed

six weeks · newest rightstreak · 12 days

day 42 · 4 entriesstreak day

Ayesharaag yaman · 6:12reviewed

Bilalalankar 12 · 3:40pending

+2 more · all reviewed by 9 pm

tap a day · see who practised

44 migrations · hourly cron · live daily

AGENT APPandroid · iOS

And away from the desk?

The same inbox in the crew’s pocket: replies, push alerts, the whole history.

14threads today6jobs booked0missed

tap a message · send the reply

push alerts · 2FA · expo

04 / how it goes

How a project runs.

Four steps, one fixed price, and a live system you can open any day while it’s built. You own it the day it ships.

One project · from the first email to the handover4 stages · fixed price · you own the result
  1. The call

    30min, free

    Book the call and we talk. You walk me through the workflow that hurts; I ask what it costs you every time it breaks. If I’m not the right builder for it, I say so and point you at someone who is.

    You geta straight answer on whether this is worth building

  2. The map

    0surprise invoices

    A short scoping paper: what’s manual today, what gets automated first, what it costs, and when it lands. The scope is the contract, so the number you approve is the number you pay.

    You getthe plan, priced and dated

  3. The build

    24/7live from week one

    The real system goes up on real infrastructure in the first week and stays open. Log in any day, click what exists so far, and change your mind while changing it is still cheap. No slides, ever.

    You getyour own login to the real system, from week one

  4. The handover

    100%yours, day one

    It ships on your accounts, under your domain, with documentation and training. Then a quiet exit. You own every line, every key, every record.

    You getthe keys, the code, and no lock-in

The fine print, up front

It’s one person. You talk to the builder, not an account manager, and you wait in a short queue instead of buying a deep bench. I take on a few projects at a time and I finish them.

Book the call
05 / the money

Custom doesn’t mean expensive.

The build is one fixed price, agreed at the map stage. The running cost is the part people get wrong: I size the servers to what your business actually does in a month, not to what a big company buys. Most small-business systems fit inside the free plans of Cloudflare and its kind, so the monthly bill is closer to a coffee than a salary.

The bill · every monthfor a lead desk like 03

What does it cost to run?

The whole monthly bill for a system like the lead desk above. Every account is opened in your name, so the bill lands with you and nobody sits between you and your own system.

HostingCloudflare, free plan$0
Database and file storagefree plan$0
Email deliveryfree plan$0
Your domainonce a year, not monthly$10 to $15
AI repliespay per use$2 to $5
Total · a month, about$5

map-stage sizing · domain paid yearly · your accounts

The server · sized to real useCloudflare free plan · 100,000 requests a day

How much server do you actually need?

Production-grade hosting is built for millions of visitors. A busy small business is not that, and paying as if it were is where the money leaks.

100,000requests a day the free plan allows
2,000what a busy small business uses

You would need fifty businesses your size to fill it. So the hosting line is $0, and it stays $0 until you are a much bigger company. When that day comes, the next plan up is $5 a month.

Where the 2,000 comes from · a busy month

140leads
60quotes
900messages
3,100site visits

every page view, message and form post counted, assets included

free plan · the next plan up is $5 a month · nobody pays for idle servers

The comparison · one month, four waystypical US figures

What does the alternative cost?

Most businesses already pay for this problem. They just pay for it somewhere else, every month, and call it normal.

A stack of subscriptionsCRM, quoting, an inbox tool, the glue between them
$200 to $600per seat, forever, shaped for someone else’s business
A part-time hireto type, forward and chase
$2,500+office hours only, and one day they leave
Doing nothingthe lead that got its reply at 9 am, not 9 pm
one lost joband the next one, and the one after
Your own systemanswers at 2 am, and you own it
about $5the whole monthly bill, from the ledger above

one missed job a month outspends the whole build inside a year

The headroom · when you growplan change only

What happens when you get big?

Nothing gets rebuilt. The stack runs the same code from the free plan to millions of requests; growing is a plan change on an account you already own.

todayfree plan100,000requests a day
busy$5 a month10 millionrequests a month
big$0.30 per extra millionno ceilingno rebuild, ever

What stays the same when you grow

  • the code
  • your accounts
  • your domain
  • your data
  • your staff logins
  • any developer you like

An upgrade is a plan change inside your own account and an afternoon of my time. Nothing migrates, nothing goes down.

no rebuild · no migration · no downtime

The upside · what owning it buysan asset, not a subscription

What else does owning it get you?

A subscription rents you a seat. A system you own is an asset: it grows, it earns, and it goes with the business.

The momentRent · a subscriptionOwn · your system
Adding staffa seat fee for every new hireadd people, same bill
Your datain their database, on their termsin your database, export it any day
Selling the businessthe subscription ends with the loginthe system is an asset on the sheet
Getting bigmigrate to the enterprise tierchange the plan, keep the code
Selling it onnot allowedlicense it to the businesses around you
The tools you keeptheir marketplace, their rulesplugs into your calendar, accounting and store

yours to run, grow, license or sell

Bring your numbers to the call and I’ll tell you what yours would cost to run. Thirty minutes, free, no deck.

Book the call
06 / fit

This works best for some people.

One person, both trades, a fixed price and a short queue. That is a great deal for the right business and a poor one for the wrong business, and the difference is not size or budget. It is how you like to work.

Fit check · tick what’s true7 signs · one is enough to talk

A fit if

  • Sounds like you

    0/ 7

    Even one of these is worth the call.

Not a fit if

  • You need it live in a few daysA real system takes weeks to build well. A rushed one breaks on the first busy day and costs more to fix than it saved.The way inIf the date is fixed, tell me anyway. A smaller first piece sometimes fits it.
  • You are collecting the cheapest quoteI price the work, not the hour, and the number holds. On price alone, a template and a subscription will win.The way inIf you want the cheapest thing that actually works, that is a different question, and I will answer it honestly.
  • You want a big team and daily meetingsI take a few projects at a time and finish them: weekly demos and a short queue, not a bench of ten.The way inIf you need the bench, an agency is the right call, and I will say so on the call.
  • The brief is “make it better” with nothing behind itI build around a workflow that exists, not a feeling that things could be nicer.The way inIf you cannot name the thing done by hand yet, that is fine. Naming it is usually the first half of the call.

In between?Not sure which side you are on? That is what the call is for. Thirty minutes, free, and I will tell you straight, including when the honest answer is someone else.

Bring it to the call
07 / the audition

This site is the résumé.

I sell design, speed and security, so judge them on the page you are reading. It was built by hand, it ships under a strict security policy, and every number below is one click from a tool I do not control.

The audition · this page, measuredno template · no page builder · analytics built in

The numbers · from the production build

  • 24KB

    JavaScript on the whole page

    compressed, every demo used

  • 194KB

    before any demo loads

    markup, styles, scripts and all three fonts

  • 0

    third-party requests

    no fonts CDN, no ad networks, nothing borrowed

  • 0

    cookies

    analytics built in, first party, no consent banner

  • 8

    security headers

    strict CSP, HSTS preload, no exceptions

  • 100%

    works without JavaScript

    every demo ships its finished state

Run the checks · this site already typed in

The receipts · how this page is made

Markup
Hand-written HTML, rendered on the server. No framework runtime, no hydration, nothing rebuilt in the browser.
Styles
Four stylesheets, 36 KB compressed. Design tokens, one accent, one corner radius, one easing curve, everywhere.
Type
Archivo variable and IBM Plex Mono, three files, self-hosted. No font CDN, no layout shift when they land.
Scripts
Under a kilobyte blocks the paint, 9 KB on a page view, first-party analytics included: pages, sources, and which demos get used, with no cookie. Each demo loads its own small file and is complete before any of it runs.
Hosting
Static files on Cloudflare’s edge, served from the city nearest the visitor. No origin server to slow down or fall over.
Headers
Content Security Policy, HSTS with preload, COOP, CORP, nosniff, referrer and permissions policies, frame denial.
Motion
One ease, one stagger. Reduced motion gets the finished state. Loops sleep while their section is off screen.
Tests
Playwright sweeps on every change: overflow and clipped edges from 320 to 1920, reduced motion, no JavaScript, both hero states.

The toolbox · what the systems in 03 are built with

Edge and data

  • Cloudflare Workers
  • D1
  • KV
  • R2
  • Durable Objects
  • Vectorize
  • Workers AI
  • Hono

Languages and frameworks

  • TypeScript
  • React
  • Astro
  • PHP
  • Python
  • Django
  • Vite

Commerce and CMS

  • WordPress
  • WooCommerce
  • Shopify apps
  • Stripe
  • MySQL spatial

Channels and AI

  • WhatsApp
  • Messenger
  • SMS
  • Email routing
  • Web chat
  • LLM APIs
  • SAM3 vision

Mobile and testing

  • Expo
  • React Native
  • Playwright
  • Appium

Design

  • Design tokens
  • Variable type
  • One motion system
  • Container queries

Two checks that need no toolview the source with Ctrl+U, it reads as written · turn JavaScript off, every section and every demo still shows its finished state

08 / start

Bring me the thing you do by hand.

Write it down or book a call. Either way I read it myself, reply within a working day, and the first call is free.

hello@norvahl.com

plain email works too

Norvahl · one designer-engineer, both tradesTaking on new projects

What do you still do by hand?

Orders re-typed, quotes in Word, leads waiting till Monday, a store that needs rebuilding. Tell me in a few lines, or pick a time to talk.

  1. Tell me what you run by hand. A few lines, or a call. Rough is fine.
  2. I reply within a working day. Me, not an assistant, usually with questions.
  3. We talk for thirty minutes, free. You get a straight answer and a price shape.

Prefer email? hello@norvahl.com. No newsletter, no sequence, no account manager.