How sethum-vs/researchbot works
ResearchBot is a macOS research-discovery and proposal-synthesis application backed by a Python engine. Users submit a research topic, the engine gathers and processes sources, builds a knowledge graph and analyzes research gaps; users can then generate proposals, review session history and export results to Google Workspace. The README documents these capabilities, while source excerpts and index references support the key orchestration links. Some subsystem details are documented but unsampled, so those links are cited to the README rather than treated as inspected implementation.
Main entry points: IngestSeedUseCase.py Research Ingestion · ProposalOrchestrator.py Proposal Orchestrator · PythonBridge.swift Python Bridge · FileStorage.py Session Storage
Components 27
macOS Client
- Research UI
ResearchGraphApp/App/ResearchBot/ContentView.swift - Python Bridge
ResearchGraphApp/App/ResearchBot/PythonBridge.swift - Session History
ResearchGraphApp/App/ResearchBot/HistoryView.swift - Graph Explorer
ResearchGraphApp/App/ResearchBot/GraphTerminalView.swift - Proposal Review
ResearchGraphApp/App/ResearchBot/ProposalReviewView.swift - Document Viewer
ResearchGraphApp/App/ResearchBot/MarkdownViewer.swift
Backend Orchestration
- Command Entry
ResearchGraphApp/Backend/main.py - Research Ingestion
ResearchGraphApp/Backend/application/IngestSeedUseCase.py - Proposal Orchestrator
ResearchGraphApp/Backend/application/ProposalOrchestrator.py - Workspace Export
ResearchGraphApp/Backend/application/ExportWorkspaceUseCase.py
Research Discovery
- Input Analysis
ResearchGraphApp/Backend/application/InputAnalyzer.py - Academic Search
ResearchGraphApp/Backend/infrastructure/AcademicScraper.py - Social Search
ResearchGraphApp/Backend/infrastructure/SocialScraper.py - Web and Wiki
ResearchGraphApp/Backend/infrastructure/WebScraper.py - PDF Extraction
ResearchGraphApp/Backend/infrastructure/PdfExtractor.py
Analysis and Synthesis
- Data Refinement
ResearchGraphApp/Backend/application/DataRefiner.py - Graph Construction
ResearchGraphApp/Backend/infrastructure/GraphifyRunner.py - Gap Analysis
ResearchGraphApp/Backend/application/GraphAnalyzer.py - Paper Matching
ResearchGraphApp/Backend/infrastructure/SemanticMatcher.py - Proposal Synthesis
ResearchGraphApp/Backend/application/ProposalSynthesizer.py - Text Chunking
ResearchGraphApp/Backend/infrastructure/TextChunker.py
Session Data and Integrations
- Session Storage
ResearchGraphApp/Backend/infrastructure/FileStorage.py - Vertex Proxy
ResearchGraphApp/Backend/infrastructure/VertexProxy.py - Google Workspace
ResearchGraphApp/Backend/infrastructure/GoogleWorkspaceManager.py
Other components
- Researcher
- Vertex AI
- Google APIs
Connections 34
- Researcher → Research UI: submits topic
README.md - Research UI → Python Bridge: starts runs
ResearchGraphApp/App/ResearchBot/ContentView.swift - Python Bridge → Command Entry: invokes commands
README.md - Command Entry → Research Ingestion: dispatches ingestion
ResearchGraphApp/Backend/main.py - Command Entry → Proposal Orchestrator: dispatches proposal
ResearchGraphApp/Backend/main.py - Command Entry → Workspace Export: dispatches export
ResearchGraphApp/Backend/main.py - Research Ingestion → Input Analysis: analyzes seed
ResearchGraphApp/Backend/application/IngestSeedUseCase.py - Research Ingestion → Academic Search: searches papers
ResearchGraphApp/Backend/application/IngestSeedUseCase.py - Research Ingestion → Social Search: gathers social data
README.md - Research Ingestion → Web and Wiki: gathers web sources
ResearchGraphApp/Backend/application/IngestSeedUseCase.py - Research Ingestion → Data Refinement: refines sources
README.md - Research Ingestion → PDF Extraction: triages papers
README.md - Research Ingestion → Graph Construction: builds graph
README.md - Research Ingestion → Gap Analysis: analyzes gaps
ResearchGraphApp/Backend/application/IngestSeedUseCase.py - Research Ingestion → Session Storage: creates session
ResearchGraphApp/Backend/application/IngestSeedUseCase.py - Gap Analysis → Session Storage: reads corpus
ResearchGraphApp/Backend/application/GraphAnalyzer.py - Gap Analysis → Text Chunking: uses chunks
ResearchGraphApp/Backend/application/GraphAnalyzer.py - Proposal Orchestrator → Session Storage: reads session
ResearchGraphApp/Backend/application/ProposalOrchestrator.py - Proposal Orchestrator → Academic Search: finds papers
ResearchGraphApp/Backend/application/ProposalOrchestrator.py - Proposal Orchestrator → PDF Extraction: extracts bookends
ResearchGraphApp/Backend/application/ProposalOrchestrator.py - Proposal Orchestrator → Paper Matching: scores papers
ResearchGraphApp/Backend/application/ProposalOrchestrator.py - Proposal Orchestrator → Proposal Synthesis: generates proposal
ResearchGraphApp/Backend/application/ProposalOrchestrator.py - Python Bridge → Vertex Proxy: queries graph
README.md - Vertex Proxy → Graph Construction: interrogates graph
README.md - Graph Explorer → Python Bridge: sends queries
ResearchGraphApp/App/ResearchBot/GraphTerminalView.swift - Session History → Python Bridge: requests sessions
ResearchGraphApp/App/ResearchBot/HistoryView.swift - Proposal Review → Python Bridge: exports proposal
ResearchGraphApp/App/ResearchBot/ProposalReviewView.swift - Workspace Export → Google Workspace: exports session
ResearchGraphApp/Backend/application/ExportWorkspaceUseCase.py - Google Workspace → Session Storage: reads artifacts
ResearchGraphApp/Backend/infrastructure/GoogleWorkspaceManager.py - Google Workspace → Google APIs: creates documents
README.md - Graph Construction → Vertex Proxy: routes model calls
README.md - Vertex Proxy → Vertex AI: forwards requests
README.md - Academic Search → PDF Extraction: triages PDFs
ResearchGraphApp/Backend/infrastructure/AcademicScraper.py - Document Viewer → Session Storage: displays artifacts