Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
190 changes: 190 additions & 0 deletions submissions/contractiq-ai/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
\# ContractIQ AI



ContractIQ AI is a multi-agent contract analysis system that analyzes PDF and DOCX contracts and produces a structured contract-risk report.



\## What it does



ContractIQ AI uses multiple specialized AI agents instead of relying on a single analysis step.



The system identifies:



\- Hidden charges

\- Unfair clauses

\- Liability risks

\- Automatic renewal risks

\- Data sharing risks

\- Termination issues

\- Confidentiality concerns

\- Governing-law considerations



It then generates:



\- Contract Health Score

\- Risk Level

\- Contract Summary

\- Important Clauses

\- Risk Explanations

\- AI Recommendations

\- Final Verdict

\- Suggested Improvements



\## Multi-Agent Workflow



The ContractIQ workflow contains seven specialized agents:



1\. DocumentAgent

  - Processes the uploaded contract information.



2\. RiskAgent

  - Detects legal, financial and contractual risks.



3\. VerdictAgent

  - Generates an overall contract-health verdict.



4\. RecommendationAgent

  - Produces actionable recommendations for identified risks.



5\. EvaluationAgent

  - Evaluates the quality and completeness of the analysis.



6\. DiagnoseAgent

  - Diagnoses weaknesses or missing information in the generated analysis.



7\. OptimizeAgent

  - Combines the available agent outputs and generates the final structured report.



\## Agent Lifecycle



The workflow follows the lifecycle:



SPEC → BUILD → EVALUATE → DIAGNOSE → OPTIMIZE



The final OptimizeAgent produces the final report from the accumulated agent context.



\## Final Report



The final report contains:



\- riskScore

\- riskLevel

\- summary

\- importantClauses

\- risks

\- recommendations

\- finalVerdict

\- improvementsMade



\## Example Contract Risks



The system has been tested on service agreements containing:



\- Late payment penalties

\- Automatic renewal clauses

\- Limitation of liability

\- Third-party data sharing

\- Termination conditions

\- Confidentiality obligations

\- Governing-law clauses



\## How to Run



The original ContractIQ AI application can be run using:



```bash

npm install

npm run dev

24 changes: 24 additions & 0 deletions submissions/contractiq-ai/agents/DocumentAgent.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
export class DocumentAgent {

name = "DocumentAgent";


async run(context:any){

return {
...context,

document:{
filename: context.filename,
text: context.contractText,
status:"Extracted Successfully"
}

};

}

}


export default DocumentAgent;
71 changes: 71 additions & 0 deletions submissions/contractiq-ai/agents/EvaluationAgent.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import { callOpenRouter } from "@/runtime/openRouterClient";


class EvaluationAgent {

name = "EvaluationAgent";


async run(context:any){

const prompt = `
You are EvaluationAgent of ContractIQ AI.

Evaluate the generated contract analysis report.

Check:

1. Risk Detection Quality
2. Clause Coverage
3. Verdict Accuracy
4. Recommendation Quality
5. Report Completeness


Previous Analysis:

Risk:
${context.riskAnalysis}


Verdict:
${context.verdictAnalysis}


Recommendations:
${context.recommendationAnalysis}


Return ONLY JSON.

Format:

{
"qualityScore":0,
"issues":[
""
],
"evaluation":""
}

qualityScore should be between 0-100.

`;

const result = await callOpenRouter(prompt);


return {

...context,

evaluationAnalysis: result

};

}

}


export default EvaluationAgent;
66 changes: 66 additions & 0 deletions submissions/contractiq-ai/agents/RecommendationAgent.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import { callOpenRouter } from "@/runtime/openRouterClient";


class RecommendationAgent {

name = "RecommendationAgent";


async run(context:any){

const prompt = `
You are RecommendationAgent of ContractIQ AI.

Generate legal recommendations based on the risk analysis and verdict.

Risk Analysis:

${context.riskAnalysis}


Verdict:

${context.verdictAnalysis}


Generate:
- Risk specific recommendations
- Contract improvement suggestions
- Safer alternatives


Return ONLY JSON.

Format:

{
"recommendations":[
""
],
"improvements":[
""
]
}

Generate 4-6 useful recommendations.
Avoid repeating the same suggestion.

`;

const result = await callOpenRouter(prompt);


return {

...context,

recommendationAnalysis: result

};

}

}


export default RecommendationAgent;
Loading