이것은 Gemma 4 Challenge에 대한 제출물입니다: Gemma 4로 구축하세요
## 우리가 만든 것
이전 취업 시즌에, 친구가 제게 취업 제안서를 가져왔어요. 그는 흥분했어요 — 첫 번째 진짜 제안이었거든요. 제가 조항 3을 읽었어요. 그게 말해줬던 것은 3년 이전에 그가 퇴사하면 회사에 ₹2,00,000을 빚어야 한다ということ였어요. 그는 그게 그곳에 있었던 것을 몰랐어요. 그는 거의 서명했어요. 3년 동안 묶여서 도피할 방법이 없었을 거예요. 그는 개발자예요. 그의 전부인 초기 경력이었어요.
그는 혼자가 아니다. 매년 수천 명의 학생들이 채용 계약서, 인턴십 계약서, 임대차 계약서에 서명하지만, 그들이 동의하는 내용을 이해하지 못한다. 언어는 의도적으로 복잡하게 작성되어 있다. 벌금은 조항 4, 조항 7, 조항 11에 숨겨져 있다. 그리고 대부분의 사람들 - 특히 신입 졸업생들 -은 변호사를 전화할 수 있는 사람이 없다.
그래서 우리는 FinePrint을 만들었다.
FinePrint은 Gemma 4로 힘을 얻은 오픈 소스 AI 계약 보호 도구입니다. 사진, PDF를 업로드하거나 계약 텍스트를 붙여넣습니다. FinePrint은 이를 읽고 모든 함정을 찾아 무엇이 위험한지, 협상해야 할 사항은 무엇이며, 결코 서명해서는 안 되는 것은 무엇인지 정확히 알려줍니다.
얻는 것:
- 🔴 위험 점수 (0–100) — 계약의 객관적인 위험 수준
- 🟡 совместимость балл — 계약이 당신의 개인적 목표와 얼마나 잘 맞는지
- ⚖️ 최종 판결 — 수락 / 협상 / 거부 및 직접적인 이유
- 모든 적색 경고에 대한 평범한 영어 설명
- 모든 위험한 조항에 대한 안전한 제안된 재작성
- 각 조항별 실행 가능한 협상 팁
- 송신 준비 완료 개인화된 협상 이메일
- 공유 가능한 보고서 링크 + 다운로드 가능한 PDF
- 계약 비교 — v1과 v2 업로드, 어떤 변화가 있는지 확인
이것은 문서 리더가 아닙니다. 이것은 계약 보호 엔진입니다. 문서를 읽는 것은 그것이 무엇을 말하는지 알려줍니다. FinePrint은 특정 상황에서 그것이 무엇을 의미하는지, 회사가 당신으로부터 무엇을 취하려고 하는지, 그리고 정확히 어떻게 대답해야 하는지 알려줍니다.
## 데모
🔗 라이브: https://tarkashlabs-fineprint.vercel.app
자신도 시도해보고 싶나요? 라이브 앱으로 이동하여 예제를 시도하는 아래의 "캠퍼스 바운드"를 클릭하세요. 요구 사항을 채우고 분석을 클릭하세요.
FinePrint이 실제 사기 인턴십 계약서에 대해 반환한 내용은 다음과 같습니다.
🔴 위험 점수: 98 / 100 — 위험
🔴 호환성: 20 / 100 — 낮은 일치
❌ 판결: 기각
"계약서는 모든 사용자 요구사항을 위반합니다 - 유료 직책,
개인 프로젝트의 IP 소유권, ₹1,00,00,000 보증금 벌금,
임의의 초과 근무 및 18개월 경쟁 금지."
FinePrint에는 비교 모드도 있습니다 — 원본 및 수정된 계약서를 업로드하고 Gemma 4는 정확히 어떤 부분이 개선되었는지, 여전히 위험한 부분은 무엇인지, 그리고 새로운 부분은 무엇인지 알려줍니다.
## 코드
🐙 GitHub: https://github.com/Tarkash-Labs/FinePrint
Frontend: React + Vite + Tailwind CSS
Backend: Python + FastAPI + async SSE streaming
AI: Gemma 4 via Google AI Studio
Deploy: Vercel + Render
백엔드는 ~650줄의 비동기 Python입니다. Gemma 4가 그들을 처리하는 동안 결과는 문장별로 스트리밍됩니다 — 적시 경고는 오랜 기다림 후가 아니라 실시간에 나타납니다. 모든 보고 상태는 gzip 압축을 사용하여 무상태 공유 URL에 보존됩니다 — 데이터베이스 없이, 서버 측 저장 없이.
FinePrint이 작동하는 핵심은 무엇인지 여기 있습니다 — Gemma 4에게 동시에 계약과 사용자의 개인적인 목표를 보내는 프롬프트입니다:
def _build_analysis_prompt(contract_label: str, focus_areas: str, requirements: str) -> str:
requirements_text = requirements.strip() or "None provided."
return f"""
You are a ruthless, detail-oriented legal expert specializing in {contract_label} contracts. Your job is to protect the user.
Analyze this contract and return a JSON with exactly these fields:
{{
"risk_score": <integer 0-100>,
"compatibility_score": <integer 0-100>,
"verdict": "ACCEPT" | "NEGOTIATE" | "REJECT",
"verdict_reason": "<1-2 sentence explanation referencing requirements and clauses>",
"requirement_breakdown": [
{{"requirement": "<specific user requirement>", "met": true/false, "explanation": "<why it was or wasn't met>"}}
],
"red_flags": [
{{
"clause_title": "...",
"clause_text": "<EXACT text from the contract>",
"plain_english_explanation": "<Briefly state the risk>",
"negotiation_tip": "<Actionable advice on what the user should ask to change>",
"suggested_rewrite": "<Provide a safer, alternative 1-2 sentence rewrite for this clause that the user can propose>",
"severity": "high|medium|low"
}}
],
"safe_clauses": [{{"clause_title": "...", "plain_english_explanation": "..."}}]
}}
CRITICAL RULES:
1. Return ONLY valid JSON. No preamble. No markdown blocks.
2. DETECT ALL RED FLAGS. Do not summarize them into one. If there are 5 bad clauses, list 5 red flags.
3. You MUST extract the exact original text for "clause_text".
4. The "risk_score" is objective based on standard legal risks. Focus heavily on: {focus_areas}.
5. The "compatibility_score" MUST directly reflect the User Requirements below. If a requirement is completely violated, score drops.
User Requirements to evaluate against:
{requirements_text}
Verdict guidance:
- ACCEPT when risk <= 30 and compatibility >= 70.
- REJECT when risk >= 61 or compatibility <= 30.
- Otherwise NEGOTIATE.
""".strip()
이 단일 프롬프트가 FinePrint의 출력이 특정화되고 일반적이지 않은 이유입니다. Gemma 4는 계약서와 사용자의 삶의 목표를 동시에 읽습니다.
## Gemma 4를 어떻게 사용했는가
모델 라우팅은 실제 테스트 후 의도적으로 결정된 선택이지, 기본 선택이 아닙니다.
단계 1 — Gemma 4 MoE → 다중 모드 OCR
사용자가 사진이나 PDF를 업로드하면 MoE 모델은 문서 이미지를 직접 읽고 원시 텍스트를 추출합니다. 사용자는 스마트폰으로 물리적 계약서(실제로 인쇄된 종이 조각)를 사진을 찍고 업로드할 수 있습니다. Gemma 4의 네이티브 멀티모달 시각 처리는 나머지를 다룹니다. 수동 복사-붙여넣기가 필요 없습니다. 취약한 세 번째 파티 OCR 라이브러리가 필요 없습니다.
이 단계는 법적 이유가 필요하지 않습니다. 빠르고 정확한 이미지 읽기가 필요합니다. MoE 아키텍처가 적합합니다.
ステップ 2 — Gemma 4 밀집 31B → 생각이 필요한 모든 것
모든 법률적 사유는 밀집 31B에서 실행됩니다 — 조항 분류, 위험 점수 부여, 호환성 분석, 평어 설명, 제안된 수정안, 협상 팁, 그리고 개인 맞춤형 협상 이메일.
우리는 명시적으로 MoE를 법률 분석을 위해 테스트했습니다. 5가지 중대한 위반 사항이 있는 계약에 대해 1개의 일반적인 빨간 깃발을 반환했습니다. Dense 31B는 모든 5가지를 반환했습니다 - 정확한 조항 텍스트, 심각도 등급, 협상 팁 및 제안된 수정 사항과 함께.
법률적 사유는 가장 능력 있는 모델이 필요합니다. 중요한 부분에서 사용합니다.
호환성 점수 - FinePrint이 모든 다른 문서 AI와 다른 것을 만드는 것
분석을 시작하기 전에 FinePrint은 사용자의 개인적인 요구사항을 요청합니다 - 얼마 동안 머무를 계획인지, 부가 프로젝트가 필요한지, 최소 보수, 이사 선호도 등입니다. 이는 계약 텍스트와 함께 Dense 31B 프롬프트에 입력됩니다.
이 모델은 동시에 두 가지를 읽고 정렬 여부를 판단합니다. 같은 IP 할당 조항은 6개월 후에 나갈 계획을 가진 사람과 5년간의 경력을 계획하는 사람에게 매우 다르게 평가됩니다. 규칙 기반 시스템은 이를 할 수 없습니다. Gemma 4는 할 수 있습니다.
출력은 "이 조항은 위험합니다."가 아닙니다. "이 조항은 당신에게 특별히 위험합니다.""
FinePrint이 실제로 해결하고 있는 문제
법률 숙지력의 격차는 구조적인 문제입니다. 돈이 있는 사람들은 변호사가 있습니다. 다른 모든 사람들은 주어진 대로 서명합니다.
Harvey AI는 LLM이 법률 분석을 변화시킬 수 있음을 증명했습니다. 엘리트 법률사무소를 위한 서비스로 715백만 달러에 평가받습니다. FinePrint은 그와 같은 능력을 가져와 그 사무소가 결코 서비스하지 않을 사람들에게 무료로 제공합니다.
인도의 캠퍼스 취업 보증금은 매년 수십만 명의 학생들에게 영향을 미칩니다. 그들 중 대부분은 이전에 법률 문서를 읽어보지 못했습니다. 많은 학생들은 법적으로 깨는 것을 감당할 수 없는 보증금에 서명했고 - 그리고 오랜 후에 싫은 일을 떠나려고 할 때야 알게 됩니다.
FinePrint은 변호사를 빨리 연락할 수 없는 사람들에게 첫 번째 방어선입니다. 법률 조언을 대체하지는 않습니다 — 그 이유로 모든 분석의 바닥에는 경고 문구가 있습니다 — 하지만 사람들이 아무것도 서명하기 전에 올바른 질문을 할 수 있도록 필요한 인식을 줍니다.
다음은 무엇인가요
FinePrint 오늘은 학생과 초보 개발자들을 사기성 계약에서 보호합니다. 동일한 Gemma 4 아키텍처는 임대차, 프리랜서 NDA, 벤처 테마 시트에도 확장됩니다 — 이미 모든 7가지 계약 유형을 지원하고 있습니다. 장기적으로는 문서를 열 때 적법성 문제가 있는 부분을 빨간색으로 표시하는 브라우저 확장 프로그램과 다른 앱들이 통합할 수 있는 API를 개발할 계획입니다. 법률 지식 격차는 매우 큽니다. 우리는 아직 시작 단계입니다.
Tarkash Labs에서 개발했습니다
@dj29 & @yug_vasava


















