Hypothesis

Most of agency use multiple apps for managing clients and internal team
So, they have to pay for each app
which increases their operation cost
Also, managing multiple apps is a hassle.
Decision 1: Agencies needs an end-to-end solution for managing clients and maintain their internal team to reduce their operational cost.

Solution

Agency handy is a client portal management solution for agencies. Here agency can manage their clients, projects and tasks. For client, there will be a similar login portal where he can check the project progress, can review the task and provide feedback if necessary.

Competitor

Product specification flow

Account
Signup
Required field for Creating a new account.
First name
Last name
Email (unique)
Password
Minimum 8 characters, with at least one uppercase letter, one lowercase letter, one number, and one special character
Workspace name (no uppercase of special characters allowed)
An email can be added into multiple workspaces.
After successful signup, a verification mail will be sent to the user mail.
In email URL and password will be sent.
After user click on that link, should redirect to card information.
If the user is redirected from affiliate URL show lifetime deal option else only the credit card information
Once the promo for lifetime is accepted no need to ask for credit card information
User can only view the lifetime promo tab if they come from affiliate links.
User can add promos from settings as well.
After both promo and credit card section take the user to dashboard
User can also signup with google.
An Email can have multiple companies
A company can have multiple workspaces
After successful signup login the user automatically and send an email with verification code
user will see a bar saying “verify your account”
in the email user will receive numerical code to verify the account
Once the user clicks on verify button
user will enter the code received in email
verify the user and start the trial mode
This user will be SuperAdmin.
Sign in
User will select the workspace first. then put email and password
After successful 200,
Admin, Super Admin, Client will redirect to their dashboard. (Dashboard data provided in the dashboard section)
Assignee, PM will redirect to Order list.
We are Making every company unique in DB. Under that company a user can be a client but in a different company he can be an agency owner.
Forget Password:
Once the forgot password is clicked ask the user for email
once the proper email is given a code will be sent
once the code is entered ask the user to give new password and confirm password
if wrong pattern is entered show a error message
User Profile
user profile will be under settings
user can change their name
user can change their password
Service
Create Service (By Agency)
Super Admin, Admin can create service, update, Delete Service page form contains
name min(3), max(64),
descriptions (no limit),
price min(1),
Image,
duration,
type of service: One-time payment, Subscription.()
In recurrent 2 options:
weekly
monthly
daily
yearly
User can add multiple recurrent pricing.
status: isPublish
SuperAdmin, Admin, Client, PM can view the service.
SuperAdmin, Admin, PM can delete, edit the service.
Every service will have two options ‘Order’ and ‘Send Quotation.’
While deleting a service user will get prompt with checkbox to confirm if he wants to delete the orders and quotations relating to service.
If the clients select then delete the service and orders
if not only delete the service from view and keep the orders
If a client is deleted it will show greyed out for all the data points that has client info
created by and created date is removed (12/5/2023 -ali)
Service list public
All the published service list can be viewed with direct URL.
Catalog URL will be “/catalog.”
the individual purchase URL will be “/service_name/checkout”
On top of the service/services there will be a form
First name (mandatory)
Last name (mandatory)
email (mandatory)
order details/brief (required)
user can select the amount of a service. (quantity)
the price will update automatically.
Coupon code (to be added later)
user will be able to pay directly.
with the firstname, lastname, email a client will be created and an order will be created once the payment is completed.
client onboarding will progress as regular.
if the email address has already a client registered it will automatically create an order with status “in progress”
Once the order is created after payment an invoice will be created with the paid amount and “Paid Status”
after successful payment redirect to service page with a toaster saying “Payment successful”
In “catalog” purchase button will be available and if no payment method is set up by agency it will show and error message (update date: 27/3/2024)
Client
Admin, super admin can create client information.
Name (Required)
address
email (Required)
Company
category
Status
Lead (By default)
Status (Once an order is given)
Import client list from csv, excel.
From CSV we will take the required name and email field.
The optional fields if it is populated like address (city, state, country etc.) we will take it else discard.
Send a welcome email to client email address with username, password, and login URL.
While deleting a client give prompt with a Checkbox to confirm if he wants to delete order, invoice, quotations and tickets.
Items the user selects will be deleted.
Items the user didn’t select will remain.
A client can’t can be added as a team member
Proposal
Admin, Super Admin, PM, Client can create quotation.
Required fields for quotation.
Id (auto increment)
Order Brief
Duration
Attachment
Quantity
Budget
Select service (Required)
PM
If Admin, Super Admin, PM creates a quotation then they need to select a client. if Client creates the quotation, the field don’t need to show.
Admin, Super Admin, PM will send it to the agency. Client will get notification
Orvi sends you a quotation. Please review it.
Client can review the quotation.
If accepts, it will create an order automatically. Check section
If rejects, send a notification to the person with reasoning. the text will be
Facebook rejects your quotation because the price is too high
Client will send it to the agency. Super Admin & Admin will get notification
Facebook sends you a quotation. Please review it.
Super Admin, Admin can review the quotation.
If accepts, it will create an order automatically. Check section
If rejects, send a notification to client with reasoning. the text will be
Orvi rejects your quotation because the price is too high
For Each rejection, User has to send new quotation. After sending a quotation there’s no way to edit it.
Order Flow
PM, Super Admin, Admin, Client can create an order.
Required field for creating an order.
Name
Select Service, (Multiple service can be selected)
Select client,
Order Brief,
kick off date (optional),
end date (optional),
Attachments (optional),
budget,
Select PM (optional),
id(incremental)
Quantity (default 1)
Status - Pending, Ongoing, Review, Completed, Cancelled
An order have 5 status. Pending, Ongoing, In Review, Complete, Cancelled
After creating an order (By PM, Super admin, admin) all the super admin in a company will get access to the order and send a created order notification to the client. the text will be.
Orvi created an order “order_id” for you.
When client creates an order a notification will be sent to the company Super Admin & Admin. The text will be
Client Facebook wants to purchase Service 1. Please review.
Super Admin & Admin can accept/reject the order.
If accepts, Order status will change into ongoing.
“Orvi” has accepted your order, and your order is currently ongoing.
If rejects, Rejecter will show the reason. A notification will sent to the client. The text
Orvi rejects your order because the price is too high.
Only PM, Super Admin, Admin can change the status.
The created person also add to the order. His role will be his default role.
Orvi added you in order 1.
SuperAdmin, Admin, PM can add employee in order. The member will get notification.
Super Admin, Admin, PM, Client can send feedback/chat
SuperAdmin, Admin, PM can create discussion
When new order created one default discussion would be created. “client name”
Admin, SuperAdmin can create other discussion and add team members from order list in the discussion.
While deleting the order client prompt with checkbox of tickets, invoice
Items the user selects will be deleted.
Items the user didn’t select will remain.
Order Update
Only the items given below can be edited
Details
Start/End Date
attachment
note
Task
PM, Super Admin, Admin able to create task
Member can be assigned to task
Required fields for task
name (min char: 3 max: 160)
description
manual progress
assignee
status - pending(default), progress, review, done.
When user changes status to review it should send a notification to the client (Super Admin, Admin, PM) . Notification Text link: Mail text link:
A checkbox to select if a task needs client review or not.
if client review is checked
Client can see those tasks from pending to completed
when the task is set to in review send and email and notification to client
if client accepts, the status will move to done and task will mark as complete. Notification will be sent to super admin, admin, pm.
if client rejects, the status will move to progress and a notification will be super admin, admin, pm.
notification text link:
if a client mistakenly rejects a task Super Admin, Admin, PM can either send for review again or directly mark it as complete.
when the task is sent for client review assignee can’t change the task status
Super Admin, Admin, PM can change the task status while in client review
SuperAdmin, Admin, PM can edit the task while in client review
If client review is unchecked
client will be unable to see the task
agency (superadmin, admin, pm, assignee) can change the task status without needing any approval.
There shouldn't be any section like client comment when client review is off (Updated at 27-6-24)
time log (same as onethread)
label
Priority
Task has 2 views. Board and List.
List view should have search, filter, sorting
A board can be make by status and assignee
Client can only view the task
Assignee can see only his assigned task.
Super Admin, Admin, PM, Assignee, Client can comment/chat in task.
A selection box for tasks that needs client review.
By default, it is checked.
If it checked that specific task requires client review if unchecked doesn’t require client review.
A separate box for both client and internal team. Only admin, super admin, PM can send and reply feedback to the clients. (For task)
if a task is unchecked for client review client can’t be mentioned in the comment section.
If need client review is on then agency cannot create task with status “done”
Order Form
The idea of order form is to enable our consumers to customize their order form. The purpose of order form is to
Discussion
A chatting system similar to telegram/WhatsApp
A discussion sidebar with all the discussions
Whoever creates a team discussion will be the admin.
Once a order is created a Discussion is created automatically for that order
Members would be Client, Admin, Super Admin, PM (if there is one)
Superadmin , Admin can add members to the discussion.
Superadmin , Admin can create a separate discussion with team members.
Features
Basic chatting (one on one)
Team chatting (Can create groups)
file share (size to be selected)
Like, dislike
Text can be edited after send.
Text can be deleted after send.
Ticket management
Admin, Super Admin, PM, Client can create ticket.
Required field for creating ticket.
Select order (Required)
Name (Required)
Description
Assignee
Priority
Issued Date
Status: Open, close, Hold
Time log (from ticket creation time to close, timer will pause when ticket is on hold)
Once a ticket is created, Client can’t edit anything on the ticket but can leave comments
Super admin, Admin, PM can edit the description of the ticket which is created by agency and client.
Super admin, Admin, PM, Assignee can change the status, priority and assign members
To close a ticket a popup box for the closing statements.
Closed ticket can be reopened.
In case of reopening a pop up box will be opened to state the reason to reopen.
Invoice
Invoice Flow
Agency creates the invoice.
Once the invoice is created the status is draft
Send the invoice to client by clicking send to client button and the status is changed to open.
From open status agency can change the status to paid, void, uncollectable.
client can only view the generated invoice.
both parties can download the invoice
invoice generate should contain - created date, paid date/Void date.
When showing invoice show the service
When the status is changed to paid/void. auto capture the paidDate’
Agency logo and address will be added in the invoice(template)
In draft, open and uncollectable agency can edit the paid, due and discount.
Once the invoice is sent it will have the payment(stripe) link in the invoice
once the user pays using the link the status will automatically change to paid.
Create invoice.
invoice creation for client (agency) (Super admin, admin, PM can create invoice)
client name, order, address, partial amount, total amount, upfront, due date, created, discount%, status - draft, open (Unpaid), paid, void(cancelled), uncollectable.
Status details
Draft
The invoice isn’t ready to use. All invoices start in draft status.
Edit any part of the invoice.
When the invoice is ready to use, finalize it by changing its status to open.
If the invoice isn’t associated with a subscription, delete it.
Open/Unpaid
The invoice is finalized and awaiting payment.
Send the invoice to a customer for payment.
Change the invoice’s status to paid, void, or uncollectible.
Paid (The Invoice is paid)
Void (This invoice is canceled.)
Uncollectable (The customer is unlikely to pay the invoice. Normally, you treat it as bad debt in your accounting process)
Change the invoice’s status to void or paid.
Client name selected from dropdown.
order selected from dropdown.
textbox for amount, discount
date selector.
Role Permission
Role Permission
Super Admin
Admin
PM
assignee
Client
1
Can create a service
Can create a service
can create a service
2
Can view Unpublished service
Can view Unpublished service
Can view Unpublished service
Can view Unpublished service
N/A
3
View Published service
View Published service
View Published service
View Published service
View Published service
4
Can unpublish a service
Can unpublish a service
Can unpublish a service
5
Update a service
Update a service
Update a service
6
Delete a service
Delete a service
Delete a service
7
Create an order
Create an order
Create an order
N/A
Create an order
8
Can View all orders
Can View all orders
Can View all orders (assigned)
Can view assigned orders
Can view own order (self order and a client of)
9
View orders list
View orders list
View orders list
View orders list
View orders list
10
Update an order
Update an order
Update an order
11
create a discussion
create a discussion
create a discussion
12
Add member in discussion
Add member in discussion
Add member in discussion
13
Can view all Discussions
Can View all Discussions
Can view all Discussions
Can view assigned discussion
Can view discussions which is a member of
14
create a task in an order
create a task in an order
create a task in an order (assigned)
Can only view the task (in review, done)
15
Can View all tasks
Can View all tasks
Can View all tasks
Can view assigned tasks
Can only view the task (in review, done)
16
Can assign member in order
Can assign member in order
Can assign member in order
17
Can remove a member in order
Can remove a member in order
Can remove a member in order
18
Edit/update a task
Edit/update a task
Edit/update a task
Edit/update a task if assigned
19
delete a task
delete a task
delete a task
20
Can send a task to client for approval
Can send to client for approval
Can send to client for approval
Can approve/reject a task
21
Can assign member in a task
Can assign member in a task
Can assign member in a task
N/A
N/A
22
Can remove a member in task
Can remove a member in task
Can remove a member in task
23
can change a task status
can change a task status
can change a task status
can change assigned task status
24
Add/remove a client
Add/remove a client
N/A
N/A
N/A
25
Can create invoice
Can create invoice
can create invoice
26
Can update invoice
Can update invoice
Can update invoice
27
Can delete invoice
Can delete invoice
Can delete invoice
28
Can View all invoices
Can View all invoices
Can View all invoices
Can View own invoices
29
Create a ticket
Create a ticket
Create a ticket
Create a ticket
30
Update a ticket
Update a ticket
Update assigned ticket
update own created ticket(to close and comment on the ticket)
31
Close a ticket
Close a ticket
Close a ticket
Close a ticket (If assigned)
Close a ticket(OWN)
32
Can delete a ticket
Can delete a ticket
Can delete his/her own ticket
33
Can view all tickets
Can view all tickets
Can view all tickets
Can view all tickets
Can view own tickets
34
Can send feedback
Can send feedback
can send feedback
can send feedback to assigned task
can send feedback
35
can change agency name, color, logo
can change agency name, color, logo
can change agency, color, logo
36
Can create a quotation
Can create a quotation
Can create a quotation
Can create a quotation
37
Can delete a quotation
Can delete a quotation
Can delete a quotation
38
Can approve/reject a quotation sent by client
Can approve/reject a quotation sent by client
Can approve/reject a quotation sent by client
Can approve/reject a quotation sent by agency
39
Can view all quotations
Can view all quotations
Can view all quotations
Can view own quotations. (sent by client and sent by agency)
40
add team member
add team member
can add team member
41
Can View all the members
Can view all the members
42
Can change a members role
Can change a members role
43
Can delete a member
Can delete a member
44
Can get timesheet
Can get timesheet
Can get timesheet
Can view his own timesheet
45
Can delete workspace
46
Can view revenue widget
There are no rows in this table
Settings
Profile
Name
password
Super Admin, Admin can change Agency name
Super admin, Admin, PM can change color, add logo
Navbar
Top bar
Promo code
Custom Domain Setup
It is for our paid customers. It will show in trial but not accessible.
Under settings > Company profile > Custom domain setup
A text box for domain name
in list view type, Name, Value, status and delete option
Name will have the subdomain value and Value will have the
like for and agencyhandy.com
Example
Type
Name
Value
Status
1
CName
testing
testing.onethread.com
2
Cname
@
agencyhandy.com
There are no rows in this table
Under workspace settings
A option for asking us for support.
If the custom domain is disconnected the Superadmin will receive email
Subject: Domain on $(Company name) needs configurationAgencyHandy Domain setup deleted
Body : “${company.customDomain} has been disconnected from AgencyHandy. Please review your domain
Kind Regards,
Agency Handy”
Custom email template configuration
Purpose:
Enable users to modify email templates for enhanced personal communication with options to edit the subject, body, email signature, and add social icons. Targeted for businesses to manage client onboarding, project proposals, task reviews, and invoice notifications.
Goals:
- Simplify email customization process. - Allow dynamic content insertion for personalized communication.
Functional Requirements
Editable templates for client onboarding, project proposals, task reviews, and invoice acceptance.
Customizable subject lines, email bodies with placeholder support, signatures, and social media links.
Real-time previews of edits. (under 2 sec)
Save and manage custom templates.
Non-Functional
Intuitive UI for non-technical users.
Fast performance with sub-2-second response for edits.
Should have 2 previews web and mobile
Send a test mail button for testing
User Stories
1. As a user, I want to easily customize email templates to match my brand and communicate effectively with clients. 2. As a user, I need to insert dynamic fields like {{firstName}} to personalize emails automatically.
Custom Email Setup
Purpose: Enable users to send emails from their custom email addresses directly through our platform, enhancing brand consistency and trust.
Goals: - Provide a seamless setup process for using custom email addresses. - Ensure secure and reliable email delivery.
Functional
Allow users to register their custom email address with the platform.
Implement verification process for the ownership of the custom email address.
Provide SMTP/IMAP configuration settings to integrate custom email services.
Enable users to compose and send emails from the platform using their custom email address.
Support secure authentication methods (e.g., OAuth 2.0) for email service providers that require it.
Implement a fallback mechanism for email delivery failures.
Non-Functional
User-friendly setup interface.
Ensure email delivery within 3 minutes of sending.
Adhere to email security standards (e.g., SPF, DKIM, DMARC) to minimize the risk of emails being marked as spam.
Scalable infrastructure to support a growing number of users and emails.
Setup and Configuration Steps (For Developers)
Email Address Registration & Verification: - Users enter their custom email address. - Send a verification email with a unique link or code to confirm ownership.
SMTP/IMAP Configuration: - Provide fields for SMTP and IMAP server details: Host, Port, Username, Password, and Encryption (SSL/TLS). - Include instructions for common email providers and links to their documentation.
Authentication Integration: - For providers supporting OAuth 2.0, integrate the OAuth flow to request email sending permissions. - Store access tokens securely and handle token refreshes.
Email Sending Functionality: - Develop a feature for composing emails in the platform with options for subject, body, attachments, etc. - Utilize the configured SMTP details for sending emails.
5. Delivery Failure Handling: - Implement logic to retry sending emails when temporary issues are encountered. - Notify users of permanent failures and suggest troubleshooting steps.
User Stories
As a business owner, I want to send emails from my business email address through the platform to maintain a professional image.
As a marketer, I need to ensure emails sent from the platform reach the inbox and not the spam folder, maintaining our reputation.
As a developer, I require clear configuration steps and secure authentication methods to integrate custom email services without compromising security.
Files
All the files of an order can be accessed from here.
In files there will order lists
in order all the order specific files.
Dashboard
Widgets
Revenue (Super admin)
Only paid invoices will be calculated.
No of Unpaid invoice (Super Admin, Admin, PM)
recent order, recent opened ticket (Super admin, admin, PM)
Recent order - list of five last orders
Recent tickets list of five last opened tickets

no of clients
revenue month based.
new quotations
If agency creates a ticket with open status, it should show in the Recent open ticket section of client dashboard
For recent order and tickets from dashboard onclick should redirect.
Teams
Super Admin, Admin,PM can add team member.
To add team member email and role is required.
Super admin, admin can delete a team member.
Super admin, admin can change role.
Once a user is invited/added in team
user will get a subdomain sign up URL
Team member can be client
Integration
A sidebar button where upon interacting will take us to Integration panel.
In the panel Integration item list (Stripe, drive, quickbook, zapier etc).
Only Superadmin can integrate and will see this panel.
Every item will have connect and disconnect option.
Full integration item list given below.
Zapier
Google and Onedrive
Super admin can integrate Google /One Drive
once the connection is established “Files” will sync
Initially a folder will be created with the workspace name
Then inside that folder it will follow the same structure as files.
QUESTION:
How should the folder structure be? Putting everything in "order" or "service" won't cut it since there's quotation which doesn't belong to neither of them.
What will happen if user remove files from drive?

Outloook and
Google Docs (2nd)
Google Sheet (2nd)
Stripe (1st)
We will be using direct charges system for this (we will not take any charges agency will bear the clients transaction charges)
Integration with Stripe’s payment processing platform.
Support for credit cards, debit cards.
store payment details securely.
send invoices to recurring customers.
show payment history of order.
Support for custom pricing models. (discount, individual pricing etc.)
User story
As a client, I want to be able to charge my clients using Stripe.
As a client, I want to be able to store my payment details securely so that I don’t have to enter them every time I make a payment.
As a client, I want to be able to receive invoices for recurring payments.
As an administrator, I want to be able to customize pricing models so that I can offer different pricing options to different clients.
QuickBook (3rd)
Hubspot
Whatsapp
Filtering
Invoice
Filter by Client
Filter by service
Filter by status
Order
Filter by status
Filter by service
Filter by client
Filter by due date
Filter by start date
Order Task
Filter by assignee
Filter by status
Filter by due date
Filter by start date.
Filter by label
Filter by priority
Quotation
Agency
Filter by client
Filter by service
Filter by status.
Client
Filter by service
Filter by status
Service
Agency
Filter by service name
Filter by status
Filter by payment type (Onetime/ recurring)
Filter by price (select range)
Client
Filter by service name
Filter by payment type
Ticket
Filter by assignee
Filter by status
Filter by due date
Filter by start date.
Filter by priority
Sorting
Sort by (A-Z)