Quillmark eSign — product requirements
Quillmark eSign is a control panel for sending documents for electronic signature. A sender designs a workflow (recipients, document templates, placed fields), launches it as a transaction, and each recipient completes a signing ceremony through a personal link. A Mouse Lab page exercises pointer, scroll, hover and drag interactions.
Problem. Senders need to prepare multi-party signing packets accurately, with fields exactly where they were placed, and signers need a guided, tamper-resistant ceremony with a clear audit trail.
Users
- Sender (agent / administrator) — Build a workflow, place fields on pages, send it and track progress, decline and void outcomes.
- Signer — Open a personal link, consent, adopt a signature, fill required fields and finish with confidence.
- Approver — Sign only after earlier signers in the routing order have signed.
Goals
- A field is stored exactly where the sender placed it, in page point coordinates, at any zoom level.
- A workflow cannot be sent until every problem is fixed, and all problems are reported at once.
- Signing is consent-gated, ordered, single-use and fully audited.
Out of scope
- Real PDF rendering (pages are generated images)
- Email delivery
- Legal validity of signatures
- The Document Templates menu (coming soon)
Contents
Sign-in and session
Cookie-based sign-in for the control panel with protected routes.
- Visiting the dashboard anonymously redirects to the sign-in page with ?next=/cp/dashboard and heading "Sign in to the eSign Control Panel"
- After sign-in the dashboard heading is "eSign Control Panel" with "Welcome back, <name>."
- The user menu shows the email and role and a "Sign Out" entry
- Empty fields: "Enter your username and password."
- Wrong credentials: "Invalid username or password."
- A deep link to Transactions returns to Transactions after sign-in
- After Sign Out the same link redirects to sign-in again
Dashboard
Counters, recent activity and shortcuts to start a workflow.
- A fresh session shows Drafts 1, Out for Signature 1, Completed 1, Declined 0, Voided 0
- Recent activity lists "Vendor agreement — Okafor" (Draft), "Beneficiary change — Tanaka" (Out for Signature) and "Brokerage onboarding — Rivera" (Completed)
- Clicking the Out for Signature counter opens Transactions filtered to that status
- Types: Send for Signature, Sign & Send, In-Person Signing, Sign Only
- Choosing Send for Signature opens "Workflow Setup WF-0004" with one empty Signer row and the Drafts counter becomes 2
Workflows
List, create, edit lock and delete workflows.
- A fresh session lists 3 rows; the draft offers Edit and Delete, the others View only
- Searching "tanaka" leaves only "Beneficiary change — Tanaka"
- A filter with no matches shows "No workflows match your filters."
- Clicking the Name header twice sorts ascending then descending and flips the arrow
- The close (×) control restores the button
- Workflow Designer > New Workflow opens the page with the chooser already open
- Dialog "Delete workflow?" states the workflow and its task placements will be permanently removed
- Cancel keeps the row; confirming removes it and lowers the Drafts counter
- Opening a sent workflow redirects to its transaction details
- Editing a sent workflow returns 409 "Workflow is Out for Signature; only drafts can be edited"
- Deleting one returns 409 "Only drafts can be deleted — void the transaction instead"
- An unknown workflow returns 404 "Workflow not found"
- Sign Only: recipient 1 is the signed-in user with role Signer
- Sign & Send: recipient 1 is the signed-in user followed by an empty recipient 2
- Creating a workflow with an unknown type returns 422 "type must be one of send, sign-send, in-person, self"
Recipients
Who signs, in which order.
- Choosing contact "Mei Tanaka" fills mei.tanaka@example.com
- Moving recipient 2 up swaps the order and shows an "Unsaved changes" badge
- Save shows "Workflow saved." and the order survives a reload
- Message "Recipient 1: “not-an-email” is not a valid email address"
Document templates
Attach PDFs from a searchable template library.
- Typing "brokerage" lists 5 options (BrokerageAccountApp, BrokerageAmendment, BrokerageAuthorization, BrokerageDisclosure, BrokerageWaiver, each .pdf)
- Picking one shows "Processing: <file>", a Documents row with 4 pages and status Processing
- Tag Document does nothing while Processing and opens the Tasks Editor once the status is Ready
- A search with no match shows "No results found..."
- Typing, ArrowDown and Enter picks the highlighted option
- Attaching the same template twice alerts "<file> is already attached"
- After 5 documents the dropdown is disabled; a 6th via the API returns 422 "A workflow can hold at most 5 documents"
- An unknown template returns 422 "templateId does not match a document template"
Tasks editor
Place and edit signing fields on rendered pages.
- The editor shows 4 pages of 612×792 pt and 10 task types
- A Signature marker is 180×36 and appears under the drop point; its Left / Top match the drop point, not the page centre
- An announcement "Signature placed on page 1 at (…) via drag-and-drop" is made
- Initials (64×30) lands at Left / Top 274, 381 on page 1
- Date Signed placed by keyboard lands at 251, 385
- Moving right by 100 px at 100% zoom raises Left by about 100 and keeps Top
- ArrowLeft stops at Left 0; dragging past the right edge clamps so Left + width ≤ 612
- Save shows "Saved 1 task(s)" and a reload shows the position the marker had when saved
- Left 500 with width 180: "The task must fit inside the page (612 × 792 pt)."
- Left "abc": "left must be a number"
- Left 100, Top 600: "Task updated" and the marker moves
- Zooming to 150% leaves Left / Top unchanged
- A task dropped at 150% is stored as screen offset ÷ 1.5
- Fit width shows a non-preset percentage
- Still processing: 409 "<file> is still processing"
- Unknown type: 422 "Task 1 (Stamp): unknown task type. Allowed: Signature, Initials, Date Signed, Full Name, Email, Title, Company, Text, Checkbox, Attachment"
- Page 9: 422 "Task 1 (Signature): page must be between 1 and 4"
- Out of bounds: 422 "Task 1 (Signature): placement is outside the page (page is 612×792 pt)"
- Unknown recipient: 422 "Task 1 (Signature): recipient 3 does not exist"
- A valid set is saved and echoed with 200
Send for signature
Validation and launch of a workflow as a transaction.
- An empty draft lists: Enter a workflow title; Recipient 1: full name is required; Recipient 1: a valid email is required; Recipient 1 has no Signature task; Add at least one document
- With documents still processing the list includes "Wait for documents to finish processing"
- A recipient without a Signature task shows "<name> has no Signature task"
- Message "Congratulations! You have successfully launched the Workflow to start your Transaction" and "Transaction TX-1003 is now out for signature."
- Each signer gets an "Open signing link" to /esign/sign/<token>
- The transaction drawer shows the signer Pending and audit entries Created and Sent
- Sending again returns 409 "Workflow already Out for Signature"
Signing ceremony
The signer’s consent, signature, field entry and finish.
- Intro shows the workflow title, "From <sender> · for <name> (<role>)" and "<n> document(s), <m> field(s) for you to complete."; Continue is disabled until "I agree to use electronic records and signatures." is ticked
- Document view shows "0 of 2 required" rising to "2 of 2 required" as fields are completed; Date inserts today as M/D/YYYY
- Finish shows "All done!" — "All parties have signed. A completed copy will be emailed to everyone."
- Reopening the link shows "Signed" — "You have already signed this document."
- Disabled Finish shows the hint and tooltip "Scroll to the end of the document to enable Finish"
- At the end the hint reads "Ready to finish"
- Empty pad: "Draw your signature in the box."
- Non-image upload: "Upload a PNG, JPG, GIF or SVG image."
- Image over 1 MB: "The image must be smaller than 1 MB."
- Empty name in select-style: "Type your full name."
- No consent: 422 "You must agree to use electronic records and signatures"
- No signature: 422 "Adopt a signature first (draw, type or upload)"
- Missing fields: 422 "<n> required field(s) still need your input" with the missing task ids
- Empty drawn data: 422 "The drawn signature is empty — draw your signature in the box"
- Success returns 200 with status Completed; repeating returns 409 "You have already signed"
- An unknown token returns 404 "This signing link is invalid or has expired"
- Early signer: "Not your turn yet" — "Waiting for Mei Tanaka to sign first"
- After Mei finishes: "Thank you, Mei Tanaka. The document has been routed to Ola Nordmann." and Ola can then open the ceremony
- The transaction then shows Mei Signed with a time, Ola Pending, progress "1 / 2 signed"
- An empty reason shows "Tell the sender why you are declining."
- Confirmation "Declined" — "You declined to sign. The sender has been notified."
- The dashboard moves the workflow from Out for Signature to Declined
Transactions
Track and void sent workflows.
- A fresh session lists TX-1002 (0 / 2 signed, "Mei Tanaka → Ola Nordmann") and TX-1001 (Completed)
- Searching "nordmann" leaves only TX-1002
- The drawer shows an "Open signing link" with Copy (briefly "Copied!") only for the active signer; waiting signers have no link
- Closing the drawer removes ?open from the address
- A short reason: "Give a reason of at least 5 characters."
- Voided shows "Voided: <reason>" and no Void button
- A voided signing link shows "Transaction voided" — "This transaction was voided by the sender"
- Voiding a Completed workflow returns 409 "Cannot void a Completed workflow"
Mouse Lab
A page of pointer, scroll, hover and drag exercises.
- Reaching the end shows "No more envelopes"
- Dragging "Verify ID" to Done gives To do 2, Done 2
- Dragging "Alpha" below "Charlie" shows "Order: Bravo, Charlie, Alpha, Delta, Echo, Foxtrot"
- Both survive a reload and are returned by the lab state API
- Dropping the box in the zone shows "inside the drop zone ✔"
- Holding 1 s shows "Confirmed ✔"; releasing early resets the fill
- Right click opens no browser context menu
- Hovering "@jordan.rivera" shows a card "Jordan Rivera — Account owner · 4 envelopes"
- Row actions Edit and Archive appear only on the hovered row
- Canvas shows "x … · y …" and "Pointer outside" when left
- Ctrl+wheel changes zoom; Reset returns 100%
Non-functional requirements
- A second session sees only the 3 seeded workflows and Drafts 1
- Opening another session’s workflow shows "This workflow does not exist (or belongs to another session)."
Glossary and rules
| Workflow | A draft package of recipients, documents and placed tasks; becomes a transaction when sent. |
|---|---|
| Transaction | A sent workflow with per-recipient progress and an audit trail. |
| Task | A field placed on a page (Signature, Initials, Date Signed, Full Name, Email, Title, Company, Text, Checkbox, Attachment). |
| Point | PDF unit; pages are 612×792 pt and stored coordinates are in points regardless of zoom. |