File size: 2,971 Bytes
01eab7c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2f5fee7
 
01eab7c
 
a510ac2
 
2f5fee7
 
 
 
 
 
a510ac2
 
01eab7c
 
 
 
 
 
a510ac2
01eab7c
 
 
 
 
 
a510ac2
01eab7c
a510ac2
01eab7c
 
a510ac2
 
01eab7c
a510ac2
8aa4a08
 
 
2f5fee7
8aa4a08
01eab7c
 
 
a3b248d
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# app.py

import gradio as gr
import os
from utils.parser import parse_file
from utils.summarizer import summarize_text
from utils.metadata import extract_metadata
from utils.risk_detector import detect_risks
from utils.fallback_suggester import suggest_fallback
from utils.translator import translate_text

def handle_input(file, raw_text):
    if file is not None:
        content = parse_file(file.name)
    elif raw_text.strip() != "":
        content = raw_text
    else:
        return "Please upload a contract or paste text.", "", {}, [], "", ""
    return content, "", {}, [], "", ""

with gr.Blocks(title="SYNCLM – AI Contract Intelligence Demo") as demo:
    gr.Markdown(
        """
        <div style="font-size: 28px; font-weight: bold; margin-bottom: 10px;">
        πŸš€ Innovation Meets Intelligence
        </div>
        <div style="font-size: 18px; line-height: 1.5;">
        Upload a contract or paste the text. SYNCLM will analyze, summarize, extract metadata, detect risks, suggest fallback clauses, and even translate key sections.
        </div>
        """
    )

    with gr.Row():
        file_input = gr.File(label="πŸ“„ Upload Contract (.pdf, .docx, .txt)", file_types=[".pdf", ".docx", ".txt"])
        text_input = gr.Textbox(label="✍️ Or Paste Contract Text", lines=10, placeholder="Paste contract text here...")

    parse_btn = gr.Button("πŸ“‚ Parse Contract")
    contract_display = gr.Textbox(label="πŸ“ƒ Parsed Contract", lines=20)

    with gr.Row():
        summarize_btn = gr.Button("πŸ“ Summarize")
        metadata_btn = gr.Button("πŸ“… Extract Metadata")
        risk_btn = gr.Button("⚠️ Detect Risks")
        fallback_btn = gr.Button("πŸ›‘οΈ Suggest Fallback")
        translate_btn = gr.Button("🌍 Translate to Portuguese")

    summary_output = gr.Textbox(label="πŸ“ Executive Summary", lines=6)
    metadata_output = gr.JSON(label="πŸ“‹ Extracted Metadata")
    risk_output = gr.Dataframe(label="🚩 Risky Clauses", headers=["Clause Type", "Confidence"], datatype=["str", "number"])
    fallback_output = gr.Textbox(label="πŸ’‘ Suggested Fallback Clause", lines=4)
    translation_output = gr.Textbox(label="🌐 Portuguese Translation", lines=10)

    # Action Buttons
    parse_btn.click(
        fn=handle_input,
        inputs=[file_input, text_input],
        outputs=[contract_display, summary_output, metadata_output, risk_output, fallback_output, translation_output]
    )
    summarize_btn.click(fn=summarize_text, inputs=[contract_display], outputs=[summary_output])
    metadata_btn.click(fn=extract_metadata, inputs=[contract_display], outputs=[metadata_output])
    risk_btn.click(fn=detect_risks, inputs=[contract_display], outputs=[risk_output])
    fallback_btn.click(fn=suggest_fallback, inputs=[contract_display], outputs=[fallback_output])
    translate_btn.click(fn=translate_text, inputs=[contract_display], outputs=[translation_output])

if __name__ == "__main__":
    demo.launch()