Skip to content

Repository files navigation

Sightstone — Contract Playbook Harmonisation Platform

AI-powered platform for legal teams to harmonise contract playbooks across their organisation. Upload multiple contracts, extract and compare clauses by contractual effect, identify overlaps, and produce a single unified playbook — powered by Claude AI.


User Flow

Landing → Register / Login → Dashboard → New Playbook
→ Upload Contracts → Analyse (AI) → Harmonise Clauses → Export Playbook

System Architecture

┌─────────────────────────────────────────────────────────────────────────┐
│ SIGHTSTONE PLATFORM │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ FRONTEND (Next.js 15 App Router) │ │
│ │ │ │
│ │ / (Landing) /login /register │ │
│ │ │ │
│ │ /dashboard │ │
│ │ /playbooks ← list all org playbooks │ │
│ │ /playbooks/new ← create playbook │ │
│ │ /playbooks/[id] ← detail: upload + analyse + harmonise │ │
│ │ /settings ← org & user management │ │
│ │ │ │
│ │ Styling: Tailwind CSS v3 + shadcn/ui primitives (Radix UI) │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ API Calls │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ BACKEND (Next.js API Routes) │ │
│ │ │ │
│ │ POST /api/auth/register ← create user + org │ │
│ │ * /api/auth/[...nextauth] ← NextAuth v5 handler │ │
│ │ GET /api/playbooks ← list org playbooks │ │
│ │ POST /api/playbooks ← create playbook │ │
│ │ GET /api/playbooks/[id] ← get single playbook │ │
│ │ PATCH /api/playbooks/[id] ← update name/status │ │
│ │ DELETE/api/playbooks/[id] ← delete playbook │ │
│ │ POST /api/playbooks/[id]/contracts ← upload contracts │ │
│ │ POST /api/playbooks/[id]/analyse ← trigger AI analysis │ │
│ │ GET /api/playbooks/[id]/analyse ← poll analysis status │ │
│ │ POST /api/playbooks/[id]/harmonise ← save clause selection │ │
│ │ GET /api/playbooks/[id]/export ← download playbook │ │
│ │ GET /api/organisation ← org + members │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ Prisma ORM │ Anthropic SDK │ File parsing │
│ ┌────────▼──────┐ ┌────────▼────────┐ ┌───────▼──────────────┐ │
│ │ PostgreSQL │ │ Claude API │ │ pdf-parse / mammoth │ │
│ │ (Supabase) │ │ claude-3-5- │ │ (text extraction) │ │
│ │ FREE tier │ │ haiku model │ │ Runs server-side │ │
│ └───────────────┘ └─────────────────┘ └───────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘

Data Model

Organisation ──< OrganisationMember >── User
│
└──< Playbook
│
└──< Contract ──< Clause
│
└──< ClauseGroup ──< Clause (via clauseGroupId FK)

ContractualEffect Ordering (highest → lowest priority)

  1. INDEMNITY → 2. LIMITATION → 3. EXCLUSION → 4. OBLIGATION
  2. RIGHTS_GRANT → 6. WARRANTY → 7. REPRESENTATION → 8. TERMINATION
  3. GOVERNANCE → 10. DEFINITION → 11. BOILERPLATE

AI Pipeline

Step 1 — Clause Extraction

Contract raw text → Claude claude-3-5-haiku
→ Extract all clauses (clauseType, contractualEffect, riskLevel, position)
→ Clause records saved to DB

Step 2 — Clause Grouping & Comparison

Clauses grouped by clauseType across contracts
→ If 2+ clauses in group → Claude compares them:
• overlapSummary (what they have in common)
• aiSuggestedWording (normalised balanced clause)
→ ClauseGroup saved with AI wording

Step 3 — User Harmonisation

User reviews ClauseGroup →
├─ Select existing clause from one contract
├─ Accept AI-suggested wording
└─ Write custom wording
→ All groups done → Playbook status = HARMONISED → Export

Free Services

ServicePurposeFree Tier
SupabasePostgreSQL + storage500MB DB, 1GB storage
Anthropic ClaudeAI analysisPay-per-use (~$0.01/contract)
VercelHostingUnlimited personal projects
NextAuth v5AuthenticationOpen source
PrismaORMOpen source

Free AI alternative: Groq API — 14,400 req/day free with llama-3.1-70b. Update src/lib/ai.ts to use Groq SDK.


Quick Start

1. Install dependencies

npm install

2. Configure environment

cp .env.example .env.local
# Fill in DATABASE_URL, AUTH_SECRET, ANTHROPIC_API_KEY

3. Push database schema

npm run db:push

4. Run

npm run dev

Open http://localhost:3000


Setting Up Supabase

  1. supabase.com → New project
  2. Project Settings → Database → Connection String (URI)DATABASE_URL
  3. Project Settings → API → copy NEXT_PUBLIC_SUPABASE_URL and anon key

Getting Anthropic API Key

  1. console.anthropic.com → API Keys → Create Key
  2. Uses claude-3-5-haiku-20241022 — ~$0.0008/1K tokens. 10-page contract < $0.01.

Deploy to Vercel

npx vercel --prod

Set env vars in Vercel Dashboard → Project → Settings → Environment Variables.


API Reference

MethodEndpointDescription
POST/api/auth/registerCreate user + organisation
GET/api/playbooksList org playbooks
POST/api/playbooksCreate playbook
GET/api/playbooks/:idGet playbook with contracts + clause groups
PATCH/api/playbooks/:idUpdate playbook
DELETE/api/playbooks/:idDelete playbook
POST/api/playbooks/:id/contractsUpload contracts (multipart/form-data)
DELETE/api/playbooks/:id/contracts?contractId=Remove contract
POST/api/playbooks/:id/analyseTrigger AI analysis
GET/api/playbooks/:id/analysePoll analysis status
POST/api/playbooks/:id/harmoniseSave clause group selection
GET/api/playbooks/:id/harmoniseGet all clause groups
GET/api/playbooks/:id/exportDownload harmonised playbook (.txt)
GET/api/organisationGet org + members
PATCH/api/organisationUpdate org name (Admin+)

Tech Stack

LayerTechnology
FrameworkNext.js 15 (App Router)
LanguageTypeScript
StylingTailwind CSS v3
UI PrimitivesRadix UI (shadcn/ui pattern)
AuthenticationNextAuth v5 (JWT + credentials)
ORMPrisma 6
DatabasePostgreSQL via Supabase
AIAnthropic Claude (claude-3-5-haiku)
File Parsingpdf-parse, mammoth
File Uploadreact-dropzone
DeploymentVercel

License

MIT — see LICENSE

About

contract playbook harmonisation

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages