ProjectsA lead engine and power-bill scanner for AWE Electrical

Website · Automation

A lead engine and power-bill scanner for AWE Electrical

A fast marketing site with a power-bill scanner that reads a customer's bill and turns it into a qualified lead, straight into the CRM.

Desktop view of AWE Electrical
Mobile view of AWE Electrical

Built with

Astro
TypeScript
Fastify
Mistral AI
GoHighLevel
ServiceM8
n8n

A typical trade-business tangle

AWE came to us early in their journey. They’d been running an old Squarespace site for a while and, like a lot of trade businesses, doing plenty with it themselves. The problem wasn’t effort, it was sprawl: a domain registered in Squarespace, another in Google Workspace, a half-finished migration between the two, and email running on different domains again. Before we built anything new, we had to untangle and consolidate it.

AWE Electrical's old Squarespace website
Where AWE started: the old Squarespace site, doing a lot but pulling in every direction.

AWE began in electrical, but the business has moved almost entirely to solar in Canberra, so the new site had to do two jobs: sell solar, and qualify the people asking for it.

A bill upload that does the qualifying

We modelled the site on one we’d seen with an electricity-bill upload, the sort of thing usually reserved for manufacturers. For a solar company it’s gold: a power bill tells you most of what you need to size a system and price the job.

So we built the site on Astro with a small Fastify back end, and made the bill the hook. A visitor can optionally upload their latest bill, Mistral AI reads it, and the form fills in their usage and details for them. No typing, no friction.

For a solar company, the power bill is the whole conversation. Read it once and you know the system, the saving and the price.

The AWE quote form reading a customer's uploaded power bill
Upload a bill and it's scanned on the spot, the retailer and usage filled in before the customer types a word.

The customer gets an email confirming what we captured; AWE get one telling them a new lead has landed.

One pipeline, end to end

The moment a lead comes in it lands in GoHighLevel, in the main pipeline at the “new lead” stage. From there it runs a five-stage pipeline, the same shape we set up for most clients: new lead, contacted, and on through to a job. Once a lead is qualified, creating the job in GoHighLevel creates the matching job in ServiceM8 and links the two by job number, with a bit of custom code doing the handshake in the background.

A GoHighLevel opportunity pipeline with leads moving through five stages
Mockup for illustration, not real customer data. The opportunity pipeline: leads flow from New Lead through to Complete or Unsuccessful.

From there AWE work the job in ServiceM8 as normal, preparing the quote and talking to the customer. The automation keeps the customer in the loop along the way: every new lead with an email gets a confirmation, and when the work becomes a job they get a “we’ve started, a quote’s on the way” message. (SMS isn’t switched on for AWE, but it’s there when they want it.)

The only thing the office touches twice is the quote. Everything around it moves itself.

The loop closes at the end. When a job is marked complete or unsuccessful in ServiceM8, an n8n webhook pushes the final costs and the outcome back onto the GoHighLevel opportunity, so it lands in Complete or Unsuccessful to match. That’s the bit that makes reporting honest: AWE can see exactly what’s won, what’s lost, and why, across the whole business.

The result

One low-friction front door, every lead qualified with real bill data, a clean handoff into ServiceM8, and won-or-lost reporting that actually reflects the work. AWE spend their time quoting solar, not chasing details or re-typing them.

More work

Other projects

A few more builds we're proud of. Yours could be next.

Got a project in mind?

Let's build yours next.

Tell us what's slowing you down and we'll show you exactly what we'd build to fix it.

  • Free
  • About a minute
  • No obligation