Share
Explore

Objective


Building the best-in-class Customer Relationship Management software (Hub) which meets the needs of Residential Lawn Care and Pest Control companies across the US. The CRM Hub should deliver the standard CRM functionalities across sales, Customer service, and marketing, and go beyond - by enabling seamless integration with industry-specific workflows.

The CRM Hub will form the focal point of the “Growth Operating System” (Growth OS) for the Lawn Care and Pest Control companies. The core value that the CRM Hub in particular, and the OS in general, is expected to deliver to the users is “fast and sustainable growth”.


In order to build a product that is “wildly desirable” in the industry, the following key qualities are expected from the CRM Hub, among others:
Reliable: perform the required functions stably with as rare failures as possible
Versatile: to deliver the best-in-class performance for companies that are one member to many thousands in headcount (long term vision)
Usable: users should be able to learn and use it easily without hours of training

Market Brief


The Residential Lawn Care industry comprises of close to 100k companies with annual revenue ranging from as low as $100k to $1.4 billion. Close to 94% of these companies are estimated to have annual revenue lower than $500k.

The Pest Control industry comprises of close to 30k businesses with annual revenue currently estimated at $17 billion - of which 68% is from the residential segment. Close to 91% of these companies are expected to have annual revenue lower than $500k.

Competitors that provide CRM software (++) to the Lawn Care & Pest Control Industries, among others:
Jobber
ServicePro (ServSuite)
RealGreen
Asset
Yardbook
LMN
PestRoutes

Associated User Personas


The User Personas who will use the CRM Hub are as follows:

Sales Rep / Business Development Manager / Account Manager:
He/she is responsible for bringing in new business - he is the soldier on the ground. Typically involves receiving the incoming Customer calls, understanding customer requirements, and offering a quote to close the deal. Depending on how the company operates, site visits are also required - especially for high value clients. Reports to the Sales Manager.
The biggest pain point for this persona is that turning around a lawn care/pest control quote takes time - from minutes to hours - and requires manual effort. This sluggish turnaround of quotes along with inaccuracies in the property measurements results in lost sales. Often, the first-to-respond lawn care provider wins the customer and with high price sensitivity of the customer, right priced & instant quotes are the keys to making a successful sale.

Sales Manager:
Heads a team of Sales Reps. He/she manages the Sales Team - assigns them monthly/weekly quota, assigns any new leads that come in, trains them. Typically reports to the Director/VP of Sales.
As a leader of the sales team, he is mandated to deliver improved headline metrics such as % conversion and revenue per Sales Rep/BD. Inefficiencies built in to the current manual quoting processes as described in point 1 are formidable barriers to improvement in the headline metrics. Add to this, RoI from growing marketing spend leaves a lot be desired because buying lawn care/pest control services online is at best a broken UX for the homeowners right now. E-commerce revolution has brought about significant changes in the buying behavior of customers, they increasingly make purchases online - 24x7.
Business Owner:
For small companies, he/she handles/oversees all activities of the business very closely - from marketing to sales to operations to administration. In other companies, this will be an ‘admin’ who oversees cross-departmental functions. General Manager in large companies are functionally equivalent (except few central functions like marketing)
As the owner, he wears multiple hats, and thus looks to bring in efficiencies across all the business heads - sales, marketing, operations and business management. A bunch of software exist in the market but offer workflow solutions only for some of these dimensions - but not all.

There are a few more personas who will use the CRM Hub in limited capacity - like Operations Manager, Admin Assistants, Accounts depending on how a particular company distributes functions.

Third Party Integrations

WIP
Integrations with Third party software:
Quickbooks
Digital Marketing - Mailchimp
Door Knocker Software -
Decision to be taken {SalesRabbit}
Calling and Texting software -
Decision to be taken {Captivated, Spitfire}
Data Analytics/Dashboards -
Decision to be taken {Tableau}

Navigation UI for the CRM Hub

The UI layout for the CRM Hub is as follows:
There will be a vertical side Navbar with quick access CTAs for (icons only with title on hover):
Homepage
Create New Customer
Search a Customer
Call a Customer
Add a Payment
The user should be able to pick and choose the CTAs on vertical side Navbar in the settings menu
A horizontal top Navbar to allow the user to switch to any other module in just 2-clicks. The Navbar will also house the following dropdown buttons (dropdown options TBD as per PRDs):
Customer
Marketing
Setup
Operations
Management
Activity Feed
User account dropdown button
Within a module, the user will be able to navigate via the Breadcrumbs UI

CRM Hub Data Model

The CRM Hub data model is described below:
A unique ‘company’ object will be created when the first user of a new landscaping/lawn care/pest control company gets onboarded on the CRM Hub. ‘Company Name’ entered by the user to be the unique key for a company
A company object will have a ‘branch’ object as an attribute. There can be one or more instances of the branch object associated with a single company. The ‘Branch Name’ will be the unique key for a branch within a company
A branch object will have a ‘user’ attribute. There can be one or more instances of the user object associated with a single branch. The users mapped to a branch will have varying levels of access to the modules based on the permissions granted by the company admin (a user mapped who has complete access to all the functionalities)
Every user to have >=1 ‘customers’ as an attributes. A customer can be associated with only one user in a company. Customers to have properties and attributes associated with them. Customer attributes are of two types: Provided by default, or custom created by the user in the settings menu
Every customer to have one or more properties associated with it. A property can be associated with multiple customers across companies. Every property object identified by a address+customer+branch+company unique key to have the following data associated with it:
Property Attributes (Provided by default or custom created by the user)
Quotes
Payments
Services
Invoices

The CRM Hub data model is depicted in the below diagram.

image.png


Company Attributes
0
Attribute Name
Data Type
Available By
#Instances possible
Input UI
1
Company Name
English Alphabet, Number, Special Character
Default
1
Text Field
2
Company ID
Number
Default
1
Auto-assigned, Not visible to user/customer, not editable
3
Branch
Branch Object
Default
Equal to or More than 1
Text Field, Dropdown List UI
4
Website
URL
Default
Equal to or More than 1
Text Field
5
Years in business
English Alphabet, Number
Default
1
Dropdown List UI
6
Company Headcount
English Alphabet, Number
Default
1
Dropdown List UI
7
SMTP Email Settings
SMTP Object
Default
1
Text Field, Dropdown List UI
8
Any Other custom ‘Company Attribute’ created by the user
English Alphabet, Number, Special Character, Boolean
Custom
Equal to or More than 1
Text Field, Dropdown List, Radio button, Toggles
There are no rows in this table

Branch Attributes
0
Attribute Name
Data Type
Available by
#Instances possible
Input UI
1
Branch Name
English Alphabet, Number, Special Character
Default
Equal to or More than 1
Text Field
2
Branch ID
Number
Default
1
Auto-assigned, Not visible to user/customer, not editable
3
Billing Address
Address in Postal Standard format
Default
1
Text Field
4
User
User Object
Default
Equal to or More than 1
Dropdown List UI
5
Any Other custom Branch Attribute’ created by the user
English Alphabet, Number, Special Character, Boolean
Custom
Equal to or More than 1
Text Field, Dropdown List, Radio button, Toggles
There are no rows in this table

User Attritbutes
0
Attribute Name
Data Type
Available by
#Instances possible
Input UI
1
Name
English Alphabet, Number, Special Character
Default
1
Text Field
2
Login Email ID
Validation needed for domain names and special characters
Default
Equal to or More than 1
Text Field
3
Login Password
English Alphabet, Number, Special Character
Default
1
Text Field
4
Phone Number
Number, one special character (‘+’)
Default
Equal to or More than 1
Text Field
5
Job Role
English Alphabet, Number, Special Character
Default
Equal to or More than 1
Dropdown List UI
6
Tools Used
English Alphabet, Number, Special Character
Default
Equal to or More than 1
Checkbox UI
7
Inbox Email ID
Validation needed for domain names and special characters
Default
Equal to or More than 1
Text Field
8
Inbox Password
English Alphabet, Number, Special Character
Default
1
Text Field
9
Customer
Customer Object
Default
Equal to or More than 1
Offline vs Online Shop flows
10
Any Other custom ‘User Attribute’ created by the user
English Alphabet, Number, Special Character, Boolean
Custom
Equal to or More than 1
Text Field, Dropdown List, Radio button, Toggles
There are no rows in this table
Customer Attributes
0
Attribute Name
Data Type
Available by
#Instances possible
Input UI
1
First Name
English Alphabet, Number
Default
1
Text Field
2
Last Name
English Alphabet, Number
Default
1
Text Field
3
Company Name
English Alphabet, Number, Special Character
Default
1
Text Field
4
Branch Name
English Alphabet, Number, Special Character
Default
1
Text Field
5
Phone Number
Number, one special character (‘+’)
Default
Equal to or More than 1
Text Field
6
Email ID
Validation needed for domain names and special characters
Default
Equal to or More than 1
Text Field
7
Customer ID
Number
Default
1
Auto-assigned, not editable
8
Customer Type
English Alphabet
Default
2 - Residential or Commercial
Radio buttons
9
Billing Address
Address in Postal Standard format
Default
1
Text Field
10
Property
Address in Postal Standard format
Default
Equal to or More than 1
Text Field
11
Status
English Alphabet
Default
Equal to or More than 1
Dropdown List
12
Automated Reminders
Boolean
Default
3 - Reminders for Quote, Invoice, Service Visit
Toggles
13
Contact Preferences
English Alphabet
Default
3 - Email, Text Message, Both
Radio button
14
Contact Owner
English Alphabet, Number
Default
1
Dropdown List
15
Source
English Alphabet, Number
Default
Equal to or More than 1
Dropdown List
16
Tags
English Alphabet, Number, Special Character
Default
Equal to or More than 1
Dropdown List
17
Channel
English Alphabet
Default
2
Auto-assigned, not editable
18
Created Date
Date format
Default
1
Auto-assigned, not editable
19
Last Activity
Date format
Default
1
Auto-assigned, not editable
20
Priority
English Alphabet, Number
Default
Equal to or More than 1
Dropdown List
21
Contact Import Date
Date format
Default
1
Auto-assigned, not editable
22
Payment Status
English Alphabet
Default
1
Auto-assigned
23
Document
File types: PDF, .XPS, XLS, XLSX, XLSM, XML, .TXT, .CSV, .GIF, .JPG, .PNG, .SVG, .HTML
Default
Equal to or More than 1
‘Upload File UI’
24
Any Other custom ‘Customer Attribute’ created by the user
English Alphabet, Number, Special Character, Boolean
Custom
Equal to or More than 1
Text Field, Dropdown List, Radio button, Toggles
There are no rows in this table

Property Attributes
0
Attribute Name
Data Type
Available by
#Instances possible
Input UI
1
Address
Postal Standard format
Default
1
Text Field
2
Lot Area
Number (floating)
Default
1
Vector
3
Lawn Area
Number (floating)
Default
1
Vector
4
Bed Area
Number (floating)
Default
1
Vector
5
Is billing address?
Boolean
Default
2
Checkbox UI
6
Tax Code
English Alphabet, Special Characters, Numerical (floating)
Default
1
Dropdown List UI
7
Route
English Alphabet, Special Characters, Numerical
Default
1
Dropdown List UI
8
Any Other custom ‘Property Attribute’ created by the user
English Alphabet, Number, Special Character, Boolean
Custom
Equal to or More than 1
Text Field, Dropdown List, Radio button, Toggles
There are no rows in this table

Quotes, Payments, Services, and Invoices attributes have been detailed later in this doc.

Functional Requirements


User Signup, Login, Email & Call settings

This section details the user signup and account setup workflows

The User(s) should have the ability to:
v1:
Sign up on the CRM Hub:
v1:
The user would have the option to either “Sign up with Google” or sign up by manually entering the following compulsory details on the signup page:
Name: Only English alphabet input allowed. If the user enters numbers or special characters, he should be shown an error message around the field reading - “You can't use numbers or special characters”. The corresponding error message should be displayed to the user for the other details
Company Name: English Alphabet, Number, and Special character input allowed
Email ID: The email ID should be validated for Special characters and valid domain names
Password: Standard input type
Until and unless the user has entered all the fields with the correct data type and valid email ID, the “Sign up” CTA should remain deactivated
v1:
When the user signs up using the second method, a verification email should be sent to the user’s email ID and he should be able to verify his email ID by clicking on that link. The modal window should allow for resending the verification email if the user does not get the email.
v1:
The unique key for an account on the CRM Hub will be the Email ID. if a user enters an existing email ID, he will be allowed to click on “Sign up” but instead of a verification email, he will receive an email saying “Looks like you already have an account” with a “Login” button which will take him to the login page
v1:
Signup via invitation flow (v1 to offer full access, layered access v1.5 onwards)
v1.5:
WIP
Company level handling? How is company handled in Falcon? While we don’t need to provide layered access across modules in v1, we will need to define a particular user in a company as an admin who will have the sole access to setting up the payments integration
v1:
Setup their account: As soon as the user verifies their email ID, he should be able to set up his account by entering the following information fields in a modal window titled “YOU’RE ALMOST THERE” and subtext “Please enter the following details to finish setting up your account:”
v1:
Phone number: Number and one special character allowed (‘+’)
v1:
Years in business: Dropdown list UI with options {Just starting, less than 1 year, 1-3 years, 3-10 years, More than 10 years}
v1:
How many people work at your company?: Dropdown UI with options {1-5, 6-10, 11-25, 26-50, 51-200, More than 200}. This Company Attribute will be called ‘Company Headcount’
v1:
What is your company's website?: User should be shown a radio button UI reading “I don’t have a website”. If the user clicks on this radio button, the input field should be disabled. Otherwise, if the user enters the website, it should be validated. If found invalid, the user should be shown an error message reading “Enter a valid company website.”
v1:
What is your ‘Job Role’?: Dropdown UI with options {Owners, CEO, President, SVP, EVP, Director of IT, Director of Technology, Director of Maintenance, Director of Operations, Director of Sales, Director of Marketing, Estimator, Chief Estimator, Account Manager, General Manager, Project Manager, Business Development, Sales Manager, Maintenance Manager, Operations Manager, Branch Manager, Office Administrator, Other}
v1:
What tools do you use currently? Checkboxes UI with the following options {Quickbooks, CRM software (input name with a text field), Payment Service Providers, Spreadsheets, Pen & Paper}
v1:
All above details to be compulsory and the user to be nudged to fill them
v1:
Billing address: Standard postal format using Google API
v1:
Log in to their account in the CRM Hub via one of the two ways:
Enter email ID and password in a login form. Forgot password functionality to be provided on this form
Login with Google
v1.5:
Email setup:
@Shikhar Tripathi
multi-email ID login & display flow
Managing SMTP email settings: SMTP server, port, etc. This will be a global setting for all users of that organization
v1.5:
Connect their email with the CRM Hub: so that they can read, send and receive emails in the CRM Hub. Will involve capturing the email ID, password of their email account
v1.5:
WIP
Call & text messaging setup


Creating New Customers & Quotes

This functionality captures the most critical sales workflow - adding a customer and creating an instant quote

The User should have the ability to:
v1:
Create New: ‘Create New’ allows the user to create a new customer, and create a quote for the new customer. This functionality is to be provided as a 2 step process. Step-1 will be called “Customer Details” and will enable the user to create a new customer on the CRM Hub. Step-2 will be called “Create Quote” and will be enabled on the second screen. The following attributes are to be associated with a customer object and are to be asked in the Customer Details step screen. Please note it is not compulsory for the user to fill in any of the details mentioned below. If the user directly skips to the Create Quote screen, the new customer will be saved with a dummy first name of the format “Customer X” where X is a number starting from 1. Customer attributes to be captured:
v1:
First Name (English Alphabet, Number)
v1:
Last Name (English Alphabet, Number)
v1:
Company Name (English Alphabet, Number, and Special character).
A checkbox should be displayed next to this filed asking “Use company name as the Primary Name”
v1:
Radio buttons to mark “Customer Type”: two options - Residential OR Commercial. Compulsory and default selection to be Residential. The Customer display name on the customer dashboard and the customer page will be the Full Name if the customer type is residential and the company name if the customer type is commercial
v1:
Property: to be captured in the Postal Standard format (Google API). To be displayed in a separated field breakdown format:
Street 1
Street 2
City
State
Zip Code
The ability to add more than one address should be provided with a “Add new” button below the address text field. A “Create Quote” button is to be provided next to the Address text field
Not my property flow - same as the online shop (big modal window to open)
v1:
Billing address to be captured separately if needed. Otherwise, it will be the same as the first property address added by the user (Checkbox UI)
v1:
WIP
Assign status to the customer from a dropdown list UI - List of statuses = {Marketing, Quote Requested, Quote Sent, Quote Rejected, Callback, Dropped off, Active, Cancelled, Not Active, Lost, ASAP, No Status}. Customized “Customer Status” can be created by the user in the Settings menu. Define online specific statuses and tules goverining allocation
@Shikhar Tripathi
v1:
Assign “Contact Owner”. In v1, only the user to remain the contact owner by default (in the dropdown list UI)
v1:
As to the Database at the backend, each Customer can have multiple properties (addresses), and each of these properties will have multiple quotes, activities (defined later), invoices, payments
v1:
Assign source to the Customers: Dropdown List UI (e.g. None, Angi, HomeAdvisor, Networx, Thumbtack, Cold Call, Email Marketing, Google Ads, FB ads, EDDM, Referral, Other, etc). List of sources customizable by the user in the Settings menu
v1:
Autosave feature to be provided. That is, at whatever stage the user exits the Create New flow (i.e. if the user closes the Create New flow at any time), the customer and all the details captured must be saved automatically.
v1:
Ability to add a Tag to the customer. To be displayed in the form of a dropdown list UI with an option to create a new tag at the bottom of the list. In the dropdown list UI, multiple selections are allowed. Search functionality to be provided in the dropdown list
v1:
For a customer added via the “Create New” flow, the Channel attribute will be “Offline” by default. The Channel attribute cannot be edited by the user
v1:
There are to be 3 CTAs:
‘Cancel’ -> Modal -> “All the saved progress will be lost. Please Confirm”. 2 CTAs: “Confirm”, “Back”
‘Create Quote’ -> (Primary) Taken to screen 2. The new customer should be saved automatically when the user clicks on this button
‘Create Customer’ -> Customer is created (saved) and the user is taken to the Customer page’s ‘Details’ tab. The Create Quote screen is skipped
v1:
The Create Quote screen:
v1:
The user can directly skip to the Create Quote screen by:
Navigating to the step-2 screen through the progress bar on top
Clicking on the ‘Create Quote’ button next to the Address text field on screen-1
By clicking on the ‘Create Quote’ button at the bottom of the step-1
v1:
Property Address: On this screen, the address should be pre-filled from the Customer Details screen. If not filled in the Customer Details screen, the user should be able to fill it in here. Once filled by the user on this screen, the same address should be filled in the Customer Details screen. If there are multiple addresses added by the user in the Customer Details screen, then all those and their respective quote creation details (services, questions, property measurements) should be displayed in the accordion UI style. There should be a button to “Add” address on this screen too
v1:
Not my property flow - same as online shop (big modal window to open)
v1:
Property measurements: The user should be shown the pre-measured property features areas and the property images with the lawn/bed/lot vectors overlaid. These measurements should be editable. The user should be able to view the side views of the property. The user should be able to open the property view in google maps in one click (in a new browser tab). No option to confirm the serviceable area
For a particular property, edit lawn, bed, lot boundary measurements. Toolkit required mentioned below. Editing to be enabled by clicking on “Edit Area” button and a modal window should open with the imagery and the tool kit.
Edit Lot Boundary
Edit Polygon
Add polygon
Delete Polygon
Cut Hole
Label
Reset
2 CTAs on the modal: ‘Save’ and ‘Cancel’
Quote status: Draft/Awaiting Response/Approved
v1 (few sub-points are v1.5):
Creating the quote: The user should be displayed the list of services enabled for offline quoting by the admin along with their $$ value. He/she should be able to select them, manually override their $$ values, and apply a discount on the overall quote using pre-built discount codes from a dropdown list UI
v1.5:
The user should be able to “Add Optional Line Item” to the quote. He should be able to add a “Client message” in a text box. The tax code should be shown here and the user should be able to select it from a dropdown list UI. The user should also be able to add an “Internal note” here
v1.5:
Fill in any custom Property attributes created by the user or user’s admin in the Settings menu. These attributes will get associated with the customer’s property (like Attribute name = “Has Dog”, Value = “True/False”)
v1.5:
The user should be able to attach files to the quote
v1.5:
The user should be able to change the quote number
v1.5:
The user should be able to see custom-created quote attributes
v1:
Add notes to the customer. Notes to be of two types: (i) General, and (ii) Crew Instructions. To be shown as two separate tabs/boxes
3 CTAs at the bottom:
v1:
‘Back’ -> The user is taken back to the Customer Details screen
v1:
‘Save Quote’. When the user clicks on this button, the quote & the customer details is Customer is created (saved) and the user is taken to the Customer page’s ‘Details’ tab. The status of the quote is “Awaiting Response”
v1.5:
‘Save And ...’ (as a Dropdown Button)
Send: On clicking this CTA, a modal window to open with pre-built email and text templates displayed in two tabs within the modal. The email tab should display the subject and the content of the email (templated to be created in the one time setup module) along with capability to attach a pdf of the quote and document.
The text template should contain the text message along with the link to the quote in the customer hub. The Contact Preferences selected by the user should be selected by default for sending - but the user to have the capability to add/remove either of these
Go to Payments
v1:
Every new customer created should have a unique customer ID (number). This will be non-editable by the user
v1:
There is to be no bar on creating a new customer who may have the same phone number, email ID, property address as a customer already in the user’s customer database. While creating a new customer, the user should be notified when a “Duplicate Customer” already exists through a modal window - based on either one or many of the following customer attributes:
Address
Email ID
Company Name
Phone Number
The modal text should be “You have an existing customer(s) with a similar first and last name, company name, email ID, or phone number” and it should have two CTAs - “Create Anyways” OR “Go To Customer”. The modal should also contain the name, address, and email ID of the Duplicate customer
v1.5:
Fill in any custom Customer attributes created by the user or user’s admin in the Settings menu. Create new customer field modal
v1.5:
Fill in any custom Property attributes created by the user or user’s admin in the Settings menu. Create new property field modal
v1.5:
Assign a “Branch” to the Customer from a dropdown list UI (A list of branches to be created in the Settings menu)
v1.5:
Mark a customer as Marketing/Non-marketing contact
v1.5/v2:
Assign a Tax Code to the customer. Ability to add multiple tax codes to a customer. Picking up tax code automatically based on the zipcode. Ability to define tax codes to be provided in the Settings menu or the one time setup module. Ability to set a default tax code
v1.5:
Contact Preference: 3 radio buttons: (default to be be ‘Both’)
Email
Text
Both
v2:
Enable/Disable automated reminders/notifications for the customer with regards to quotes, invoices, service visits (email and/or text):
Automated Quote Reminder: Follow up on an outstanding quote
Automated Invoice Reminder: Follow up on a past due invoice
Automated Service visit Reminder: Remind the customer of an upcoming visit
v2:
Add multiple phone numbers and email addresses and mark one from each category as ‘Primary’. Next to the ‘Primary’ phone number, there should be a button that allows the user to make a call & or send over a text message to the customer via the CRM itself. Next to the ‘Primary’ email id, there should be a dropdown button that allows the user to (i) send an email to the customer, (ii) Enrol the customer in an email cadence
v1.5:
The user should be able to Bulk import Customers in ‘.csv’ format. Feasibility of ‘.xls’ import to be checked
Progress bar to be displayed to the user on top. Navigable backward only
User click on “Import via CSV file”
A modal window opens with text <>. CTA = “Begin Import”
User clicks on “Upload File”. Instructional text displayed on the modal - “Please upload .csv file with any set of columns as long as it has 1 record per row. The next step will allow you to match your spreadsheet columns to the right data attributes in Attentive.”
After the .csv file upload, the imported columns and the top 3 rows from the .csv file are to be displayed to the customer along with a possible attribute name as per Attentive.
The user confirms the mapping for each column in the .csv file to the corresponding attribute in Attentive. Automated verification of the data type in the column to be done and the user to be notified accordingly. For e.g. if any row in the email column is not of the format <
> - the user is to be notified
Ability to ignore a particular column import
Display % of the column filled to be displayed to the user
Ability to create a new custom attribute if no existing attribute in Attentive corresponds to a column in the .csv file
Once the mapping is confirmed, the user clicks on “Review”. On the Review screen, all the imported data are to be displayed in a table format with invalid entries corresponding to a column being highlighted in red. This sheet will be editable and the user can edit the fields as needed. There will be an option to just show those rows that have discrepancies or invalid format
User clicks on “Submit”
The user gets notified that the import was complete and the imported customer data is displayed in the customer dashboard
v1.5:
The user should be able to import contacts by sync-ing with a Quickbooks online account
v1:
WIP
For customers created via the online shop: Any customer captured via the online shop, his email ID to be used as a key to map him to an existing customer int he CRM database. If the matching email ID does not exist in the database, a new customer is to be created. For such a customer, the channel attribute will be “Online Shop” by default. An automated assignment of the status to happen based on a set of rules - to be detailed by
@Shikhar Tripathi
v1.5:
Create & Edit a Customer List. Add a Customer to a particular list (A list is a simple data structure that holds a set of Customers and has a name & description attached to it)

Indicative Designs - Create New flow


The Customer Page

The Customer Page allows the user to manage the customer’s quotes, payments, invoices, services, and communicate with the customer

v1:
For every customer, there will be a ‘Customer Page’ that will have tabs to: (i) display information regarding the customer to the user in a clean and classified format, and (ii) allow the user to take actions with respect to the customer
v1:
The user can navigate to a particular ‘Customer Page’ by one of the following methods:
v1:
By searching for a particular customer in the search field on the Customer Dashboard and then clicking on one of the customers displayed in the search outputs
v1:
By clicking on a customer row in the Customer Dashboard
v1.5:
From the homepage - by searching for a customer or by clicking on a customer in one of the reports/dashboards on the homepage
For a customer with:
v1:
a single property: When the user lands on the Customer Page the default property will be the only property associated with that customer
v1:
multiple properties:
If the user comes from the Customer dashboard route with a ‘New Activity’ tag attached, the default property will be the one with which the latest customer activity was associated with
In all other cases, the user will land on the ‘Details’ page with the property dropdown list UI open. The user must be compelled to select a property before he can switch tabs or view any information
v1:
Switching between properties: The user can switch properties via a dropdown list UI
.
The dropdown list UI is to remain static on the customer page across all tabs
along with 4 other attributes:
Customer First Name & Last Name
Phone (Primary)
Email ID (Primary)
Customer Status
v1:
The Customer page is to have 6 tabs as listed below. The data contained within each of these tabs would correspond to the property selected.
v1:
Details
v1:
Quotes
v1:
Payments
v1.5:
Activity
v1.5:
Communication (includes Documents)
v1.5:
Services & Invoices (contains Chemical Tracking information)

Details Tab

The tab gives a summary view of all the customer attributes in one place

v1:
The user should be able to view and edit all the attributes associated with the customer in this tab. List of attributes with as below:
v1:
Basic Details section: ‘Edit’ CTA at the top right to enable editing. ‘Save’ to commit changes. ‘Cancel’ to revert.
v1:
First Name (English Alphabet, Number)
v1:
Last Name (English Alphabet, Number)
v1:
Company Name (English Alphabet, Number, and Special character)
v1:
Branch (editable in v1.5 onwards)
v1:
Last Activity Date (automatically captured)
v1:
Created Date Date (automatically captured)
v1:
Customer Type (’Residential’ or ‘Commercial’)
v1:
WIP
Customer Status. The user should be able to edit using a dropdown list UI. List of default statuses = {Marketing, Quote Requested, Quote Sent, Quote Rejected, Callback, Dropped off, Active, Cancelled, Not Active, Lost, ASAP, No Status}
v1:
Edit phone numbers and email addresses and change the ‘Primary’ phone number and email address
v1:
View “Customer Owner”. In v1, the user who creates the customer will remain fixed as the "Customer Owner”.
v1.5
Other users in the company can be allocated a customer
v1:
Edit Tags associated with a customer
v1:
View Customer’s Channel attribute (’Online Shop’ or ‘Offline’). View only, cannot be updated by the user
v1:
Customer Source: Dropdown List UI (e.g. None, Angi, HomeAdvisor, Networx, Thumbtack, Cold Call, Email Marketing, Google Ads, FB ads, EDDM, Referral, Other, etc) - for a single Customer or collectively. List of sources customizable by the user in the settings menu
v1.5:
Assign priority to a Customer (High, Medium, Low) - for a single Customer or collectively. Customizable by the Use. “Medium’ by default
v1.5:
Contact Import Date: Set at the time of import, cannot be edited by the user
v1.5:
View and Edit any custom Customer attributes created by the user or user’s admin in the Settings menu. Create new Customer attributes via a modal window
v1.5:
Mark a customer as Marketing/Non-marketing contact (Marketing Hub usage) - TBD by
@Shikhar Tripathi
v1.5:
Tasks created by the user:
The user can create the following types of task objects associated with a customer. At the set date and set time, the user (assignee) will be notified of the task via a modal notification. Create by clicking on the ‘Create’ dropdown CTA with four options. Modal window to capture the task attributes during creation. Details in the table below:

Tasks
0
Task Type
Attributes (captured during creation)
Modal Notification UI
1
To-do
Title, Text description, Assigned to, Property, Set Date, Set Time Another attribute ‘Status’ to be associated with a task. To be set as ‘Upcoming’ by default
All attributes to be displayed in the modal. CTA - ‘Snooze’, ‘Mark as done’ ‘Snooze’ → user can re-define set date and set time ‘Mark as done’ → Status changes to ‘Done’
2
Call
Title, Call description, Assigned to, Property, Set Date, Set Time Another attribute ‘Status’ to be associated with a task. To be set as ‘Upcoming’ by default
All attributes to be displayed in the modal. CTA - ‘Snooze’, ‘Mark as done’, ‘Call’ ‘Call’ → user can directly call the customer’s primary phone
3
Text Message
Title, Message Text, Assigned to, Property, Set Date, Set Time Another attribute ‘Status’ to be associated with a task. To be set as ‘Upcoming’ by default
All attributes to be displayed in the modal. CTA - ‘Snooze’, ‘Mark as done’, ‘Send text’ ‘Send Text’ → a ready-to-send text template gets created with the Message Text
4
Email
Title, Email Text, Assigned to, Property, Set Date, Set Time Another attribute ‘Status’ to be associated with a task. To be set as ‘Upcoming’ by default
All attributes to be displayed in the modal. CTA - ‘Snooze’, ‘Mark as done’, ‘Send email’ ‘Send Email’ → a ready-to-send email template gets created with the Email Text
There are no rows in this table
The user should be able to view all the tasks created for a customer in a tabular form in the Tasks section in the Details tab. The table should have the following list of columns: Task Title, Task Type, Assigned To, Set Date, Status
v1:
Property section: The user should be able to:
v1:
View all the properties associated with the customer in cards UI. The property currently selected should be highlighted. The other properties should be collapsed in an accordion UI. The card should contain the following information:
v1:
Property image thumbnail with vectors
v1:
Address in Postal Standard Format
v1:
More details icon which details the default property attributes, namely lawn area, bed area, lot area, building footprint, billing address check box UI. The user should be able to edit these. For area attributes editing, a modal window should open with the editing toolkit described earlier
v1.5:
View and update tax object (up to 3)
v1.5:
View and edit custom Property Attributes created by the user in the settings menu
v1.5:
Route (to remain blank in v1)
v3:
Delete button (if there is no service currently active). Data treatment detail needed
@Shikhar Tripathi
v1:
Add new property to the customer in the Postal Standard format (Google API) via “Add New” button. Add custom created Property attributes. To be displayed in a separated field breakdown format one added by the user:
Street 1
Street 2
City
State
Zip Code
Address not found flow
Payments section: The user should be able to:
v1:
View Billing address. Edit billing address via a dropdown list UI of existing addresses or add a new billing address. An address added as a billing address need not be shown in the Property section
v1:
View Payment Option applied to the customer
v1:
View
Payment Method (cards) added for the given customer
v1:
View Invoicing Frequency
v1:
View Account Balance
v1.5:
View
Credit Limit
v1:
Last Payment Date (in bracket show the $$ amount)
v1:
CTA: Dropdown button with the following options
Add a Payment: Takes the user to the Payments Tab with add a payment modal open
Edit Payment Option: Takes the user to the Payments Tab
Edit Payment Methods: Takes the user to the Payments Tab
Edit Invoicing Frequency: Takes the user to the Services & Invoices Tab
v1.5:
Communication section:
Enable/Disable automated reminders/notifications for the customer with regards to quotes, invoices, service visits via toggle UI:
Automated Quote Reminder: Follow up on an outstanding quote. Cadence structure as per the setup module
Automated Invoice Reminder: Follow up on a past due invoice. Cadence structure as per the setup module
Automated Service visit Reminder: Remind the customer of an upcoming visit. Cadence structure as per the setup module
View call log, text message and email summary in chronological order in a card-in-a-scrollable-box UI. CTA:
‘Send’ dropdown button UI with 2 options: (i) Email, (ii) Text Message
‘Call’
v1.5:
Update Contact Preference for the customer: 3 radio buttons: (default to be be ‘Both’). Contact Preferences utility: whenever the user sends a quote, invoice, etc to a customer, the pre-set templates for the contact preferences gets created by default in the ‘Send modal’ (’Send Modal’ defined later in this doc)
Email
Text
Both
v1:
The following CTAs are to be displayed on the top right corner of the Details tab:
‘More’: Dropdown button with the following options: (Primary)
v1:
New Quote
v1:
New Payment
v1.5:
New Service
v1.5:
New Invoice
v1.5:
Delete this Customer. Data treatment and admin permission TBD
@Shikhar Tripathi
Create New Customer (Secondary)
v1:
Customer Notes: Edit notes associated with the customer. Notes to be of two types: (i) General, and (ii) Crew Instructions. To be shown as two separate tabs in the step-2 screen of the Create new flow. For customer onboarded via the online shop, the comments added by the customer on the questions page will be displayed in the General notes
v1:
Quotes section: The user should be able to:
v1:
View quotes created in a tabular format. The list to have the following columns:
Quote Number
Services (in comma separated format)
Date Created
Date Sent
Status
Quote Total
v1:
CTA: ‘Create New’ → the user is taken to the Quote Tab and a new quote is opened
v1.5:
Services & Invoices section:
v1.5:
View service history in a tabular format. The table to contain the following columns:
Service/Program/Package Name
Date Sold
Cancel Date & flow
Invoice Number (hyperlink to the invoice in the Services & Invoices tab)
Invoice Status
v1.5:
CTA: Create New Service → The user is taken to the Services and Invoices tab
v1:
Breadcrumbs UI to display the current location of the user within the CRM Hub by providing a clickable trail of proceeding pages to navigate by
v1.5:
Customer Hub:
v1.5:
The user should be able to send a secure Customer Hub login link to a customer via email and/or text message
v1.5:
The user should be able to block customer’s access to the customer hub

Orphan items: placement of these TBD
@Shikhar Tripathi
v1.5:
Service year?
v1.5:
Reject & initiate refund?


Communication Tab


This tab allows the user the functionality to communicate with the customer via email, phone call and text message, and maintain a log of the same

The user should be able to, after adding his email account to the CRM Hub, for a particular customer:
v1.5: Send one-off emails to a customer. Write email from scratch or use pre-built template. Schedule email for a future date & time. Attach files to emails. View, and reply to emails sent by customers. Email Threading to be allowed
Pre-built templates to be created in the setup module
v1.5: The emails transactions should be displayed in an accordion UI. The card corresponding to a particular email should display the following:
Sent To
Subject line
#opens, #clicks
Timestamp of sending
Cadence
Email Content (collapsed form - accordion UI
v2:
Enrol a customer into an email cadence (Marketing Hub functionality)
The cadence structure along with the email templates to be defined in the setup module
Once a user has setup a a third party calling & text messaging app:
v2:
The user should be able to make calls to and receive calls from a customer. These user should be able to record these calls (global setting to be set up in the Settings menu) and access them in call logs. View call logs. Log call as a text note. Set call outcome status fore every call from a set of given options (Busy, Connected, Left voicemail, No answer, Wrong number)
v3:
Share call recording as a link (possible integration with Twilio)
v2:
The user should be able to send a text message (one-off) to a customer via the third party app - integrated within the CRM Hub. The user should be able to write a text message from scratch or use a pre-set template. Character limit per message as per the app
v1.5:
If the user has not setup a third party calling & text messaging app:
He should be able to make phone call to a customer with his phone using the phone’s standard calling functionality. The user should be able permit the CRM Hub to record a call made to customer via his phone, and then this call recording gets appended to a particular call log
He should be able to send text messages to a customer using the phone’s standard text messaging functionality. The user should be able permit the CRM Hub to read the messages
v2:
View referrals made by existing Customers as a card UI
v2:
Documents: The user should be able to upload documents on to the CRM Hub and attach them to a particular customer. While sending an email to the customer, the user should be able to attach one of these documents to the email, or upload a new document and attach it to the email. If the user does the latter, the new uploaded document should also become attached to the customer TBD
@Shikhar Tripathi
v3:
Ask the Customer for a testimonial, NPS & filling the feedback form
@Shikhar Tripathi

Tentative UI/UX of the Communication Tab
WIP

Activity Tab


This tab gives the user a chronological account of all the actions done with respect to or associated with a customer

v1.5:
The User should have the ability to, for a particular property, view all the following events in a chronological sequence using card UI (card contents TBD
@Shikhar Tripathi
):

Actions done by the user:
Related to Communication:
Calls: completed, missed along with call duration, call outcome as set by the user
Emails (includes one-off, cadence, reminder emails, quote/invoice/service/payment mails) sent, opened, clicked
Text Messages (includes one-off, reminder text messages, quote/invoice/service/payment related text messages)
Related to ‘Customer’ Object
New customer created
Customer Attribute created or updated
Property added/deleted or any Property attribute updated
Related to Quotes:
Quote created
Quote edited
Quote sent
Update in any quote attribute, or creation of any new custom quote attribute
Related to Invoices:
Invoice created
Update in invoice attribute, or creation of any new invoice attribute
Invoice sent
Related to Services
New service added
Service scheduled
Service added to route
Service completed
Job form ready
Update in service attribute, or creation of any new service attribute
Related to Payments
New Payment method added
New Payment added
Payment option changed
Update in a payment attribute, or creation of any new payment attribute


Actions done by the customer:
Related to Communication:
Calls: completed along with call duration, call outcome as set by the user
Emails sent by the customer
Text Messages sent by the customer
Related to ‘Customer’ Object
New customer created via online shop. Tracking activity of the customer on the online shop in a progress bar UI
Old customer does new activity on the online shop. Tracking activity of the customer on the online shop in a progress bar UI
Customer Attribute created or updated
Property added/deleted or any Property attribute updated
Related to Quotes:
Quote viewed in customer hub
Quote created
Quote edited
Quote Approved/Rejected/Edit Requested
Update in any other quote attribute
Related to Invoices:
Invoice viewed in customer hub
Invoice paid
Update in ay other invoice attribute
Related to Services
NPS, feedback shared
Related to Payments
New Payment method added
New Payment added
Payment option changed
Related to the customer Hub
TDB
@Shikhar Tripathi

v1.5:
All recent activity across all customers to be displayed in an “Activity feed” - the “Notification” icon in the header to be repurposed. Activity to be displayed chronologically with the most recent activity at the top. Display till 7 days back with a button to “Load older activities”


Customer Dashboard

This page allows the user to have a bird’s-eye view of all the customer added to the CRM

The User should be able to access the customer dashboard via the top nav bar. Functionalities:
v1:
Tabs on the customer dashboard: A tab means a view of all the customer data with a particular filter applied by default. For example, a tab with the title “Unassigned” should display the customer dashboard to the user but with a filter on the ‘Contact Owner’ Attribute set to “Unassigned”. The user can still apply any other filter to this particular tab, but that filter shall remain applied as long as the user is on the same window of the customer dashboard or refreshes the window
v1:
Default Tabs to be as follows:
All Contacts: All the contacts in the company’s (later version - branch’s) database. Sorted in the order of last activity (recent to oldest)
My Contacts: All the contacts in the company’s (later version - branch’s) database with filter applied on ‘Contact Owner’ = current user
New Activity: All the contacts in the company’s (later version - branch’s) database with filter applied on ‘Contact Owner’ = current user and with any recent activity. If the user clicks on a customer within the tab, he/she is taken to that customer’s page and subsequently the customer card is removed from the tab. List of activities to be provided by Shikhar
Online Shop: All the contacts in the company’s (later version - branch’s) database with filter applied on Channel = ‘Online Shop’
v1.5:
Add New tabs to the dashboard based on pre-set filters on the customer data via a ‘Add tab’ dropdown button. Assign/Edit the name of a tab. Ability to pin it next to the other tabs (if a tab is unpinned, it will be visible only in the ‘Add Tab’ dropdown button and not visible on the custom dashboard by default)
v1:
Ability to unpin a pinned tab given that it is not the only pinned tab in the customer dashboard
v1:
A dropdown button on each tab with two CTAs:
Mark as default
Pin this tab
v1:
In each of the tabs, the Customer data is to be displayed in a table format with pre-set columns. Pre-set columns as follows: {Full Name*, Last Activity Date, Address, Status, Phone}. Details:
*Full Name is a customer attribute which is a concatenation of First Name and Last Name
Last Activity Date values to be of the default format = Date Time (27 Aug, 2021 21:50). Date values = Today, Yesterday, {Date before yesterday} as per the user’s time zone settings in the Settings Menu. The time format can be 24 hours / 12 hours format - adjustable in the Settings menu
Address display: Street 1, Street 2, and City (state and USA not required). For customers with multiple addresses, only 1 address is to be displayed with a “2 more” Accordion UI. If the user clicks on this accordion UI, the card will expand and show all the addresses associated. All the addresses to be hyperlinked to the corresponding property page within the customer
v1:
Pagination UI on all tabs
v1:
Ability to filter Customers based on pre-set parameters (owner, last activity date, status) on all the tabs
v1.5:
Custom filters - which the user can select from a given list of customer attributes that are filter-able (e.g. phone number is an attribute that cannot be filtered). This functionality is to be enabled via a modal window opening on the right hand side of the screen
v1.5:
Ability to the customer to choose what columns to display from a given list of customer attributes. These columns to be displayed across all tabs. Shikhar to create an elaborate list.
v1.5:
Perform the following actions on a single or multiple customers at once (using checkbox UI):
v1:
Assign an owner to a customer. Only one owner for one customer. Modal UI
v1.5:
Edit customer attributes: For the selected customer(s), the user should be able to select one attribute from a dropdown list and then set a value for it. Modal UI. For example, assign a source to the selected Customers
v1:
Delete a customer (user access control)
v1.5:
‘More’ dropdown button with the following CTAs:
Create task
Enroll in Cadence
Add to List
Add Tag
Assign priority
v1:
Ability to search for an existing customer using a search field UI. The search field UI has multiple search boxes each corresponding to a set of pre-defined customer attributes
Attributes in the Search field UI: Name (Primary), Customer ID, Address, Email, Phone
Search Output UI: display the customers on the same tab with the filters corresponding to the tab already applied
CTAs to be provided on the Customer Dashboard on the top right corner
Create New (Primary)
More: Dropdown button with the following options: (Secondary CTA)
Import via CSV
Edit Customer Attributes
v2:
View lists of Customers
v2:
Visualize deal pipelines and $$ at various stages
v3:
Export Customer data

Indicative Designs - Customer Dashboard with Filter

Indicative Designs - Customer Dashboard with Customer Search




Quote Tab

This tab allows the user to create, edit, and send over quotes to customers


For a particular property associated with a customer, the user should be able to:
v1:
View lawn and bed measurement on orthogonal imagery. View side views (with feature vectors turned on by default). The user should have the ability to turn lawn & bed vectors on/off. He should be able to open the property imagery on a modal window by clicking on the ‘Open full screen’. The purpose of allowing a modal window is two fold:
Allow the user to view the property in a bigger window, and
Allow the user to edit vectors if needed as described in point 3 below
v1:
View property on google maps in a new browser window - a ‘View on Google Maps’ CTA to be provided
v1:
Edit lawn, bed, and lot boundary measurements. Editing to be enabled by clicking on the “Edit Area” button and a modal window should open with the imagery (both orthogonal and oblique view), vectors and the toolkit. The toolkit required mentioned below:
Edit Lot Boundary
Edit Polygon
Add polygon
Delete Polygon
Cut Hole
Add Label
Reset
2 CTAs on the modal: ‘Save’ and ‘Cancel’. ‘Save’ → Updates the vectors and the area measurements. ‘Cancel’ → restores the vectors and area measurements to their last saved values.
v1:
Create a new quote: The user should be able to, after clicking on the ‘New Quote’ CTA:
Based on the property measurements and the pricing logic fed into the service catalog, the $$ quote for each of the services, programs, and packages should be displayed to the user (Card UI)
The user should be able to select a service, program, or package by clicking on the card corresponding to that service and select the Frequency/visit from the service card
The user should be able to pick answers to questions (upcharge objects) that determine the quote for services (e.g. Type of grass, Last time mowed) using a radio button input UI
The user should be able to manually override the $$ quote based on property measurements - for a service (not for the total $$ quote). The total $$ quote should get updated accordingly
Should the user edit the property measurements (by editing lot, lawn, bed, and building footprint vectors), the $$ quote against each service as well as the total $$ quote should get updated
v1:
Add service items to the quote that cannot be quoted on lawn, bed, or lot area measurements by clicking on the card corresponding to that service. For such service items, the user has to be prompted to enter the $$ quote manually.
v2:
The user should be allowed to create a new service object on a modal window - once this new service object is saved, the service catalog is updated automatically
For services with ‘Quote to be provided on site visit’ logic: the user should be able to manually enter the $$ quote for these services
v1:
Add a note to the customer. This is visible to the customer - both in the customer hub’s quote view and the quote in the PDF format
v1:
Add or edit Crew Instructions notes (not visible to the customer)
Add custom created quote attributes to the quote. Ability to add them to the quote PDF and the quote as visible in the Customer Hub
v1.5:
The user should be able to “Add Optional Line Item” to the quote. The optional line item should be displayed with the following characteristics in the Customer Hub to the Customer:
The word “Optional’ should be mentioned in this optional service line item’s row (permanently mentioned irrespective of of point ii)
The customer should be able to select this service by a checkbox provided in this service item’s row. If the user clicks the checkbox, the quote total should reflect the changes appropriately
The user should be able to recommend this optional service to the customer via a “Recommend” checkbox UI. If the user clicks on this checkbox UI, the optional service remains selected by default in the quote
For the PDF quote, if the optional service is recommended by the user, the optional service $$ should be added to the quote total.
The user should be able to select the tax (rate) applicable on the quote using a dropdown list UI. The default tax should be the one in the following decreasing priority order:
Tax selected while creating a customer (if different from the default tax code selected in the Settings menu)
Default Tax selected in the Settings menu
A tax code object has the following three attributes and is to be created in the Service Catalog:
Tax Code Title (e.g. Louisiana Service Code, Florida Goods & Services Tax)
Tax Rate (e.g. 5%, 7.5%)
Tax Base (What % of the $$ quote amount will the tax be applicable on. 100% by default)
Tax Description (Text box to record description)
The user should be able to apply discount on the total $$ quote by using discount object. The discount object has the following three attributes and is to be created in the Service Catalog:
Discount Title (e.g. First Year 10%, Senior 5%, Veteran 7.5%). Compulsorily visible in the quote - both on the customer hub as well as the quote PDF
Discount Value (e.g. 10%, 5%, 7.5%). Compulsorily visible in the quote - both on the customer hub as well as the quote PDF
Discount Description (e.g. 10% discount applicable on the first year of service, 5% discount applicable for seniors, 7.5% discount for veterans). The user has the options to enable/disable this in the quote - both on the customer hub as well as the quote PDF. To be disabled by default
The user can click on either the “Save Quote” or “Save and …” dropdown button in order to save changes.
‘Save Quote’ CTA saves the changes made in the quote but does not change the status of the quote
‘Save And ...’ (as a Dropdown Button)
Send: On clicking this CTA, a modal window to open with pre-built email and text templates displayed in two tabs within the modal. The email tab should display the subject and the content of the email (templated to be created in the one time setup module) along with capability to attach a pdf of the quote and document.
The text template should contain the text message along with the link to the quote in the customer hub. The Contact Preferences selected by the user should be selected by default for sending - but the user to have the capability to add/remove either of these
Go to Payments
The user user should be able to create a duplicate copy of an existing quote by clicking on the ‘Create a copy’ dropdown CTA with three options - (i) For this customer, (ii) For existing customer, (iii) For new customer. When the user clicks on this CTA, a modal window should open asking the user to fill in the following details:
If the user select option (i) from the dropdown items - he should be prompted to select one from the ‘N’ properties associated with the customer OR add a new property
If the user select option (ii) from the dropdown items - Customer Search UI to be provided to search for an existing customer. Then the same property selection flow as mentioned in point (i) above will be implemented
If the user select options (iii) from the dropdown items - he should be directed to the “Create New” workflow discussed previously in this doc. In this create new flow, the service selections and upcharge objects on the “Create Quote” page should be same as the quote being duplicated and they should be pre-selected
Acceptance criteria: a new quote, with a unique quote number, the same services and upcharge objects, with the selected customer and property attributes should get created. The status of this newly created quote should be ‘Draft’
Edit an existing quote: For an already created quote for a particular customer and property:
The user should be able to view the created quote and edit, add, or delete service(s)/program(s)/package(s), manually override their individual $$ quotes, edit tax (rate), edit discount code, and commit any other edits as described in point 4 - ‘Create a new quote’
The user can click on either the “Save Quote” or “Save and …” dropdown button in order to save changes, as described in point 4 - ‘Create a new quote’
Any quote edits made (and saved) by the user on the quote tab or by the customer in the Customer Hub are to reflect across both these modules
Treatment of a quote after edits are committed is described as follows:

Effect of edits on Quotes
0
Quote status before edit
Who can edit
Automatic Quote Status after edit
Incidental & Consequential events
1
Draft
User only
Draft
The user is prompted to send over the quote to the customer
2
Awaiting Response
Both - user & customer
Awaiting Response
If the user edits the quote, he is prompted to send over the quote to the customer again - which he can decline
3
Edit Requested
Both - user & customer
Edit Requested
The user, when he edits the quote, has the option to send it again to the customer - which will then automatically change the status of the quote to ‘Awaiting Response’. The user can also manually change the status of the quote to ‘Awaiting Response’ without sending over the quote to the customer
4
Approved
User only
Awaiting Response
Any edits committed to an approved quote to automatically change its status to ‘Awaiting Response’. The user, when committing changes to an ‘Approved’ quote, is notified via a modal window that ‘Customer signature will be removed if edits are saved’. The user can send over the quote to the customer again
5
Rejected
Yes
Rejected
The quote status gets updated in the Customer Hub. The user has the option to send it again to the customer with or without edits - which will then automatically change the status of the quote to ‘Awaiting Response’. The user can also manually change the status of the quote to ‘Awaiting Response’ without sending over the quote to the customer
6
Expired
Yes
Expired
The quote status gets updated in the Customer Hub. The user has the option to send it again to the customer with or without edits - which will then automatically change the status of the quote to ‘Awaiting Response’. The user can also manually change the status of the quote to ‘Awaiting Response’ without sending over the quote to the customer. In both the above cases, the days to expiry counter begins again from scratch
7
Incomplete
Yes
Incomplete: If the quote is still incomplete after the edit

Draft: If the quote is now complete, but was created via the offline flow and has not been sent over to the customer

Awaiting Response: If the quote is now complete, there are two cases possible:
Quote was created via the offline flow and has been sent over to the customer
Quote was created via the online shop by the customer, but now has been completed by the user and has been sent over to the customer
Quote was created via the online shop by the customer, and now has been completed by the customer himself
- do -
8
Archived*
No
Archived*
The quote gets updated in the Customer Hub. The user has the option to send it again to the customer - which will then automatically change the status of the quote to ‘Awaiting Response’. The user can also manually change the status of the quote to ‘Awaiting Response’ without sending over the quote to the customer
9
There are no rows in this table

* The user first needs to un-archive the quote
v1:
Every new quote created - either by the customer or the user to have a unique quote number. The quote number is to be assigned automatically, with every new quote number will be the last quote created across the company plus one
Quote Attributes: Every quote will have the following attributes:

Quote Attributes
0
Attribute Name
Data Type
Available by
#Instances possible
Input UI
1
Quote Number
Number
Default
1
Automated Assignment,Text UI in settings menu
2
Service & Upcharge Objects
Service & Upcharge Objects
Default
Equal to or More than 1
Checkbox UI, Radio button UI
3
Discount
Discount Object
Default
0, 1, 2, 3
Dropdown List UI
4
Tax
Tax Object
Default
0, 1, 2, 3
Dropdown List UI
5
Status
English Alphabet
Default
1
Automated Assignment, CTA
6
Created by
English Alphabet, Number
Default
1
Automated assignment, Dropdown List UI
7
Created Date
Date format
Default
1
Automated assignment
8
Sent Date
Date format
Default
1
Automated assignment
9
Approved Date
Date format
Default
1
Automated assignment, editable in date format UI
10
Any Other custom ‘Quote Attribute' created by the user
English Alphabet, Number, Special Character, Boolean
Custom
Equal to or More than 1
Text Field, Dropdown List, Radio button, Toggles
There are no rows in this table
v1.5:
The user should be able to change the starting/base quote number in the settings menu, that is, the quote number for the first quote. By default, the starting/base quote number will be 1. If the user updates the starting/base quote number after one or more quotes have been created already in that company, the the next new quote number would be fixed as this base number set by the user. Please note that this functionality does not include the ability to change the quote number of a quote that has already been created
PDF version of a quote:
v1: Fixed template to be provided to the user
v2: Editable template(s) to be provided to the user in the Setup menu
v1:
Every quote to have a status attached. This status should update automatically based on any activity done by the user or the customer. The customer cannot update/edit the status of the quote, but the user can in certain scenarios. Status descriptions are as below.

Automatic Trigger: Triggers/Actions which will result in the status of a quote changing to the given status
Manual Change: Direct manual change of status by the user in certain scenarios listed below

Quote Status & Logic
0
Status
Applicable to
Description
Automatic Trigger
Manual Change
1
Incomplete
Both - quote created via online and offline shop (Create New workflow)
Online Shop: If the customer has not finished the first two stages of quote creation (as on the online shop), i.e. he has not clicked on “Checkout” button in the questions screen - at least once. This ‘incomplete’ quote is to be visible to the customer in the Customer Hub

Offline Shop: When the user has not completed the quote creation process, which means either of the following:
In the create new flow, he hasn’t clicked on either the ‘Save Quote’ or the ‘Save and …..” dropdown button OR
In the quote tab, after clicking on ‘New Quote’ CTA, he has not clicked on either the ‘Save Quote’ or the ‘Save and …..” dropdown button
Read description
None
2
Draft
Quote created via offline shop (Create New workflow)
A completed quote that has been created by the user but has not been sent over to the customer. This quote is never visible to the customer in the Customer Hub
Read description
None
3
Awaiting Response
Both
A completed quote that has not expired, and the customer has done none of the following:
Approve
Reject
Request Edits
Whenever a customer creates a quote on the online shop, or the user creates a quote on the offline shop with the conditions specified in the description still true
When the customer requests a quote edit, the user get the ability to change the status to ‘Awaiting Response’ manually
4
Edit Requested
Both
When the customer has requested edits to a completed quote
Read description
None
5
Approved
Both
A completed quote that has been approved by the customer with or without signature (along with a payment option chosen)
Online Shop: When the customer chooses a payment option and pays to book the services* Offline Shop: When the customer, in the Customer Hub, chooses a payment option and pays to book the services*
The user can manually change the status of any quote (whose status is not ‘Approved’ and is not ‘Expired’) To ‘Approved’
6
Rejected
Both
Quote rejected by the customer
Customer clicks on the ‘Reject’ CTA in the Customer Hub
None
7
Expired
Both
A completed and non-’Approved’ quote that is past its expiry date or is marked as such by the user. Expiry date (days to expiry) to be set up by the user in the Settings menu. Once a quote has expired, the customer cannot approve or reject it, but he can request edits. The days to expiry are to be counted from the date of last edit - either by the customer or the user
When the quote is past its days-to-expiry, the quote status changes to ‘Expired’ OR when the user disables “Ask for Approval” for the customer for a quote
8
Archived
Both
This quote will become hidden - thus would neither be visible to the customer in the Customer Hub nor to the user (in the quotes tab or the details tab). No action can be performed on an archived quote until it has been un-archived by the user
None
Only the User to have the capability to archive/un-archive a quote
9
There are no rows in this table
*Here ‘pays to book the services’ includes the case wherein the customer does not need to pay an upfront amount to book the services
Payment options on the Quote: The payment options enabled by the user in the online shop module will be available to the customer in order to pay and book the services - in a radio button UI with the appropriate discount and amount payable displayed next to each of the options
v1:
As mentioned in the Quote Status & logic table, the user should be able to approve any quote - whose status is not ‘Approved’ and is not ‘Expired’ - himself by clicking on the “Approve” CTA next to a quote
v1:
The user should be able to edit the ‘Approved Date’ quote attribute. The user should have the option to display this attribute in the quote sent over to the customer via selected via checkbox UI
v1:
Download a pdf report of the quote (printable)
v1.5:
Quotes to expire after a certain duration of time automatically. Conditions:
v1.5:
The user can set the expiry date of quotes in the settings menu. Post the expiry date, the customer cannot approve or reject the quote. But the customer can request edits on the quote
v1.5:
The user to have the capability to change the status of an ‘Expired’ quote to ‘Awaiting Approval’
v1.5:
For a quote approved by the Customer or approved by the user himself, a button to convert to “Service Schedule” should be provided
v1.5:
The user should be able to attach documents to the email when sending over the quotes for customer’s approval. Size limit XMB per file, up to Y files. Available formats: PDF, XLSX, XLSV, XLS, CSV, JPEG, PNG
v1.5:
The user should be able to view, edit, and add new custom-created quote attributes (can be created in the quote tab via modal window or in the settings menu). The user should be able to display these attributes - none, one or more - in the quote sent over to the customer (selected via checkbox UI)
v1.5:
Ability to archive a quote. An archived quote no longer remains visible This quote will become hidden - thus would neither be visible to the customer in the Customer Hub nor to the user (in the quotes tab or the details tab). No action can be performed on an archived quote until it has been un-archived by the user
v2:
Send quotes via email & text message (with the Customer Hub link to the quote embedded in the content)
v2:
Ability to enable/disable the “Ask for Approval” feature via Toggle UI. A customer can only approve quotes that are enabled for “Ask for Approval”. A disabled quote’s status should be marked as “Expired”
v2:
Quote reminders: The user should be able to send email and text reminders to the customer requesting quote approval in an automated cadence (for quotes with status = ‘Awaiting Response’). The email and text cadence structure to be defined in the setup module. The user should also be able to send one-off reminder to a customer via a “Send Reminder” CTA. On clicking this CTA, a modal window with pre-built ready-to-send templates should be displayed
v2:
Send pre-pay OR auto-pay request/quote/contract for the new year/cycle
v2: The user should be able to see
active customers in proximity of the given customer on a map along with the distance to the nearest route - in order to enable the user:
to take a decision if he can offer some additional discount to close the customer
to create tighter routes
to offer social validation to the given customer (e.g. John who lives two houses next to you is our customer)
v3:
The user should have the capability to manually measure lawn and bed for parcels greater than a threshold size


E-Sign Quotes

E-sign allows the customer to approve a quote electronically

v2:
For a customer viewing the quote in the Customer Hub:
The Customer should be able to open the quote in the Customer Hub and e-sign/approve the quote in the Customer Hub. E-sign can be done by the customer in either of the following two ways:
Click on the ‘Approve Quote’ CTA in the quote OR
Click on the ‘Approve Quote’ CTA in the quote and then be mandated to append a signature to complete the e-sign. Appending the signature can be accomplished either by:
Writing on a white box in the screen OR
Typing in the name in a text field UI and automated conversion of the input text font into a handwriting style font

v2:
For a customer creating the quote in the Online shop:
The Customer should be able to e-sign/approve the quote in either of the following two ways:
Click on the ‘Approve Quote’ CTA in the quote OR
Click on the ‘Approve Quote’ CTA in the quote and then be mandated to append a signature to complete the e-sign. Appending the signature can be accomplished either by:
Writing on a white box in the screen OR
Typing in the name in a text field UI and automated conversion of the input text font into a handwriting style font

v2:
The user can define in the settings tab which of the e-sign methods needs to be implemented


WIP
Services & Invoices Tab


WIP
Invoicing - functional requirements

Payments Tab

This tab allows the user to manage payments for a particular customer

Let’s define a few terms related to payments for reference:
Payment Method:
It is the way that customers pay for on invoice (service). The two method
Credit/Debit card
Physical Cheque/Cash
Direct Electronic Bank transfer (e.g. ACH, eCheck)
Payment Options
Pay-as-you-go
Card on file - Autopay: The credit/debit card on file is charged automatically after a service visit is marked as ‘Complete’ (depends on the invoicing/billing frequency)
No Card on file - payments made by the customer on receipt of invoice in the customer hub. The customer will have an option to change the payment option to any of the
Physical cheque/Cash
Direct Bank transfer - payments made by the customer on receipt of invoice (invoice has a link to our self-hosted payments page)
Pre-pay
Credit/Debit card
Physical Cheque/Cash
Direct Bank transfer (e.g. ACH, eCheck)
Pay via Instalments
The customer pays in monthly/weekly instalments
Invoicing frequency options
After every visit (when job is closed)
Standard frequency: Monthly, Quarterly, Custom
As needed (i.e. not pre-set)
Online shop angle to be explored, pre-pay but by sending invoice link

The User should be able to, for a particular customer:
v1:
Add/Update/Remove Credit/Debit card for receiving payments from customer. Details to be captured - name on the card, card number, expiry, and CVC. All cards added previously are to be displayed here. The user should be able to mark a card as ‘Default’ (if there are more than one). Before the card is added, the card details need to be validated (using appropriate Stripe API/other) and the user should be notified is the card details are invalid. This process of adding a card, should be PCI-DSS compliant (refer to Payments Integration for this)
v1:
All the payments related to a given customer to be charged on the default card if there is only one card added. If there are more than one cards added, then payments can be charged on other cards as well
v1:
Add/Update Billing address as different from the service address(es)
v1:
Set and edit the payment option for a customer: The user should be able to select the payment option using a dropdown list UI:
For pre-pay option, the user should be able to add a card himself and charge the payable amount. he should have the option to save the card for future payments using a checkbox UI.
For the Pay-as-you-go option, the user should be able to add a card himself and charge the payable amount. The should have the option to save the card for future payments using a checkbox UI. If the user has saved the card, he should be able to put the customer on ‘Auto-pay’. When the customer is on auto-pay, as soon as a service or services invoice is generated after service
Note: The customer himself should also be to select the payment option for a quote created offline. To enable this, the user sends over an invoice that contains a link to the self-hosted payments page. The customer should be able to select his preferred payment option out of PAYG (autopay optional), Pre-pay. The payment options the user allows are to be setup in the Payment Integration settings in the Settings menu
v1:
Manually charge an added credit/debit card for a given $$ amount. Tag the payment to an invoice via a dropdown list UI and mark it as 'Paid’
Every Payment - whether online or offline, should have a unique Payment ID associated with it (Number)
For every payment processed online via Stripe, the Stripe Transaction Number should be captured
v1.5:
See the account balance of a customer. Manipulate account balance. In that:
v1.5:
For offline payment modes like cash and check, the user should be able to credit the Customer account with the appropriate $$ amount. The following information should be captured in a modal window for receiving payment via
Check: Amount* (Text Field UI), Payment Date* (Date Format UI, any date since the date of creation of customer to that day can be selected), Cheque Number (Text Field UI), Note (Text Field UI), Payment applied to Invoice# (in a dropdown list UI - the invoice is marked as ‘Paid’ automatically when this balance is added)
Cash: Amount* (Text Field UI), Payment Date* (Date Format UI, any date since the date of creation of customer to that day can be selected), Note (Text Field UI), Payment applied to Invoice# (in a dropdown list UI - the invoice is marked as ‘Paid’ automatically when this balance is added)
*marked fields are compulsory
v1.5:
The account balance should reflect the changes. A positive account balance or $$ amount credit to the customer’s account should be displayed in black font. A debit from the customer’s account for a service payment or a negative account balance should be displayed in red font in rounded brackets
v1.5:
See all the payment history and account balances in a chronological sequence in a table format. The table should should contain the following fields:
Payment ID
Payment Date
Payment Method
Payment Option
Stripe Transaction Number (to be blank for offline payments)
Tagged Invoice number (hyperlinked to the invoice)
Account Balance on Payment Date
v1.5:
Online
Payments done by the customer either on the online shop or on an invoice - should automatically reflect in the account balance of the customer. These payments should get tagged (i.e. Invoice object’s Payment attribute should be mapped to this Payment) to the corresponding invoice and mark it as “Paid”
v1.5:
Associate a “Payment Status” with every Customer. The list of statuses is fixed and is as follows (with logic):
Past Due: If any one or more invoices associated with a customer (across all properties) are 'Past Due’, the Payment Status for the customer should be automatically set to ‘Past Due’
Paid: If all the invoices associated with a customer (across all properties) are 'Paid’, the Payment Status for the customer should be automatically set to ‘Paid’
Due: If one more more invoices associated with a customer (across all properties) are 'Due’ and none of them are ‘Past Due’, the Payment Status for the customer should be automatically set to ‘Due’
Credit Hold: If the customer is put on Credit Hold, the Payment Status for the customer should be automatically set to Credit Hold’
v2:
Collections feature:
Ability to filter Customers based on Payment Status, Age of oldest ‘Past Due’ invoice, and the account balance in the Customer Dashboard
Ability to send emails/text messages to one or more Customers filtered as above or enrol them in a cadence of emails for due collections
Ability to print “Collection letter” as per set template in the setup module
v1.5:
Add a credit limit for a customer: Credit limit refers to the maximum negative $$ value a particular customer’s account balance can drop to. If the customer’s account balance falls below this credit limit, the user is asked whether to change the Payment Status of the customer to ‘Credit Hold’. If the user does so, all of the customers’ services are paused till balances are cleared, i.e., no upcoming service can be scheduled and routed for the given customer. The user should be able to add a late fee charge to the customer
v1.5:
Handling recurring payments/Auto-pay schedules and triggers
@Shikhar Tripathi
to close this
v2:
The crew should be able to accept In-Field Payments. The payment can be received by adding the customer’s card in-field and creating a charge. Access management to crew leaders/technicians as per the Team Management Hub
v3/v4:
The crew should be able to accept payments in field via a PoS hardware/Credit card terminal
v1.5:
Send an account statement to the Customer via email and text - both to contain the link to the account statement in the Customer Hub. Account statement PDF can be attached to the email. Account statement contents and design to be laid out
@Shikhar Tripathi
v1.5:
The user should be able to request the customer to add a card on file by sending over an email or a text message. Email/text message to have a link to a self-hosted payments page where the customer can add a card to file and set the payment option to ‘Autopay’
v1.5:
Send Payment Receipt to the customer after receiving a payment online or offline via email/text message
v1.5:
The user should be notified when the default card of card is one month away from expiry date. The user should be able to trigger a “Payment Method Expiring Soon” email and/or text message to the customer requesting a new card on file
v1.5:
Handling card payment declines (autopay or pay-as-you-go):
WIP
If the user just has one card added on file and a payment against that card fails, an automated email and/or text message is to be sent to the customer informing him the same. The template to be set up in the setup module.
If the user has more than one card added on file, and the payment against the default selected card declines:
@Shikhar Tripathi
to define the flow
v1.5:
Handling auto-pay declines: Send notifications via email/text to the Customer regarding the same and auto re-try payments after X days for Y number of times (X, Y ~customizable?)
v1.5:
Filter payments across Customers based on status/other parameters (read: dashboard). For a particular Customer or many Customers at once, print payment receipts & payment dashboards/analytics
v2:
Account auto-update feature: Using Stripe API to automatically notify the user about any change in card status and details
v3:
Instalments: The user should be able to pay the amount payable in instalments
WIP



Open Points

Creating forms: Designing forms for the crew, for audit, assessments/site visit, On-call sales form?
Triggering referral requests towards existing Customers. Seeing referrals
Service-related emails, e.g. “we could not serve you today”. Which persona does this?
Pre-pay mails - which persona will send them? Is it the sales rep who owns that contact?
Merging Customer Hubs for different email IDs. The user would have this functionality not before v4 (detailing to be done)
Testimonials
View all properties data at once in summary format? V3 feature?
Quote related:
v1.5:
Multi-Quote at once: To be enabled in the customer dashboard. Multi-select at once with a selection of services via a modal. Output delivered in pdf format (zip download)
Send Up sell quotes to the Customer - single Customer or multiple Customers at once
Email Alerts of quote approved, etc for the user
v3:
Auto-Renewal
(WIP)
Other Dashboards

Device & Environment Requirements


Native App or PWA? - Final Decision = PWA
Mobile First or Mobile Optimised? - PWA (mobile optimised)
Browsers? -
@Shikhar Tripathi
to add list for acceptance criteria

References





Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.