Claussal.ai / Contract intelligenceProduct design × engineering

The answer matters.
The clause behind it matters more.

I designed and built an AI contract-review workspace that keeps recommendations tied to the source—and every proposed change inspectable and reversible.

Role
Product Designer + Engineer
Product
Contract intelligence MVP
Stack
React / TypeScript / FastAPI
Scope
UX, frontend, API integration
An architectural archive organizing dense paper records into clear planes
Problem

Contract AI could sound certain while separating answers from their legal source.

I owned

Product model, UX, frontend, and API integration.

Key decision

Keep the document primary and every recommendation traceable and reversible.

Shipped

Upload, clause risks, redlines, suggestions, comparison, and contextual Q&A.

Outcome

An inspectable contract-review MVP built around source-grounded decisions.

01 / Trust model

Do not replace the document with a confident chat box.

Contract review is not a summarization problem. A useful recommendation must remain connected to the original language, its location, the proposed replacement, and the consequence of accepting it. Claussal treats the agreement—not the assistant—as the primary object.

SourceThe original clause stays in view
ChangeOriginal and proposed language are compared
ReasonRecommendations retain their context

02 / Review workspace

One workspace for reading, locating, and deciding.

The layout holds three levels of attention at once: the agreement outline, the document itself, and the active risk or suggestion. Reviewers can move between clauses without losing their place or accepting an AI recommendation blindly.

Decision 01

Document first

The central reading plane gets the largest share of the interface.

Decision 02

Linked evidence

Risks and suggestions point back to identifiable clauses.

Decision 03

Reversible action

Changes can be staged, accepted, rejected, or undone.

03 / Long-running AI

Analysis takes time.
The interface should explain what time means.

Uploading and analysing a long contract involves multiple systems and can fail at multiple points. The experience separates upload progress from analysis stages, persists the document identifier, restores interrupted sessions, and returns users to a recoverable state when the pipeline fails.

Stage 01

Upload

File validation, visible progress, and Drive import.

Stage 02

Analyse

Scanning, clauses, risks, redlines, and finalization.

Stage 03

Restore

Persist the document ID and resume polling after interruption.

Stage 04

Recover

Explicit error state, reset path, and safe retry.

Claussal contract upload interface embedded at the entrance to a clause archive
CLA / Figure 03 · Concept visualization Contract intake — upload, analyse, understand
Unmodified Claussal redline suggestions product capture
Shipped interface · Unmodified capture Source, replacement, and rationale remain inspectable

04 / Implementation

The interface carries the state of the actual pipeline.

The React context coordinates upload progress, analysis stages, document restoration, selected clauses, redline decisions, and assistant messages. It connects to a FastAPI upload service and polls for completed analysis rather than simulating an instant AI response.

AppContext.tsxReact / TypeScript
const uploadDocument = async (file: File) => {
  setIsUploading(true)
  setAnalysisStep('scanning')

  const response = await apiClient.post(
    '/api/v1/upload/pdf', formData,
    { onUploadProgress: updateProgress }
  )

  const pdfId = response.data.pdf_id
  setAnalysisStep('clauses')

  const result = await clausiaService
    .pollForAnalysis(pdfId, setAnalysisStep)

  setAnalysisResult(result)
}
State model

Explicit phases

The UI renders named analysis stages instead of a generic spinner.

Persistence

Session restoration

A stored document ID lets the client recover work after reload.

API boundary

Upload and polling

The frontend reflects real request progress and delayed processing.

Review actions

Typed redline states

Pending, staged, accepted, and rejected decisions are represented explicitly.

05 / Current state

A working vertical slice—not a claim of legal certainty.

The MVP proves the interaction model and the connection between document upload, asynchronous analysis, clause navigation, risk review, redlines, and contextual Q&A. Before broader deployment, I would validate citation accuracy, reviewer agreement, false-positive risk rates, export fidelity, keyboard navigation, and recovery under real processing failures.

Important boundary: Claussal supports review; it does not replace legal judgment. The product should communicate model uncertainty and preserve a clear human approval step before changes leave the workspace.

Next case study

ContentOS
From footage to ideas.