01
The Challenge
The firm needed a single system to manage leads, clients, matters, tasks, timesheets, and billing — replacing a patchwork of spreadsheets and disconnected tools. Legal documents also needed to be generated in Arabic, which most off-the-shelf CRM platforms don't support natively.
02
The Approach
1
Built on Django REST Framework with django-tenants for schema-per-tenant isolation, keeping each client's data fully separated while sharing a single codebase.
2
Implemented Stripe per-seat billing tied to tenant provisioning.
3
Added matter-level permission filtering so staff only see cases relevant to their role.
4
Built bulk client reassignment tools and Excel import/export for leads and clients.
5
Generated Arabic-language legal documents using xhtml2pdf combined with arabic-reshaper and python-bidi for correct right-to-left text rendering.
6
Automated legal services agreement engagement letters as PDFs, built from Django templates with dynamic scope-of-services and fee-structure sections.
7
Added an attendance module with a monthly per-employee register view.
03
The Outcome
Case management, billing, and document generation now run through one system instead of scattered spreadsheets and manual document drafting. Arabic legal document generation — previously a manual task — is now automated end-to-end. The platform continues to expand, most recently with an accounting dashboard covering overview and ledger views.