from pathlib import Path # Clean BOM for path in Path("app").rglob("*.py"): text = path.read_text(encoding="utf-8-sig") text = text.replace("\ufeff", "") path.write_text(text, encoding="utf-8") Path("app/product").mkdir(parents=True, exist_ok=True) Path("app/product/__init__.py").touch() Path("app/product/final_product_ui.py").write_text(r''' def get_home_html() -> str: return """
GraphResearcher lets users chat with PDFs and reports using citation-grounded retrieval, graph context, source verification, graph view, and document comparison.
Upload, select, delete, and re-index documents from one clean UI.
Answers show evidence boxes and source cards for verification.
Graph view and graph retrieval stay available without exposing developer tools.