Executive Sales Assistant / Estimating Coordinator – U.S. Roofing Company

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

SALARY

N/A

HOURS PER WEEK

40

DATE UPDATED

Sep 23, 2026

JOB OVERVIEW

U.S. Roofing & Construction Company | Long-Term Position

About Premium Roofing Systems:
Premium Roofing Systems is a growing roofing company located in Melbourne, Florida USA. We are looking for a highly organized, detail-oriented Virtual Sales & Estimating Coordinator to work directly with the owner and support our sales operation.

This is not a cold-calling position and is not a typical general virtual assistant role.
You will work behind the scenes helping us manage roofing leads, prepare estimates, organize customer information, maintain our CRM, follow up with potential customers, and make sure opportunities continue moving through our sales pipeline.
We are looking for someone who wants a long-term position, takes ownership of their responsibilities, communicates extremely well, and enjoys creating order in a fast-moving business.

What you'll be responsible for:
-Sales & Lead Support: Monitor new and existing leads, make sure every lead is properly entered and categorized, identify customers requiring follow-up, prepare follow-up emails/texts for approval or send approved communications, track outstanding estimates, organize appointment information, and make sure leads do not disappear because someone forgot to follow up.

-Roofing Estimating: Assist with preparing residential and commercial roofing estimates using our templates and pricing systems. Create & review roof measurement reports, enter quantities, organize material requirements, request material pricing from suppliers, prepare estimate documents, check estimates for missing information, and maintain accurate project information.
You are not expected to know roofing on day one. We will teach the right person our systems and estimating process. Previous roofing, construction, estimating, or contractor experience is a major advantage.

-CRM Management: Maintain and clean our JobNimbus CRM, update customer records, correct incomplete information, maintain accurate job stages/statuses, upload and organize documents, identify duplicate or stale records, create follow-up tasks, track customer communication, and help maintain CRM data quality.
A major part of this role is ensuring that when we open a customer record, the information is accurate and we immediately know what needs to happen next.

-Owner/Executive Support: Work directly with the owner of Premium Roofing Systems to help organize daily sales priorities, prepare information before appointments, track open items, organize supplier quotes and measurement reports, and remove repetitive administrative work from the owner's schedule.

Typical workflow
A new roofing lead comes into PRS.
You may:
Review lead → Verify customer/property information → Update JobNimbus → Obtain/organize roof measurement → Prepare estimate information → Request supplier pricing if necessary → Prepare estimate → Owner/salesperson reviews → Send approved estimate → Schedule follow-up → Update CRM → Continue follow-up until outcome is documented.
Your job is to help make sure every step actually happens.

Systems you'll work with
Experience with these is helpful but not required:
JobNimbus or another CRM
Gmail / Google Workspace
Google Drive
Google Sheets
Roof measurement software
PDF documents and measurement reports
Microsoft Excel
ChatGPT / AI tools
Calendars and scheduling software
We are actively implementing AI and automation into our company, so you should be comfortable learning new technology.

The person we're looking for
You should be:
Extremely organized. You notice when something is missing.
Detail-oriented. Roofing estimates involve measurements, quantities, addresses, pricing, and customer information where mistakes matter.
Proactive. We don't want someone who waits for instructions every hour. If an estimate hasn't been followed up with, we want you to notice.
Reliable. If you say something will be completed, it gets completed.
Comfortable asking questions. We would rather you ask than guess.
A strong written communicator. You'll help prepare professional customer and supplier communications.
Comfortable with numbers. You don't need to be an accountant, but measurements, quantities, percentages, and pricing shouldn't intimidate you.
Process-minded. You should enjoy checklists, systems, organization, and improving workflows.

Preferred experience
Applicants with experience working for a U.S.-based roofing, construction, restoration, home-service, real estate, estimating, or contracting company will receive additional consideration.
Experience with JobNimbus, roofing measurements, estimating, CRM management, or construction material takeoffs is especially valuable.

However, attitude, intelligence, attention to detail, communication and willingness to learn are more important than having every qualification.

Schedule
This position will work closely with our Florida-based team.
Time Zone: Eastern Time (Florida, USA)
Full time
We need meaningful overlap with our normal business hours. Exact schedule can be discussed with the right candidate.

Compensation will depend on experience, especially roofing/construction estimating and JobNimbus experience.
We are looking for someone who can grow with the company. As responsibilities and capabilities increase, there will be opportunities for increased compensation and responsibility.

How to apply
Please send:
A short introduction about yourself and why this position interests you.
Your previous experience supporting a U.S. company.
Any experience with roofing, construction, estimating, CRM management or JobNimbus.
Your available working hours in Eastern Time.
Your desired hourly/monthly compensation.
A short description of how you keep yourself organized when managing many customers or tasks simultaneously.

IMPORTANT: At the beginning of your application, write: “Nothing Falls Through the Cracks.”
Applications that do not include this phrase will not be considered.
Please do not send a generic AI-generated application. We would rather receive a short, genuine response explaining your actual experience.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0152
Total Execution Time  0.0165
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,524,608 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Executive-Sales-Assistant-Estimating-Coordinator-US-Roofing-Company-1736343
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0074 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0005   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1736343
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 978939
 LIMIT 1 
0.0010   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1736343
AND `misc`.`id` IS NULL 
0.0006   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-10-27',ej.date_added) duration_days, DATEDIFF('2026-10-27',e.rebill_date) duration_rebill, ej.*, e.deactivate FROM employers e, employer_jobs ej WHERE e.employer_id = ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id = '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-10-27',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1736343' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1736343 
0.0010   UPDATE employer_jobs SET hit_counts = '***Sep-23-2026=695***Sep-24-2026=123***Sep-25-2026=67***Sep-26-2026=35***Sep-27-2026=21***Sep-28-2026=35***Sep-29-2026=35***Sep-30-2026=21***Oct-01-2026=19***Oct-02-2026=19***Oct-03-2026=15***Oct-04-2026=12***Oct-05-2026=26***Oct-06-2026=15***Oct-07-2026=16***Oct-08-2026=19***Oct-09-2026=23***Oct-10-2026=15***Oct-11-2026=14***Oct-12-2026=21***Oct-13-2026=13***Oct-14-2026=15***Oct-15-2026=15***Oct-16-2026=15***Oct-17-2026=8***Oct-18-2026=6***Oct-19-2026=10***Oct-20-2026=15***Oct-21-2026=10***Oct-22-2026=14***Oct-23-2026=7***Oct-24-2026=9***Oct-27-2026=2' WHERE job_id= '1736343'  
0.0007   UPDATE employer_jobs SET monthly_hits = '***Sep-2026=1032***Oct-2026=353' WHERE job_id= '1736343'  
0.0012   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1736343' AND status LIKE 'sent%' ORDER BY id DESC  
0.0004   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1736343 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '978939'
AND `date_added` >= '2022-06-08' 
0.0004   select * from teasers 
0.0003   SELECT * FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)