Inspiration
Renters regularly sign leases they don’t fully understand. Legal language is confusing, lawyers are expensive, and many NYC tenants don’t know their rights. We wanted to build an AI-powered tenant advocate that makes lease protection accessible to everyone.
What it does
ClauseCheck lets users upload a lease and instantly receive AI-powered redlines, risky clause detection, NYC law checks, plain-English explanations, and suggested rewrites. Users can also ask tenant-rights questions and get actionable guidance tailored to New York housing laws.
How we built it
We built ClauseCheck using FastAPI, ClickHouse Cloud, and a lightweight Tailwind frontend. PDFs are parsed with Python, analyzed with Groq/Claude/Gemini LLMs, and streamed back live through Server-Sent Events. NYC housing laws are scraped, parsed, and stored in a searchable legal knowledge base.
Challenges we ran into
Handling large lease documents with structured AI output was difficult. We also faced streaming reliability issues, JSON validation failures from LLMs, and challenges mapping lease clauses back to exact text locations for highlighting.
Accomplishments that we're proud of
We built a working end-to-end AI legal assistant that performs live lease analysis, supports multiple LLM providers, streams findings in real time, and integrates an NYC-specific tenant law knowledge base.
What we learned
We learned how to build reliable agentic AI workflows, manage structured LLM outputs, stream long-running AI tasks, and combine legal knowledge retrieval with document analysis.
What's next for ClauseCheck
We plan to expand beyond NYC, add multilingual support, improve legal citation accuracy, enable automated complaint/document generation, and build deeper tenant action workflows for disputes and repairs.
Built With
- anthropic-claude
- clickhouse-cloud
- fastapi
- google-gemini
- groq-(llama-3.3-70b)
- html
- javascript
- netlify
- nimble-web-api
- pydantic
- python
- render
- server-sent-events
- tailwind-css
- uvicorn

Log in or sign up for Devpost to join the conversation.