Skip to main content

Separation of Concerns (SoC)

Overview

Separation of Concerns is a design principle for separating a system into distinct sections, each addressing a separate concern. In OCapistaine, we apply this to both code architecture and workflow design.

Application in OCapistaine

Code Architecture

LayerConcernImplementation
Data CollectionWeb scraping & OCRsrc/firecrawl_utils.py
ConfigurationData sources & settingssrc/config.py
OrchestrationCLI & workflow controlsrc/crawl_municipal_docs.py
StorageDocument persistenceext_data/ directory

Workflow Separation

WorkflowResponsibility
FirecrawlDocument acquisition
OCR ProcessingText extraction from PDFs
RAG SystemSemantic search & Q&A
N8N OrchestrationMulti-channel integration

Benefits

  1. Maintainability - Changes to one concern don't affect others
  2. Testability - Each component can be tested independently
  3. Scalability - Components can be scaled based on load
  4. Collaboration - Team members can work on different concerns simultaneously