CA PRACTICE MANAGEMENT SYSTEM
AI & Data Management

CA PRACTICE MANAGEMENT SYSTEM

Author : CA. Poonam Tawri

Watch on Youtube

01. Problem Statement


Chartered Accountant firms in India manage a vast and highly regulated portfolio of compliance work. Despite their expertise, most CA practices operate with fragmented, manual, or generic tools that are not designed for the unique regulatory environment they work in.


1.1 The Pain Points


❌ Problem AreaNo unified client master with PAN/GSTIN/risk trackingCompliance deadlines tracked in Excel or memoryNo automated ITR computation or regime comparisonBilling, timesheets and tasks handled separatelyNo structured notice / litigation trackingDSC renewal dates missed, creating legal risk✅ This System Provides360° client view with PAN, GSTIN, Drive vault, riskSmart compliance calendar with GST/TDS/ITR/ROC/AuditBuilt-in ITR computation: Old vs New Regime (FY 2025-26)Integrated billing, timesheets and Kanban work boardDedicated notice war room with risk and deadline trackingDSC vault with proactive expiry alerts


1.2 Who Suffers?

Indian CA firms — ranging from sole practitioners to mid-sized partnerships — handle 15+ types of compliance across Income Tax, GST, ROC/MCA, TDS, Audit, and more. The absence of a purpose-built, zero-cost, fully integrated tool forces them to:


  1. Use 5–8 separate spreadsheets for different workflows
  2. Risk penalty interest due to missed statutory deadlines
  3. Lose billable hours with no timesheet system
  4. Handle client documents via WhatsApp with zero traceability
  5. Struggle with 26AS / AIS mismatches during ITR season


Scale of the ProblemIndia has over 3.5 lakh practising Chartered Accountants managing compliance for millions of businesses and HNI taxpayers. The total compliance penalty risk from missed deadlines runs into thousands of crores annually — yet most firms still operate on manual Excel sheets.




02. Implementation


The CA Practice Management System v3.0 is a fully self-contained Google Apps Script web application deployed as a Google Workspace add-on. It requires zero external hosting, zero monthly fees, and zero infrastructure management.


2.1 System Architecture


Architecture at a GlanceSingle-file Google Apps Script backend + Single-page HTML/CSS/JS frontend + Google Sheets as structured database. No cloud servers. No APIs to pay for. No npm builds.


2.2 Module Implementation Map


ModuleSheet / StoreKey Function(s)
Client 360°clientssaveClient(), getClients()
Work Board (Kanban)taskssaveTask(), getTasksForClient()
Compliance CalendarcompliancesaveCompliance(), getCompliance()
ITR ComputationcomputationssaveComputation(), buildComp_()
26AS / AIS UploaddocumentsparseAndStoreDoc()
Billing & ReceivablesinvoicessaveInvoice(), getDashboard_()
Notice War RoomnoticessaveNotice(), getNotices()
DSC VaultdscsaveDsc(), getDscAlerts()
Staff Timesheetstimesheets + staffsaveTimesheet(), getStaff()
AppointmentsappointmentssaveAppt(), getAppts()
Letter GeneratorlettersgenerateLetter(), saveLetter()
Daily Email Digestmessages + triggerssendDailyDigest() via time trigger
SettingssettingsgetSetting(), setSetting()


2.3 Data Flow


Every user interaction follows the same clean pathway:


Request FlowUser Action in Browser → google.script.run (IPC) →Apps Script Handler → Google Sheets (R/W) →JSON Response → UI Update (DOM manipulation)


There are no intermediate servers, no REST APIs, and no database license fees. The entire state of the practice — clients, tasks, compliance, invoices — lives inside a single named Google Spreadsheet that acts as a structured relational store.




03. Tech Solution


The entire system is built on Google Workspace primitives — chosen deliberately for zero hosting cost, zero maintenance overhead, and immediate availability to any CA who has a Google account.


3.1 Technology Stack


Apps ScriptGoogle's server-side JavaScript V8 runtime — backend logic, database CRUD, email triggers, Drive operations


HTML / CSS / JSSingle-file SPA frontend served via HtmlService — dark-mode UI with DM Sans + Playfair Display typography


Google Sheets13-tab structured spreadsheet acting as relational database — clients, tasks, compliance, invoices, notices, etc.


Google DriveAuto-created per-client document vaults — organised folder hierarchy per client ID


Gmail APIAutomated daily digest emails to firm partners — triggered via ScriptApp time-based triggers


PropertiesServicePersistent key-value store for firm settings (name, GSTIN, UPI link, current FY)


OAuth 2.0Scoped permissions: spreadsheets, drive, gmail.send, userinfo.email — via appsscript.json manifest


3.2 Design Philosophy


🚫Zero InfrastructureNo VMs, no containers, no CDN. The app runs entirely inside Google's servers — uptime backed by Google SLA.
💰Zero CostNo hosting fees, no database subscription, no domain. Only requirement: a Google account.
🔐Enterprise SecurityData stays inside the deployer's Google Workspace. No third-party data exposure.
📱Responsive UICSS Grid + media queries ensure the dashboard works on tablet and desktop.
Real-Time Updatesgoogle.script.run async IPC with success/failure handlers provides near-instant UI feedback.
🔔Automated AlertsTime-based triggers send daily compliance digest and flag overdue tasks automatically.


3.3 OAuth Scopes (appsscript.json)


The manifest declares the minimum required OAuth2 scopes:


  1. spreadsheets — read/write Google Sheets database
  2. drive — create and manage client document folders
  3. script.external_request — fetch external APIs if needed
  4. gmail.send — send daily digest and alert emails
  5. script.scriptapp — manage time-based triggers programmatically
  6. userinfo.email — identify the deploying user for audit logs


Security NoteexecuteAs: USER_DEPLOYING ensures the script runs under the deploying CA's credentials. access: ANYONE allows clients/staff to use the web app without needing a Google account, while all data access is mediated by the script owner's permissions.




04. How It Was Implemented


The implementation follows a monolithic-but-modular pattern — a single .gs backend file of ~960 lines and a single Index.html of ~1,400 lines, kept deliberately co-located for ease of deployment.


4.1 Backend Architecture (Code.gs)


A. Bootstrapping — setup()

The setup() function acts as a migration manager. On every run it:

  1. Resolves or creates the named Google Spreadsheet (CA_PracticeDB_v3) in the deployer's Drive
  2. Idempotently creates all 13 sheets if they don't exist, with typed header rows
  3. Beautifies headers with colour-coding, bold formatting, and column widths
  4. Seeds firm-level default settings (firm name, GSTIN, UPI link, current FY) via PropertiesService


B. Database Layer — readAll_() / append_() / update_()

All data operations go through three thin primitives:

  1. readAll_() — reads every sheet, converts rows to keyed JSON objects, returns as a single dict
  2. append_(sheet, row) — pushes a new row array to the named sheet
  3. update_(sheet, idCol, id, rowData) — finds the matching ID row and overwrites it


Why Sheets as a database?Google Sheets offers free storage, instant backup, human-readable audit trail, formula-based ad-hoc analysis, and zero schema migration effort. For a CA firm's scale (hundreds of clients, thousands of tasks), it performs excellently within Apps Script's 6-minute execution limit.


C. ITR Computation Engine — buildComp_()

One of the most technically sophisticated modules. It implements the full FY 2025-26 slab computation for both Old and New regimes:

  1. Computes HRA exemption (least of: actual HRA, 50%/40% of basic, rent − 10% basic)
  2. Applies Chapter VI-A deductions (80C ₹1.5L, 80D, 80CCD1B ₹50K ceiling)
  3. Calculates STCG @15% and LTCG @10% above ₹1L exemption
  4. Compares Old vs New regime and recommends the better option with exact savings
  5. Flags mismatches between declared income and 26AS / AIS figures


D. Google Drive Vault — createClientFolder_()

For each new client, the system automatically:

  1. Creates a named folder under the firm's root CA Practice drive folder
  2. Stores the folder URL back in the client record for one-click navigation
  3. Sub-folders can be created programmatically per document category


E. Email Digest — sendDailyDigest()

A ScriptApp time-based trigger calls this function every morning. It:

  1. Aggregates overdue tasks, DSC expiries within 30 days, unpaid invoices
  2. Formats a clean HTML email digest and sends it via GmailApp.sendEmail()
  3. Logs the message in the messages sheet with status and timestamp


4.2 Frontend Architecture (Index.html)


The frontend is a 1,400-line single-page application embedded inside Google Apps Script's HtmlService. It uses no build tools, no React, no npm — just vanilla HTML, CSS custom properties, and plain JavaScript.


A. Dark UI Design System

CSS custom properties define the entire design token system:

  1. --bg, --panel, --card: three-level dark background hierarchy
  2. --gold (#F5C842), --teal (#38BDF8): primary accent palette for CA brand identity
  3. Playfair Display (serif) for headings gives a premium, professional feel
  4. DM Sans (geometric sans) for body text — optimised for screen readability


B. Navigation & Routing

Client-side routing is handled by a showView(name) function that toggles CSS classes on view divs. No URL changes, no history API — lightweight and reliable inside the iframe sandbox.


C. Data Binding via google.script.run

All CRUD operations follow this pattern:

  1. User submits a form → JavaScript collects fields into a plain object
  2. google.script.run.withSuccessHandler(cb).functionName(payload) is called
  3. Apps Script handler processes, writes to Sheets, returns JSON
  4. Success callback updates the DOM with fresh data


D. KPI Dashboard

The dashboard aggregates live data into animated KPI cards:

  1. Open Tasks, Overdue Tasks, Tasks Due in 7 Days
  2. Total Receivables (unpaid invoices), Notice count, DSC expiry alerts
  3. Compliance Health Score — percentage of on-time filings
  4. Morning Brief showing today's priority actions for the team


4.3 Deployment Steps


1Open script.google.com → New Project → paste Code.gs and Index.html
2Replace appsscript.json with the provided manifest (add OAuth scopes)
3Deploy → New Deployment → Web App → Execute as: Me, Access: Anyone
4Open the web app URL → run Setup once to initialise all 13 Sheets
5Optionally run seedDemoData() for a fully populated demo environment
6Set firm settings (name, GSTIN, email) from the Settings view
7Enable daily digest by running createDailyTrigger() once


4.4 Key Design Decisions


  1. Single spreadsheet with 13 named sheets avoids Drive clutter and simplifies backup
  2. All IDs are human-readable (CL-001, TK-001) for easy cross-sheet references and audit
  3. dN_(n) helper generates dates relative to today — makes demo data always fresh
  4. beautifyAllSheets() can be called anytime to reset header formatting after manual edits
  5. Error handling via try/catch with structured { ok, error } JSON responses to the frontend
  6. ScriptApp.getScriptId() used for unique digest message tracking




05. Summary


The CA Practice Management System v3.0 demonstrates that a sophisticated, production-grade practice management tool can be built entirely on Google's free infrastructure — with no hosting fees, no third-party databases, and no maintenance overhead.


By using Google Apps Script as the backend, Google Sheets as a structured database, and a carefully designed single-page frontend, the system delivers:


  1. 13 integrated modules covering every aspect of CA practice management
  2. Full ITR computation engine with Old vs New Regime comparison for FY 2025-26
  3. 26AS / AIS reconciliation and mismatch flagging built in
  4. Automated daily digest emails via time-triggered Gmail integration
  5. Zero cost, zero infrastructure, deployable in under 10 minutes


Bottom LineThis is not a prototype — it is a fully functional, deployable practice management system that can serve a real CA firm today. The only dependency is a Google account.