Client Portal Specification v1
Client Portal Specification
Overview
TomlTech has been asked to build a "simple client portal" for a law firm. The law firm's definition of "simple" and our definition of "simple" have not been reconciled.
Requirements (as stated by client)
- Clients log in and see their cases
- Lawyers upload documents to cases
- Clients download documents
- "Make it look modern"
- "Like the Apple website but for law"
- It should work on phones
- "Can we add AI?"
Requirements (as interpreted by engineering)
- Authentication system with role-based access (client, lawyer, admin, paralegal, "of counsel" which is apparently a thing)
- Document management with upload, download, versioning, and access control per case
- Case management with status tracking, assignment, and notes
- Responsive design
- Clean UI that does not resemble the Apple website because that is a product showcase and this is a document portal
- Mobile-responsive (already covered by #4 but the client listed it separately so we're listing it separately)
- No
Technical Stack
- Rails 7.1 (we learn from our mistakes, see Rails 3 upgrade)
- PostgreSQL 16
- Hotwire (Turbo + Stimulus)
- Tailwind CSS
- Active Storage for documents
- Devise for authentication
- No AI
System Architecture
flowchart TD
subgraph Roles
A[Admin]
L[Lawyer]
P[Paralegal]
OC[Of Counsel]
C[Client]
end
subgraph Actions
Upload[Upload Document]
View[View Case]
Download[Download Document]
Fax[Send via eFax]
Manage[Manage Users & Cases]
end
A --> Manage
A --> Upload
L --> Upload
L --> View
P --> Upload
P --> View
OC --> View
C --> View
C --> Download
Upload --> Fax
Open Questions
- The client has asked for "track changes like Word." We have explained that this is a web application, not Microsoft Word. The client has asked again. We have explained again. This cycle has repeated 4 times.
- The client wants to send documents via the portal AND email AND fax. We have confirmed that they said fax. They confirmed. It is 2026 and they want fax.
- One of the partners has asked if the portal can "integrate with our existing system." Their existing system is a shared folder on a Windows XP machine in the basement. The Windows XP machine is named YOURPC.
Timeline
| Phase | Duration | Notes |
|---|---|---|
| Design | 2 weeks | Client has requested 3 rounds of revisions. We have budgeted for 7. |
| Core build | 4 weeks | Authentication, case management, document upload |
| Client feedback | 2 weeks | This is where the fax discussion will resurface |
| Revisions | 2 weeks | Based on historical data, this will actually be 4 weeks |
| Launch | 1 week | Plus 1 week of "just one more thing" |
Budget
Client has asked for a fixed price quote. We have provided a range. Client has asked for the low end of the range as a fixed price. We have said no. Client has asked for a discount. We have said no. Client has asked if Gary is available. Gary is not available. Gary is never available.