Private system, In production
Office software for a home-exterior contractor
One phone app for leads, estimates, customers, the calendar and the crew time clock, plus storm alerts that plan when roof ads run.
01New lead
02Contacted
03Estimate sent
04Won
Lost, with a reasonPrice · Went with someone else · No reply
Concept · sample data
- Client
- A home-exterior contractor
- Features live
- 23
- In development
- 8
- Updated
- October 7, 2026
Why
Why it was built
A contractor's office has to follow every lead from the first call to the finished job, know which crew member is on which site, and react the moment a storm comes through. When that lives in text threads, a paper calendar and the owner's memory, things slip: a lead nobody called back, a forgotten punch at payroll time, an ad still running after the weather has cleared. The owner wanted one app on the phone that holds all of it, and that the crew can use on their own phones for clocking in.
Features
What it does
Everything in this list is built and running in the client's business.
01
Owner home screen
Four live panels on one phone screen: who needs a call back right now (with a call button), who is on the clock and what is booked today, how many leads came in through the website, and the value of open estimates and jobs won this month.
02
Sales pipeline
Every job moves through new lead, contacted, estimate scheduled, estimate sent, won, scheduled, in progress and completed. Marking a job lost asks for the reason, such as price or no response, so lost estimates can be counted and followed up later. A quick-add form saves a new lead in about 15 seconds.
03
A customer list that keeps everything
Customers are archived, never deleted, and each one shows every job, note and change over time. Filters split leads, customers, lost deals and archived records, with tap-to-call and tap-to-email.
04
Full history on every job
Every stage change, note and update is time-stamped and kept, so the office can scroll back through the whole story of any customer or job.
05
Calendar with phone reminders
A month view for estimates, installs, meetings and follow-ups, linked to the customer and the job. Reminders arrive as phone notifications at the lead time the owner picks, and a reminder that failed to go out is marked overdue instead of quietly disappearing.
06
Crew time clock that checks location
Workers sign in on their own phone. Clocking in is limited to the job site or the shop (the phone's GPS confirms it), clocking out works anywhere, and nobody can have two shifts open at once.
07
Timesheets and payroll export
A live view of who is on the clock and the hours per worker for any date range, with shifts that cross the start or end of the range split correctly. Forgotten punches are fixed in one tap, and the hours download as a CSV file (a plain spreadsheet file) that is cleaned so nothing typed into the app can run as a spreadsheet formula.
08
Sign-in problems fixed from the owner's phone
When a crew member cannot get into the time clock, the owner gets an alert with a one-tap button to restore their access. The alert names the worker only by a short code.
09
Receipts, job photos and notes from the field
Workers who are clocked in can snap a receipt (amount and type, such as materials, fuel or tools), job photos and notes. Photos are shrunk on the phone before upload so they go through on a weak signal. The owner approves, rejects or marks each receipt paid back.
10
Website leads arrive on their own
Chats and booking requests from the contractor's website turn into customers and jobs automatically, labeled with tags such as Wants a call or Urgent. Repeat requests from the same person within a day join the same job, which shows what the customer sent and the ad click the lead came from.
11
Every website lead in one list
A separate screen lists every lead the website collected, including the ones that never became a job, with the full record of each one and a plain note on anything the system chooses not to store.
12
Installs like an app, with instant lead alerts
It sits on the home screen like an app and sends notifications for website requests left half-finished, urgent requests at any hour and call-back requests. Lock-screen alerts never show a customer's name, phone number or address, urgent alerts are capped per hour without losing any, and a notification that fails is sent again.
13
Leads arrive once, and only from the website
Lead forms are verified before they reach the system, so only the real website can add a lead. Each lead is recorded once, so a re-send never creates a duplicate, and a lead type the system doesn't recognize yet is held and retried instead of dropped.
14
Search that forgives typos
One search bar finds phone numbers however they were typed, dollar amounts, dates written like 'next Tuesday', and names with small typos.
15
Trash with a 30-day undo
Anything deleted sits in the Trash for 30 days and can be restored before a nightly cleanup removes it. Website leads are never deleted automatically.
16
Health checks in Settings
Settings lists the devices that get alerts, whether the website connection is working, the last 50 deliveries from the website and what happened to each, and shows a red or amber warning if the reminder or cleanup jobs stop running.
17
Storm alerts on the owner's phone
Every 5 minutes the system checks National Weather Service alerts for the company's service area and sends a phone notification and an email as soon as a warning or watch is issued, day or night. Imminent warnings, heads-ups and all-clears are sent in different ways, and the owner is told if the weather feed itself goes down.
18
Storm page
One screen shows the alerts in force and how each was sent, the severe-weather outlook for the next three days, wind-gust forecasts for the next 72 hours and recent storm damage reports.
19
A roof ad plan that follows the weather
Area by area, the system works out when roof repair and roof replacement ads should run, based on weather warnings and confirmed damage reports such as high winds, tornadoes or large hail, and when they should stop once the weather clears. The owner can pause or restart the plan for any area with one tap.
20
Tells real damage from fallen trees
The text of each storm report is read to tell real damage to a home, like a tree on a house or a roof blown off, apart from trees down on roads or wires, so longer ad runs only follow storms that actually damaged houses.
21
Rules tested on ten years of storms
The alert and ad rules were replayed against every weather alert for the service area from 2016 to 2026, to see how many alerts and ad days each rule would have produced.
22
Stays signed in on work phones
Office and crew phones stay logged in without forced timeouts, so the app is ready the moment someone opens it on a job.
23
Private by default
Customer and crew records can only be seen by signed-in staff, and the code's add-on libraries are checked for known problems every week.
In development
In development
Not live yet. This work is built or being built on our side and isn't part of the running system.
01Not live
Estimate requests with the details attached
Requests from a planned estimate tool on the website will arrive as jobs with the customer's answers, the price range they were shown and the best time to call. A second request for the same house is matched to the first without overwriting what the office already entered.
02Not live
One-tap follow-up buttons
Buttons for called, no answer (adds a note and a call-back reminder for the next business morning), call back on a date, inspection booked (opens a calendar entry already filled in), quote sent and not interested.
03Not live
Do-not-contact handling
Marking a customer as asked not to be contacted records the request for good and moves any planned call-backs to the Trash, so nobody calls them by mistake.
04Not live
Open a job from an office email
Each lead email to the office gets a button that opens that job in the app, asking the person to sign in first when needed and landing back on the job afterward.
05Not live
Leads with odd characters still save
A lead with characters the database can't store, such as half of an emoji, will be cleaned and saved instead of rejected.
06Not live
Fix website requests from the app
From the app, the owner will be able to correct what the website's chat recorded, retry stuck deliveries and see a log of who changed what. Part of this is built; the settings screens are still to come.
07Not live
Ads that switch on and off by themselves
A Google Ads script reads the roof ad plan every hour and applies it to the campaigns. It ships in a preview mode that only reports what it would change, so the live ads aren't touched yet. Once switched on, it pauses the campaigns if it can't reach the system, stops a campaign that keeps spending without a lead, and keeps ads off low-quality partner sites.
08Not live
Ad bids by area and a monthly ad cap
Bid adjustments for each area and a monthly spending cap for the whole ad account, set in the app and applied by the ads script. The code is finished; it isn't confirmed live yet.
Services
Services behind this system
- ServiceCustom softwareBusiness software built around how you work: a customer list (CRM), an employee time clock app, job scheduling and automatic reports.
- ServiceGoogle AdsAds on Google for people nearby who are searching for your service, with the calls and forms from each ad counted.
- ServiceWeb developmentCustom websites that do a job: booking and request forms, online price calculators, links to your other tools and large sets of pages.
Under the hood
Under the hood
The tools it is built with, and what each one does.
- Next.js
- The framework the screens and the server code are written in.
- React
- Draws the screens and updates them as the data changes.
- TypeScript
- JavaScript with types, so many mistakes are caught before the code runs.
- Tailwind CSS
- Styles the screens, with large tap targets for use on a phone.
- PostgreSQL
- The database where every record is kept.
- File storage
- Keeps uploaded photos and images.
- Cloud hosting
- Hosts the app.
- Scheduled jobs
- Runs the reminder, storm and cleanup jobs on a schedule.
- Web Push
- Sends notifications to phones and browsers without an app store.
- Resend
- Sends the storm and ad emails.
- Google Ads Scripts
- A script inside the Google Ads account that reads the system's ad plan every hour.
- National Weather Service API
- The government weather feed the storm alerts and damage reports come from.
- Zod
- Checks every piece of incoming data before it is used.
- PGlite
- A copy of the PostgreSQL database that runs inside the tests, so database rules are checked against the real setup.
Privacy
Why the client isn't named
The client isn't named and nothing here comes from their data. The animation is a concept with sample data.
More
Other private systems
- In productionTrip scheduling and staff time clock for a medical transport companyBooks patient rides and round trips, assigns them to drivers using real drive times, and runs the staff time clock and weekly timesheets.
- Built, not launchedOnline ordering and kitchen screens for a restaurantCustomers order online, the kitchen sees each order on a tablet, and the manager runs the menu, deals and reports from one back office.
- In developmentAn AI that answers a restaurant's phone and takes the orderA working prototype that picks up, takes a pickup or delivery order in plain conversation, and sends it to the same kitchen screen as online orders.
- IndexAll client workPublished websites and every private system.
Next step
Need software that fits how your business runs?
Tell us what you keep track of today and where it breaks down. We reply with questions or a written proposal that lists each screen and feature with its price.