FieldQuote Pro

Business

Original Idea

Field Quote Builder - Problem: contractors lose jobs due to slow estimates. - Target users: home services, trades, small contractors. - Core features: template-based quotes, photo capture, e-sign, instant pricing. - Platform/tech: mobile app + backend API, PDF generation.

Product Requirements Document: FieldQuote Pro (v1.0)

1. Executive Summary

FieldQuote Pro is a mobile-first "local-first" application designed for trade professionals (HVAC, plumbing, electrical) to generate, sign, and collect deposits on professional service quotes instantly from the job site. By eliminating the delay between site inspection and estimate delivery, FieldQuote Pro increases conversion rates and professionalizes the client experience for small-to-medium contractors.

2. Problem Statement

Home service contractors often lose potential jobs due to "quote lag"—the window of time where a technician leaves a job site to manually calculate costs and email a PDF later. Competitors often step in during this delay. Current solutions are either too complex (enterprise FSM software) or too manual (Excel/Paper), failing to provide a seamless, offline-capable, and integrated workflow for on-site closing.

3. Goals & Success Metrics

  • Speed to Quote: Reduce the average time from site arrival to quote delivery to under 10 minutes.
  • Win Rate: Increase contractor lead-to-job conversion by an estimated 15% through on-site signing.
  • Payment Velocity: Reduce time-to-deposit collection by offering integrated on-site "Tap to Pay."
  • System Reliability: 99.9% uptime for offline-to-online synchronization.

4. User Personas

  • The Field Tech (Mike): Needs a rugged, fast UI. Often in basements with no signal. Wants to take photos and select items from a list without typing.
  • The Small Business Owner (Sarah): Needs to ensure branding is consistent, prices are updated for inflation, and signed quotes automatically sync to QuickBooks for accounting.

5. User Stories

  • As a Tech, I want to create a quote using a template so I don't have to manually add common line items.
  • As a Tech, I want to capture site photos directly into the quote so the client has visual proof of the recommended work.
  • As a Tech, I want to collect a signature and deposit on my phone even without a signal, so I can lock in the job before I leave.
  • As an Owner, I want all signed quotes to automatically create invoices in QuickBooks Online to reduce my evening admin work.

6. Functional Requirements

6.1 Quote Management

  • Template Engine: Support for pre-defined labor and material bundles.
  • Dynamic Pricing: Real-time calculation including tax, overhead, and discounts.
  • Photo Documentation: In-app camera with annotation and WebP/AVIF compression.

6.2 Closing & Compliance

  • E-Signature: Legal signature capture with RFC 3161 timestamping.
  • PDF Generation: Automated branded PDF generation using Playwright (High fidelity).
  • Integrated Payments: On-site deposit collection via Stripe Terminal (Tap to Pay).

6.3 Data & Sync

  • Offline-First: Local SQLite database allows full app functionality without internet.
  • Background Sync: Automatic WAL-streaming to PostgreSQL when connectivity returns.

7. Technical Requirements

7.1 Tech Stack (2026 Standards)

  • Frontend: React Native v0.83.x (New Architecture: Fabric/TurboModules), React 19.2.
  • State/Storage: Nitro SQLite with PowerSync for WAL-based Logical Replication.
  • Backend: NestJS v11.1.12 on Node.js 22, deployed on AWS Lambda (arm64).
  • Database: PostgreSQL (Amazon Aurora DSQL for clusterless scaling).
  • PDF Engine: AWS Lambda + Playwright + @sparticuz/chromium.

7.2 Integrations

  • Payments: Stripe Terminal SDK v5.0.0+ (Tap to Pay support).
  • Accounting: QuickBooks Online API (utilizing CloudEvents for webhooks).
  • Messaging: Twilio API for SMS PDF delivery.

8. Data Model

| Entity | Attributes | Relationships | | :--- | :--- | :--- | | Contractor | ID, Name, LogoURL, TaxRate, QBO_Token | Has many Quotes, Templates | | Quote | ID, ClientID, Status (Draft, Signed, Paid), TotalPrice, SignatureHash | Has many LineItems, Photos | | LineItem | ID, Description, Qty, UnitPrice, Type (Material/Labor) | Belongs to Quote | | Photo | ID, S3_Key, Lat/Long, Timestamp, AnalysisTags | Belongs to Quote |

9. API Specification

  • POST /v1/quotes/sync: Batch sync of local SQLite changes to PostgreSQL.
  • GET /v1/quotes/{id}/pdf: Triggers Lambda PDF generation; returns signed S3 URL.
  • POST /v1/payments/intent: Initializes Stripe SetupIntent for on-site "Tap to Pay."
  • POST /v1/webhooks/qbo: Handles CloudEvents from QuickBooks for status reconciliation.

10. UI/UX Requirements

  • Field-Optimized: High-contrast buttons (min 44x44px), "Fat-finger" friendly inputs.
  • Dark Mode Support: Essential for outdoor/bright sunlight visibility.
  • Progressive Disclosure: Hide complex pricing breakdown until the "Review" stage to keep the Tech focused.

11. Non-Functional Requirements

  • Performance: App launch to "New Quote" screen in <1.5s.
  • Security: AES-256 encryption for client PII at rest; TLS 1.3 in transit.
  • Availability: Local-first architecture ensures 100% uptime for core field tasks.

12. Out of Scope

  • Full Inventory/Warehouse management (v2).
  • Employee payroll and timesheet tracking.
  • Lead generation or marketing automation.

13. Risks & Mitigations

  • Risk: Signature not legally binding in specific regions.
    • Mitigation: Integrate DocuSeal or EUDI Wallet Kit for high-compliance regions.
  • Risk: Data conflicts during multi-device sync.
    • Mitigation: Implement Deterministic CRDTs via sql_crdt for conflict resolution.

14. Implementation Tasks

Phase 1: Project Setup & Core Architecture

  • [ ] Initialize React Native 0.83.x project with New Architecture enabled.
  • [ ] Set up NestJS 11.1.12 backend with esbuild for Lambda deployment.
  • [ ] Configure PostgreSQL with Aurora DSQL.
  • [ ] Initialize PowerSync/Nitro SQLite for local-first data layer.

Phase 2: Quote & Template Engine

  • [ ] Build local SQLite schema for Contractors, Templates, and Quotes.
  • [ ] Implement Template selection UI component.
  • [ ] Build real-time pricing engine with TypeScript logic shared between FE and BE.
  • [ ] Implement "Site Photo" capture with react-native-compressor (JSI).

Phase 3: Closing & Payments

  • [ ] Integrate Stripe Terminal SDK v5.0.0 for Tap to Pay.
  • [ ] Build e-signature canvas with cryptographic hashing (SHA-256).
  • [ ] Implement Playwright-based PDF generation Lambda with 1536MB RAM.
  • [ ] Create Twilio SMS notification service for PDF delivery.

Phase 4: Integrations & Compliance

  • [ ] Build QuickBooks Online OAuth2 flow and Estimate-to-Invoice mapping.
  • [ ] Implement QBO Webhooks using the 2026 CloudEvents standard.
  • [ ] Setup RFC 3161 Trusted Timestamping for signatures.
  • [ ] Finalize background sync queue with expo-task-manager.

Phase 5: QA & Deployment

  • [ ] Conduct "Dead Zone" testing (simulate offline quote creation and sync).
  • [ ] Run security audit on S3 bucket policies and signed URL expirations.
  • [ ] Deploy to App Store / Google Play with Provisioned Concurrency for PDF Lambda.