North City Roofing — From First Click to Signed Job
An AI-powered lead engine and an installable operations app took a Bay Area roofer from five scattered tools and missed leads to one connected pipeline.
- Client
- North City Roofing · Santa Clara County, CA
- Role
- Automation architecture, product design, full-stack dev
- Stack
- GoHighLevel · Zapier · JobNimbus · React · Supabase
Live at dashboard.northcityroofing.com · private client app
- 17live automations
- 100+custom fields
- 43,000duplicates eliminated
- 5 to 1tools merged into one app
- 6-stepmobile inspection
Leads were lost before anyone reached a roof.
Website leads waited on a callback
Someone still had to follow up, find a time, and book the estimate by hand.
Yelp leads stayed trapped in Yelp
Many arrived after hours, often with no phone number. If no one replied fast, the homeowner hired the next roofer.
Every qualified lead was retyped
Leads were copied into JobNimbus by hand, where sales runs its jobs. Slow, and easy to get wrong.
Five disconnected tools
A CRM, paper forms, a separate calendar, an assignments spreadsheet, and a folder of PDFs no one could find.
Paper inspections
Forms filled out on rooftops were retyped later. Nobody knew which jobs were worth pursuing for weeks.
43,000 duplicate contacts
Repeated CRM syncs made the contact list unusable.
One pipeline, from first click to signed job.
- SourceWebsite Form4-step, booking-first
- SourceYelpvia Zapier
- HubGoHighLevel17 workflows · AI voice agent · SMS/email alerts
- FieldTeam AppSupabase · 6-step inspection · two-way sync
- GateQualifiedInspector's one-tap verdict
- SalesJobNimbusLead created, no retyping
- AlertTeam SMSSales knows instantly
Every lead captured, answered, and routed in seconds.
17 live GoHighLevel workflows and 100+ custom fields handle each lead from the website or Yelp, day or night.
A booking-first estimate form
Eight services (roofing, repairs, gutters, cleaning, skylights, inspection, roof coating, and rejuvenation), plus a one-tap toggle for financing interest. On submit a booking calendar opens right away, so the homeowner leaves with an appointment instead of a "we'll call you."
- ServicePick from eight roofing services
- PropertyType, size, and financing interest
- AddressWhere the job is
- ContactThen the calendar opens instantly
Yelp, straight into the CRM
A Zapier integration creates or updates each new Yelp lead as a GoHighLevel contact, with the Yelp Lead ID, the requested service, and the homeowner's full project answers. A bot engages each lead immediately, even after hours.
Website
Create the contact and opportunity, assign a team member, tag by source, property, and service, fast-track emergencies and financing, and alert the team. An AI voice agent calls urgent-repair leads to finish intake.
Yelp
Engage every Yelp lead instantly, recover leads that go quiet or don't book, confirm bookings, and follow up on won jobs.
Dashboard Sync
Keep GoHighLevel and the team app in sync: contacts, calls, inspections, and assessments.
The JobNimbus handoff
Qualified leads reach the sales team's job system with zero retyping and zero duplicates.
- TriggerA contact is tagged qualified, or its pipeline stage changes.
- Duplicate guardIf the contact already carries the
sent_to_jobnimbustag, the flow stops. - FormatCustom code builds the payload.
- Route by sourceA branch checks the Yelp Lead ID, so Yelp and website leads each arrive with the right data.
- SendThe contact is tagged as sent, a webhook creates the lead in JobNimbus, and the team gets an SMS.
One role-based app replaces five tools.
The owner runs the business from a command center, and inspectors run assessments from the roof.
Owner command center
- Team Performance: live KPIs for today, this week, and this month, plus 7/30/90-day analytics. A server-side Postgres function keeps it fast across 31,000+ contacts.
- Top Performers: team members ranked by assigned and completed inspections.
- Leads pipeline: every assessed contact marked Qualified or Not Qualified, with a full assessment drawer and CSV export. Status syncs back to the CRM.
- Daily operations: Priorities, Contacts with tap-to-call, Team, live-synced Calendars, Appointments, Admin Booking, Sales Form, Announcements, and Files & Completions.
Member app
- Assignments move through Start → Continue → Completed.
- A 6-step wizard: project details, roofing material, wood damage, vents and flashings, materials and access, and final review. Large tap targets, autosave, and a sticky action bar make it usable on a phone in the sun.
- Instant qualification: "Is this a qualified lead?" updates the CRM in real time.
- Branded PDF reports are generated automatically, viewable in the app, and saved to the contact.
Installs like a native app.
The dashboard is an installable web app on iOS and Android, with its own branded icon. It opens full screen and needs no app store or update queue.
- iOS: Safari → Share → Add to Home Screen
- Android: Chrome → Install app
Built to stay fast and clean at scale.
CRM sync that scales
Upserts run in 500-row batches on a unique contact ID, with deduplication before every write and a guard against overlapping runs. 43,000 duplicates gone for good.
Server-side analytics
Chart counts run in Postgres, so the dashboard stays instant at any contact volume.
100+ custom fields
Mapped across GoHighLevel, the dashboard, and JobNimbus.
One webhook, one payload
Each assessment sends the full scope, the PDF link, the qualification answer, and the inspector's identity in one request.
Real-time by default
Supabase realtime keeps every view current without a refresh.
Safe handoffs
Tag guards make sure no lead is ever sent to JobNimbus twice.
What changed
- No more lost leads. Website and Yelp leads land in one CRM with instant replies and booking, day or night.
- Abandoned leads are recovered automatically instead of forgotten.
- One app replaces five tools.
- Paper to PDF in minutes. Inspections are captured on a phone, on the roof.
- Instant qualification. The office sees the verdict the moment an inspector submits, not weeks later.
- 43,000 duplicates eliminated and prevented from returning.
- Zero double entry. Qualified leads flow into JobNimbus automatically.
An App They Actually Install
Every business runs differently, so every app I build is different too — priorities, team views, live analytics, whatever the job needs. This one is real, currently running on North City Roofing's field team's phones.

Main Menu

Secure Sign-In

Everything, One Tap Away

Live Team Analytics
Built for a roofing company here — the same system works just as well for dental, HVAC, coaching, or whatever runs your business. I'll build yours around your actual workflow.
Built For The Field
A quick look at the internal ops dashboard from the North City Roofing case study. Drag or swipe to see more.
Appointwise — A Booking Agent Wired Straight Into GoHighLevel
Appointwise is a conversational AI agent built entirely inside GoHighLevel's conversation builder — qualifying leads, answering questions, handling objections, and booking the call without a human ever touching the conversation.
GHL Wired
The Full Conversation BuilderEvery branch of the Appointwise agent — qualification questions, objection handling, booking hand-off, and lost/won outcomes — built entirely inside GoHighLevel's conversation builder.
Appointwise, Live in ConversationA real conversation with the agent — qualifying the lead and booking the appointment automatically, no human in the loop.
OpenTable → Make.com → GHL Reservation Campaigns
Every OpenTable reservation at Torote, the on-site restaurant for Valle Del Sol's development, flows into GoHighLevel and triggers a branching WhatsApp, email, and SMS sequence — one of several event-driven systems running behind the live site at valledelsolcabo.com →
Live
OpenTable → GHL Contact SyncThe Make.com scenario polling OpenTable reservations, filtering cancelled/skipped guests, and pushing each one into GHL via /contacts/upsert.
Full Workflow, Trigger to OutcomeThe complete tag-based trigger tree inside GHL — every branch, delay, and channel from the first reservation ping through to a delivered confirmation.
Reservation Reminder & Confirmation Sequence
Fires on a 7-day, 24-hour, and 2-minute countdown to every reservation — branches on guest reply ("Yes, Walk Me Through" / "No, Just Dinner" / timed out) and fans out into WhatsApp confirmations, backup emails, and an internal team notification the moment a guest responds. Delivery is tracked end to end on every channel.
OpenTable → GHL Contact Sync
Every new reservation instantly creates or updates the guest's contact record in GoHighLevel — tagged, timestamped, and ready for the sequence to fire without a single manual step.
Fresh Off The Build
The latest sites I've shipped across hospitality, home services, roofing, and personal brands. Every video is a real screen recording. Click one to watch it full size, or open the live site.
Ember & Flue Stoves
A HETAS-registered stove installation demo with a cinematic dark-and-ember palette, floating ember particles, and a "Book a Free Survey" funnel up front. Built to look just as premium on a phone as it does on a desktop.
Visit live demo →North City Roofing
Bold industrial look for a Bay Area roofer, with a 24/7 call bar, a free-estimate CTA, an English/Spanish toggle, and an on-site chat assistant feeding leads straight into the CRM.
Visit live site →The Parnell Dublin
A pub and kitchen established in 1879, given heritage gold-on-black styling with a framed video hero and one-tap paths to food, cocktails, private events, and table bookings.
Visit live site →Tucker Reilly's
A city pub on Camden Street with vintage serif branding over a full-bleed bar hero, plus bookings, food & drink, what's on, and a Spanish language toggle.
Visit live site →JMX Next
A personal brand for a GHL, AI automation, creative ads, and Amazon specialist. It pairs a neon-violet UI with a live phone carousel that cycles through real GHL builds.
Visit live site →See It Running, Live
Automated Google review requests and missed-call text-backs — both fire instantly, 24/7, with zero manual work on your end. Tap the phone to watch the demo.
Automated Google Reviews
The moment a job is marked complete, the customer gets a text asking for a review — with a direct link straight to the Google listing, no app required.
Missed Call Text Back
Miss a call and the caller instantly gets a text back, so no lead ever goes cold just because nobody picked up in time.
valle-del-sol.png
Valle Del Sol — Cabo's Secret Valley
A real estate & hospitality development above Cabo San Lucas — desert ranch homes, a working farm, and the award-winning Torote Restaurant. Built entirely from scratch in VS Code with custom HTML, CSS, and JavaScript, and first hosted live on Vercel. Once the client needed ongoing, non-technical management, the whole build was migrated into GoHighLevel through vibe coding, preserving the original design and animation exactly.
Visit live site →North City Roofing
End-to-end inbound lead automation system — custom HTML form, webhook architecture, CRM pipeline strategy, GHL workflow automation, plus full Google & Meta Ads management with custom video/image creatives.
Visit live site → New site preview →New
northc.png — Website homepage
form-nc.png — Multi-step booking form
pipeline-nc.png — GHL pipeline stages
webhook-nc.png — Webhook automation flowThe Internal Ops Dashboard
Once a lead becomes a job, the team needs somewhere to run it from. I built a password-protected internal tool — Supabase auth, role-based access — with a completely different view for owners versus inspectors.

Sign-in
Company-domain email + password gate in front of every dashboard. Nothing is reachable without an account.

Owner Dashboard
Real-time inspection volume, an activity trend chart, and a top-performers ranking — the numbers an owner checks every morning.

Inspector Dashboard
Field reps see only their own active and completed assignments, with a one-tap path into the inspection form.
The Ops Dashboard, In Your Pocket
The same internal tool from the case study above, built mobile-first for the field team. Drag or use the arrows to spin through it — tap the front phone to see more.
meridian-hero.jpg
Meridian Plumbing Co. — AI Voice Agent Website
A demo site for a plumbing company with an AI front desk built directly into the page. A visitor can start a live call with the agent from the homepage — no phone number to dial — or switch to chat if they'd rather type.
Visit live demo — call the AI agent yourself →
Voice Agent, On The Page
"AI Agent Nab" answers as a live web call, styled to match the site's brand.

Chat, When They'd Rather Type
Same agent logic, text form — questions get routed and answered without a human watching the inbox.

Review Capture
One-tap feedback page — happy customers get sent to Google, quieter ratings get routed back privately.
Try it yourself on the live demo → — you can pick the agent's voice and call it directly from the site.
Your phone rings.
Something always answers.
An AI agent that picks up every call — day or night, weekends, holidays, mid-job — and actually gets things done instead of taking a message. It's live right now on the Meridian Plumbing demo, answering calls in real time.
Answers every call
Picks up in seconds, 24/7 — no hold music, no voicemail.
Books the appointment
Finds an open slot and puts it straight on the calendar.
Qualifies the lead
Asks the right questions and flags who's ready to buy.
Reschedules on request
Moves a booking the moment a customer needs to shift it.
Cancels cleanly
Handles cancellations and clears the slot for someone else.
Follows up on missed calls
A missed call still gets a callback or text within minutes.
Client Websites

Bridenti Dental Clinic
Full GHL AI Studio build with treatment gallery, bilingual booking automation, and calendar integration.

NewSmile
Dental clinic website build — swap in the live URL and description here.

Macdental PV
5-page bilingual site with a custom AI chatbot ("Macdental PV Assistant") and in-chat appointment booking.

Pragnya Cultural Society
School/academy website with Firebase-backed student registration, login, and dashboards.
Thumber Academy
Student coaching site — lead capture, workflow automation, inquiry management. "Real Students. Real Wins."

Diesel Tech
24/7 emergency diesel breakdown service, Northern Alberta. Mobile repair for highway trucks & oilfield equipment.

MEGA Water Seal
Waterproofing services — professional + DIY. No tile removal, no demolition.

eDigiShark
Digital marketing agency — AI automation, lead gen systems, Meta Ads, sales funnels.

Peak Flow Air
Business coaching site w/ ad campaigns, AI creatives, automation, lead gen funnels.

San Jose ADU
ADU / remodeling company — custom HTML, local SEO, webhook lead routing.

MEGA Water Seal Sales
Revenue-focused sales funnel, AI visuals via Gemini/PicsArt.

NexSale — Josh Portfolio
Custom-coded portfolio, EmailJS lead capture, GitHub deployment. (This site.)
Sales Funnels
Three funnels, one screen — hover to bring each one forward.

Trusted Home Service Pros
Nationwide, Angi-compliant lead-matching platform — 15 core pages plus 7,800+ programmatic SEO landing pages across 710+ cities and 10 service categories.

Trusted Roofing Pros
Roofing-focused lead-matching funnel — swap in the live URL and description here.

MEGA Water Seal — Service Funnel
"Stop Leaks, Mould, and Water Damage Without Removing Tiles." Perth regrouting. Lead form + quote integration.

MEGA Water Seal — DIY Product Funnel
Dual CTA funnel — professional services or DIY product.
Personal & Agency Sites
JMX Next — Graphics & Tech Portfolio
"I build what's next for your business." A neon-violet personal brand site for GHL systems, automation, creative ads, and Amazon, with a live phone carousel of GHL builds.

WebHarvest — New Portfolio
"Build Systems That Generate Leads." Live metrics: 4,206+ leads, $8.32 CPL, 26.1% conversion.

WebHarvest — Old
"Customizable Websites & Funnels That Convert." Earlier minimal version.

Amazon VA Specialist
Portfolio for Jonathan Mendoza — Amazon VA expertise, built in Framer.

Aira Denisse — Graphic Designer
"Design That Makes Your Brand Unforgettable." Typography-led layout.

Front-end Developer | UI/UX
First personal portfolio version — dark aesthetic, dramatic typography.

Very First Portfolio Site
Redesigned dark theme, cleaner layout, AI-assisted build with Claude.

NexSale - Portfolio Site
My portfolio site for NexSale.

New Brand & Portfolio - NEX
Premium website with modern aesthetics and seamless user experience.
Regas Media
Client Onboarding
Creating and configuring GHL sub-accounts, users, permissions, and initial settings.
Load Snapshots
Deploying GHL snapshots into sub-accounts — funnels, workflows, pipelines, templates.
AI Chatbot via Appointwise
Automated lead qualification, appointment booking, and client communication.
Zapier Integration
Connecting GHL with third-party tools — syncing data, triggering actions.
Slack Call Center Alerts
Real-time Slack notifications for new leads, new messages, and follow-ups via GHL API/webhook integration.
Want a system like these?
Every project starts with a conversation about what's actually broken in your funnel.
Start a project










Autonomous Social Media AI Agent
A fully autonomous social media agent built with Claude Code in VS Code — performs deep research, generates scroll-stopping visuals, writes platform-optimized copy, and publishes to every major platform in a single click. Zero manual work.
Publishes across 30+ platforms including Reddit, Threads, Google My Business, Pinterest, Discord, Bluesky, Telegram, Medium, WordPress, and more.