Files
Novodraft/README.md
2026-08-22 04:47:56 +00:00

7.6 KiB

Novodraft

Version: 0.3.0 (end - January, 2023)
Original Development: 0.0.1 (January, 2022)

Novodraft: a web application that uses Artificial Intelligence (AI) to automate the drafting of legal discovery documents in civil litigation. Written in JavaScript and Python using React for the UI, with Node.js and Express.js on the backend.

License: GPL Version 3.

Novodraft was a POC of an application intended for use by attorneys and legal professionals handling civil litigation, particularly those who draft discovery documents such as interrogatories, requests for production, and requests for admissions. The application automates discovery drafting, allowing attorneys to focus on tailoring substantive legal arguments as they see fit.

Features

Novodraft generates both outgoing discovery requests and responses to incoming requests. The application:

  • Accepts PDF uploads of incoming discovery requests
  • Parses and classifies document types (interrogatories, requests for production, requests for admissions, or combined formats)
  • Uses the OpenAI Application Programming Interface (API) to generate legally-sound objections and responses
  • Applies Conclusion, Rule, Application, Conclusion (CRAC) structure where appropriate
  • Formats output documents according to state-specific court styles (New York, New Jersey, Florida, Michigan)
  • Exports completed documents as .docx files ready for service on opposing counsel

Architecture

This is a client-server monorepo:

Novodraft/
├── ax3Client/       # React frontend application
└── ax3Services/     # Node.js/Python backend services (incl. LLM API)

Frontend (ax3Client)

Backend (ax3Services)

A collection of Node.js and Python services:

  • docGenService: Generates formatted .docx documents using the python-docx library
  • docParserService: Parses and classifies uploaded discovery documents
  • docConvertService: Converts PDFs to processable formats
  • tesseReaderService: Performs Optical Character Recognition (OCR) using Tesseract.js
  • agentService: Manages OpenAI API interactions and prompt templates
  • paymentService: Handles Stripe payment processing
  • storageService: Manages document storage operations

Getting Started

Prerequisites

Install the following on your system:

For Debian/Ubuntu:

sudo apt-get update
sudo apt-get install -y nodejs npm python3 python3-pip

For macOS (using Homebrew):

brew install node python3

Verify installations:

node --version    # Should be v18.x or higher
npm --version     # Should be v9.x or higher
python3 --version # Should be v3.8 or higher

Installation

  1. Clone the repository:
git clone <repository-url>
cd Novodraft
  1. Install frontend dependencies:
cd ax3Client
npm install
  1. Install backend dependencies:
cd ../ax3Services
npm install
pip3 install python-docx
  1. Configure environment variables. Create .env files in both ax3Client/ and ax3Services/ directories with the following variables:

ax3Client/.env:

REACT_APP_API_DEV=http://localhost:3001
REACT_APP_API_PROD=<your-production-api-url>
REACT_APP_FIREBASE_API_KEY=<your-firebase-api-key>
REACT_APP_FIREBASE_AUTH_DOMAIN=<your-firebase-auth-domain>
REACT_APP_FIREBASE_PROJECT_ID=<your-firebase-project-id>

ax3Services/.env:

OPENAI_API_KEY=<your-openai-api-key>
STRIPE_SECRET_KEY=<your-stripe-secret-key>
  1. Configure Firebase. Create a Firebase project and enable:
  • Authentication (Email/Password)
  • Cloud Firestore

Running the Application

Start the frontend development server:

cd ax3Client
npm start

The frontend will be available at http://localhost:3000.

Start the backend services:

cd ax3Services
npm start

Building for Production

cd ax3Client
npm run build

The production build will be output to ax3Client/build/.

Supported Document Types

Novodraft handles the following discovery document types:

Type Description
Interrogatories Written questions requiring sworn answers
Requests for Production Demands for documents and tangible evidence
Requests for Admissions Requests to admit or deny specific facts
Combined/Numbered Documents containing multiple request types

State-Specific Formatting

The document generation service applies jurisdiction-specific caption headers and formatting for:

  • New York
  • New Jersey
  • Florida
  • Michigan

Versioning

This project uses Semantic Versioning (SemVer). Version numbers follow the format MAJOR.MINOR.PATCH:

  • MAJOR: Incompatible API changes
  • MINOR: Backwards-compatible functionality additions
  • PATCH: Backwards-compatible bug fixes

Background

This project began in 2021 as an early experiment with Large Language Model (LLM) technology to automate the creation of discovery documents in civil litigation. The version in this repository represents work completed through January 2023. The codebase was migrated from GitHub to a self-hosted Gitea instance.

Participation

Contributing

Contributions are welcome, but be aware this project has largely been abandoned since 2023. The project maintainers make no guarantee that submitted pull requests will be merged. To contribute:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

Bug reports should be submitted via Git issues.

No Contributor License Agreement (CLA) is required.

Code of Conduct

Contributors are expected to:

  • Contribute in a spirit that seeks to improve society and human well-being
  • Avoid harm
  • Be honest and trustworthy
  • Respect the work required to produce new ideas, inventions, creative works, and computing artifacts
  • Respect privacy
  • Be fair and do not discriminate
  • Create code that promotes these principles

Privacy

Novodraft does not transmit user activity data off of the device on which it is run beyond what is necessary for the core functionality (authentication, payment processing, and AI document generation).

Authors

License

This project is licensed under the GNU General Public License Version 3. See the LICENSE file for details.