Apparent Legal
Legal drafting where every clause Claude writes cites the precedent it came from.

Why I built it
Purchase agreements, LOIs, operating agreements and leases at the firm get drafted from our own precedent, which means digging through old deals for the right clause. A plain chatbot will happily draft a clause from nothing, and in legal language that's worse than useless. I wanted drafting that could only say things it could point to.
What it does
- Ingests internal precedent and classifies it by document type.
- Hybrid vector retrieval plus a reranker, with metadata filters (state, asset type, document type).
- Drafts new sections with Claude, extracting and validating a citation for every clause.
- Exposed as an MCP server, so Claude Desktop, Claude Code and team workspaces can search the corpus and draft against it directly.
How it works
Four modules: ingestion, storage, retrieval, generation. They were built on parallel branches against one shared types file that nobody was allowed to change.
Retrieval is hybrid vector search plus a reranker, with filters for state, asset type and document type. Generation drops any clause it can't tie back to a retrieved source.
Calls I made
A frozen types file instead of meetings
Four workstreams built at once without stepping on each other, because the contract between them couldn't move.
It lives inside Claude
Deal staff already work in Claude, so the tool is an MCP server rather than another web app to log into.