Multi-Trade Project Request Hub for GCs

A structured inquiry and estimating handoff for general contractors handling plumbing, electrical, HVAC, and carpentry requests across one project.

Website & Lead GenerationHome & Local ServicesMonthly office plans with request-volume and estimator-seat tiers.
MVP time5-7 weeks
DifficultyModerate
Infra cost$7-$125
RevenueMonthly office plans with request-volume and estimator-seat tiers.
Review the decision summary
9,294 views
Updated August 2, 2026

Decision snapshot

Is this worth validating?

Build this if

Office staff repeatedly chase missing scope and manually decide which estimator owns each discipline.

Avoid this if

The contractor mainly needs field dispatch, job costing, construction management, or automated instant pricing.

Validate first

Submit ten recent inquiry scenarios through the form and verify staff agree with the routed trade owners and can prepare a quote without a basic-information callback.

Problem and target customer

Why this exists

Customer problem

Project inquiries arrive through calls, email, and generic forms with missing site details, unclear trade scope, and photos detached from the request. Coordinators re-contact prospects before estimators can decide ownership or prepare a quote.

Who pays

Small general contractors and multi-trade service firms with an office coordinator assigning residential or light-commercial inquiries to estimators.

Business model

Monthly subscription per contractor office, with higher tiers for additional estimators, service territories, and request volume.

Editorial note

The first product boundary ends at a quote decision. Project delivery, dispatch, and job costing would turn a focused lead handoff into a construction management suite before the intake problem is validated.

Trade routing should be explainable and editable by the contractor. Address, property type, selected discipline, and staff availability are enough to propose ownership while unusual requests remain in a human triage queue.

The strongest beta signal is fewer clarification calls before estimating. Completion rate and quote speed are useful later, but the source does not establish target percentages.

Choose your next step

What do you need next?

Evaluate the operating tradeoffs quickly, or inspect how to build the MVP.

Evaluation preview

What would it take to run?

Directional infrastructure estimates for the current 300 project requests assumption. Open the full calculator when you are ready to change it.

Open full cost and deployment
ManagedSelected
$5-$30/ month

Managed app, database, and job capacity for public requests and staff triage.

Lowest operating effort
Lean self-hosted
$7-$28/ month

One operator-managed server handles intake, files, database, and staff views.

Lowest baseline cost
More control
$40-$105/ month

Separate runtime, database, and storage capacity for heavier request traffic.

Most separation and control

Build blueprint

Build the first paid use case

Product goal

Who it serves and what it must change

Target user
A property owner submitting a project and the contractor coordinator who routes complete scope to the right estimator.
Problem
Incomplete, multi-channel inquiries make staff chase basic site, timing, trade, and photo details before estimating can begin.
Measurable outcome
A test request spanning two trades reaches the correct estimator queue with complete contact, property, scope, timing, and attachment context, then advances to a recorded quote decision.

MVP scope

What ships now and what waits

Included

  • Conditional public request form for property, project type, trades, urgency, access, budget band, and photos
  • Service-area and selected-trade routing rules with visible reasons
  • Coordinator triage queue for exceptions, duplicates, and manual reassignment
  • Estimator ownership, internal notes, quote due date, amount, and customer-facing status
  • Email confirmations and status updates with delivery tracking

Excluded

  • Automatic image-based scope diagnosis
  • Construction project management after acceptance
  • Crew scheduling and dispatch
  • Contract signing and invoicing
  • Guaranteed instant estimates

UX and user flow

Screens, actions, and states

Project Request

Collect enough site and scope information for the contractor to make a routing decision.

Select property typeChoose tradesAdd photosReview and submit
Triage Queue

Separate routed inquiries from service-area, missing-data, and multi-trade exceptions.

Inspect requestResolve exceptionAssign estimatorMark not served
Estimate Workspace

Give an estimator the request, attachments, ownership, notes, due date, and quote controls.

Add noteRequest clarificationRecord quoteChange owner
Request Status

Let the prospect check whether information is needed, a quote is ready, or the request was declined.

View statusAnswer clarificationOpen quote summary

Primary flow

  1. A prospect enters the property address, selects affected trades, describes the work, adds timing and photos, and consents to contact.
  2. The server validates service territory and applies ordered trade-routing rules, preserving the matched reason.
  3. A coordinator reviews exceptions or confirms the proposed estimator and quote due date.
  4. The estimator requests clarification or records a quote summary and amount.
  5. The prospect receives the status update and the request is marked Accepted, Declined, or Expired after a decision.

Loading, empty, and error states

  • Draft
  • Submitted
  • Needs triage
  • Awaiting clarification
  • Assigned
  • Quote preparing
  • Quoted
  • Accepted
  • Declined
  • Not served
  • Expired

Core entity outline

Entities and business rules

ProjectRequest

Stores the customer, property, scope, timing, and lifecycle of one inquiry.

Fields
reference, contact_name, email, phone, property_address, property_type, description, urgency, budget_band, status, submitted_at
Relations
Has many RequestedTrades, Has many Attachments, May have one Quote
RequestedTrade

Identifies each discipline involved and its routing result.

Fields
request_id, trade, scope_note, routing_status, estimator_id, routing_reason
Relations
Belongs to ProjectRequest, May reference Estimator
RoutingRule

Defines an ordered territory, property, trade, and availability condition for assignment.

Fields
priority, trade, postal_codes, property_types, estimator_id, active
Relations
May assign many RequestedTrades
Quote

Captures the estimator's bounded proposal summary and customer decision.

Fields
request_id, amount, scope_summary, valid_until, status, sent_at
Relations
Belongs to ProjectRequest
RequestMessage

Keeps clarification questions and customer answers attached to the inquiry.

Fields
request_id, sender_role, body, created_at
Relations
Belongs to ProjectRequest

Business rules

  • Submission requires contact consent, a valid property location, at least one supported trade, scope text, and timing.
  • Routing rules are evaluated by priority and retain the matched rule; no match sends the request to Needs triage.
  • A multi-trade request remains one customer inquiry but each selected trade may have a different estimator.
  • Only an assigned estimator or coordinator may record a quote; customers can view but not edit it.
  • Quote acceptance is blocked after valid_until and does not create a construction project in the MVP.

Architecture and data flow

Components, integrations, and controls

Public intake app

Render conditional form steps, uploads, confirmation, and customer status.

Staff operations app

Protect triage, estimator assignment, notes, and quote actions.

Application API

Validate requests, evaluate routing rules, enforce transitions, and queue notices.

PostgreSQL database

Store requests, trades, rules, quotes, messages, and delivery state.

Object storage

Keep project photos outside the relational database.

Integrations

  • Address lookup for normalized service-area checks
  • Transactional email for confirmations, clarification, and quote notices
  • Optional SMS for time-sensitive status notices after explicit consent
  • Optional Make webhook for an internal assignment handoff

Data flow

  1. The form uploads validated images and submits their storage keys with the structured request.
  2. The API normalizes the address, checks service territory, evaluates each selected trade, and stores routing reasons transactionally.
  3. Coordinator and estimator actions append ownership and status history before notifications are queued.
  4. Customer clarification updates the existing request and returns it to the assigned estimator without creating a duplicate.

Failure handling

  • Save a local form draft and preserve completed fields when an upload or submission fails.
  • Send address lookup failures to manual triage rather than rejecting a potentially valid project.
  • If email or SMS fails, retain the request and expose a resend control with delivery history.

Security

  • Use signed, expiring customer-status links and role checks for all staff operations.
  • Strip image metadata, verify MIME type and size, and serve attachments through authorized URLs.
  • Keep addresses and customer contact details out of client logs and analytics events.

Rate limits

  • Limit submissions by IP, contact address, and property address with a bot challenge after bursts.
  • Cap photo count and total bytes per request.
  • Throttle status-link checks and bound notification retries per recipient.

Deliverables and acceptance

Definition of done for the MVP

Deliverables

  • Responsive conditional intake and customer status pages
  • Protected triage queue and estimator workspace
  • Schema, migrations, service-area configuration, and routing-rule editor
  • Attachment pipeline and notification delivery log
  • Tests for routing, multi-trade ownership, permissions, expiration, and failure recovery

Acceptance criteria

  • A customer can submit a two-trade request with photos and receive one reference number.
  • Rules route each requested trade independently and show staff the rule that matched.
  • An out-of-area or unmatched address appears in Needs triage without losing the submission.
  • An estimator can request clarification and the customer's answer returns the same inquiry to active review.
  • When a notification provider fails, staff still see the saved status change and can resend without duplicating the quote.

Recommended stack

Enough technology for the first version

Web application

Next.js and Tailwind CSS

Serve a mobile intake and dense staff queue from one application.

Data and auth

PostgreSQL with Auth.js

Represent multi-trade assignments, ordered rules, quote states, and staff roles.

Files

Cloudflare R2

Store project photos with signed access and predictable low-volume costs.

Email

Resend

Deliver request, clarification, and quote notices with visible failure state.

Address lookup

Mapbox Geocoding API

Normalize locations for service-area checks while preserving manual review on lookup failure.

Why this is sufficient

The key technical risk is trustworthy routing from incomplete public input. A relational rule model, protected file storage, and explicit triage state keep ownership explainable without AI classification.

Not required for the MVP

LLM APIVector databaseConstruction scheduling suiteAccounting integrationNative mobile app
Next stepTurn the blueprint into an execution plan

Copy the build prompt, model the operating cost, and choose where to deploy.

Build and ship

Execution

Build, price, and deploy the MVP

Once the blueprint is clear, use the prompt, cost model, and deployment options to start building.

Build prompt

Copy this into a builder

Build a mobile-friendly public intake plus a desktop staff queue in Next.js. Use administrator-defined trade and territory rules; do not use an LLM to classify construction scope.

Build prompt

Your build prompt is ready

Open the prompt pack whenever you are ready to take this blueprint into your builder.

Based on the blueprintReady for your builderFollow-up steps included

Cost calculator

Model the MVP operating cost

A technical run-cost estimate for the first production version. Team, acquisition, payment fees, and business COGS are excluded.

Estimated monthly total$5-$30

$8.33-$50 per 500 project requests

Project requests / month300 project requests
Selected pathEasiest
Pricing checkedAug 2, 2026

Usage assumptions

Use beta workload metrics when available.

Infrastructure approach
Managed app, database, and job capacity for public requests and staff triage.
Optional modules
Cost breakdown

$5-$30 per month

Low and high values allow for usage variance and plan headroom.

Managed intake deployment

Managed app, database, and job capacity for public requests and staff triage.

5K project requests included, then $5-$15 per 5K project requests
$5-$25
Project photo storage

Object storage for intake images after the included beta allowance.

Monthly allowance from this idea's operating profile
$0-$5

Included

  • Application and database hosting
  • Project photo storage
  • Routine transactional email
  • Backups and background notification jobs

Not included

  • Estimator labor
  • Phone service
  • SMS carrier registration fees
  • Mapping overages beyond beta assumptions
  • Contracts, accounting, and legal review

Pricing basis

The estimate combines the selected infrastructure path, required operating modules, selected optional modules, and usage above included monthly allowances. Taxes and regional uplifts are excluded.

Deployment options

Pick the operational tradeoff

Choose based on operating preference, not only the headline price.

EasiestRecommended

Railway

Host intake, staff operations, database, and background notices with little platform setup.

$5-$25/month before optional messaging

Good fit

  • Small GC office
  • Managed deployment
  • Moderate request volume

Limitation

Resource use and attachment traffic can increase the bill.

Cheapest

Vultr

Run the app, worker, and database on one small Vultr VPS with Docker Compose and explicit backups.

$7-$23/month

Good fit

  • Cost-sensitive beta
  • Single server
  • Operator-managed backups

Limitation

The operator owns updates, monitoring, and restore drills.

More control

DigitalOcean

Separate application, worker, data, storage, and backup responsibilities as the workload grows.

$40-$100/month

Good fit

  • Separated services
  • More attachments
  • Operational headroom

Limitation

More components increase configuration and observability work.