← 9. Service Agreement_
Chunks — 9. Service Agreement_
The FRD markdown is the source of truth; these chunks are the derived retrieval index used to give the test-case generator only the relevant slices. Rebuilt automatically when the FRD is saved.
155 chunks · ~25,674 tokens
#1
(intro)
~10 tok
☑️ Service Agreement Listing & Automation
#2
**Service Agreement Listing**
~8 tok
## **Service Agreement Listing**
#3
**1 Module Overview**
~132 tok
## **1 Module Overview** * **Module Name:** Service Agreement Listing & Auto-Generation (Sub-module of Contracts) * **Purpose:** Automates the creation and organization of service agreements based on brand and service type configurations, providing a centralized listing for agencies to manage, edit, and publish agreement templates. * **Business Goal:** Eliminate manual template creation by auto-generating agreements upon brand setup, and provide organized visibility of all agreements with role-based access control.
#4
**2\. User Roles & Permissions**
~46 tok
## **2\. User Roles & Permissions** * **Link:** [Roles and permissions - draft](https://docs.google.com/spreadsheets/d/1fPBOJVJmmtHcs9Ev9o_pneOD4Em3Z4AB-j3jrLyJvaY/edit?usp=sharing)
#5
**3\. User Flow**
~40 tok
## **3\. User Flow** * [**Click Here**](https://drive.google.com/file/d/1BEllPUQSWbdeTgc8xBtjBEH5pG0pvKMn/view?usp=drive_link) to view the detailed flow chart
#6
**4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#7
**4\. Functional Logic** > **4.1 Service Agreement Information**
~111 tok
### **4.1 Service Agreement Information** **4.1.1 Service Agreement Definition** * A Service Agreement is a legally binding document between an agency and a contractor that outlines the terms, conditions, and expectations for services to be rendered for a specific event or project. * It establishes a formal working relationship by defining roles, responsibilities, deliverables, payment terms, and legal obligations before work begins.
#8
**4\. Functional Logic** > **4.1 Service Agreement Information** > **4.1.2 Service Agreement Template**
~275 tok
#### **4.1.2 Service Agreement Template** * A Service Agreement Template is a pre-configured, reusable document structure that serves as the foundation for generating service-specific agreements for contractors. * **Auto-Generated Templates:** The system automatically creates one service agreement template per service type (Photography, Videography, Content Creation) configured during brand setup; each template is brand-specific and reusable across multiple contractors and events. * **Template Contents:** Includes standard contract clauses, Smart Fields for dynamic data population (contractor name, event details, brand info), Input Fields for contractor-provided information, signature placeholders, and brand header with logo and contact details. * **Template Status:** Templates exist in Draft (editable, not available for sending) or Published (finalized, available for automatic or manual sending * For details on the sample template structure, refer to the link - [**Click Here**](https://docs.google.com/document/d/1JnpWTwLGllRD1_aZDX6agZLsUFW8EdONqL91A2w6i0Y/edit?tab=t.0)
#9
**4\. Functional Logic** > **4.1 Service Agreement Information** > **4.1.3 Service Agreement draft vs published logic**
~322 tok
#### **4.1.3 Service Agreement draft vs published logic**
* **Draft Status :**
* Agreement is in editable mode; all sections (Logo, Address, Contract Body, Signature, Settings) can be modified.
* Not available for sending to contractors—neither manually nor automatically.
* Auto-send toggle ("Automatically Send to Contractors") remains disabled and cannot be enabled.
* Not linked to contractors when they are assigned to projects or events.
* Sample template content is pre-filled upon auto-generation; users can customize before publishing.
* Agreement does not appear in contractor assignment workflows.
* **Published Status :**
* Agreement is finalized and marked as ready for contractor assignment and signature.
* Available for both automatic and manual sending to contractors.
* Auto-send toggle can be enabled; when ON, agreement is sent immediately upon contractor assignment.
* Linked to contractors automatically when they are assigned to matching service types, if the auto-send toggle is on.
* Remains editable after publishing—content updates apply to future sendings only; already-sent agreements are unaffected.
* Signs count increments only when both contractor and agency complete signing.#10
**4\. Functional Logic** > **4.2 Initial State & Auto-Generation**
~138 tok
### **4.2 Initial State & Auto-Generation** **Initial State:** When no brands exist, display: _"No service agreements found. Please create a brand first to generate service agreements."_ **Auto-Generation Rules:** * Service agreements are auto-generated upon brand creation (no manual creation option) * One agreement is created per brand + service type combination * All agreements are created in **Draft** status with sample template content * If a brand has multiple services selected, multiple agreements are generated for each service
#11
**4\. Functional Logic** > **4.3 Service Agreement Template Listing**
~165 tok
### **4.3 Service Agreement Template Listing** * The Service Agreement tab under Templates → Contracts displays all auto-generated service agreements organized by brand and service type. * Each auto-generated agreement appears in the Service Agreement listing in an initial Draft state. * Service types are fetched from the Brand configuration (Photography, Videography, or Content Creation) * Agency Owners and Admins have full visibility across all brands and can edit or publish service agreements * Project Managers have restricted access based on brand-level permissions * For Field Details & Validation rules - [**Click Here**](#kw19tzlrykxx)
#12
**4\. Functional Logic** > **4.3 Contractor Assignment Logic (Automation)**
~13 tok
### **4.3 Contractor Assignment Logic (Automation)**
#13
**4\. Functional Logic** > **4.3 Contractor Assignment Logic (Automation)** > **4.3.1 Automatic Agreement Assignment (Trigger Logic)**
~136 tok
#### **4.3.1 Automatic Agreement Assignment (Trigger Logic)**
When a contractor is added to a project or event, the system automatically checks:
* Which service types has the contractor been assigned, and which agreements are published for the selected brand
* The system then links the matching agreement(s) to the contractor for that assigned project or event.
* Example:
* **Jake Valentine:** Assigned as Videographer → System matches and links the published Videography Service Agreement → Jake receives one agreement to sign.#14
**4\. Functional Logic** > **4.3 Contractor Assignment Logic (Automation)** > **4.3.4 Automatic vs Manual Sending of Agreements**
~132 tok
#### **4.3.4 Automatic vs Manual Sending of Agreements** * If the brand’s **“Automatically Send to Contractors”** toggle is ON, the system immediately sends the relevant agreement(s) to the contractor as soon as they are assigned to a project or event. * If the toggle is OFF, the agreement(s) will not be sent automatically; the project owner must manually trigger the sending from the project workflow. * The auto-send toggle remains disabled for Draft agreements and can only be enabled once the agreement is Published.
#15
**5\. Field Details & Validation
~594 tok
## **5\. Field Details & Validation ****5.1 Service Agreement Listing Display Fields** **Field Name** **Type** **Validation Rules** Page Header Text Format: "Contracts" Tab Selector Toggle Tabs \- Options: "Client Contracts" & "Service Agreement" Tab Description Tooltip Informational Text \- Appears on hover/click on Service Agreement tab \- Displays: "Service agreements are contracts between you and your contractors, outlining the terms of your working relationship for each gig they shoot." Brand Section Divider Visual Separator \- Separates different brand groupings Brand Section Header Container \- Displays brand name with avatar/logo (e.g., "Emma Taylor", "Isabel Claudia") Name Column Text with Icon \- Displays "Service Agreement Name" as template title \- Includes document icon on the left Status Column Status Badge \- Displays "Draft" in (yellow badge) or "Published" in (green badge); \- Color-coded display \- Initially, all auto-generated agreements appear in Draft state Service Type Column Text Display \- Displays category of service (e.g., "Photography", "Videography", "Content Creation"); \- Auto-fetched from brand setup selections Signs Column Number Display \- Shows total count of completed signatures (e.g., "64") \- Count increments only when both contractor(s) and agency have completed signing \- Partially signed or pending agreements are not included in the count. Automatically Send to Contractors Column Toggle Switch \- ON/OFF toggle with info icon (ⓘ); \- When ON: Orange/yellow toggle, auto-sends to contractors upon event assignment; \- When OFF: Gray toggle, requires manual sending; \- Button remains disabled when agreement on draft status Info Icon (ⓘ) Tooltip Trigger \- Circular info icon next to toggle; \- On hover displays explanatory tooltip \- Info icon tooltip: "When toggled ON, this service agreement is automatically sent to contractors for signing upon their assignment to an event." Actions Column Button Group \- Contains View icon (eye) and Edit icon (pencil); \- Icons displayed as circular buttons with a gray background View Button Icon Button \- Eye icon (👁); Opens read-only preview of service agreement; \- Available for both Draft and Published agreements Edit Button Icon Button \- Pencil icon (✏); Opens service agreement in edit mode
#16
**6\. Success Message Handling**
~141 tok
## **6\. Success Message Handling** **Validation Scenario** **Success Message** Brand created with service types No explicit message — Service agreements auto-generated and appear in listing instantly Auto-send toggle turned ON No explicit message — Toggle state updates in real-time with visual indicator (orange/yellow) Auto-send toggle turned OFF No explicit message — Toggle state updates in real-time with visual indicator (gray) Agreement auto-sent to contractor "Service agreement automatically sent to \[Contractor Name\]" (logged in Activity Tab)
#17
**7\. Error Message Handling**
~55 tok
## **7\. Error Message Handling** **Field** **Validation Scenario** **Error Message** Listing No brands exist in the system "No service agreements found. Please create a brand first to generate service agreements."
#18
**8\. Edge Cases**
~231 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** Brand deleted after agreements generated Associated service agreements removed from listing; sent/signed agreements retained in project records for audit Service type added to brand after initial setup New service agreement auto-generated for the added service type in Draft status Service type removed from brand Existing agreement for that service type remains in listing; no auto-deletion to preserve historical data Contractor assigned to event but agreement still in Draft Agreement not sent (auto or manual); system requires Published status before sending Multiple contractors with same service type assigned to one event Each contractor receives their own instance of the same service agreement Contractor has multiple service types matching multiple agreements Separate agreement sent for each matching service type; each tracked independently
#19
**9\. Test Cases**
~5 tok
## **9\. Test Cases**
#20
**10\. Acceptance Criteria**
~568 tok
## **10\. Acceptance Criteria** * **Initial State Validation:** Service Agreement listing displays "No service agreements found. Please create a brand first to generate service agreements." when no brands exist in the system. * **Auto-Generation on Brand Creation:** Upon brand creation, the system automatically generates one service agreement per selected service type; all agreements appear in listings with Draft status and sample template content. * **Listing Organization:** Service agreements are grouped by brand with collapsible sections; each entry displays name, status badge, service type, signature count, auto-send toggle, and action buttons. * **Status Display:** Draft agreements show yellow badge; Published agreements show green badge; status updates reflect in real-time. * **Auto-Send Toggle Behavior:** Toggle remains disabled for Draft agreements; can only be enabled after agreement is Published; ON state (orange) triggers automatic sending upon contractor assignment; OFF state (gray) requires manual sending. * **Role-Based Access:** Agency Owners and Admins have full access to all brands; Project Managers see only agreements for their assigned brands; unauthorized access attempts show permission error. * **Action Buttons:** View (eye icon) available for both Draft and Published agreements; Edit (pencil icon) opens builder for Draft agreements only. * **Contractor Assignment Logic:** When a contractor is assigned to a project/event, the system matches the contractor's service type(s) with Published agreements for that brand; matching agreements are linked automatically. * **Automatic Sending:** If auto-send toggle is ON and agreement is Published, system sends agreement to contractor immediately upon event assignment; action logged in Activity Tab. * **Multiple Service Types Handling:** Contractors with multiple service types receive separate agreements for each type; each agreement tracked independently with its own status, timeline, and signature tracking. * **Brand/Service Type Updates:** Adding a service type to existing brand generates new Draft agreement; removing service type retains existing agreement; deleting brand removes agreements from listing but preserves sent/signed records for audit.
#21
(intro)
~1 tok
##
#22
**11\. Dependencies**
~211 tok
## **11\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Brand Management Data dependency Cannot auto-generate service agreements; listing remains empty with "create a brand first" message General Settings (Service Types) Data dependency Cannot determine which agreements to generate per brand; service type column unavailable Contractor Management Data dependency Cannot match contractor service types with agreements; assignment logic fails Projects & Events Integration dependency Cannot trigger automatic agreement sending upon contractor assignment Email Service Integration dependency Cannot send agreements automatically to contractors; auto-send functionality disabled Team Management Data dependency Cannot validate user roles for access permissions; role-based access control fails
#23
**12\. Reference**
~48 tok
## **12\. Reference** * **Figma Design Link -** [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=23980-98800&t=8mj4Lf2Mr4fc3jkM-0) ☑️ Agreement Builder
#24
**1\. Module Overview**
~152 tok
## **1\. Module Overview** * **Module Name:** Service Agreement Builder (Sub-module of Contracts) * **Purpose:** Provides a structured editor interface for customizing auto-generated service agreement templates, allowing users to configure branding elements, agreement content, smart fields, signature settings, and expiration rules before publishing for contractor use. * **Business Goal:** Enable agencies to tailor agreement templates to their specific terms and branding while maintaining consistency through smart fields and enforcing compliance via signature validation and expiration controls.
#25
**2\. Roles & Permissions**
~42 tok
## **2\. Roles & Permissions** * [Roles and permissions - draft](https://docs.google.com/spreadsheets/d/1fPBOJVJmmtHcs9Ev9o_pneOD4Em3Z4AB-j3jrLyJvaY/edit?usp=sharing)
#26
**3\. User Flow**
~40 tok
## **3\. User Flow** * [**Click here**](https://drive.google.com/file/d/1_4-PtSkD0SZ7Ur2Sz9wwB9epBJ3hmZd8/view?usp=drive_link) to view the detailed user flow
#27
**4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#28
**4\. Functional Logic** > **4.1 Agreement Builder — Editable Sections**
~12 tok
### **4.1 Agreement Builder — Editable Sections**
#29
**4\. Functional Logic** > **4.1 Agreement Builder — Editable Sections** > **4.1.1 Logo Section**
~135 tok
#### **4.1.1 Logo Section**
* The brand’s logo is automatically pulled from the brand profile and placed at the top of the agreement.
* Users can customize how this logo appears within this specific agreement only. Customization options include:
* **Alignment:** Choose whether the logo appears on the left, center, or right.
* **Size:** Adjust the width and height of the logo in pixels.
* Any modifications made here do not affect the original brand settings; changes apply only to the specific agreement being created.#30
**4\. Functional Logic** > **4.1 Agreement Builder — Editable Sections** > **4.1.2 Address Section**
~146 tok
#### **4.1.2 Address Section**
* This section is automatically filled with the brand’s key details:
* Brand Name
* Agency Owner Name
* Contact Number
* Email
* Address
* Website
* The content is editable through a rich text editor, allowing the user to update formatting (bold, italic, underline, spacing, alignment).
* Only users with the appropriate permissions—Admin or Agency Owner—are allowed to make changes to this section.
* The purpose is to ensure consistency while still allowing formatting adjustments when needed.#31
**4\. Functional Logic** > **4.1 Agreement Builder — Editable Sections** > **4.1.3 Contract / Agreement Content Section**
~203 tok
#### **4.1.3 Contract / Agreement Content Section** * This is the main body of the agreement and includes a full-featured **rich text editor** for drafting and customizing contract content. * For detail functionality of the rich text editor, refer to the following link - [**Click Here**](#r3v8e97wsu6s) * The section is pre-loaded with a standard template. For the sample template format, refer to the link - [**Click Here**](https://docs.google.com/document/d/1JnpWTwLGllRD1_aZDX6agZLsUFW8EdONqL91A2w6i0Y/edit?tab=t.0) * Smart Field allows users to insert Smart Fields (auto-filled project, contractor, and brand data) and Input Fields (contractor-entered information required during signing) * For detailed logic on Smart & Input fields, refer to the following link - [**Click Here**](#m17jxud93eqc)
#32
**4\. Functional Logic** > **4.1 Agreement Builder — Editable Sections** > **4.1.4 Signature Section**
~182 tok
#### **4.1.4 Signature Section**
* This part of the agreement contains the signature placeholders required to finalize the document.
* By default, it includes the following fields:
* Contractor Name
* Agency Representative
* Signature Date
* During the drafting phase, these fields are locked and cannot be edited to maintain structure and compliance.
* This section only becomes editable when the agreement is being _manually_ sent.
* At that point, the system unlocks the signature section and allows the user to assign who signs each field.
* There is a minimum requirement of one contractor signature and one agency signature, and these mandatory fields cannot be removed from the agreement.#33
**4\. Functional Logic** > **4.5 Rich Text Editor Functionality**
~58 tok
### **4.5 Rich Text Editor Functionality** The Agreement Builder includes a full-featured rich text editor (CK Editor) for drafting and customizing contract/agreement content. The editor toolbar provides the following functionality:
#34
**4\. Functional Logic** > **4.5 Rich Text Editor Functionality** > **4.5.1 History Controls**
~60 tok
#### **4.5.1 History Controls** * **Undo (↩):** Reverts the last action; supports multiple undo levels; keyboard shortcut: Ctrl+Z * **Redo (↪):** Restores the last undone action; supports multiple redo levels; keyboard shortcut: Ctrl+Y
#35
**4\. Functional Logic** > **4.5 Rich Text Editor Functionality** > **4.5.2 Text Formatting**
~119 tok
#### **4.5.2 Text Formatting** * **Paragraph Styles (Dropdown):** Provides text style options including Paragraph, Heading 1, Heading 2, Heading 3, etc.; applies block-level formatting to selected text * **Bold (B):** Applies bold formatting to selected text; keyboard shortcut: Ctrl+B * **Italic (I):** Applies italic formatting to selected text; keyboard shortcut: Ctrl+I * **Underline (U):** Applies underline formatting to selected text; keyboard shortcut: Ctrl+U
#36
**4\. Functional Logic** > **4.5 Rich Text Editor Functionality** > **4.5.3 Insert Elements**
~179 tok
#### **4.5.3 Insert Elements**
* **Link (🔗):** Inserts or edits hyperlink; requires valid URL format; can link to external pages
* **Image (🖼 ▼):** Inserts image into content; dropdown for image upload options; supports URL or file upload
* **Table (⊞):** Inserts table; allows configuration of rows and columns; supports table formatting and cell merging
* **Block Quote (❝):** Inserts block quote formatting; indents and styles text as quotation
* **Code Block ({ }):** Inserts code block for technical content; preserves formatting and spacing
* **Media/Video (▶):** Embeds video or media content; supports video URL embedding
* **Emoji (☺):** Opens emoji picker; inserts emoji at cursor position#37
**4\. Functional Logic** > **4.5 Rich Text Editor Functionality** > **4.5.4 List & Indentation**
~119 tok
#### **4.5.4 List & Indentation** * **Bulleted List (•):** Creates unordered bulleted list; supports nested lists; click again to remove list formatting * **Numbered List (1.):** Creates ordered numbered list; supports nested lists; auto-increments numbers * **Decrease Indent (⇤):** Decreases indentation of selected paragraph or list item; moves content left * **Increase Indent (⇥):** Increases indentation of selected paragraph or list item; moves content right
#38
**4\. Functional Logic** > **4.5 Rich Text Editor Functionality** > **4.5.5 Smart & Input Fields**
~62 tok
#### **4.5.5 Smart & Input Fields** * **Add Fields Button (+):** Opens right-side panel with two tabs — Smart Fields (system-generated dynamic placeholders) and Input Fields (contractor/client-entered values); fields inserted at cursor position
#39
**4\. Functional Logic** > **4.5 Rich Text Editor Functionality** > **4.5.6 Rich Text Editor Behavior**
~248 tok
#### **4.5.6 Rich Text Editor Behavior** * **Auto-Save:** Content changes are retained in the editor until explicitly saved via "Save as Template" or navigating away triggers unsaved changes prompt. * **Copy-Paste Support:** Supports pasting content from external sources (Word, web pages); formatting may be preserved or cleaned based on source. * **Keyboard Shortcuts:** Standard shortcuts supported — Ctrl+B (Bold), Ctrl+I (Italic), Ctrl+U (Underline), Ctrl+Z (Undo), Ctrl+Y (Redo), Ctrl+A (Select All). * **Placeholder Insertion:** Smart Fields inserted via "Add Fields" button appear as highlighted tags (e.g., \[Event Name\]) at cursor position. * **Date Format:** Dates inserted via Smart Fields default to readable month-first style (e.g., "December 23, 2025"). * **Content Sections:** Users can create multiple sections with headings and body text; all content is fully editable. * **Character Limit:** No enforced character limit for agreement/contract body content.
#40
**4\. Functional Logic** > **4.6 Input & Smart Fields — Logic**
~10 tok
### **4.6 Input & Smart Fields — Logic**
#41
**4\. Functional Logic** > **4.6 Input & Smart Fields — Logic** > **4.6.1 Smart Fields Definition**
~131 tok
#### **4.6.1 Smart Fields Definition** * Smart Fields are dynamic placeholder tags embedded within agreement templates that automatically pull and populate data from the system when the agreement is sent or viewed. * **Data Sources:** Smart Fields fetch information from contractor profiles, event details, project assignments, and brand information. * **Auto-Population:** Placeholders (e.g., \[Event Name\], \[Contractor Name\]) are replaced with actual system data, eliminating manual entry and ensuring accuracy.
#42
**4\. Functional Logic** > **4.6 Input & Smart Fields — Logic** > **4.6.2 Accessing Smart Fields**
~99 tok
#### **4.6.2 Accessing Smart Fields** * Users can insert Smart Fields while editing the Agreement content. * The **“Smart Fields”** button appears in the Rich Text Editor toolbar. * Clicking it opens a settings panel on the right side of the screen, which contains two tabs — **Input Field** (for contractor-entered values) and **Smart Field** (for system-generated dynamic placeholders).
#43
**4\. Functional Logic** > **4.6 Input & Smart Fields — Logic** > **4.6.3 Smart Field Categories**
~102 tok
#### **4.6.3 Smart Field Categories** * Smart Fields are grouped into categories so users can easily find relevant information. Each category pulls data directly from the system based on the contractor, event, or project assignment. * For detail category list, refer to the link - [**Click here**](https://docs.google.com/document/d/14Uw-dJ_DIH_lJIh-vR2dBlaW3qj2eYjx9vZw4CHj_9s/edit?tab=t.9c2x15x8ym6j)
#44
**4\. Functional Logic** > **4.6 Input & Smart Fields — Logic** > **4.6.4 Smart Field Behavior**
~151 tok
#### **4.6.4 Smart Field Behavior** * Users place the cursor inside the agreement body → click **“Smart Fields”** → open **Smart Field** tab → choose a category → select a field. * A highlighted placeholder (e.g., **\[Event Name\]**) is inserted at the cursor position. * Date format in the service agreement will default to a readable month-first style. Example December 23, 2025 * **In the Draft Mode,** Smart Fields appear as placeholder tags. * **When Sent / Viewed,** the system automatically replaces placeholders with actual data pulled from the contractor profile and event assignment.
#45
**4\. Functional Logic** > **4.6 Input & Smart Fields — Logic** > **4.6.5 Input Field Definition**
~84 tok
#### **4.6.5 Input Field Definition** * Input Fields are fillable form elements embedded within the agreement that collect information directly from contractors during the signing process. * **Data Collection:** Input Fields capture additional information not available in the system, such as contacts, special requirements, etc.
#46
**4\. Functional Logic** > **4.6 Input & Smart Fields — Logic** > **4.6.6 Input Fields Behaviour**
~104 tok
#### **4.6.6 Input Fields Behaviour** * Input Fields collect extra information from the contractor during the agreement signing process. * Each field can have **Placeholder Text** to guide the contractor on what to enter. * Fields marked as **Required** must be filled before the contractor can submit their signature. * All entered values are saved in the agreement record under **“Information Collected.”**
#47
**4\. Functional Logic** > **4.6 Signature Workflow Logic**
~360 tok
### **4.6 Signature Workflow Logic**
* **Signature fields are editable only during manual sending -** When an agreement is manually sent, the signature section becomes editable, allowing the user to review and modify agency-side signature fields before sending.
* **When Auto-Send is enabled, signatures are not editable.** If the brand’s **Auto-Send** setting is ON, the agreement is sent immediately upon contractor assignment. In this flow, the signature configuration is locked and **cannot be edited**.
* **Agency Owner is automatically assigned when Auto-Send -** During Auto-Send, the system automatically fetches and assigns the **primary Agency Owner** as the agency signer by default.
* **Additional agency signers cannot be added in Auto-Send -** Since the agreement is sent instantly, the user has no opportunity to add or configure additional internal signers.
* **Manual send allows full signature customization -** When sending manually:
* Signature fields become editable.
* **Default Primary Signer:** When manually sending an agreement, the user who initiates the send (Agency Owner, Admin, or Project Owner) is automatically added as the default primary signer for counter-signature.
* **Assign To Other Signers:** The default signer can reassign the signing responsibility to other team members using the "Assign To" option; selecting another user transfers the primary signer role to them.#48
**4\. Functional Logic** > **4.6 Signature Workflow Logic** > **4.6.1 Manual Send Signature Workflow**
~316 tok
#### **4.6.1 Manual Send Signature Workflow**
* **Agency Signatures — Editable & Flexible:**
* Signature fields become fully editable when manually sending an agreement.
* The user who initiates the send (Agency Owner, Admin, or Project Owner) is automatically added as the default primary signer for counter-signature.
* The primary agency signature is mandatory and cannot be removed from the agreement.
* The default signer can reassign signing responsibility to other team members using the "Assign To" option; selecting another user transfers the primary signer role to them.
* Additional agency signers can be added as needed before sending.
* **Contractor Signatures — Auto-Assigned & Locked:**
* The system automatically pulls contractor information from the project or event assignment.
* Based on the service type(s) linked to the contractor, the system generates the required contractor signature fields without user input.
* These signature fields are locked — users cannot add, remove, or modify contractor signature fields.
* If multiple contractors share the same service type (e.g., multiple photographers), the system automatically creates separate signature fields for each contractor.#49
**4\. Functional Logic** > **4.6 Signature Workflow Logic** > **4.6.2 Auto-Send Signature Workflow**
~178 tok
#### **4.6.2 Auto-Send Signature Workflow**
* **Agency Signatures — System-Assigned & Locked:**
* When Auto-Send is enabled, the agreement is sent immediately upon contractor assignment.
* The system automatically fetches and assigns the primary Agency Owner as the agency signer by default.
* Signature configuration is locked and cannot be edited.
* Additional agency signers cannot be added since the agreement is sent instantly.
* **Contractor Signatures — Auto-Assigned & Locked:**
* Same behavior as manual send — contractor signatures are automatically generated based on service type and project/event assignment.
* Signature fields remain locked and non-editable.#50
**4\. Functional Logic** > **4.7. Assigning Signature logic**
~46 tok
### **4.7. Assigning Signature logic** When default users need to transfer the primary agency signers, the system provides a flexible workflow to assign existing project team members.
#51
**4\. Functional Logic** > **4.7. Assigning Signature logic** > **4.7.1 Accessing Signature Settings**
~59 tok
#### **4.7.1 Accessing Signature Settings** * Clicking on a signature field button opens the **Signature Settings** panel on the right side of the builder interface. * Panel displays "Signature Settings" header with signature icon.
#52
**4\. Functional Logic** > **4.7. Assigning Signature logic** > **4.7.2 Assign To Dropdown**
~97 tok
#### **4.7.2 Assign To Dropdown**
* Shows a dropdown labeled **“Assign To”** with a placeholder **“Select signer”**.
* Lists **all project assigned team members** with:
* Circular profile picture
* Full name
* **“(Added)”** tag if already assigned as a signer (cannot be re-selected).
* Ensures users can quickly identify who is already used and who is available.#53
**4\. Functional Logic** > **4.8 Settings Agreement Expiration Configuration & Behavior**
~17 tok
### **4.8 Settings Agreement Expiration Configuration & Behavior**
#54
**4\. Functional Logic** > **4.8 Settings Agreement Expiration Configuration & Behavior** > **4.8.1 Configuration Settings (Admin / Agency Owner Only)**
~147 tok
#### **4.8.1 Configuration Settings (Admin / Agency Owner Only)** * The system provides a configuration option called **“Turn on file expiration.”** * When enabled, the admin/agency owner can define how long an agreement remains valid. * The expiration duration can be set in **days and weeks**, depending on the agency’s policy. * This setting can be adjusted whether the agreement is still in **Draft** mode or already **Published**, allowing flexibility even after initial creation. * For field details and validation rule, refer to the link - [**Click Here**](#3wsftgyz2gh1)
#55
**4\. Functional Logic** > **4.8 Settings Agreement Expiration Configuration & Behavior** > **4.8.2 Expiration Behavior (How the Countdown Works)**
~129 tok
#### **4.8.2 Expiration Behavior (How the Countdown Works)**
* The expiration countdown begins **as soon as the agreement is sent** to the contractor.
* This applies whether the agreement was sent **automatically** or **manually** (via project workflow).
* Once the expiration date is reached, the agreement becomes **inactive**.
* No further signatures can be added.
* Users cannot make any edits to the agreement.
* The agreement becomes read-only, ensuring compliance and integrity.#56
**4\. Functional Logic** > **4.8 Settings Agreement Expiration Configuration & Behavior** > **4.8.3 Post-Expiration User Experience**
~12 tok
#### **4.8.3 Post-Expiration User Experience**
#57
**4\. Functional Logic** > **4.8 Settings Agreement Expiration Configuration & Behavior** > **Agency User Behavior**
~79 tok
#### **Agency User Behavior** * The agency team can still **view** the expired agreement. * The system clearly labels the document with an **“Expired”** status tag for visibility. * No actions (editing, resigning, resending, deleting) are available—only viewing and navigating through the agreement is allowed.
#58
**4\. Functional Logic** > **4.8 Settings Agreement Expiration Configuration & Behavior** > **Contractor Behavior**
~82 tok
#### **Contractor Behavior**
* Contractors lose access to the expired agreement.
* When they attempt to open it, a blocking modal appears stating:
**“This service agreement has expired. Please contact your agency for renewal.”**
* This ensures contractors are aware of the reason and directs them back to the agency.#59
**4\. Functional Logic** > **4.8 Settings Agreement Expiration Configuration & Behavior** > **4.8.4 Renewal Process (How to Proceed After Expiration)**
~151 tok
#### **4.8.4 Renewal Process (How to Proceed After Expiration)**
* Expired agreements **cannot** be reactivated or reopened for signing. This prevents tampering and keeps the audit trail clean.
* To renew the agreement, the agency must **send a new agreement instance** from the **project workflow**.
* This creates a **fresh copy** of the agreement with a new expiration countdown.
* Smart fields populate based on the current project and contractor details.
* The original expired agreement remains stored in the system for **audit purposes**, maintaining compliance and traceability.#60
**4\. Functional Logic** > **4.9 Top Action Bar**
~47 tok
### **4.9 Top Action Bar** Once the draft service agreement is customized and ready, the top action bar provides users with three primary actions for finalizing and managing the agreement:
#61
**4\. Functional Logic** > **4.9 Top Action Bar** > **4.9.1 Preview:**
~120 tok
#### **4.9.1 Preview:**
* Opens a read-only version of the complete service agreement, allowing users to review layout, content, service-specific terms, and placeholders before finalization
* **Access Points:**
* **From Listing:** Users can access a preview directly from the Service Agreement listing page via the Preview action (eye icon).
* **From Builder:** Users can access a preview from the Builder edit mode by clicking the Preview button in the header.#62
**4\. Functional Logic** > **4.9 Top Action Bar** > **4.9.2 Save as Template:**
~66 tok
#### **4.9.2 Save as Template:** * Saves the current service agreement edits as a draft template, enabling users to revisit and continue editing later before publishing * Save as Template option will be accessible only when the agreement is in Draft status.
#63
**4\. Functional Logic** > **4.9 Top Action Bar** > **4.9.3 Publish:**
~113 tok
#### **4.9.3 Publish:** * Finalizes the service agreement, changes the status from Draft (yellow badge) to Published (green badge), and marks it as ready for contractor assignment and signature. * Published agreements remain editable; content is not locked after publishing. * Users can update content, Smart Fields, Input Fields, and signature configurations at any time. * Edits to published agreements are saved and reflected immediately.
#64
**5\. Field Details & Validation**
~9 tok
## **5\. Field Details & Validation**
#65
**5\. Field Details & Validation** > **5.1 Contract Builder Interface Display Fields**
~790 tok
### **5.1 Contract Builder Interface Display Fields** **Field Name** **Type** **Validation Rules** Back Arrow Navigation Button \- Top-left corner, returns to Contracts listing page Contract Name Header Text Display \- Shows entered Agreement title (e.g., "Photography Agreement") Status Badge Status Label \- Displays the status “Draft” or “Published” Preview Button Secondary Action Button \- Opens read-only preview of edited service agreement Save as Template Button Secondary Action Button \- Saves the edited content as draft template; Allows future editing Publish Button Primary Action Button \- Publishes the service Agreement and Marks it ready for client sharing Contract Structure Panel Collapsible Menu \- Clicking it opens a Left sidebar containing Logo, Address, Contract, Signature sections Settings Icon Navigation Button \- Opens Settings panel in left sidebar; Gear/cog icon Logo Section Logo Displays brand logo; Clickable to show logo configuration options Address Section Rich Text editor Shows brand contact information; Clickable to edit address details Contract Section Rich Text editor Main content editing area; Highlighted when active Signature Section Signature block Signature placeholder area; Clickable to configure signatures Logo Image Display Image Container Shows brand logo in document; Centered by default; Max width constrained Logo Alignment Options Radio Buttons Options: Left, Center, Right; Located in right panel when Logo is selected Logo Size Inputs Number Input Fields Width and Height in pixels (e.g., "58px", "68px"); Located in right panel Address Content Area Rich Text Display Shows brand name, owner name, contact number, email, address, website Address Toolbar Rich Text Editor Toolbar Includes undo/redo, paragraph styles, bold, italic, underline, link options Contract Content Area Rich Text Editor Main editable area for contract text; Full CK Editor functionality Contract Toolbar Rich Text Editor Toolbar Full formatting options including paragraph styles, bold, italic, underline, strikethrough, link, image, table, lists, alignment Add Fields Button Toolbar Button Located in contract toolbar; Opens Smart Fields and Input Fields panel on right Example Agreement Heading Text Display Default heading in contract body; Editable via CK Editor Instructional Text Text Display Format: "This is where you can add your custom contract text."; Editable placeholder Overview Section Text Block Sample content section with heading and body text; Fully editable Example Paragraph Headings Text Display Sample section headings (e.g., "Example Paragraph 1"); Editable Signature Warning Message Info Box Light background with info icon; Text: "You'll be able to edit this signature field — or link it to specific clients and add additional signers — when you send the live contract." Contractor Name Placeholder Signature Field Format: "\[Client Name\]"; Non-editable in builder; Italicized text Date Placeholder Signature Field Format: "Date"; Non-editable in builder; Aligned right Agency Owner Placeholder Signature Field
#66
**5\. Field Details & Validation** > **5.1 Contract Builder Interface Display Fields**
~18 tok
Format: "\[Agency Owner Name\]"; Non-editable in builder; Italicized text
#67
**5\. Field Details & Validation** > **5.2 Settings Tab Fields**
~216 tok
### **5.2 Settings Tab Fields** **Field Name** **Field Type** **Description** **Validation Rules** Settings Header Text (Display) Static text: "Settings" Read-only Set Expiration Date Label Text (Display) Section label for expiration configuration Read-only Turn on File Expiration Toggle Switch Enables or disables contract expiration functionality Default: OFF; when ON, expiration fields become active Expires In (Number) Number Input Numeric value for expiration duration Required when toggle is ON; accepts positive integers only; minimum value: 1; maximum value: 365 Expires In (Unit) Dropdown Select Time unit for expiration period Options: Days, Weeks, Months; default: Days; required when toggle is ON After Sending Text Text (Display) Static text: "after sending to Contractor" Read-only; provides context for expiration timing
#68
**6\. Success Message Handling**
~249 tok
## **6\. Success Message Handling** **Validation Scenario** **Success Message** Logo alignment/size updated \- No explicit message — Changes reflect in real-time in the editor preview Address section updated No explicit message — Content updates instantly in editor Agreement content saved No explicit message — Content auto-saves; visual indicator confirms save Smart Field inserted No explicit message — Placeholder tag appears at cursor position instantly Input Field added No explicit message — Field placeholder appears in editor with configuration options Additional agency signer added No explicit message — New signature field appears in Signature Settings panel Expiration settings configured No explicit message — Settings saved and reflected in agreement details Save as Template clicked "Agreement saved as draft" — Agreement remains in Draft status for further editing Publish clicked "Agreement published successfully" — Status changes to Published (green badge)
#69
**7\. Error Message Handling**
~257 tok
## **7\. Error Message Handling** **Field** **Validation Scenario** **Error Message** Logo Section Logo image fails to load from brand "Unable to load brand logo. Please check brand settings." Agreement Content Content is empty on publish attempt "Agreement content cannot be empty. Please add contract terms before publishing." Smart Field Selected field data unavailable "Data for this field is not available. Please ensure the project/contractor is assigned." Input Field Required field not configured properly "Please provide placeholder text for the required input field." Signature Section Attempt to remove mandatory signature "This signature cannot be deleted. At least one contractor and one agency signature are required." Agency Signer Duplicate signer added "This team member has already been added as a singer." Expiration Settings Invalid duration entered "Please enter a valid expiration duration." Publish Agreement has validation errors "Please resolve all errors before publishing."
#70
**
~357 tok
## ** 8\. Edge Cases** **Scenario** **Expected Behavior** Brand logo deleted after agreement created Agreement retains last saved logo; placeholder displayed if logo unavailable Brand details updated after agreement created Existing agreement retains original data; changes apply only to newly created agreements Smart Field inserted but source data deleted Field displays blank or placeholder text when agreement is sent/viewed User exits builder without saving Unsaved changes are lost; system may prompt "You have unsaved changes" before exit Expiration set to past duration (e.g., 0 days) System rejects invalid input; minimum valid duration enforced Agreement published with empty Input Fields Allowed — Input Fields remain blank for contractor to fill during signing Multiple users editing same agreement simultaneously Last save overwrites previous; no real-time collaboration support Contractor unassigned after agreement sent Sent agreement remains valid; contractor retains access until expiration or completion Agency Owner removed from team after being assigned as signer Signature field retained; system flags for reassignment before sending Agreement content exceeds maximum character limit System displays warning; content must be reduced before saving/publishing Publish attempted with no signature fields Error displayed: "At least one contractor and one agency signature are required."
#71
**9\. Test Cases**
~5 tok
## **9\. Test Cases**
#72
**10\. Acceptance Criteria**
~691 tok
## **10\. Acceptance Criteria** * **Builder Access:** Edit icon (pencil) opens builder for Draft agreements only; Published agreements show View icon only; "Review & Send" from project workflow opens builder in edit mode for manual sending. * **Logo Section:** Brand logo auto-loads from brand profile; alignment (left/center/right) and size (width/height in px) configurable; changes apply to this agreement only without affecting original brand settings. * **Address Section:** Auto-populated with brand details (name, owner, contact, email, address, website); editable via rich text editor; edit access restricted to Admin and Agency Owner only. * **Agreement Content:** Pre-loaded with sample template; full CK Editor functionality available; Smart Fields and Input Fields insertable via "Add Fields" button; content cannot be empty on publish. * **Smart Fields:** Inserted as placeholder tags in Draft mode; auto-populate with live data when sent/viewed; grouped by categories (Project, Client, Company, etc.); blank displayed if source data unavailable. * **Input Fields:** Configurable with placeholder text; "Required" checkbox enforces completion before contractor signature; entered values saved under "Information Collected." * **Signature Section:** Locked during drafting; editable only during manual send; minimum one contractor + one agency signature required; mandatory signatures cannot be removed. * **Contractor Signatures:** Auto-assigned from project/event assignment; locked and non-editable; multiple contractors with same service type generate separate signature fields. * **Agency Signatures:** Agency Owner mandatory and auto-assigned; additional signers addable via "+ Add Signature" (manual send only); "Signature Required" checkbox available for additional signers only. * **Auto-Send vs Manual Send:** Auto-Send (toggle ON) sends immediately with Agency Owner signature only — no edits allowed; Manual Send unlocks signature fields for customization before sending. * **Expiration Settings:** Configurable in Draft or Published status by Admin/Agency Owner; duration set in days/weeks/months; countdown starts on send; expired agreements become read-only. * **Post-Expiration Behavior:** Agency can view expired agreements with "Expired" tag; contractors see blocking modal with renewal message; resend creates new instance with fresh expiration. * **Top Action Bar:** Preview opens read-only view; Save as Template retains Draft status; Publish locks agreement, changes status to Published (green badge), and enables contractor assignment. * **Validation on Publish:** Empty content blocked; missing mandatory signatures blocked; validation errors display inline and must be resolved before publishing.
#73
**11\. Dependencies**
~228 tok
## **11\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Brand Management Data dependency Cannot fetch brand logo, name, and contact details for agreement header and address section General Settings (Service Types) Data dependency Cannot determine service type for agreement template; Smart Field categories unavailable Projects & Events Data dependency Cannot populate project/event Smart Fields; contractor assignment unavailable Contractor Management Data dependency Cannot auto-assign contractor signatures; contractor Smart Fields unavailable Team Management Data dependency Cannot fetch agency team members for additional signer selection Email Service Integration dependency Cannot send agreements to contractors (auto or manual) CK Editor Integration dependency Agreement content editing unavailable; Smart Fields and Input Fields cannot be inserted
#74
**12\. Reference**
~49 tok
## **12\. Reference** * **Link -** [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=14373-170230&t=8mj4Lf2Mr4fc3jkM-0) ☑️ Use Service Agreement in Project
#75
**1\. Module Overview**
~210 tok
## **1\. Module Overview** * **Module Name:** Use Service Agreement in Project * **Purpose:** Enables manual sending of service agreements to contractors through the project workflow when auto-send is disabled, agreements have expired, or revised agreements need to be sent. Provides a guided process for selecting, reviewing, editing, and sharing agreements via email or direct link. * **Business Goal:** Ensure contractors receive service agreements even when automation is not applicable, provide flexibility to review and customize agreements before sending, and offer multiple sharing options (email or link) to accommodate different communication preferences. **2\. Roles & Permissions** * [Roles and permissions - draft](https://docs.google.com/spreadsheets/d/1fPBOJVJmmtHcs9Ev9o_pneOD4Em3Z4AB-j3jrLyJvaY/edit?usp=sharing)
#76
**3\. User Flow**
~40 tok
## **3\. User Flow** * [**Click Here**](https://drive.google.com/file/d/1RrcMmDLZ5uSeU9iNTLkYT_USGSdKTQg0/view?usp=drive_link) to view the detail user flow
#77
**4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#78
**4\. Functional Logic** > **4.1 Manual Sending Workflow**
~69 tok
### **4.1 Manual Sending Workflow** When the “Automatically Send to Contractors” toggle is OFF, or when an agreement has expired, all service agreements must be sent manually by the user. The system provides a guided workflow for selecting, reviewing, and sending agreements
#79
**4\. Functional Logic** > **4.1 Manual Sending Workflow** > **4.1.1 Primary Agency Signer Determination**
~150 tok
#### **4.1.1 Primary Agency Signer Determination** * **Automated Sending:** When sending contracts through automation, the Agency Owner automatically becomes the primary signer for counter-signature. * **Manual Sending:** When sending contracts manually, the user who shares the contract (Agency Owner, Admin, or Project Owner) becomes the primary signer for counter-signature. * **Reassign to Other Team Members:** The default signer can reassign the signing responsibility to other team members using the "Assign To" dropdown; selecting another user transfers the primary signer role to them.
#80
**4\. Functional Logic** > **4.1 Manual Sending Workflow** > **4.1.2 Sending Service Agreement from Project Details**
~194 tok
#### **4.1.2 Sending Service Agreement from Project Details** * Project Details> Contractors Tab * Users can send service agreements independently from the **Project Details → Files/Documents → Documents & Forms** tab. * Clicking the **“+”** icon opens the **Add New Document** modal, where users select **Contract → Service Agreement**. * The system displays all applicable service agreements grouped by event, showing contractor details, agreement name, expiration info, and a **“Review & Send”** button. * Users can open **Review & Send** to preview the agreement, verify Smart Fields, and make allowed edits before sending. * Once reviewed, the user sends the agreement directly to the contractor; the shared agreement appears in the files & documents listing
#81
**4\. Functional Logic** > **4.1 Manual Sending Workflow** > **4.1.3 Send Eligibility & Resend Logic**
~400 tok
#### **4.1.3 Send Eligibility & Resend Logic**
* **Never Sent (Manual Sending):** When an agreement has not been sent before, the user will always see an active "Review & Send" button. This allows the user to open the agreement, review the content, and send it for the first time.
* **Auto-Sent Agreements:** If the service agreement was automatically sent by the system (because Auto-Send was turned ON), the card shows "Automatically Sent on \[Date\]" with a "Review & Send" button available for resending.
* **Manually Sent Agreements:** When a user manually sends an agreement, the card displays: "Sent on \[Date\] • Expires on \[Date\]" with a "Review & Send" button available for resending at any time.
* **Resend Available Anytime:** Regardless of whether the agreement was sent manually or automatically, users can resend the agreement at any time using the "Review & Send" button.
* **Resend Behavior — Unsigned Agreements:** When a user resends an agreement that has not been signed, the previously shared version automatically expires and becomes invalid; the contractor receives the new agreement with a fresh expiration period.
* **Resend Behavior — Signed Agreements:**
* If the previously shared agreement was already signed by the contractor, it remains viewable in the system for audit and record-keeping purposes.
* Upon resend, signature icons in project details and calendar list view are reset to greyed out (unsigned state), requiring fresh signatures.
* The contractor is notified about the newly presented agreement and must sign the new version.#82
**4\. Functional Logic** > **4.1 Manual Sending Workflow** > **4.1.4 Final Review & Sending**
~599 tok
#### **4.1.4 Final Review & Sending**
* **Pre-Send Preview -** Before sending, users can click **Preview** to see the exact contractor-facing version of the agreement, formatting, actual relevant fetched data of smart fields, and assigned signature fields.
* **Share Contract Modal via email -** When proceeding to send, the Share Contract modal opens, allowing users to configure:
* **Email To:** It displays project participants, prefilled with assigned contractors, while allowing users to add or remove recipients via a searchable multi-select.
* **Subject:** Editable email subject line.
* **Message:** Rich text email body with formatting tools.
* **Template:** Optional selection of predefined email templates.
* **Send Option -** Choosing **Send** delivers the agreement directly via email. The contractor receives a “Get Started” button that opens the agreement for review and signing.
* **Copy / Generate Link -** Users can create or copy a unique, tokenized shareable link. Refer to the link for more detailed logic **-** [**Click here**.](#kgc7wpqucyw5)
* **Email Preview Before Sending -** Users can view a complete email preview—showing Smart Fields, formatted message, and selected recipients—to confirm accuracy before final delivery.
**4.2.1 Generate Link Logic**
1. **Initial Generation:** Clicking "Generate Link" shows a confirmation modal; upon confirmation, the system creates unique tokenized URLs for each recipient/signer.
2. **Unique Links Per Recipient:** Each link is tied to a specific signer with their profile, name, and email displayed — ensuring individual tracking, personalized access, and audit trail.
3. **Post-Generation Access:** After links are generated, the button changes from "Generate Link" to "Copy Link"; users can reopen the Share Link modal anytime to copy and share links via alternative channels (WhatsApp, SMS, Slack, etc.).
4. **Link Expiration:** Generated links remain active until the agreement is completed or expires (based on configured expiration settings).
5. **Agreement Activation:** The moment the link is generated, the agreement becomes active in the system; users can share the link directly without sending an email, providing an alternative delivery method.
6. Once the link is activated It will be displayed in agency side and contractor portal in documents sections and Activity#83
**4\. Functional Logic** > **4.3 Post-Sharing Impact**
~40 tok
### **4.3 Post-Sharing Impact** Once a service agreement is shared, the system automatically updates all relevant sections for both the agency and contractor.
#84
**4\. Functional Logic** > **4.3 Post-Sharing Impact** > **4.3.1 Project Details — Activity Tab**
~68 tok
#### **4.3.1 Project Details — Activity Tab** * Every action related to the agreement is logged as a timeline entry (created, sent, viewed, signed, completed, expired). * Each log entry includes a timestamp, the user’s profile image, and a **View Contract** shortcut.
#85
**4\. Functional Logic** > **4.3 Post-Sharing Impact** > **4.3.2 Project Details — Files/Documents Tab**
~80 tok
#### **4.3.2 Project Details — Files/Documents Tab** * The agreement sent through email or link appears in the **Documents & Forms** list with details such as name, type, created date, and recipient. * Users can quickly redirect to Agreement View to **Preview status, Download PDF or Delete** using the kebab menu.
#86
**4\. Functional Logic** > **4.3 Post-Sharing Impact** > **4.3.3 Project Details — Agreement Details View**
~136 tok
#### **4.3.3 Project Details — Agreement Details View** * From Activity or Files/Documents, users can open the full **Contract Details** screen. * The header shows the agreement name, its status, and options like Download PDF or Countersign. * The Signers section shows each signer’s photo, name, status (Signed/Pending), and last viewed time. * All input fields completed by the contractor (venue, address, contact details, etc.) are displayed. * A chronological **File Activity** log records every event related to the agreement.
#87
**4\. Functional Logic** > **4.3 Post-Sharing Impact** > **4.3.4 Contractor Portal — Dashboard & Event Details**
~121 tok
#### **4.3.4 Contractor Portal — Dashboard & Event Details** * The contractor sees the shared agreement in their dashboard, event details & **Files/Documents** tab with a clear status indicator. * They can open, review, and sign it directly from their portal. * After signing, they see **Signed on \[Date\]** and can download the PDF. * If the agreement expires before signing, they are shown: _“This service agreement has expired. Please contact your agency for renewal.”_
#88
**4\. Functional Logic** > **4.3 Post-Sharing Impact** > **4.3.5 Agency dashboard - Pending Contractor Widget**
~232 tok
#### **4.3.5 Agency dashboard - Pending Contractor Widget** * After service agreements are sent to contractors, the dashboard displays a **“Pending Contractor Agreements”** widget. This widget provides the agency with quick visibility into which contractors with which project still have outstanding agreements awaiting signature. * The widget lists all contractors whose agreements have been sent but are **not yet signed**. Each entry represents a pending action and helps the agency easily identify delays or follow up where necessary. * The widget updates automatically based on agreement status. As soon as a contractor completes and signs their agreement, they get **removed** from the pending list. * Agency Owners can send manual reminder emails to contractors directly from the **Pending Contractor Agreements** widget, prompting them to review and sign pending agreements and helping ensure timely completion.
#89
**5\. Field Details & Validation**
~9 tok
## **5\. Field Details & Validation**
#90
**5\. Field Details & Validation** > **5.1 Add New Document Modal**
~331 tok
### **5.1 Add New Document Modal** **Field Name** **Type** **Validation Rules** Modal Header Text \- Format: "Add New Document" Document Type Tabs Tab Navigation \- Options: Invoice, Proposal, Contract, Questionnaires. By default appears in contract Search Bar Text Input \- Placeholder: "Search"; filters agreements by name Contract Sub-Tabs Tab Navigation \- Options: Client Contract, Service Agreement Event Section Header Collapsible Container \- Displays event name with color indicator (e.g., "Rehearsal Dinner", "Wedding", "Engagement Photoshoot") Contractor Profile Image + Text \- Displays contractor profile picture, name, and role icon Contractor Role Text Badge \- Displays service type (e.g., "Photographer", "Videographer") Agreement Name Text with Icon \- Displays document icon + agreement title (e.g., "Service Agreement Name") Expiration Info Text Display \- Format: "Expires in \[X\] weeks after sending to recipient" or "No expiration date" or "Expiration date: \[Date\]" Review & Send Button Primary Action Button \- Yellow/orange button; enabled when agreement is eligible for sending Automatically Sent Label Status Label \- Gray text; displays "Automatically Sent" when auto-send was triggered Cancel Button Secondary Action Button \- Closes modal without action
#91
**5\. Field Details & Validation** > **5.2 Review & Edit modal**
~29 tok
### **5.2 Review & Edit modal** * For review and edit modal, refer to the link - [**Click Here**](#ekos5ydpqu0b)
#92
**5\. Field Details & Validation** > **5.2 Share Contract Modal — Email Sharing**
~363 tok
### **5.2 Share Contract Modal — Email Sharing** **Field Name** **Type** **Validation Rules** Modal Header Text \- Format: "Share Service Agreement" Close Icon Icon Button \- "X" icon; closes modal without sending Email To Multi-Select Input \- Pre-filled with assigned contractor email; displays as removable chip with "X" icon Add Recipient Icon Icon Button \- "+" icon; opens dropdown of project participants Recipient Dropdown Dropdown List \- Displays available contacts (e.g., Jenny Wilson, Devon Lane, Marvin McKinney, Darrell Steward, Leslie Alexander, Cody Fisher); searchable Subject Text Input Placeholder: "Enter the subject"; editable field for email subject line Message Body Rich Text Area Placeholder: "Type your message"; supports formatted text input Get Started Button CTA Preview Dark button displayed within message area; shows preview of contractor's call-to-action Template Dropdown Dropdown Select Label: "Template"; allows selection of pre-configured email templates Formatting Toolbar Icon Button Group Text formatting (A), Link icon (🔗), Team mention (👥), Attachment icon (@) Copy Link Text Button Bottom-left; opens Generate Link flow if not generated, or copies existing link Preview Button Secondary Action Button Opens email preview modal showing exact recipient view Send Button Primary Action Button Yellow button with dropdown arrow; sends agreement to selected recipients
#93
**5\. Field Details & Validation** > **5.3 Email Preview Modal**
~206 tok
### **5.3 Email Preview Modal** **Field Name** **Type** **Validation Rules** Modal Header Text Format: "Preview" Header Icons Icon Buttons Mobile view icon, Desktop view icon, Comment icon Close Icon Icon Button "X" icon; closes preview modal Recipient Line Text Format: "To: \[Recipient Names\]" (e.g., "Emma Johnson, Mark Mathew") Email Subject Text (Bold) Displays configured subject (e.g., "Wedding Contract") Greeting Text Personalized greeting (e.g., "Dear Emma and Mark,") Email Body Text Display Shows message with populated Smart Fields (e.g., event date, location) Sender Signature Text Block Displays sender name, title, and company (e.g., "Thanks, John Cherian, ABC Photographers") Get Started Button CTA Button Dark button; preview of what contractor will click to access agreement
#94
**5\. Field Details & Validation** > **5.4 Send Confirmation Modal**
~76 tok
### **5.4 Send Confirmation Modal** **Field Name** **Type** **Validation Rules** Success Icon Visual Indicator Green checkmark icon with badge styling Confirmation Message Text Format: "Contract Sent" Modal Behavior Auto-Action Modal auto-closes after 2-3 seconds or dismisses on click outside
#95
**5\. Field Details & Validation** > **5.5 Generate Link — Field Details**
~387 tok
### **5.5 Generate Link — Field Details** **Field Name** **Type** **Validation Rules** Generate Link / Copy Link Text Button Bottom-left of Share Contract modal; displays "Generate Link" if no links exist; changes to "Copy Link" after generation Confirmation Modal Header Text Format: "Generate Link" Close Icon Icon Button "X" icon; closes modal without generating Confirmation Message Info Text Displays: "Your file will then become accessible to all members who are actively involved in the project." Cancel Button Secondary Action Button Text button; closes modal without action Generate Link Button Primary Action Button Yellow button; confirms and generates unique links for all recipients Share Link Modal Header Text Format: "Share Link" Security Notice Info Text Displays: "Links are unique for each recipient. Make sure that the intended recipients/signers are the only ones accessing the document through their link." Individual Links Section Section Header Format: "Individual Links" Recipient Profile Picture Image Displays recipient's profile photo Recipient Name Text (Primary) Displays full name (e.g., "Monica Benton", "Nick Robinson") Recipient Email Text (Secondary) Displays email below name (e.g., "monica\_be@gmail...", "nick\_9760@gmail...") Unique Link URL URL Text Field Displays individual URL Copy Link Button Action Button Per-recipient button; copies individual link to clipboard Done Button Primary Action Button Yellow button; closes modal and returns to Share Contract
#96
**6\. Success Message Handling**
~177 tok
## **6\. Success Message Handling** **Validation Scenario** **Success Message** Agreement sent via email "Contract Sent" — confirmation modal with green checkmark icon Link generated successfully No explicit message — Share Link modal opens displaying unique links for each recipient Link copied to clipboard No explicit message — Link copied; visual feedback via button state change or tooltip Email preview loaded No explicit message — Preview modal displays formatted email with populated Smart Fields Recipient added successfully No explicit message — Recipient appears as removable chip in Email To field Recipient removed No explicit message — Chip removed from Email To field instantly
#97
**7\. Error Message Handling**
~247 tok
## **7\. Error Message Handling** **Field** **Validation Scenario** **Error Message** Email To No recipient selected "Please add at least one recipient to send the agreement." Email To Invalid email format entered "Please enter a valid email address." Subject Subject field left empty "Please enter a subject line." Send Agreement not in Published status "This agreement must be published before sending." Send Contractor not assigned to event "No contractor assigned to this event. Please assign a contractor first." Generate Link Link generation fails "Unable to generate a link. Please try again." Copy Link Copy action fails "Failed to copy the link. Please try again." Email Delivery Email service unavailable "Unable to send email. Please try again later." Preview Preview fails to load "Unable to load preview. Please try again." Agreement Access Agreement expired "This service agreement has expired. Please resend with a new expiration timeline."
#98
**8\. Edge cases**
~382 tok
## **8\. Edge cases** **Scenario** **Expected Behavior** Agreement sent but contractor email bounces Agreement status remains "Sent"; activity log records delivery failure; user can resend or use Generate Link as alternative User closes Share Contract modal before sending No agreement sent; no activity logged; user can reopen and send later Multiple recipients added but one email invalid System validates on Send; inline error shown for invalid email; valid recipients retained Link generated but recipient never accesses it Link remains active until agreement expires; agency can track "Not Viewed" status in Agreement Details Contractor removed from event after agreement sent Sent agreement remains valid; contractor retains access until completion or expiration Agreement expires while contractor is viewing Contractor cannot submit signature; shown expiration modal: "This service agreement has expired. Please contact your agency for renewal." User attempts to resend active (non-expired) agreement "Review & Send" button disabled; system prevents duplicate sending until expiration Generated link copied but Share Link modal closed accidentally Links persist; user can click "Copy Link" again to reopen Share Link modal and access existing links Email service down during send attempt Error displayed: "Unable to send email. Please try again later."; user can retry or use Generate Link alternative Same recipient added multiple times System prevents duplicate; recipient chip appears only once
#99
**
~6 tok
## ** 9\. Test Cases**
#100
**10\. Acceptance Criteria**
~8 tok
## **10\. Acceptance Criteria**
#101
**10\. Acceptance Criteria**
~800 tok
* **Access & Navigation:** Manual sending accessible via Project Details → Files/Documents → Documents & Forms → "+" icon; Add New Document modal opens with Contract → Service Agreement tab displaying agreements grouped by event.
* **Agreement Display:** Each agreement card shows contractor profile picture, name, service type badge, agreement name, expiration info, and action button ("Review & Send" or "Automatically Sent" label).
* **Send Eligibility Logic:** Never sent → "Review & Send" enabled; Auto-sent → locked with "Automatically Sent on \[Date\]" label; Manually sent & active → locked with "Sent on \[Date\] • Expires on \[Date\]"; Expired → "Review & Send" re-enabled.
* **Review & Edit:** Clicking "Review & Send" opens agreement builder; users can verify Smart Fields, make instance-level edits, configure signatures, and preview before proceeding to send.
* **Resend Behavior:** Resending expired agreement creates new instance with fresh expiration timeline; original expired agreement retained for audit; no duplicate sends allowed for active agreements.
* **Share Contract Modal:** Email To pre-filled with assigned contractor (removable chip); additional recipients addable via "+" dropdown; Subject and Message fields editable; Template dropdown and formatting toolbar available.
* **Email Preview:** Preview button displays exact email layout with populated Smart Fields, recipient list, subject, formatted message, sender signature, and "Get Started" CTA button.
* **Email Sending:** Send button delivers agreement to selected recipients; contractor receives email with "Get Started" CTA; "Contract Sent" confirmation modal displayed; activity logged; expiration countdown begins.
* **Generate Link:** "Generate Link" displays confirmation modal; upon confirmation, unique tokenized URLs created per recipient; security notice displayed; button changes to "Copy Link" after generation.
* **Share Link Modal:** Displays recipient profile, name, email, and unique URL for each signer; individual "Copy Link" buttons available; "Done" closes modal; links shareable via WhatsApp, SMS, Slack, etc.
* **Link Behavior:** Links remain active until agreement completed or expired; links non-transferable and tied to specific signer; system verifies recipient identity before granting access.
* **Post-Send — Activity Tab:** All actions logged (created, sent, viewed, signed, completed, expired) with timestamp, user profile, and "View Contract" shortcut.
* **Post-Send — Files/Documents Tab:** Sent agreement appears in Documents & Forms list with name, type, created date, recipient; kebab menu offers Preview, Download PDF, Delete options.
* **Post-Send — Agreement Details View:** Header shows agreement name, status badge, Download PDF, and Countersign options; Signers section displays photo, name, status (Signed/Pending), last viewed time; Information Collected shows contractor-submitted data; File Activity logs all events.
* **Contractor Portal:** Sent agreement visible in contractor's Dashboard and Event Details → Files/Documents; contractor can view, review, sign, and download PDF; expired agreements show blocking modal with renewal messa#102
**10\. Acceptance Criteria**
~46 tok
ge. * **Validation Rules:** Send blocked if no recipient, invalid email, or empty subject; only Published agreements can be sent; contractor must be assigned to event before sending.
#103
**11\. Dependencies**
~383 tok
## **11\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Service Agreement Builder Data dependency Cannot access agreement templates for review and edit; "Review & Send" functionality unavailable Service Agreement Listing Data dependency Cannot retrieve published agreements; Add New Document modal shows empty state Projects & Events Data dependency Cannot group agreements by event; contractor-event assignments unavailable Contractor Management Data dependency Cannot fetch contractor details (profile, name, service type); recipient pre-fill unavailable Brand Management Data dependency Cannot populate Smart Fields with brand information; agreement content incomplete Email Service Integration dependency Cannot send agreements via email; users must rely on Generate Link as alternative Team Management Data dependency Cannot fetch project participants for recipient dropdown; additional recipients unavailable General Settings (Expiration) Data dependency Cannot apply expiration rules; agreements remain active indefinitely Activity Log Service Integration dependency Cannot record send, view, sign events; audit trail unavailable Contractor Portal Integration dependency Contractor cannot access, view, or sign shared agreements PDF Generator Integration dependency Cannot generate downloadable PDF version of signed agreements Link Generation Service Integration dependency Cannot create unique tokenized URLs; "Generate Link" functionality unavailable
#104
**12 Reference**
~49 tok
## **12 Reference** * **Figma Link** - [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=23991-124467&t=yZRhWIcZM2k63i82-0) ☑️ Sign Contract - Contractor side
#105
**1\. Module Overview**
~209 tok
## **1\. Module Overview** * **Module Name:** Sign Service Agreement — Contractor Side * **Purpose:** Enables contractors to view, review, and sign service agreements shared by the agency through their Contractor Portal. Provides a guided signing experience with options to type or draw signatures, ensuring legal acknowledgment before commencing work on assigned events. * **Business Goal:** Ensure contractors formally accept agreement terms before starting work, provide a seamless digital signing experience, maintain legal validity through electronic signature capture, and trigger sequential counter-signing workflow upon contractor signature completion. **2\. Roles & Permissions** * [Roles and permissions - draft](https://docs.google.com/spreadsheets/d/1fPBOJVJmmtHcs9Ev9o_pneOD4Em3Z4AB-j3jrLyJvaY/edit?usp=sharing)
#106
**3\. User Flow**
~40 tok
## **3\. User Flow** * [**Click Here**](https://drive.google.com/file/d/1tl1eVEiwTREsNBTE8bkz4WEdKFstgPir/view?usp=drive_link) to view the detailed user flow
#107
**4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#108
**4\. Functional Logic** > **4.1 Agreement Visibility in Contractor Portal**
~121 tok
### **4.1 Agreement Visibility in Contractor Portal** Once a service agreement is shared, it becomes visible to the contractor in multiple locations: * **Dashboard — Service Agreements Widget:** Displays all pending agreements grouped by event name with date/time and "Sign Now" button. * **Event Details — Service Agreement Section:** Shows agreement card with document icon, agreement name (e.g., "IC-Agreement 12\_08\_25"), event name, date/time, and "Sign Agreement" button.
#109
**4\. Functional Logic** > **4.2 Accessing the Agreement**
~101 tok
### **4.2 Accessing the Agreement** * **From Dashboard:** Contractor clicks "Sign Now" on any pending agreement in the Service Agreements widget. * **From Event Details:** Contractor navigates to event → Services tab → Service Agreement section → clicks "Sign Agreement" button. * **From Email/Link:** Contractor clicks "Get Started" button in email or opens the unique link shared by the agency.
#110
**4\. Functional Logic** > **4.3 Agreement Review**
~415 tok
### **4.3 Agreement Review**
* **Full Agreement View -** The contractor can read the complete agreement, including all sections, with Smart Fields auto-filled (event details, contractor info, brand details) and any Input Fields visible if applicable.
* **Signature Section Display-** The page shows all required signatures:
* Contractor signature field labeled as **“You”** with their email
* Agency representative(s) with name and email
* Date fields for each signature slot
* **Input Fields Requirement -** If the agreement includes Input Fields, the contractor must fill all **required** fields before they can sign or submit.
* **Terms Acknowledgement -** Before submitting, the contractor must check a mandatory box confirming: _“I certify that I have read and agree to the terms and conditions mentioned in this contract.”_
* **Action Buttons**
* **Download PDF** — downloads the current version of the agreement
* **Cancel** — visible upon scrolling down the agreement, positioned on the left side of the Submit Contract button.
* Allows the contractor to close the agreement without signing.
* If the contractor has added a signature but clicks Cancel without submitting, the agreement closes without saving any changes — signature is discarded.
* The contractor can return later to complete the signing process from the beginning.
* **Submit Contract** — becomes enabled only after:
* The agreement is scrolled from the top to the bottom
* Signature is added
* All required Input Fields are completed
* Terms acknowledgment is checked#111
**4\. Functional Logic** > **4.4 Signature Capture**
~271 tok
### **4.4 Signature Capture**
* **Opening the Signature Modal -**
* Clicking the contractor signature placeholder (or “Click to Sign”) opens a dedicated **Sign Contract** modal.
* It displays two signature blocks; out of the two signature blocks (Contractor and Agency), contractors can only sign in their own respective block — the agency signature block remains inaccessible to them.
* **Two Signature Options**
* **Type Signature**: Contractor types their name; system converts it to a signature-style font.
* **Draw Signature**: Contractor draws their signature; a “Clear” button allows redrawing.
* **Signature Modal Details**
* **Signature Area**: Canvas or input box with placeholder “Type your name here”
* **Signer Info**: Shows contractor name and date
* **Legal Consent Checkbox**:
Confirms: _“By taking this action, I, \[Name\], consent to execute this document electronically with full legal validity.”_
* **Cancel**: Closes without saving
* **Sign Contract**: Applies the signature to the agreement#112
**4\. Functional Logic** > **4.5 Signature Submission**
~167 tok
### **4.5 Signature Submission**
* **Required Fields Completion:** Contractor must complete all Input Fields marked as "Required" before submission.
* **Terms Confirmation:** The acknowledgment checkbox must be checked to continue.
* **Final Submission:** Clicking **Submit Contract** completes the contractor signing process and submits the agreement back to the agency
* **Signature Capture Details:** Once signed, the signature field displays the visual signature along with:
* Date and timestamp (e.g., "July 19, 2025 at 8:51 am")
* Signer's name and email address
* IP address captured at the time of signing (e.g., "IP: 144.44.253.71")#113
**4\. Functional Logic** > **4.6 Sequential Signing Logic**
~204 tok
### **4.6 Sequential Signing Logic**
The system follows a fixed signing order to maintain legal validity and avoid conflicts:
* **Contractor Signs First -** All contractor(s) must complete their signatures before the agency can sign.
* Contractors cannot edit anything after signing.
* **Primary Agency Owner Signs Next -** After every contractor has finished signing, the primary agency owner automatically receives a notification informing them that their counter-signature is required.
* **Agreement Completion -** When all required parties have signed, the system updates the agreement status to **“Completed.”**
* **While In Progress:**
* Status stays **“In Progress”** until all signatures are collected.
* Contractors can still view the agreement, but can no longer make changes.#114
**4\. Functional Logic** > **4.7 Expired Agreement Handling**
~34 tok
### **4.7 Expired Agreement Handling** * For the details on the expired agreement handling logic **-** [**Click here**](#fu9kwpyzmxon)
#115
**4\. Functional Logic** > **4.7 Post-Agreement Signing Impact**
~47 tok
### **4.7 Post-Agreement Signing Impact** **Once a contractor signs the service agreement, the system automatically updates all relevant sections for both the agency and the contractor.**
#116
**4\. Functional Logic** > **4.7 Post-Agreement Signing Impact** > **4.7.1 Agency Portal — Contractor Card Updates**
~156 tok
#### **4.7.1 Agency Portal — Contractor Card Updates**
* Agreement Icon Status Change: The service agreement icon on the contractor card updates to indicate signed status (changes from pending/unsigned indicator to signed indicator).
* **Contractor Card Icons:** The action icons row below the contractor name reflects updated agreement status:
* The agreement icon shows the completed state
* Other icons (pay rate, messaging, files, payment) remain functional
* Status Badge Update: If a "Pending" status badge was displayed for an unsigned agreement, it is removed or updated to reflect a signed status.#117
**4\. Functional Logic** > **4.7 Post-Agreement Signing Impact** > **4.7.2 Agreement Status Updates**
~100 tok
#### **4.7.2 Agreement Status Updates** * Status Change: Agreement status updates from "Sent" or "Pending" to "Signed" (contractor signed) or "In Progress" (awaiting agency counter-signature). * Timestamp Display: Contractor's signature displays with timestamp (e.g., "Signed on 12 Aug, 11:34 AM"). * Read-Only State: Agreement becomes read-only for the contractor; no further edits permitted.
#118
**4\. Functional Logic** > **4.7 Post-Agreement Signing Impact** > **4.7.3 Agency Notification Email & App**
~96 tok
#### **4.7.3 Agency Notification Email & App** * Primary agency signer automatically receives notification that a counter-signature is required. * Notification delivery is based on user's notification settings — user may receive email notification, in-app notification, or both. * Notification includes contractor name, agreement name, event details, and a direct link to sign.
#119
**4\. Functional Logic** > **4.7 Post-Agreement Signing Impact** > **4.7.4 Project Details — Activity Tab**
~85 tok
#### **4.7.4 Project Details — Activity Tab** * Activity Log Entry: System logs "Contractor \[Name\] signed Service Agreement" with timestamp. * View Agreement Shortcut: Activity entry includes "View Agreement" link for quick navigation. * Chronological Timeline: Signing action appears in proper sequence within the activity feed.
#120
**4\. Functional Logic** > **4.7 Post-Agreement Signing Impact** > **4.7.5 Project Details — Files/Documents Tab**
~90 tok
#### **4.7.5 Project Details — Files/Documents Tab**
* Status Update: Agreement entry in the Documents & Forms list updates to show "Signed" or "Awaiting Counter-Signature" status.
* Kebab Menu Options: Updated options available:
* Preview Agreement
* Download PDF (with contractor signature)
* Counter-Sign (if agency signature required)#121
**4\. Functional Logic** > **4.7 Post-Agreement Signing Impact** > **4.7.6 Contractor Portal — Post-Signature State**
~153 tok
#### **4.7.6 Contractor Portal — Post-Signature State** * Dashboard Widget: Agreement removed from "Pending" section in Service Agreements widget; moves to completed or signed section. * Event Details: The Service Agreement section shows "Signed on \[Date\]" status instead of the "Sign Agreement" button. * Read-Only Access: Contractor can view the signed agreement but cannot make changes. * Download Available: "Download PDF" option available showing agreement with the contractor's signature and timestamp. * Agency Signature Pending: Agency signature fields display as pending until countersigned.
#122
**5\. Field Details & Validation**
~9 tok
## **5\. Field Details & Validation**
#123
**5\. Field Details & Validation** > **5.1 Sign Service Agreement View**
~385 tok
### **5.1 Sign Service Agreement View** **Field Name** **Type** **Validation Rules** Brand Logo Image \- Displays brand logo at top center; auto-fetched from brand profile Brand Name Text \- Format: Brand name (e.g., "Shutter & Sound") Brand Contact Info Text Block \- Displays agency owner name, phone, email, address, website Service Agreement Expiration Date Text \- Format: "Service Agreement expiration date: \[Date\]" (e.g., "Aug 17, 2024") Agreement Title Text (Heading) \- Format: "Example Agreement" or custom agreement name Input Field (Full Name) Text Input \- Placeholder: "Full Name"; required field for contractor to enter name Agreement Content Sections Rich Text \- Displays in numbers in the standard template format Click to Sign Label Text Link \- Format: "Click to Sign"; clickable to open Sign Contract modal Contractor Signature Field Signature Placeholder \- Displays contractor name with "(You)" label and email; shows "Date" placeholder Agency Signature Field Signature Placeholder \- Displays agency representative name and email; shows "Date" placeholder; read-only for contractor Terms Checkbox Checkbox \- Label: "I certify that I have read and agree to the terms and conditions mentioned in this contract."; required before submission Download PDF Button Secondary Action Button \- Downloads the current agreement as a PDF Submit Contract Button Primary Action Button \- Disabled until the signature and terms checkbox is completed; submits the contractor's signature
#124
**5\. Field Details & Validation** > **5.2 Sign Service Agreement Modal — Type & Draw Signature**
~340 tok
### **5.2 Sign Service Agreement Modal — Type & Draw Signature** **Field Name** **Type** **Validation Rules** Modal Header Text \- Format: "Sign Contract" Close Icon Icon Button \- closes the modal without saving Type Signature Tab Tab Button Default active tab; switches to typed signature input Draw Signature Tab Tab Button \- Switches to drawing canvas for handwritten signature Signature Input Area Text Input Placeholder: "Type your name here"; converts text to signature-style cursive font in real-time; minimum 1 character required; whitespace-only not accepted Draw Signature Canvas Canvas Area Placeholder: "Draw your signature here"; accepts mouse or touch input; signature renders in real-time Clear Button Text Button Clears typed signature; appears after text is entered Signer Info Text Display Format: "\[NAME\] • \[DATE\]" (e.g., "DARELL WILLIAMS • 26 JULY 2025") Legal Consent Checkbox Checkbox Label: "By taking this action, I, \[Contractor Name\], give my express consent to execute this document electronically, acknowledging its full legal validity and enforceability."; required Cancel Button Secondary Action Button Closes the modal without applying the signature Sign Contract Button Primary Action Button Yellow/orange button; applies signature to agreement; disabled until consent checkbox checked
#125
**6\. Success Message Handling**
~170 tok
## **6\. Success Message Handling** **Validation Scenario** **Success Message** Signature applied successfully No explicit message — Signature appears in contractor's signature field with timestamp Agreement submitted successfully "Contract Submitted" — confirmation modal with green checkmark icon; agreement status updates to "In Progress" PDF downloaded successfully No explicit message — PDF file downloads to contractor's device Required Input Fields completed No explicit message — Field validation checkmark appears; Submit button becomes enabled Terms checkbox checked No explicit message — Submit Contract button becomes enabled (if all other conditions met)
#126
**7\. Error Message Handling**
~304 tok
## **7\. Error Message Handling** **Field** **Validation Scenario** **Error Message** Signature Contractor attempts to submit without signing "Please add your signature before submitting the contract." Signature (Type) Signature input left empty "Please type your name to create a signature." Signature (Draw) Drawing canvas left empty "Please draw your signature before proceeding." Legal Consent Checkbox Consent checkbox not checked in modal "Please accept the legal consent to proceed with signing." Terms Checkbox Terms acknowledgment not checked on submit "Please confirm that you have read and agree to the terms and conditions." Input Fields Required Input Field left empty "Please complete all required fields before submitting." Agreement Access Agreement has expired "This service agreement has expired. Please contact your agency for renewal." Agreement Access Agreement link invalid or revoked "This agreement link is no longer valid. Please contact your agency for assistance." Submit Submission fails due to network error "Unable to submit a contract. Please check your connection and try again." PDF Download Download fails "Unable to download PDF. Please try again."
#127
**8\. Edge Cases**
~484 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** Contractor closes browser mid-signing Signature not saved; contractor must restart signing process upon returning; agreement remains in "Pending" status Contractor signs but loses internet before submit Signature captured locally; submission fails with error message; contractor can retry once connection restored Contractor attempts to sign after agreement expired Access blocked; expiration modal displayed: "This service agreement has expired. Please contact your agency for renewal." Contractor accesses agreement from multiple devices Agreement accessible from any device via unique link; signature applied from one device reflects across all Contractor tries to edit agreement after signing Agreement becomes read-only after signature submission; no edit options available Contractor refreshes page during signing Unsaved signature lost; contractor must re-sign; completed Input Fields may be retained if auto-saved Multiple contractors assigned to same agreement Each contractor sees only their own signature field; other contractor fields shown as pending until signed Contractor signs but agency owner is deactivated Agreement remains in "In Progress" status; system flags for agency admin to reassign counter-signer Agreement link opened after contractor already signed Contractor sees signed agreement in read-only mode with their signature and timestamp displayed Contractor clears signature multiple times No limit on clearing; final signature at time of "Sign Contract" click is applied Input Field contains invalid data format Inline validation error displayed; contractor must correct before submission Contractor downloads PDF before signing PDF shows unsigned version with empty signature placeholders Contractor downloads PDF after signing PDF shows contractor's signature; agency signature fields remain empty until counter-signed
#128
**9\. Test Cases
~766 tok
## **9\. Test Cases
10\. Acceptance Criteria**
* **Agreement Visibility:** Shared agreements appear in Contractor Portal Dashboard (Service Agreements widget) and Event Details (Service Agreement section) with event name, date/time, and "Sign Now" / "Sign Agreement" button.
* **Agreement Access:** Contractors can access agreements via Dashboard widget, Event Details section, email "Get Started" button, or unique tokenized link; all methods open the same agreement view.
* **Agreement Review Screen:** Displays full agreement content with brand logo, contact info, expiration date, all sections, populated Smart Fields, Input Fields (if any), signature placeholders, terms checkbox, Download PDF, and Submit Contract buttons.
* **Input Fields Validation:** All Input Fields marked as required must be completed before submission; inline validation errors shown for empty or invalid fields.
* **Signature Capture** — Type: Clicking signature placeholder opens Sign Contract modal; Type Signature tab allows contractor to type name; system converts to signature-style font; Clear button resets input.
* **Signature Capture** — Draw: Draw Signature tab provides canvas for handwritten signature via mouse/touch; Clear button resets canvas; drawn signature previewed in real-time.
* **Legal Consent:** Consent checkbox in modal is mandatory; text confirms electronic execution with legal validity; Sign Contract button disabled until consent checked.
* Signature Application: Clicking "Sign Contract" applies signature to agreement with timestamp; signature displays in contractor's field; modal closes and returns to agreement view.
* **Terms Acknowledgement**: Contractor must check the terms checkbox ("I certify that I have read and agree...") before the Submit Contract button is enabled.
* **Submit Contract:** Button enabled only when signature applied, all required Input Fields completed, and terms checkbox checked; clicking submits agreement and triggers agency notification.
* **Sequential Signing:** Contractor(s) must sign first; agency owner receives counter-sign notification only after all contractors complete signing; additional agency signers notified in sequence; status updates to "Completed" when all signatures collected.
* **Post-Signature State**: After signing, contractor sees "Signed on \[Date\]" status; agreement becomes read-only; Download PDF available with contractor signature visible; agency signature fields remain pending.
* **Expired Agreement Handling:** Expired agreements block access; contractor shown modal: "This service agreement has expired. Please contact your agency for renewal."; Sign, Submit, and Download buttons disabled.
* **PDF Download:** Download PDF available before and after signing; pre-sign PDF shows empty signature fields; post-sign PDF shows contractor signature with timestamp.
* **Error Handling:** Appropriate error messages displayed for missing signature, unchecked consent, incomplete required fields, expired agreement, invalid link, and network failures.#129
**11\. Dependencies**
~355 tok
## **11\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Contractor Portal Integration dependency Contractor cannot access, view, or sign agreements; Dashboard and Event Details inaccessible Service Agreement Builder Data dependency Cannot retrieve agreement content, Smart Fields, or signature field configurations Email Service Integration dependency Contractor does not receive agreement notification email; must rely on direct link sharing Brand Management Data dependency Cannot display brand logo, name, and contact information in agreement header Projects & Events Data dependency Cannot display event-related Smart Fields; agreement not linked to event details Signature Capture Service Integration dependency Cannot capture typed or drawn signatures; signing functionality unavailable PDF Generator Integration dependency Cannot generate downloadable PDF version of agreement Notification Service Integration dependency Agency owner not notified when contractor signs; counter-sign workflow delayed Link Generation Service Data dependency Tokenized agreement links invalid; contractor cannot access agreement via shared link Activity Log Service Integration dependency Signature events not recorded; audit trail incomplete Input Field Validation Data dependency Cannot validate required Input Fields; submission may proceed with incomplete data
#130
**
~47 tok
## ** 12\. Reference** * **Link -** [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=27640-49579&t=lkBRI5wfRjv0wIbH-0) ☑️ Countersign - Agency Side
#131
**1\. Module Overview**
~209 tok
## **1\. Module Overview** * **Module Name:** Counter-Sign Service Agreement — Agency Side (Sub-module of Contracts) * **Purpose:** Enables agency owners and authorized team members to review contractor-signed agreements and apply counter-signatures to finalize the agreement. Provides a sequential signing workflow ensuring all agency signers complete their signatures in the designated order. * **Business Goal:** Complete the agreement execution process by capturing agency counter-signatures, maintain legal validity through sequential signing order, provide visibility into contractor-submitted information, and finalize agreements for project commencement. **2\. Roles & Permissions** * [Roles and permissions - draft](https://docs.google.com/spreadsheets/d/1fPBOJVJmmtHcs9Ev9o_pneOD4Em3Z4AB-j3jrLyJvaY/edit?usp=sharing)
#132
**3\. User Flow**
~38 tok
## **3\. User Flow** * [**Click Here**](https://drive.google.com/file/d/1qeHOjMrmOxswAF6-z8Usfy20HaTPjPOL/view?usp=drive_link) to view the Flowchart
#133
**4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#134
**4\. Functional Logic** > **4.1 Counter-Sign Notification**
~171 tok
### **4.1 Counter-Sign Notification** Once all contractor(s) complete their signatures, the system triggers notifications to the agency: 1. **Email Notification:** Primary agency owner receives email with subject "Counter-signature required for \[Agreement Name\]" containing agreement details and "Countersign Now" CTA button. 2. **In-App Notification:** Notification appears in the agency owner's notification center with a direct link to the agreement. 3. **Dashboard Alert:** Pending counter-sign agreements highlighted in Dashboard widgets. 4. **Project Activity Tab:** Activity log entry created: "The contract is signed by \[Contractor Name\]. Counter-signature required."
#135
**4\. Functional Logic** > **4.2 Accessing Agreement for Counter-Signing**
~183 tok
### **4.2 Accessing Agreement for Counter-Signing** Agency users can access agreements pending counter-signature through multiple entry points: 1. **From Email:** Click the "Countersign Now" button in the notification email. 2. **From Notification Center:** Click the notification to open the agreement directly. 3. **From Project Details — Activity Tab:** Click the "Countersign" button on the activity log entry or the "View Contract" link. 4. **From Project Details — Files/Documents Tab:** Locate agreement in Documents & Forms list → Click to open Agreement Details → Click "Countersign" button. 5. **From Agreement Details View:** "Countersign" button prominently displayed in header when counter-signature is pending.
#136
**4\. Functional Logic** > **4.3 Agreement Details — Signers, Information & Activity Logs**
~17 tok
### **4.3 Agreement Details — Signers, Information & Activity Logs**
#137
**4\. Functional Logic** > **4.3.1 Signers Section**
~184 tok
### **4.3.1 Signers Section**
This section provides a clear snapshot of **who needs to sign**, **who has already signed**, and **what actions are pending**.
* **Agency Owner (You)**
* Status shows **“In Progress”** when the contractor has signed, and the agency signature is pending.
* A **“Countersign”** button appears, allowing the agency owner to complete their part of the agreement.
* **Contractor**
* Shows **“Signed \[Date & Time\]”** in green once they complete their signing.
* Displays **“Last Viewed”** timestamp, helping agencies track contractor engagement and audit behavior.
This section ensures transparency by showing every signer’s current position in the signing workflow.#138
**4\. Functional Logic** > **4.3.2 Information Collected**
~98 tok
### **4.3.2 Information Collected** * This area displays all details submitted by the contractor through the Input Fields within the agreement. These fields may vary based on the specific agreement configuration. * This section gives the agency a complete overview of all contractor-submitted data in one place, ensuring that critical event information is captured before countersigning.
#139
**4\. Functional Logic** > **4.3.3 File Activity Log**
~128 tok
### **4.3.3 File Activity Log** This is a chronological timeline that records every important action performed on the agreement, providing a complete audit trail. Examples of log entries include: * **“The contract has been successfully created by \[User Name\]”** — captures agreement generation. * **“The contract has been successfully sent by \[User Name\]”** — records when the agreement is shared. * **“The contract has been completed by \[Contractor Name\]”** — marks contractor signing completion.
#140
**4.4 Counter-Signature Process (Agency Signing)**
~13 tok
## **4.4 Counter-Signature Process (Agency Signing)**
#141
**4.4 Counter-Signature Process (Agency Signing)** > **4.4.1 Starting the Counter-Sign Process**
~74 tok
### **4.4.1 Starting the Counter-Sign Process** When the contractor finishes signing, the agency owner sees a **“Countersign”** button. Clicking it opens the **Sign Contract modal**, which uses the same signing interface as the contractor’s signing experience for consistency and ease of use.
#142
**4.4 Counter-Signature Process (Agency Signing)** > **4.4.2 Counter Signature Logic**
~132 tok
### **4.4.2 Counter Signature Logic** * **Signature Options:** Agency users can **type** their name (auto-styled) or **draw** their signature, with a Clear option to redo. * **Signature Modal Details:** Signature area shows placeholders (type/draw), and signer info displays the agency user’s name and date. * **Legal Consent:** Agency users must check the consent box confirming they are electronically signing the agreement. * **Actions: Sign Contract** applies the counter-signature; **Cancel** closes without saving.
#143
**4.4 Counter-Signature Process (Agency Signing)** > **4.4.3 Agency Signing Logic**
~238 tok
### **4.4.3 Agency Signing Logic**
* **Primary Agency Signer Determination:**
* When sending contracts through automation, the Agency Owner automatically becomes the primary signer for counter-signature.
* When sending contracts manually, the user who shares the contract (Agency Owner, Admin, or Project Owner) becomes the primary signer for the counter-signature.
* **Primary Agency signer Is Always Required -**
* At least one agency signature is mandatory for every agreement and triggers completion checks.
* **Auto-Send:** The system automatically assigns the Agency Owner as the primary signer.
* **Manual Send:** The user who initiates the send (Agency Owner, Admin, or Project Manager) is assigned as the primary signer and can sign the agreement.
* **Completion Rules
**The agreement is considered **completed** when:
* Contractor(s) have signed, **and**
* Primary Agency Owner has signed#144
**4.5 Post-Agreement Completion State**
~11 tok
## **4.5 Post-Agreement Completion State**
#145
**4.5 Post-Agreement Completion State** > **4.5.1 Completed State in Agreement Details View**
~124 tok
### **4.5.1 Completed State in Agreement Details View**
* Agreement is marked **“Completed” (green badge)** once all required signatures are collected
(Contractor + Agency Owner + Mandatory Additional Signers).
* Available actions: **Download PDF** and **View Contract** (no Countersign option).
* Every signer shows **“Signed \[Date & Time\]”** in green.
* All contractor-provided **Input Field values** are visible.
* Full **Activity Log** remains accessible for audit tracking.#146
**4.5 Post-Agreement Completion State** > **4.5.2 Contractor Completion Notification**
~71 tok
### **4.5.2 Contractor Completion Notification**
* The contractor receives a notification and email: **“Your service agreement has been fully executed.”**
* In the Contractor Portal:
* Status shows **Completed**.
* The final **signed PDF** is available for download.#147
**4.5 Post-Agreement Completion State** > **4.5.3 Project Updates**
~57 tok
### **4.5.3 Project Updates** * Project Activity Tab logs a **Completed** entry. * Files/Documents displays the agreement with a **Completed** badge. * Full audit history is preserved for **compliance and traceability**.
#148
**5\. Field Details & Validation**
~73 tok
## **5\. Field Details & Validation** **5.1** For field details & validations for **Sign Service Agreement View -** [**Click Here**](#2shkajm6xtat) **5.2** For field details & Validation for **Sign Service Agreement Modal — Type Signature & Draw Signature -** [**Click Here**](#91k71utxgrs9)
#149
**6\. Success Message Handling**
~193 tok
## **6\. Success Message Handling** **Validation Scenario** **Success Message** Counter-signature applied successfully No explicit message — Signature appears in agency signer's field with timestamp; status updates accordingly Agreement completed (all signatures collected) "Contract Completed" — confirmation modal with green checkmark icon; status changes to "Completed" (green badge) PDF downloaded successfully No explicit message — PDF file downloads to agency user's device Counter-sign notification sent to next signer No explicit message — Next signer in sequence receives email and in-app notification automatically Contractor completion notification sent No explicit message — Contractor automatically receives "Agreement fully executed" notification
#150
**7\. Error Message Handling**
~210 tok
## **7\. Error Message Handling** **Field** **Validation Scenario** **Error Message** Signature Agency user attempts to submit without signing "Please add your signature before submitting." Signature (Type) Signature input left empty "Please type your name to create a signature." Signature (Draw) Drawing canvas left empty "Please draw your signature before proceeding." Legal Consent Consent checkbox not checked "Please accept the legal consent to proceed with signing." Agreement Access Agreement has expired before counter-signing "This service agreement has expired. Please resend a new agreement to the contractor." Countersign Network error during submission "Unable to submit a signature. Please check your connection and try again." PDF Download Download fails "Unable to download PDF. Please try again."
#151
**8\. Edge Cases**
~542 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** Agency owner unavailable to counter-sign Admin can reassign counter-sign responsibility to another authorized user; new signer receives notification Agreement expires before agency counter-signs Agreement marked as "Expired"; no further signatures allowed; agency must resend new agreement to contractor Agency owner signs but mandatory additional signer is unavailable Agreement remains "In Progress"; Admin can reassign or remove mandatory signer if permitted Multiple agency signers sign simultaneously System accepts signatures in any order; no conflict; completion triggered when all mandatory signatures collected Agency user closes browser mid-signing Signature not saved; user must restart counter-sign process; agreement remains "In Progress" Agency user signs but loses internet before submission Signature captured locally; submission fails with error; user can retry once connection restored Primary agency owner removed from team after being assigned System flags agreement for reassignment; Admin must assign new agency signer before completion Contractor disputes agreement after agency counter-signs Completed agreement cannot be modified; agency can void and resend new version; original retained with "Voided" status for audit Optional additional signer signs after agreement already completed Signature not required; system may allow optional signature to be recorded or block as agreement is already finalized Agency owner accesses agreement before contractor signs "Countersign" button disabled; message displayed: "Waiting for contractor to sign" Agreement has multiple contractors and only some have signed Counter-sign remains locked; agency owner notified only after all contractors complete signing PDF downloaded before counter-signing PDF shows contractor signature(s); agency signature fields remain empty PDF downloaded after full completion PDF displays all signatures with timestamps; fully executed agreement Counter-sign notification email bounces In-app notification still delivered; system logs email failure; user can access via Project Details
#152
**9\. Test Cases**
~5 tok
## **9\. Test Cases**
#153
**10\. Acceptance Criteria**
~780 tok
## **10\. Acceptance Criteria**
* **Counter-Sign Notification:** Once all contractor(s) sign, primary agency owner receives email notification with "Countersign Now" CTA, in-app notification in notification center, and activity log entry in Project Details.
* **Access Points:** Agency users can access pending counter-sign agreements via email CTA, notification center, Project Details Activity Tab ("Countersign" button), Files/Documents Tab, or Agreement Details View header.
* **Agreement Details View:** Displays agreement name, "In Progress" status badge, signers section with status (Signed/Pending), Information Collected from contractor, File Activity log, and action buttons (Download PDF, View Contract, Countersign).
* **Signers Section Display:** Agency Owner shows "In Progress" with "Countersign" button when pending; Contractor shows "Signed \[Date & Time\]" in green with "Last viewed" timestamp after signing.
* **Information Collected:** All Input Field data submitted by contractor (venue, address, contact number, event date, etc.) displayed in read-only format for agency review before counter-signing.
* **Counter-Signature Modal:** Clicking "Countersign" opens Sign Contract modal with Type Signature and Draw Signature tabs; signature area, signer info (name and date), legal consent checkbox, Cancel and Sign Contract buttons displayed.
* **Signature Options:** Type Signature converts typed name to signature-style font with Clear button; Draw Signature provides canvas for mouse/touch drawing with Clear button to reset.
* **Legal Consent:** Consent checkbox mandatory; text confirms electronic execution with legal validity; Sign Contract button disabled until consent checked.
* **Agency Signing Logic:** Primary Agency Owner signature always mandatory; additional signers can be mandatory or optional; no required signing order among agency signers; all can sign in any order.
* **Completion Rules:** Agreement status changes to "Completed" when: all contractor(s) signed + Primary Agency Owner signed + all mandatory additional signers signed; optional signers do not block completion.
* **Post-Completion State:** Agreement displays "Completed" (green badge); all signers show "Signed \[Date & Time\]"; Download PDF and View Contract available; Countersign button removed; agreement becomes read-only.
* **Contractor Notification:** Upon completion, contractor receives notification/email "Your service agreement has been fully executed"; Contractor Portal shows "Completed" status with final PDF available for download.
* **Project Updates:** Project Activity Tab logs completion entry; Files/Documents Tab displays agreement with "Completed" badge; full audit trail preserved.
* **Expired Agreement Handling:** If agreement expires before counter-signing, marked as "Expired"; no further signatures allowed; agency must resend new agreement to contractor.
* **PDF Download:** Available before and after counter-signing; pre-countersign PDF shows contractor signature(s) with empty agency fields; post-completion PDF shows all signatures with timestamps.#154
**11\. Dependencies**
~355 tok
## **11\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Contractor Portal Integration dependency Contractor cannot sign agreement; counter-sign workflow cannot be initiated Email Service Integration dependency Agency owner does not receive counter-sign notification email; must rely on in-app notification Notification Service Integration dependency In-app notifications not delivered; agency owner unaware of pending counter-signatures Signature Capture Service Integration dependency Cannot capture typed or drawn signatures; counter-signing functionality unavailable PDF Generator Integration dependency Cannot generate downloadable PDF version of completed agreement Projects & Events Data dependency Cannot display agreement in Project Details Activity Tab or Files/Documents Tab Team Management Data dependency Cannot validate agency owner or additional signers; signer assignment fails Service Agreement Builder Data dependency Cannot retrieve agreement content, signature field configurations, or Input Field data Activity Log Service Integration dependency Counter-sign events not recorded; audit trail incomplete Contractor Management Data dependency Cannot display contractor details in signers section; contractor information unavailable Brand Management Data dependency Cannot display brand logo and contact information in agreement header
#155
**12\. Reference**
~38 tok
## **12\. Reference** * Link - [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=27640-49579&t=WEPSxOKZC9S08P8x-0)