Back to Hub

Process Estimates

Complete guide to viewing, managing, and configuring estimates — categories, products, flow steps, rules, and QuickBooks sync.

Overview

Estimates in RFS Hub are generated through the Estimate Chatbot. When a customer completes the guided flow, the system automatically creates an estimate with line items, pricing, and totals. From the admin area, you can view all estimates, manage the product catalog, configure the chat flow, set up pricing rules, and sync estimates to QuickBooks Online.

Each estimate has a unique number in the format EST-YYYYMMDD-XXXX (e.g. EST-20260312-0001for the first estimate on that date). Estimates are stored with the customer's contact information, all line items, and totals including HST at 13%. The system supports four categories: Alarm System, CCTV/Cameras, Access Control, and Intercom; each has its own products, flow steps, and rules.

Estimates List

Navigate to Estimates in the sidebar to see all generated estimates. Each row shows the estimate number, customer name, email, category, status, QBO sync status, and creation date.

Filtering & Searching

FilterTypeOptions
SearchText inputSearch by customer name, email, or estimate number.
CategoryDropdownAll (default), Alarm, CCTV, Access Control, Intercom, or any custom categories.
StatusDropdownAll (default), Draft, Sent.
QBO StatusDropdownAll (default), Pending (not yet synced), Synced, Error.

Estimate Details

Click the expand arrow on any estimate row to see its details — all line items with quantities and unit prices, grouped by how each product is billed (for example equipment, installation services, monitoring). You can also see the QBO sync status and any error messages.

QuickBooks Online Sync

When QuickBooks Online (QBO) is connected, you can push estimates to QBO to create corresponding estimate records in your accounting system. The QBO connection is set up under Hub → Integrations → QuickBooks.

Pushing Estimates to QBO

There are three ways to push estimates:

  • Single push — Click the "Push to QBO" button on an individual estimate row.
  • Selected push — Check the boxes next to multiple estimates, then click "Push Selected."
  • Sync All Pending — Click "Sync All Pending" to push all estimates with status "pending" or "error" to QBO at once.

If an estimate has already been synced, the button shows "Re-sync" instead.

Bulk Sync

Use the "Select All" checkbox to select all pushable estimates (those not yet synced), then click "Push Selected" to sync them in batch. A confirmation dialog appears before the bulk sync begins.

Estimate View Page

Each estimate has a public view page at /estimate/view/[id]. This is the page customers see when they receive an estimate link. It shows:

  • Company header with name, phone, and email.
  • Estimate number and date.
  • Customer name, email, and phone.
  • Line items table with product name, quantity, unit price, and rolled-up subtotals by billing type.
  • Subtotals for equipment, installation, one-time, and monthly (as applicable).
  • HST calculation and grand total.
  • Notes section with any applicable notes.

Printing & PDF

The estimate view page includes a Print button that opens the browser print dialog. You can print to paper or save as PDF. The page is styled for clean printing with proper page breaks.

Estimate configuration (Hub)

Categories, products, flow, rules, selectors, notes, and the estimate knowledge base are edited in Hub → Estimate System (/hub/estimate). That page has tabs for overview, categories, products, flow builder, rules, selectors, notes, knowledge base, and test scenarios. The legacy Settings → Estimate tabs for this data were removed — use the Hub Estimate System page instead.

Categories

Categories define the types of security systems you offer estimates for. Each category has its own flow, products, and rules. Manage them under Hub → Estimate System → Categories.

Category fields

FieldRequiredDescription
SlugYesA unique URL-friendly identifier. Must start with a lowercase letter and contain only lowercase letters, numbers, and underscores. Cannot be changed after creation. Example: cctv, access_control
Display NameYesThe name shown to customers in the chatbot. Example: "CCTV / Camera System"
Display OrderNoNumeric sort order. Lower numbers appear first. Default: 0. Use the up/down arrows to reorder.
IconNoA Lucide icon to display next to the category. Options: shield-alert, camera, door-open, phone.
VisibilityYespublic — customers can start this category in the chatbot (subject to publish checks). internal / hidden — not offered to customers from the picker.

Products

The product catalog contains all items that can appear on an estimate. Each row has oneunit price plus metadata describing what kind of line it is. Manage products under Hub → Estimate System → Products.

Product fields

FieldRequiredDescription
CategoryYesWhich category this product belongs to.
NameYesUnique catalog key (stable identifier). Example: panel_dsc_powerseries
DescriptionYesCustomer-facing label on the estimate.
Item typeNoProduct or Service (legacy column).
Item kindYesEquipment, installation, monitoring, lease, service, fee — drives how totals and PDFs group the line.
Billing cycleYesOne-time, monthly, or annual.
Unit priceNoPrice per unit in dollars. Default: 0.
Install laborNoOn equipment rows, optional per-unit install labor rolled into the estimate (separate installation line items are modeled as their own products when needed).
QBO item id / SKUNoQuickBooks linkage for sync.
Sort orderNoDisplay order within the category.
ActiveNoInactive products are not added by rules.

You can also import products from QuickBookswhen QBO is connected. Click the "Import from QBO" button to pull products from your QuickBooks account.

Selectors

Selectors define which products appear in the product grid when the flow uses a product_selector step. Rows are scoped by category(the step uses that category's selector set). Configure them under Hub → Estimate System → Selectors.

Chat flow (Flow Builder)

Flow steps and transitions are managed on the Flow Builder tab (visual graph). Each step captures one piece of information; edges carry conditions that decide what is asked next.

Step Fields

FieldRequiredDescription
Step KeyYesA unique identifier for this step. Use lowercase letters, numbers, dots, and underscores. Example: camera.count, installation_type
CategoryNoWhich category this step belongs to. Select "Shared" for steps used across all categories (like contact info). Otherwise select a specific category.
Field NameYesThe answer field name where the customer's response is stored. This name is used in transition conditions and product rules. Example: camera_count, installation
QuestionYesThe question text shown to the customer. Example: "How many cameras do you need?"
AI HintNoExtra context for the AI to help present the question naturally. Example: "Suggest 4-8 cameras for a typical home. More for larger properties."
Input TypeYesHow the customer provides their answer:
  • choice — Multiple choice with defined options (e.g., Yes/No, New/Upgrade).
  • number — A numeric value (e.g., number of cameras).
  • text — Free-form text response.
  • product_selector — Product quantity selector with cards and +/- buttons.
  • contact — Collects name, email, and phone.
  • confirm — Yes/No confirmation step.
OptionsFor choice typeThe available choices. Add options one by one. Each option is displayed as a clickable chip. Example: ["New Installation", "Upgrade Existing", "Add More Cameras"]
PhaseNoWhich phase of the flow this step belongs to: system_selection, requirements (default), contact, or confirmation.
Sort OrderNoDisplay order within the flow. Default: 0.
TerminalNoIf enabled, this step ends the flow (no more questions after it). Default: Off.
ActiveNoToggle to enable/disable the step. Default: Active.

Transitions

Transitions define which step comes next based on the customer's answers. Each transition has a from step, a to step, a condition expression, and a priority.

Conditions use a simple expression language. Examples:

  • always — Always take this transition (used as a fallback).
  • installation=new — Take this transition when the "installation" answer is "new."
  • camera_count>4 — Take this transition when camera_count is greater than 4.
  • installation=new AND camera_count>4 — Compound conditions.

When multiple transitions match, the one with the lowest priority number wins (priority 1 is evaluated before priority 10).

Product Rules

Product rules determine which products get added to the estimate and in what quantities, based on the customer's answers. Manage rules under Hub → Estimate System → Rules (quantity mode: fixed, from answer field, or formula).

Rule Fields

FieldRequiredDescription
Rule NameYesA descriptive name for this rule. Example: "Add NVR for new CCTV installations"
CategoryYesWhich estimate category this rule applies to.
ConditionYesWhen this rule should activate. Uses the same expression language as transitions. Use always to always apply. Example: installation=new AND camera_count>0
ProductYesWhich product to add to the estimate when the condition matches. Select from products in the same category.
QuantityYesHow many of the product to add. Can be:
  • Fixed number — e.g., 1 (always add exactly one).
  • Answer field — e.g., camera_count (use the customer's answer).
  • Formula — e.g., CEILING(camera_count/2) or door_count+motion_count.
PriorityNoRule evaluation order. Lower numbers are evaluated first. Default: 10.
ActiveNoToggle to enable/disable the rule. Default: Active.

Notes

Notes are conditional text blocks that appear on the estimate document. They can be used for disclaimers, terms, warranty information, or any other text that should appear based on the estimate category or customer's answers. Manage notes under Hub → Estimate System → Notes.

Estimate Knowledge Base

The estimate KB contains articles specific to the estimate flow. These help the AI answer questions during the estimate conversation — for example, explaining the difference between camera types or what monitoring includes. Manage the estimate KB on the KB tab of Hub → Estimate System.

Testing and validation

Use the Test tab on Hub → Estimate System to run the full flow and rules against saved scenarios. For publish workflows, load a saved scenario and use Run & record so a passing run is stored on that scenario (required before a category can be set to public).

The Overview tab summarizes validator results and recent runtime diagnostics from live sessions. The Flow Builder also validates continuously and blocks saves when errors remain.

The Estimate API Test page at /hub/estimate-api-test lets you evaluate condition and quantity expressions in isolation.