Full-Stack Software Developer (Python / React / AI Integration)

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

TYPE OF WORK

Full Time

SALARY

Negotiable

HOURS PER WEEK

40

DATE UPDATED

Oct 23, 2026

JOB OVERVIEW

Hiring: Full-Stack Software Developer (Python / React / AI Integration)

Remote — Philippines Preferred
Company: Titan Roofing USA
Employment Type: Initial paid project with potential for long-term employment
Experience: Mid-Level to Senior (3–5+ years preferred)
Compensation: Negotiable based on experience and demonstrated ability

About the Company

Titan Roofing USA is an established roofing and contracting company based in Montana, United States.

We are developing a new software platform called RoofReady AI, designed to streamline roofing estimates, automate material calculations, and improve production management.

Our goal is to build this system for our own company first, then potentially expand it into a commercial software product for other roofing contractors.

We are looking for an experienced, independent software developer who can help design, build, test, and improve this platform.

This is not a basic website or chatbot project. We need someone capable of developing a reliable business application.

What You Will Build

The first version of our software will:

1. Automatically Read Roofing Measurement Reports

Users will upload PDF roof measurement reports from different satellite measurement providers.

The system should extract roof measurements such as total roof area, pitch, ridge length, hip length, valley length, eaves, and rakes.

Users must be able to review and correct the extracted measurements.

2. Calculate Roofing Material Quantities

Using the verified measurements, the system will automatically calculate quantities for roofing materials such as shingles, underlayment, ice barrier, ridge cap, starter, flashing, and accessories.

Calculations must use configurable formulas and manufacturer specifications.

3. Generate Detailed Roofing Estimates

The application will maintain a database of material prices, labor rates, and roofing assemblies.

It will calculate material costs, labor costs, other direct job costs, gross profit margins, and recommended selling prices.

Users must be able to edit quantities, pricing, and estimate details.

4. Integrate With Our Existing CRM

We currently use JobNimbus for customer records, photos, contracts, and proposals.

The new application should integrate with JobNimbus where supported by its API.

5. Build AI Production Handoff Automation

After a job is sold, the system should review the approved estimate and job information, identify missing or conflicting production details, and create correction tasks before the job is scheduled.

A production manager must approve the completed handoff.

Required Technical Skills

* Strong Python development experience.
* React or Next.js frontend development.
* PostgreSQL or Supabase.
* REST API development and integrations.
* OpenAI API or similar AI document-processing experience.
* PDF text extraction and document processing.
* Business calculation and data validation.
* Git and GitHub.
* Experience building complete web applications.

Experience with ---------- , n8n, Airtable, or JobNimbus is a plus.

Experience with construction estimating, inventory management, CRM software, or SaaS products is also valuable.

What We Expect

We need someone who can take a detailed business requirement and turn it into working software.

You should be comfortable designing database structures, building user interfaces, integrating APIs, troubleshooting technical problems, and documenting your work.

We value clear communication, reliability, practical problem-solving, and attention to detail.

You do not need previous roofing industry experience. We will explain our estimating and production processes.

However, you must be willing to learn how our business operates.

Development Approach

We will begin with a clearly defined, paid first project:

Build a prototype that uploads a roofing measurement PDF, extracts the measurements, allows users to verify them, and generates a basic material and labor estimate.

If the prototype is successful, we plan to continue development into a complete estimating and production management platform.

We prefer milestone-based development with working demonstrations and clear deliverables.

Communication

Our company operates in Montana, USA, using Mountain Time.

We are comfortable working with a developer based in the Philippines and do not require someone to work overnight to match US business hours.

We expect regular written updates, clear questions when requirements are unclear, and scheduled demonstrations of completed work.

We prefer proactive communication rather than assumptions.

How to Apply

Please include the following information in your application:

1. A brief introduction describing your development experience.
2. Links to two or three business applications you have built.
3. Your experience with Python, React, and PostgreSQL/Supabase.
4. Examples of AI integrations or PDF document-processing projects.
5. Your experience integrating third-party APIs.
6. Your preferred hourly rate or project pricing structure.
7. Your weekly availability.
8. Whether you are interested in a long-term working relationship.

Important: Please begin your application with the words “RoofReady Developer” so we know you have read the complete posting.

Also answer this technical question:

“How would you design a system that reads roofing measurements from PDFs created by multiple providers, verifies the extracted measurements, and calculates material quantities without relying on AI for mathematical accuracy?”

We are looking for a developer who can explain their technical approach clearly, not simply list programming languages.

We are interested in building a long-term working relationship with the right person.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0140
Total Execution Time  0.0153
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,518,152 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Full-Stack-Software-Developer-Python-React-AI-Integration-1755375
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0068 seconds)  (Hide)
0.0007   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1755375
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 904258
 LIMIT 1 
0.0005   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1755375
AND `misc`.`id` IS NULL 
0.0005   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-10-26',ej.date_added) duration_days, DATEDIFF('2026-10-26',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-26',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1755375' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1755375 
0.0008   UPDATE employer_jobs SET hit_counts = '***Oct-23-2026=178***Oct-24-2026=819***Oct-25-2026=52***Oct-26-2026=7' WHERE job_id= '1755375'  
0.0007   UPDATE employer_jobs SET monthly_hits = '***Oct-2026=1056' WHERE job_id= '1755375'  
0.0013   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1755375' 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` = 1755375 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '904258'
AND `date_added` >= '2022-06-08' 
0.0003   select * from teasers 
0.0002   SELECT * FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)