Notice defender
About this agent
A statutory tax-notice defence co-pilot for CAs, tax advocates and litigation teams, built on the Zenmem SDK. It parses an inbound Income Tax or GST notice (Sections 143(1), 142(1), 148, 148A, DRC-01, ASMT-10), extracts the issuing authority, DIN, assessment year, demand amount and response deadline, then cross-checks the notice's claims against that client's own filing history โ AIS/TIS mismatches, undeclared income, unreconciled cash deposits โ held in project-scoped memory keyed by PAN. It runs procedural-defect checks (a missing DIN, a time-barred Section 149 notice, a skipped Section 148A show-cause) and searches the firm's own bank of past winning citations before drafting a structured written submission: preliminary objections, factual rebuttals, a precedent table and a prayer for relief. The hard part is keeping a legal-drafting tool honest: every stage asks the model for a typed JSON structure and validates it before anything moves downstream, so a malformed or hallucinated field fails loudly rather than reaching a draft. Precedents are pulled from memory first, and the model may only select and explain what was actually retrieved โ it is not free to invent citations. For a live practitioner workflow the intake stages run separately rather than as one automatic pipeline, so a human reviews and corrects the extraction before it is written into the client's permanent history. It does not perform OCR itself โ notices must already be extracted text.
What changed with Zenmem?
The same agent, built twice against the same contract โ once on Zenmem, once on MongoDB + LangChain/LangGraph.
Before โ after
Before With Zenmem
What the team gained
- Three scopes โ session, client-by-PAN, and firm-wide โ are declared per call rather than built as three stores with three access paths to audit.
- A citation the firm won for one client is reachable from every other file, while one client's admitted cash position cannot surface in someone else's, because the two live in different scopes rather than behind a WHERE clause.
- Precedent search is semantic recall over the firm's own bank, so the model selects from what was retrieved instead of inventing citations.
- A reviewed extraction is promoted from session into the client's permanent history in one call, keeping the human review step in the flow.
- Adding a notice type is a value in a document, not a migration across years of client history.
How memory is scoped
Three scopes. Session holds one interactive notice-intake conversation โ the raw extraction a practitioner reviews and corrects before anything is kept. Project, keyed by the client's normalized PAN, holds that one client's multi-year notice and filing history: past scrutiny submissions and prior discrepancy findings, so a new notice can be checked for consistency against what was said before. Company holds the firm-wide precedent bank and winning draft templates, shared across every client. Keeping project and company apart matters because a citation the firm won for one client is fair game for any other, but one client's admitted cash-deposit position must never surface in someone else's file โ PAN normalization exists precisely so a stray lowercase letter can't silently fork a client's bucket in two.
How it works
The fixed, linear pipeline behind the Agent8 facade.
Parse the notice
An interactive session extracts issuing authority, statutory section, DIN, demand amount and due date, for the practitioner to review and correct.
Match discrepancies
The notice's claims are checked against the client's project-scoped filing history, and procedural-defect checks (DIN, time-bar, Section 148A) run against firm rules.
Find precedents
The firm's company-scoped citation bank is searched, and the model selects and explains only the precedents actually retrieved.
Draft the submission
Objections, rebuttals, the precedent table and the prayer for relief are drafted using the firm's winning-template style, then written back into the client's project history.
What it does
The Agent8 facade โ call the stages separately for human review, or run the whole pipeline at once.
Capabilities
- start_intake โ open an interactive notice-intake session.
- analyze_notice โ parse the notice, match AIS/TIS discrepancies, run procedural-defect checks and build supporting legal grounds.
- finish_intake โ promote the reviewed analysis into the client's permanent project history and close the session.
- generate_draft โ produce the structured written submission and record it into the client's history.
- run_full_pipeline โ intake, analyse and draft in one call, for batch/CLI use without a human review step.
- find_precedents โ an ad hoc, unfiltered search of the firm's company-scoped citation bank.
- normalize_pan โ validates a PAN into the exact string used to partition client memory, rejecting anything that doesn't match the AAAAA9999A format.