Codebase Coupling Report — Curaway app/ + docs/ + alembic/¶
Generated by graphify on 2026-04-29 — Leiden community detection over an AST + LLM-extracted knowledge graph of the Curaway backend codebase + documentation corpus. Used by the GCP migration team to validate that proposed migration units (groups of modules that should move together) match actual code coupling.
Quick links¶
- 🌐 Interactive graph (graph.html) — click nodes, search, filter by community
- 📄 Raw graph data (graph.json) — for programmatic queries / re-clustering / GraphRAG
- 📊 Full report (below) — god nodes, surprising connections, suggested questions
How to use this report¶
- Skim the Community Hubs below — each is a labelled cluster of tightly-coupled modules. These are migration-unit candidates.
- Read the God Nodes section — modules with the highest degree centrality. These are the highest-risk migration items (touched by many other modules).
- Read the Surprising Connections section — edges that cross domain boundaries against the design (e.g. patient ↔ provider). These are technical-debt flags worth resolving before migration.
- Pick a Suggested Question from the bottom and run
/graphify query "<question>"from a Claude Code session in this repo to trace it through the graph.
Corpus Check¶
- 528 files · ~529,686 words
- Verdict: corpus is large enough that graph structure adds value.
Summary¶
- 3920 nodes · 10717 edges · 101 communities detected
- Extraction: 44% EXTRACTED · 56% INFERRED · 0% AMBIGUOUS · INFERRED: 6031 edges (avg confidence: 0.58)
- Token cost: 0 input · 0 output
Community Hubs (Navigation)¶
- [[_COMMUNITY_Case Orchestrator + Clinical Extraction|Case Orchestrator + Clinical Extraction]]
- [[_COMMUNITY_FHIR Generation + Retry Pipeline|FHIR Generation + Retry Pipeline]]
- [[_COMMUNITY_Domain Errors + Intake Findings|Domain Errors + Intake Findings]]
- [[_COMMUNITY_Alembic Migrations|Alembic Migrations]]
- [[_COMMUNITY_Clinical Context Agent|Clinical Context Agent]]
- [[_COMMUNITY_Repositories + Portal Routers|Repositories + Portal Routers]]
- [[_COMMUNITY_Database Connection + Sessions|Database Connection + Sessions]]
- [[_COMMUNITY_ProviderDoctor Catalog + Public API|Provider/Doctor Catalog + Public API]]
- [[_COMMUNITY_ADRs + Architecture Specs|ADRs + Architecture Specs]]
- [[_COMMUNITY_Consent Agent + Qdrant Seeding|Consent Agent + Qdrant Seeding]]
- [[_COMMUNITY_Frontend Components + Architecture|Frontend Components + Architecture]]
- [[_COMMUNITY_Coordinator Portal + Services|Coordinator Portal + Services]]
- [[_COMMUNITY_OCR Strategy + API Reference|OCR Strategy + API Reference]]
- [[_COMMUNITY_Early ADRs (Foundation)|Early ADRs (Foundation)]]
- [[_COMMUNITY_Specialized Extractors + Scoring|Specialized Extractors + Scoring]]
- [[_COMMUNITY_Prompt Templates|Prompt Templates]]
- [[_COMMUNITY_Admin Flags + Flagsmith Events|Admin Flags + Flagsmith Events]]
- [[_COMMUNITY_MSO Portal + Consultation|MSO Portal + Consultation]]
- [[_COMMUNITY_Match Agent + Match Service|Match Agent + Match Service]]
- [[_COMMUNITY_Embedding + Semantic Search|Embedding + Semantic Search]]
- [[_COMMUNITY_Architecture Docs (Phase 2)|Architecture Docs (Phase 2)]]
- [[_COMMUNITY_Spend Tracking|Spend Tracking]]
- [[_COMMUNITY_Attachment + Lab Analysis|Attachment + Lab Analysis]]
- [[_COMMUNITY_Logging + Axiom Handler|Logging + Axiom Handler]]
- [[_COMMUNITY_Response Policy + Voice Rules|Response Policy + Voice Rules]]
- [[_COMMUNITY_Cluster 25|Cluster 25]]
- [[_COMMUNITY_Cluster 26|Cluster 26]]
- [[_COMMUNITY_Cluster 27|Cluster 27]]
- [[_COMMUNITY_Cluster 28|Cluster 28]]
- [[_COMMUNITY_Cluster 29|Cluster 29]]
- [[_COMMUNITY_Cluster 30|Cluster 30]]
- [[_COMMUNITY_Cluster 31|Cluster 31]]
- [[_COMMUNITY_Cluster 32|Cluster 32]]
- [[_COMMUNITY_Cluster 33|Cluster 33]]
- [[_COMMUNITY_Cluster 34|Cluster 34]]
- [[_COMMUNITY_Cluster 35|Cluster 35]]
- [[_COMMUNITY_Cluster 36|Cluster 36]]
- [[_COMMUNITY_Cluster 37|Cluster 37]]
- [[_COMMUNITY_Cluster 38|Cluster 38]]
- [[_COMMUNITY_Cluster 39|Cluster 39]]
- [[_COMMUNITY_Cluster 40|Cluster 40]]
- [[_COMMUNITY_Cluster 41|Cluster 41]]
- [[_COMMUNITY_Cluster 42|Cluster 42]]
- [[_COMMUNITY_Cluster 43|Cluster 43]]
- [[_COMMUNITY_Cluster 44|Cluster 44]]
- [[_COMMUNITY_Cluster 45|Cluster 45]]
- [[_COMMUNITY_Cluster 46|Cluster 46]]
- [[_COMMUNITY_Cluster 47|Cluster 47]]
- [[_COMMUNITY_Cluster 48|Cluster 48]]
- [[_COMMUNITY_Cluster 49|Cluster 49]]
- [[_COMMUNITY_Cluster 50|Cluster 50]]
- [[_COMMUNITY_Cluster 51|Cluster 51]]
- [[_COMMUNITY_Cluster 52|Cluster 52]]
- [[_COMMUNITY_Cluster 53|Cluster 53]]
- [[_COMMUNITY_Cluster 54|Cluster 54]]
- [[_COMMUNITY_Cluster 55|Cluster 55]]
- [[_COMMUNITY_Cluster 56|Cluster 56]]
- [[_COMMUNITY_Cluster 57|Cluster 57]]
- [[_COMMUNITY_Cluster 58|Cluster 58]]
- [[_COMMUNITY_Cluster 59|Cluster 59]]
- [[_COMMUNITY_Cluster 60|Cluster 60]]
- [[_COMMUNITY_Cluster 61|Cluster 61]]
- [[_COMMUNITY_Cluster 62|Cluster 62]]
- [[_COMMUNITY_Cluster 63|Cluster 63]]
- [[_COMMUNITY_Cluster 64|Cluster 64]]
- [[_COMMUNITY_Cluster 65|Cluster 65]]
- [[_COMMUNITY_Cluster 66|Cluster 66]]
- [[_COMMUNITY_Cluster 67|Cluster 67]]
- [[_COMMUNITY_Cluster 68|Cluster 68]]
- [[_COMMUNITY_Cluster 69|Cluster 69]]
- [[_COMMUNITY_Cluster 70|Cluster 70]]
- [[_COMMUNITY_Cluster 71|Cluster 71]]
- [[_COMMUNITY_Cluster 72|Cluster 72]]
- [[_COMMUNITY_Cluster 73|Cluster 73]]
- [[_COMMUNITY_Cluster 74|Cluster 74]]
- [[_COMMUNITY_Cluster 75|Cluster 75]]
- [[_COMMUNITY_Cluster 76|Cluster 76]]
- [[_COMMUNITY_Cluster 77|Cluster 77]]
- [[_COMMUNITY_Cluster 78|Cluster 78]]
- [[_COMMUNITY_Cluster 79|Cluster 79]]
- [[_COMMUNITY_Cluster 80|Cluster 80]]
- [[_COMMUNITY_Cluster 81|Cluster 81]]
- [[_COMMUNITY_Cluster 82|Cluster 82]]
- [[_COMMUNITY_Cluster 83|Cluster 83]]
- [[_COMMUNITY_Cluster 84|Cluster 84]]
- [[_COMMUNITY_Cluster 85|Cluster 85]]
- [[_COMMUNITY_Cluster 86|Cluster 86]]
- [[_COMMUNITY_Cluster 87|Cluster 87]]
- [[_COMMUNITY_Cluster 88|Cluster 88]]
- [[_COMMUNITY_Cluster 89|Cluster 89]]
- [[_COMMUNITY_Cluster 90|Cluster 90]]
- [[_COMMUNITY_Cluster 91|Cluster 91]]
- [[_COMMUNITY_Cluster 92|Cluster 92]]
- [[_COMMUNITY_Cluster 93|Cluster 93]]
- [[_COMMUNITY_Cluster 94|Cluster 94]]
- [[_COMMUNITY_Cluster 95|Cluster 95]]
- [[_COMMUNITY_Cluster 96|Cluster 96]]
- [[_COMMUNITY_Cluster 101|Cluster 101]]
- [[_COMMUNITY_Cluster 107|Cluster 107]]
- [[_COMMUNITY_Cluster 109|Cluster 109]]
- [[_COMMUNITY_Cluster 110|Cluster 110]]
God Nodes (most connected - your core abstractions)¶
APIResponse- 390 edgesEvent- 258 edgesBase- 146 edgesErrorDetail- 142 edgesFlexibleJSON- 123 edgesUUIDPrimaryKeyMixin- 123 edgesTimestampMixin- 117 edgesCase- 115 edgesProvider- 114 edgesAlertSeverity- 114 edges
Surprising Connections (you probably didn't know these)¶
Curaway — Alembic migration environment. Async support for Neon PostgreSQL via--uses-->Base[INFERRED] alembic/env.py → app/database.pyUse admin connection for migrations (needs CREATE/ALTER/DROP). Falls back t--uses-->Base[INFERRED] alembic/env.py → app/database.pyRun migrations in 'offline' mode — generates SQL script.--uses-->Base[INFERRED] alembic/env.py → app/database.pyRun migrations in 'online' mode with async engine.--uses-->Base[INFERRED] alembic/env.py → app/database.pyEntrypoint for online migrations.--uses-->Base[INFERRED] alembic/env.py → app/database.py
Hyperedges (group relationships)¶
- 4-Stage Matching Pipeline jointly uses Qdrant + Neo4j + PostgreSQL — matching_pipeline_stage1_qdrant, matching_pipeline_stage2_neo4j, matching_pipeline_stage3_postgresql, architecture_matching_engine [EXTRACTED 1.00]
- OCR fallback chain: PyMuPDF → Unstructured.io → Claude Vision (all serve same doc extraction goal) — adr_0003_pymupdf_library, adr_0003_unstructured_io_fallback, adr_0003_claude_vision_fallback, intake_narrative_ocr_pipeline [EXTRACTED 1.00]
- Intake gates jointly require five-layer data + PFS + agent response pipeline to complete — intake_narrative_five_layer_architecture, intake_narrative_patient_fitness_score, intake_narrative_intake_gates, intake_narrative_four_layer_response [EXTRACTED 1.00]
- Real-Time Streaming Stack: SSE + Redis + Document Progress — concept_sse_transport, concept_upstash_redis, adr_0012_sse_upload_progress [EXTRACTED 1.00]
- OCR Pipeline Durability: PyMuPDF + QStash + Upstash Workflow — concept_pymupdf_ocr, concept_qstash, concept_upstash_workflow [EXTRACTED 0.95]
- Tenant Isolation Triad: BaseRepository + RBAC + Clerk Orgs — concept_base_repository, concept_multi_tenancy_rbac, concept_clerk_auth [EXTRACTED 0.95]
- Wave 1 Triage System — Unified intake scoring + LangGraph agent — [EXTRACTED 1.00]
- Clerk JIT RBAC Stack — role mapping → reconcile → middleware → user_roles — [EXTRACTED 1.00]
- Clinical Data Pipeline — DICOM/docs → FHIR provenance → CoT coding → EHR — [INFERRED 0.82]
- Multi-Tenancy Full Stack (Phases 0-2) — [INFERRED 0.88]
- Intake Intelligence: 5-Layer + Scoring + Extractor Optimization — [INFERRED 0.90]
- Coordinator UX Cluster — [INFERRED 0.85]
- Wave 1 Intake Scoring Pipeline — triage_agent, patient_layer_state, layer_extractors, pfs_scorer, hss_scorer, fms_scorer [EXTRACTED 1.00]
- 4-Stage Matching Pipeline — qdrant_vector_store, neo4j_knowledge_graph, weighted_scoring_v1, explanation_agent, match_agent [EXTRACTED 1.00]
- Event-Driven Platform Core — events_table, sse_streaming, qstash_event_bus, ehr_builder, event_driven_design [EXTRACTED 1.00]
- Conversation Flow Remediation 3-Layer Plan — conversation_flow_gates_steer, sync_chat_extractor_steer, orchestrator_planner_steer [EXTRACTED 1.00]
- EHR Build Pipeline (Clinical Autochain → FHIR → EHR Snapshot) — clinical_autochain_flow, ehr_builder_service_class, ehr_snapshot_schema, progressive_ehr_rebuild [INFERRED 0.90]
- Tenant Isolation Defense-in-Depth — rls_tenant_isolation_policy, base_repository, tenant_isolation_violation, curaway_app_db_role [INFERRED 0.90]
- Clinical Feedback Flywheel — clinical_advisor_feedback_loop, auto_reviewer_service, three_feedback_loops, feedback_records_table [INFERRED 0.90]
- LLM Resilience Stack — llm_gateway_service, llm_fallback_trigger_matrix, guardrail_fail_open, chain_of_thought_prompts, voice_rules_enforcement [INFERRED 0.85]
- PFS/HSS/FMS Triple Scoring Pipeline — pfs_patient_fitness_score, hss_hospital_suitability_score, fms_final_matching_score, graph_semantic_weighted_v21 [EXTRACTED 1.00]
- Patient Journey: Upload → AI Extract → FHIR → Match → Explain — document_pipeline, clinical_context_agent, fhir_r4_resources, match_agent, explanation_agent [EXTRACTED 1.00]
- Triple-Store Data Architecture: PostgreSQL + Neo4j + Qdrant — data_model, neo4j_graph, qdrant_vectors, fhir_r4_resources [EXTRACTED 1.00]
- AI Improvement Loop: Provider Corrections → Eval → Prompt Update — provider_portal, correction_to_prompt_pipeline, eval_pipeline, prompt_management, langfuse_observability [EXTRACTED 1.00]
- PHI External Egress: Anthropic + Langfuse + Daily.co — [EXTRACTED 1.00]
- GCP Migration Core Unit: QStash+Redis+R2 → Cloud Tasks+Memorystore+GCS — [EXTRACTED 0.95]
- Clinical Coding Standards Triad: ICD-10 + SNOMED CT + LOINC — [EXTRACTED 1.00]
Communities¶
Community 0 - "Case Orchestrator + Clinical Extraction"¶
Cohesion: 0.01 Nodes (371): Curaway — Case Orchestrator. Main entry point + phase router for the patient jo, Route to the correct sub-agent based on workflow state. Returns: {response,, run_case_orchestrator(), _backfill_codes(), extract_clinical_entities(), _extract_json_block(), _log_llm_event(), map_to_medical_codes() (+363 more)
Community 1 - "FHIR Generation + Retry Pipeline"¶
Cohesion: 0.01 Nodes (363): _create_fhir_with_retry(), _queue_fhir_retry(), Curaway — Clinical FHIR Generation Nodes. Contains: - FHIR retry helpers (_qu, Create a FHIR resource; on failure queue a QStash retry. Returns resource or Non, Node 4: Store each FHIR resource via fhir_service with validation., Queue a FHIR resource creation retry via QStash with exponential backoff., store_resources(), AgentTrace (+355 more)
Community 2 - "Domain Errors + Intake Findings"¶
Cohesion: 0.02 Nodes (192): DataStoreError, DuplicateRecordError, PermissionDenied, QueryError, Curaway — Unified Data Store Error Taxonomy. All data access errors are wrapped, User lacks the required RBAC permission for this action. Not a DataStoreErr, Base class for all data store errors., Serialize for API error responses. Never includes user_id (PII). (+184 more)
Community 3 - "Alembic Migrations"¶
Cohesion: 0.02 Nodes (211): _get_migration_url(), Curaway — Alembic migration environment. Async support for Neon PostgreSQL via, Use admin connection for migrations (needs CREATE/ALTER/DROP). Falls back t, Run migrations in 'offline' mode — generates SQL script., Run migrations in 'online' mode with async engine., Entrypoint for online migrations., run_async_migrations(), run_migrations_offline() (+203 more)
Community 4 - "Clinical Context Agent"¶
Cohesion: 0.02 Nodes (235): ClinicalContextState, Curaway — Clinical Context Agent. LangGraph StateGraph that processes raw medic, Execute the full clinical context pipeline. This is the main entry point —, run_clinical_context_agent(), generate_fhir_resources(), Node 3: Generate FHIR R4 resources from coded entities., ExplanationState, generate_explanation() (+227 more)
Community 5 - "Repositories + Portal Routers"¶
Cohesion: 0.02 Nodes (163): Expected record does not exist (after tenant-scoped lookup)., RecordNotFoundError, CaseShare, ProviderCaseStatus, RedactionPolicy, SharingMode, CaseForwardingService, Curaway — Case Forwarding Service (Multi-Tenancy Phase 1, Deliverable 1.2). Orc (+155 more)
Community 6 - "Database Connection + Sessions"¶
Cohesion: 0.02 Nodes (195): get_db(), get_db_with_tenant(), get_request_tenant_id(), _get_service_engine(), get_session_factory(), Curaway Global Health Technologies — Database Connection & Session Management A, Get or create the service-role engine (BYPASSRLS). Uses DATABASE_URL_SERVIC, FastAPI dependency — yields an async database session. Automatically SETs a (+187 more)
Community 7 - "Provider/Doctor Catalog + Public API"¶
Cohesion: 0.03 Nodes (133): _build_url(), Curaway — Seed Unique Doctor Photos. Run: python -m app.seed_doctor_photos Ass, Build a unique Unsplash URL with cache-busting sig parameter., Assign unique portrait URLs to every doctor based on gender., seed_doctor_photos(), _doctor_exists(), _get_provider_id_by_slug(), main() (+125 more)
Community 8 - "ADRs + Architecture Specs"¶
Cohesion: 0.02 Nodes (152): ADR-0018: Multi-Tenancy Platform Architecture, ADR-0021: Clerk Org Model, SDD MVP: Agent Pipeline Design, Agent System (LangGraph), Demo Persona: Aisha (TKR Journey), API Changelog, SDD MVP: API Endpoints & Contracts, API Error Codes Reference (+144 more)
Community 9 - "Consent Agent + Qdrant Seeding"¶
Cohesion: 0.02 Nodes (134): Curaway — Consent Agent. Template-driven consent flow — generates consent_form, Generate consent form rich card., run_consent_agent(), seed_neo4j_doctors(), seed_neo4j_doctors(), _build_provider_text(), _get_conditions_from_neo4j(), _get_graph_procedures_for_provider() (+126 more)
Community 10 - "Frontend Components + Architecture"¶
Cohesion: 0.02 Nodes (141): ActionChips Frontend Component (src/components/chat/ActionChips.tsx), ADR-0018: Multi-Tenancy Platform Architecture, Agent Pipeline Gaps (2026-04-02), Aisha Demo Scenario (UAE, TKR, M17.11), Aisha TKR Demo Patient Journey, Anomaly Detector Service, Architecture: Security Audit & Remediation Plan, Architecture: Traceability & Feedback Loops (+133 more)
Community 11 - "Coordinator Portal + Services"¶
Cohesion: 0.08 Nodes (107): CoordinatorServiceBooking, CoordinatorBookingRepository, CoordinatorVendorRepository, Curaway — Coordinator Repository. Data access for coordinator transport vendors, Catalog repository for transport vendors. Vendors are filtered by tenant_id, Tenant-scoped repository for coordinator service bookings., add_note(), assign_coordinator() (+99 more)
Community 12 - "OCR Strategy + API Reference"¶
Cohesion: 0.03 Nodes (82): Claude Vision (Last-Resort OCR Fallback), ADR-0003: PyMuPDF-First OCR Strategy, PyMuPDF (fitz) Primary OCR Method, Unstructured.io (OCR Fallback), Agents AI Pipeline API Endpoints, Consent API Endpoints, Curaway API Reference, Documents API Endpoints (Presign + Confirm) (+74 more)
Community 13 - "Early ADRs (Foundation)"¶
Cohesion: 0.04 Nodes (76): ADR-0001: Railway PostgreSQL over Neon, ADR-0002: Voyage AI over OpenAI Embeddings, ADR-0004: SSE over Polling for Real-Time Chat, ADR-0005: Lazy Case Creation, ADR-0006: Records-First Intelligence, ADR-0007: Conversation-First UX, ADR-0008: DNS-Only Cloudflare Mode, ADR-0009: Metabase OSS Self-Hosted on Railway (+68 more)
Community 14 - "Specialized Extractors + Scoring"¶
Cohesion: 0.04 Nodes (54): estimate_completion(), _extract_first_json_object(), Shared helpers for layer extractors., Compute a layer's completion score from captured fields. Each required fiel, Extract the first balanced {...} JSON object from text. Handles LLM respons, Run an extractor LLM call and parse JSON delta. Returns empty dict on failu, run_extraction(), extract_financial() (+46 more)
Community 15 - "Prompt Templates"¶
Cohesion: 0.05 Nodes (49): get_extraction_prompt(), get_fhir_generation_prompt(), get_icd_mapping_cot_prompt(), get_icd_mapping_prompt(), Curaway — System Prompts for Clinical Context Agent. Loaded from config/prompts, Load the clinical extraction prompt with locale-specific examples., Load the ICD-10/SNOMED mapping prompt., Load the chain-of-thought ICD mapping prompt. (+41 more)
Community 16 - "Admin Flags + Flagsmith Events"¶
Cohesion: 0.09 Nodes (47): EventType, _actor_id(), get_flag(), _handle_flagsmith_error(), list_flags(), Curaway — Admin Flag Proxy Router. Server-side proxy for the Flagsmith manageme, Body: { enabled?: bool, feature_state_value?: any }, Body: { enabled?: bool, feature_state_value?: any } (+39 more)
Community 17 - "MSO Portal + Consultation"¶
Cohesion: 0.1 Nodes (41): _check_mso_enabled(), get_mso_consultation(), get_mso_status(), _get_tenant_id(), list_mso_consultations(), Curaway — MSO Portal Router (Phase 2, Deliverables 2.6-2.7). MSO (Medical Secon, Get consultation detail with redacted case data (mso_clinical policy). MSO, Submit the MSO consultation document (opinion + recommendation). Once submi (+33 more)
Community 18 - "Match Agent + Match Service"¶
Cohesion: 0.07 Nodes (44): Run the agent-enhanced matching pipeline. Called by match_service when agen, run_match_agent(), CostRange, DoctorInMatch, LanguageSupportInMatch, MatchResponse, Curaway — Match Schemas., Response from the matching engine. (+36 more)
Community 19 - "Embedding + Semantic Search"¶
Cohesion: 0.07 Nodes (25): ABC, EmbeddingProvider, FastEmbedProvider, generate_embedding(), generate_embeddings(), get_embedding_provider(), OpenAIEmbeddingProvider, Curaway — Embedding Service (Provider-Agnostic). Supports multiple embedding ba (+17 more)
Community 20 - "Architecture Docs (Phase 2)"¶
Cohesion: 0.07 Nodes (39): Alembic Migration Workflow, Architecture: Emotional Intelligence Layer, Architecture: Matching Engine, Architecture: Procedure Catalog Extensibility, Architecture: Procedure Requirements Audit & Sprint Plan, Architecture: Provider Storefront, AUTH_DISABLED Local Dev Flag, Demo Patient: Aisha Patel (+31 more)
Community 21 - "Spend Tracking"¶
Cohesion: 0.11 Nodes (26): _fetch_anthropic(), Anthropic Admin API fetcher. Pulls token usage from the Anthropic Admin API and, collect_spend_report(), _free_tier_indicators(), Main spend report orchestrator. Runs every per-provider fetcher in parallel and, Run every fetcher in parallel and assemble the dashboard payload., _fetch_cloudflare_r2(), _fetch_railway() (+18 more)
Community 22 - "Attachment + Lab Analysis"¶
Cohesion: 0.11
Nodes (23): process_attachments(), Curaway — Attachment Processing Handler. Extracted from case_orchestrator.py (S, Fetch document metadata for attachments and run clinical context if OCR is ready, detect_comorbidities_from_labs(), detect_comorbidities_llm_shadow(), Curaway — Lab Value Analyzer. Detects comorbidities from FHIR Observation resou, Analyze lab values to auto-detect comorbidities. The name field is render, Shadow LLM check: run Haiku on lab values to catch edge cases. Compares LLM (+15 more)
Community 23 - "Logging + Axiom Handler"¶
Cohesion: 0.1 Nodes (15): AxiomHandler, JSONFormatter, Curaway — Structured JSON Logging. Outputs JSON logs with correlation_id, tenan, Timer-based flush — runs in background thread., Send batch to Axiom. Fire-and-forget., Configure application logging. Call once at startup., JSON log formatter with correlation ID injection., Async batch handler that ships logs to Axiom via HTTP. Buffers logs and flu (+7 more)
Community 24 - "Response Policy + Voice Rules"¶
Cohesion: 0.11 Nodes (23): check_laterality_claims(), check_response(), check_response_strict(), get_forbidden_phrases_for_prompt(), get_voice_principles(), is_file_exempt(), load_voice_rules(), Curaway — Response Policy Validator. Centralized check for forbidden phrases in (+15 more)
Community 25 - "Cluster 25"¶
Cohesion: 0.15 Nodes (22): build_cost_estimate(), _cached_config(), compute_curaway_fee(), CostCategory, CostEstimate, CostLineItem, estimate_to_rich_content(), _estimate_travel() (+14 more)
Community 26 - "Cluster 26"¶
Cohesion: 0.18 Nodes (15): _deep_copy(), _get_data(), _is_document_sourced(), map_layer_state_to_ehr(), _merge_list(), _nonempty(), Curaway — EHR Field Map. Pure function module: maps layer_state fields to EHR s, Extract the .data dict from a named layer, or None. (+7 more)
Community 27 - "Cluster 27"¶
Cohesion: 0.18 Nodes (14): delete_file(), download_file(), file_exists(), generate_download_url(), generate_upload_url(), _get_client(), Curaway — Cloudflare R2 Client. S3-compatible object storage via boto3. Endpoin, Check if a file exists in R2 without downloading it (HEAD request). (+6 more)
Community 28 - "Cluster 28"¶
Cohesion: 0.22 Nodes (11): _calculate_age(), Curaway — EHR Builder Agent. Aggregates intake data, parsed documents, comorbid, Build an EHR snapshot from all collected data., run_ehr_builder(), assess_risks(), _comorbidity_mitigation(), _med_in(), _norm() (+3 more)
Community 29 - "Cluster 29"¶
Cohesion: 0.23 Nodes (12): _cost_label(), _health_dot(), _mermaid_diagram_html(), Topology tab renderer — produces the HTML fragment for the Infrastructure tab on, Render KPI summary cards at the top of the topology tab., Render an interactive Mermaid.js topology diagram., Render the full Infrastructure tab HTML fragment. Args: categories:, Render a single service as a compact card. (+4 more)
Community 30 - "Cluster 30"¶
Cohesion: 0.18 Nodes (13): Clerk JIT Role Sync (clerk_role_sync.py), config/clerk_role_mapping.yaml (Clerk → RoleCode mapping), Coordinator Assignment Engine, MSO Clinical Redaction Policy (provider REDACTED from MSO view), provider_staff Role (ADR-0021), RBAC Middleware (rbac_middleware.py), SSE Streaming Architecture (Redis pub/sub), Clerk Role Auto-Assignment Implementation Plan (+5 more)
Community 31 - "Cluster 31"¶
Cohesion: 0.2 Nodes (9): build_checklist(), checklist_to_rich_content(), ChecklistItem, PreTravelChecklist, Curaway — Pre-Travel Checklist Service. Auto-generates a personalized checklist, Single checklist item with status tracking., Serialize checklist for the chat API / frontend., Full pre-travel checklist for a case. (+1 more)
Community 32 - "Cluster 32"¶
Cohesion: 0.23 Nodes (11): get_model_info(), get_task_config(), list_tasks(), _load_registry(), Curaway — LLM Model Router. Reads config/model_registry.yaml and routes LLM cal, Return all configured task names., Get model metadata by name., Load model registry from YAML. Cached after first call. (+3 more)
Community 33 - "Cluster 33"¶
Cohesion: 0.24 Nodes (9): build_topology(), clear_cache(), _load_topology(), Infrastructure topology — loads service_topology.yaml and merges with live healt, Clear the topology YAML cache. Useful for testing., Load the static topology YAML. Cached at module level after first call., Resolve a service's health status to ok / degraded / error / unknown., Build the full topology with live health merged in. Args: health_da (+1 more)
Community 34 - "Cluster 34"¶
Cohesion: 0.25 Nodes (6): Curaway — Document Agent. Manages document collection for a procedure. Checks w, Check document status and generate checklist response., run_document_agent(), _handle_documents(), Document phase handlers for the Case Orchestrator. Contains: - _handle_docume, Check document status and generate checklist.
Community 35 - "Cluster 35"¶
Cohesion: 0.25 Nodes (5): Curaway — Video Room Service Stub (Phase 2, Deliverable 2.9). Stub for Daily.co, Stub for video consultation room management. Phase 2: Returns mock URLs. Wh, Create a video room and return the join URL. Phase 2: Returns a mock UR, Close a video room after consultation ends. Phase 2: No-op stub. Real D, VideoRoomService
Community 36 - "Cluster 36"¶
Cohesion: 0.25 Nodes (7): Landscape page rendering — HTML dashboard and auth gate pages. Functions here p, Render health data as a branded HTML dashboard., Render a minimal HTML page that uses Clerk JS to authenticate, then reloads, Auth gate for Swagger UI — same Clerk pattern as landscape., render_health_html(), render_landscape_auth_gate(), render_swagger_auth_gate()
Community 37 - "Cluster 37"¶
Cohesion: 0.33 Nodes (5): _extract_request(), Curaway — Route Permission Decorator (Multi-Tenancy Phase 0). Usage: from a, Find the Request object from function arguments. FastAPI endpoint functions, Decorator that checks request.state.permissions for any matching perm. Mult, require_permission()
Community 38 - "Cluster 38"¶
Cohesion: 0.33 Nodes (3): _GraphServiceModule, Curaway — Neo4j Graph Service (backward-compatibility shim). This module has be, Module wrapper that proxies _driver and _init_attempted to the driver sub-mo
Community 39 - "Cluster 39"¶
Cohesion: 0.33 Nodes (4): downgrade(), Enable Row-Level Security on patient-data tables. Defense-in-depth: DAO layer (, Reverse all RLS changes. Safe — drops policies and disables RLS., # NOTE: Password must be set via Railway dashboard or psql, not in migration.
Community 40 - "Cluster 40"¶
Cohesion: 0.4 Nodes (4): Curaway Global Health Technologies — Application Configuration Every secret, UR, Application settings loaded from environment variables., Settings, BaseSettings
Community 41 - "Cluster 41"¶
Cohesion: 0.5 Nodes (4): ConsultationRouting, Curaway — Consultation Routing Service. Routes patients to the appropriate cons, Determine consultation type from Layer 1 + Layer 2 signals. Routing logic (, route_consultation()
Community 42 - "Cluster 42"¶
Cohesion: 0.4 Nodes (2): Add coordinator_audit_log table. Append-only audit trail for coordinator action, # NOTE: No updated_at — append-only audit table
Community 43 - "Cluster 43"¶
Cohesion: 0.4 Nodes (3): downgrade(), Add Phase 0 RBAC tables (roles, user_roles) and case_shares. Multi-Tenancy Phas, Reverse Phase 0 RBAC and case_shares tables.
Community 44 - "Cluster 44"¶
Cohesion: 0.6 Nodes (5): Clerk Role Auto-Assignment Feature Spec, Feature Flag: clerk_role_auto_assign_enabled, config/clerk_role_mapping.yaml, clerk_role_sync.py Service, provider_staff Role
Community 45 - "Cluster 45"¶
Cohesion: 0.5 Nodes (3): get_checkpointer(), Curaway — LangGraph Checkpointing (Wave 1, Step 7). Configures AsyncPostgresSav, Get or create the LangGraph PostgreSQL checkpointer. Uses DATABASE_URL_ADMI
Community 46 - "Cluster 46"¶
Cohesion: 0.5 Nodes (1): Country code to full name + flag mapping.
Community 47 - "Cluster 47"¶
Cohesion: 0.67 Nodes (3): language_name(), language_names(), ISO 639-1 language code to full name mapping.
Community 48 - "Cluster 48"¶
Cohesion: 0.5 Nodes (3): generate_slug(), Curaway -- Slug generation utility for provider storefront URLs. Converts human, Generate URL-safe slug from a name string. Examples: >>> generate_s
Community 49 - "Cluster 49"¶
Cohesion: 0.5 Nodes (3): extract_text(), Curaway — Unstructured.io Client. Extracts text from medical documents (PDF, im, Extract text from a document via Unstructured.io API. Sends the file as mul
Community 50 - "Cluster 50"¶
Cohesion: 0.5 Nodes (3): detect_channel_preference(), Channel preference detection based on patient signals. Spec: platform-restructu, Detect preferred communication channel. Priority: explicit > initial_channe
Community 51 - "Cluster 51"¶
Cohesion: 0.5 Nodes (3): compute_provider_completeness(), Curaway -- Provider completeness scoring service. Computes a 0-1 completeness s, Compute completeness score (0-1) and tier for a provider. Args: pro
Community 52 - "Cluster 52"¶
Cohesion: 0.5 Nodes (3): Curaway — Weight Redistribution. When some scoring dimensions are unscored (e.g, Unscored dimensions' weights are distributed proportionally across scored dimens, redistribute_weights()
Community 53 - "Cluster 53"¶
Cohesion: 0.5 Nodes (1): Add Phase 3 coordinator models. Multi-Tenancy Phase 3, Deliverables 3.1, 3.2, 3
Community 54 - "Cluster 54"¶
Cohesion: 0.5 Nodes (1): seed coordinator_vendors with initial transport vendors Revision ID: 4d6c92af18
Community 55 - "Cluster 55"¶
Cohesion: 0.5 Nodes (1): create provider_facilities table Revision ID: c2d3e4f5a6b7 Revises: b1c2d3e4f5a
Community 56 - "Cluster 56"¶
Cohesion: 0.5 Nodes (1): add llm_usage table for Langfuse token burn sync Revision ID: a7abaa2f5e18 Revi
Community 57 - "Cluster 57"¶
Cohesion: 0.5 Nodes (1): merge 4 alembic heads into single head Revision ID: d5e6f7g8h9i0 Revises: a1b2c
Community 58 - "Cluster 58"¶
Cohesion: 0.5 Nodes (1): add idempotency_keys table Revision ID: 91c3230bc8c6 Revises: 00ce40e17abc Crea
Community 59 - "Cluster 59"¶
Cohesion: 0.5 Nodes (1): add channel_preference to patients Revision ID: e8f9a0b1c2d3 Revises: d7e8f9a0b
Community 60 - "Cluster 60"¶
Cohesion: 0.5 Nodes (1): add case_role to cases Revision ID: e5f6g7h8i9j0 Revises: d5e6f7g8h9i0 Create D
Community 61 - "Cluster 61"¶
Cohesion: 0.5 Nodes (1): add patient address fields Revision ID: f5a6b7c8d9e0 Revises: e4f5a6b7c8d9 Crea
Community 62 - "Cluster 62"¶
Cohesion: 0.5 Nodes (1): rename clerk_user_id to external_auth_id on patients Revision ID: a1b2c3d4e5f6
Community 63 - "Cluster 63"¶
Cohesion: 0.5 Nodes (1): add case_id to document_references Session 38: Case record porting feature. Add
Community 64 - "Cluster 64"¶
Cohesion: 0.5 Nodes (1): add confidence to fhir_resources Revision ID: b3c4d5e6f7g8 Revises: a2b3c4d5e6f
Community 65 - "Cluster 65"¶
Cohesion: 0.5 Nodes (1): add tenant_org_mappings table ADR-0018 Stage 4: Migrate ORG_TENANT_MAP from har
Community 66 - "Cluster 66"¶
Cohesion: 0.5 Nodes (1): Add MSO doctor extensions + consultation fields (Phase 2, deliverables 2.4-2.7)
Community 67 - "Cluster 67"¶
Cohesion: 0.5 Nodes (1): add sender_type, document_id, case_id columns + data_forwarding_audits table Se
Community 68 - "Cluster 68"¶
Cohesion: 0.5 Nodes (1): Add functional index on procedure_requirements.procedure_name (lower case). Sup
Community 69 - "Cluster 69"¶
Cohesion: 0.5 Nodes (1): add doctors and doctor_procedures tables, update providers and provider_procedur
Community 70 - "Cluster 70"¶
Cohesion: 0.5 Nodes (1): seed_provider_staff_role Revision ID: c0e03fe0eb78 Revises: 42b97c6872bd Create
Community 71 - "Cluster 71"¶
Cohesion: 0.5 Nodes (1): add feedback_records table Revision ID: a1b2c3d4e5f7 Revises: f8a9b1c2d3e4 Crea
Community 72 - "Cluster 72"¶
Cohesion: 0.5 Nodes (1): create provider_scrape_history table Revision ID: e4f5a6b7c8d9 Revises: d3e4f5a
Community 73 - "Cluster 73"¶
Cohesion: 0.5 Nodes (1): create treatment_categories table Revision ID: d3e4f5a6b7c8 Revises: c2d3e4f5a6
Community 74 - "Cluster 74"¶
Cohesion: 0.5 Nodes (1): Add risk_assessment JSONB column to cases table. Phase 2 Risk Assessment (Deliv
Community 75 - "Cluster 75"¶
Cohesion: 0.5 Nodes (1): initial schema - 17 tables Revision ID: ddf3bde9d5ad Revises: Create Date: 2026
Community 76 - "Cluster 76"¶
Cohesion: 0.5 Nodes (1): add case conversation message procedure_requirement provider_procedure tables R
Community 77 - "Cluster 77"¶
Cohesion: 0.5 Nodes (1): Add provider_quotes table and redacted_snapshot column on case_shares. Phase 1
Community 78 - "Cluster 78"¶
Cohesion: 0.5 Nodes (1): add providers and match_results tables Revision ID: 00ce40e17abc Revises: ddf3b
Community 79 - "Cluster 79"¶
Cohesion: 0.5 Nodes (1): add agent_name to messages Revision ID: c4d5e6f7g8h9 Revises: b3c4d5e6f7g8 Crea
Community 80 - "Cluster 80"¶
Cohesion: 0.5 Nodes (1): add storefront columns to providers Revision ID: b1c2d3e4f5a6 Revises: a1b2c3d4
Community 81 - "Cluster 81"¶
Cohesion: 1.0 Nodes (1): Curaway — Public Storefront API Router. Unauthenticated GET-only endpoints powe
Community 82 - "Cluster 82"¶
Cohesion: 1.0 Nodes (1): Curaway — Agentic AI Pipeline (LangGraph + LangChain).
Community 83 - "Cluster 83"¶
Cohesion: 1.0 Nodes (1): orchestrator_phases — Phase handler functions extracted from case_orchestrator.p
Community 84 - "Cluster 84"¶
Cohesion: 1.0 Nodes (1): Curaway — Agent System Prompts.
Community 85 - "Cluster 85"¶
Cohesion: 1.0 Nodes (1): Curaway — MCP (Model Context Protocol) Server.
Community 86 - "Cluster 86"¶
Cohesion: 1.0 Nodes (1): Backward-compatibility shim. The spend report logic has been split into app/ser
Community 87 - "Cluster 87"¶
Cohesion: 1.0 Nodes (1): app.services.health — health check sub-modules. Re-exports all public functions
Community 88 - "Cluster 88"¶
Cohesion: 1.0 Nodes (1): Curaway — Neo4j Graph Service (package). Backward-compatible re-exports so that
Community 89 - "Cluster 89"¶
Cohesion: 1.0 Nodes (1): Spend report sub-package. Public surface — import from here, not from the inter
Community 90 - "Cluster 90"¶
Cohesion: 1.0 Nodes (1): Curaway — Layer Extractors (Wave 1, Step 3). Pure async functions: (conversatio
Community 91 - "Cluster 91"¶
Cohesion: 1.0 Nodes (2): CoordinatorApiService (17 endpoints), Coordinator Full-Surface API Wiring + E2E Verification Plan
Community 92 - "Cluster 92"¶
Cohesion: 1.0 Nodes (2): DocumentViewer Component (modal with presigned R2 URL), Document Viewer — Feature Spec
Community 93 - "Cluster 93"¶
Cohesion: 1.0 Nodes (2): SSE Upload Progress Streaming Spec, SSE Progress Event Schema (6-step)
Community 94 - "Cluster 94"¶
Cohesion: 1.0 Nodes (2): Auth Pages Redesign Steer (PR #21), Clerk Headless Auth (useSignIn/useSignUp hooks)
Community 95 - "Cluster 95"¶
Cohesion: 1.0 Nodes (2): Coordinator Interaction Steer (3-Phase), sender_type Column on Message Model
Community 96 - "Cluster 96"¶
Cohesion: 1.0 Nodes (2): Spend Report Dashboard Setup Runbook, Spend Dashboard Aggregator (GET /landscape/spend.json)
Community 101 - "Cluster 101"¶
Cohesion: 1.0 Nodes (1): Metadata dict to pass via LangChain config for automatic trace association.
Community 107 - "Cluster 107"¶
Cohesion: 1.0 Nodes (1): Deserialize from JSONB storage. Returns empty state if data is None/empty.
Community 109 - "Cluster 109"¶
Cohesion: 1.0 Nodes (1): 7-Wave 24-Week Execution Plan
Community 110 - "Cluster 110"¶
Cohesion: 1.0 Nodes (1): Spec-Driven Development Process
Ambiguous Edges - Review These¶
Presigned R2 Download URL Pattern→FHIR meta.extension Case ID (Caveat 5)[AMBIGUOUS] /Users/srikanthdonthi/Code/Curaway/curaway_src/docs/specs/ai-steer/document-viewer-steer.md · relation: conceptually_related_to
Knowledge Gaps¶
- 737 isolated node(s):
Curaway — Seed Neo4j Knowledge Graph. Run: python -m app.seed_graph Creates th,Load procedure definitions from the unified YAML registry.,Build PROCEDURES, CONDITIONS, and CONDITION_PROCEDURE_MAP from procedures.yaml.,Seed the Neo4j knowledge graph with clinical ontology + provider data.,Curaway Global Health Technologies — Application Configuration Every secret, UR(+732 more) These have ≤1 connection - possible missing edges or undocumented components. - Thin community
Cluster 42(5 nodes):d7e8f9a0b1c2_add_coordinator_audit_log_table.py,downgrade(),Add coordinator_audit_log table. Append-only audit trail for coordinator action,# NOTE: No updated_at — append-only audit table,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 46(4 nodes):countries.py,country_flag(),country_name(),Country code to full name + flag mapping.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 53(4 nodes):b5c6d7e8f9a0_add_phase3_coordinator_models.py,downgrade(),Add Phase 3 coordinator models. Multi-Tenancy Phase 3, Deliverables 3.1, 3.2, 3,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 54(4 nodes):4d6c92af188f_seed_coordinator_vendors.py,downgrade(),seed coordinator_vendors with initial transport vendors Revision ID: 4d6c92af18,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 55(4 nodes):c2d3e4f5a6b7_provider_facilities.py,downgrade(),create provider_facilities table Revision ID: c2d3e4f5a6b7 Revises: b1c2d3e4f5a,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 56(4 nodes):a7abaa2f5e18_add_llm_usage_table.py,downgrade(),add llm_usage table for Langfuse token burn sync Revision ID: a7abaa2f5e18 Revi,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 57(4 nodes):d5e6f7g8h9i0_merge_heads.py,downgrade(),merge 4 alembic heads into single head Revision ID: d5e6f7g8h9i0 Revises: a1b2c,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 58(4 nodes):91c3230bc8c6_add_idempotency_keys_table.py,downgrade(),add idempotency_keys table Revision ID: 91c3230bc8c6 Revises: 00ce40e17abc Crea,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 59(4 nodes):e8f9a0b1c2d3_add_channel_preference_to_patients.py,downgrade(),add channel_preference to patients Revision ID: e8f9a0b1c2d3 Revises: d7e8f9a0b,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 60(4 nodes):e5f6g7h8i9j0_add_case_role.py,downgrade(),add case_role to cases Revision ID: e5f6g7h8i9j0 Revises: d5e6f7g8h9i0 Create D,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 61(4 nodes):f5a6b7c8d9e0_add_patient_address_fields.py,downgrade(),add patient address fields Revision ID: f5a6b7c8d9e0 Revises: e4f5a6b7c8d9 Crea,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 62(4 nodes):a1b2c3d4e5f6_rename_clerk_user_id_to_external_auth_id.py,downgrade(),rename clerk_user_id to external_auth_id on patients Revision ID: a1b2c3d4e5f6,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 63(4 nodes):a2b3c4d5e6f7_add_case_id_to_document_references.py,downgrade(),add case_id to document_references Session 38: Case record porting feature. Add,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 64(4 nodes):b3c4d5e6f7g8_add_confidence_to_fhir_resources.py,downgrade(),add confidence to fhir_resources Revision ID: b3c4d5e6f7g8 Revises: a2b3c4d5e6f,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 65(4 nodes):42b97c6872bd_add_tenant_org_mappings_table.py,downgrade(),add tenant_org_mappings table ADR-0018 Stage 4: Migrate ORG_TENANT_MAP from har,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 66(4 nodes):a4b5c6d7e8f9_add_mso_extensions.py,downgrade(),Add MSO doctor extensions + consultation fields (Phase 2, deliverables 2.4-2.7),upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 67(4 nodes):5c74c5fa6c4d_add_sender_type_document_id_case_id_.py,downgrade(),add sender_type, document_id, case_id columns + data_forwarding_audits table Se,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 68(4 nodes):f1a2b3c4d5e7_add_procedure_name_lower_index.py,downgrade(),Add functional index on procedure_requirements.procedure_name (lower case). Sup,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 69(4 nodes):f8a9b1c2d3e4_add_doctors_schema.py,downgrade(),add doctors and doctor_procedures tables, update providers and provider_procedur,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 70(4 nodes):c0e03fe0eb78_seed_provider_staff_role.py,downgrade(),seed_provider_staff_role Revision ID: c0e03fe0eb78 Revises: 42b97c6872bd Create,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 71(4 nodes):a1b2c3d4e5f7_add_feedback_records.py,downgrade(),add feedback_records table Revision ID: a1b2c3d4e5f7 Revises: f8a9b1c2d3e4 Crea,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 72(4 nodes):e4f5a6b7c8d9_provider_scrape_history.py,downgrade(),create provider_scrape_history table Revision ID: e4f5a6b7c8d9 Revises: d3e4f5a,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 73(4 nodes):d3e4f5a6b7c8_treatment_categories.py,downgrade(),create treatment_categories table Revision ID: d3e4f5a6b7c8 Revises: c2d3e4f5a6,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 74(4 nodes):7b4e91f2c8a3_add_risk_assessment_to_cases.py,downgrade(),Add risk_assessment JSONB column to cases table. Phase 2 Risk Assessment (Deliv,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 75(4 nodes):ddf3bde9d5ad_initial_schema_17_tables.py,downgrade(),initial schema - 17 tables Revision ID: ddf3bde9d5ad Revises: Create Date: 2026,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 76(4 nodes):32d1d433a47d_add_case_conversation_message_procedure_.py,downgrade(),add case conversation message procedure_requirement provider_procedure tables R,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 77(4 nodes):3a902ba3e10b_add_provider_quotes_and_redacted_snapshot.py,downgrade(),Add provider_quotes table and redacted_snapshot column on case_shares. Phase 1,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 78(4 nodes):00ce40e17abc_add_providers_and_match_results_tables.py,downgrade(),add providers and match_results tables Revision ID: 00ce40e17abc Revises: ddf3b,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 79(4 nodes):c4d5e6f7g8h9_add_agent_name_to_messages.py,downgrade(),add agent_name to messages Revision ID: c4d5e6f7g8h9 Revises: b3c4d5e6f7g8 Crea,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 80(4 nodes):b1c2d3e4f5a6_storefront_slugs.py,downgrade(),add storefront columns to providers Revision ID: b1c2d3e4f5a6 Revises: a1b2c3d4,upgrade()Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 81(2 nodes):public.py,Curaway — Public Storefront API Router. Unauthenticated GET-only endpoints poweToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 82(2 nodes):Curaway — Agentic AI Pipeline (LangGraph + LangChain).,__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 83(2 nodes):__init__.py,orchestrator_phases — Phase handler functions extracted from case_orchestrator.pToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 84(2 nodes):__init__.py,Curaway — Agent System Prompts.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 85(2 nodes):__init__.py,Curaway — MCP (Model Context Protocol) Server.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 86(2 nodes):spend_report_service.py,Backward-compatibility shim. The spend report logic has been split into app/serToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 87(2 nodes):__init__.py,app.services.health — health check sub-modules. Re-exports all public functionsToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 88(2 nodes):__init__.py,Curaway — Neo4j Graph Service (package). Backward-compatible re-exports so thatToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 89(2 nodes):__init__.py,Spend report sub-package. Public surface — import from here, not from the interToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 90(2 nodes):__init__.py,Curaway — Layer Extractors (Wave 1, Step 3). Pure async functions: (conversatioToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 91(2 nodes):CoordinatorApiService (17 endpoints),Coordinator Full-Surface API Wiring + E2E Verification PlanToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 92(2 nodes):DocumentViewer Component (modal with presigned R2 URL),Document Viewer — Feature SpecToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 93(2 nodes):SSE Upload Progress Streaming Spec,SSE Progress Event Schema (6-step)Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 94(2 nodes):Auth Pages Redesign Steer (PR #21),Clerk Headless Auth (useSignIn/useSignUp hooks)Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 95(2 nodes):Coordinator Interaction Steer (3-Phase),sender_type Column on Message ModelToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 96(2 nodes):Spend Report Dashboard Setup Runbook,Spend Dashboard Aggregator (GET /landscape/spend.json)Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 101(1 nodes):Metadata dict to pass via LangChain config for automatic trace association.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 107(1 nodes):Deserialize from JSONB storage. Returns empty state if data is None/empty.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 109(1 nodes):7-Wave 24-Week Execution PlanToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Cluster 110(1 nodes):Spec-Driven Development ProcessToo small to be a meaningful cluster - may be noise or needs more connections extracted.
Suggested Questions¶
Questions this graph is uniquely positioned to answer:
- What is the exact relationship between
Presigned R2 Download URL PatternandFHIR meta.extension Case ID (Caveat 5)? Edge tagged AMBIGUOUS (relation: conceptually_related_to) - confidence is low. - Why does
APIResponseconnectFHIR Generation + Retry PipelinetoCase Orchestrator + Clinical Extraction,Domain Errors + Intake Findings,Clinical Context Agent,Repositories + Portal Routers,Database Connection + Sessions,Provider/Doctor Catalog + Public API,Coordinator Portal + Services,Admin Flags + Flagsmith Events,MSO Portal + Consultation,Cluster 27? High betweenness centrality (0.145) - this node is a cross-community bridge. - Why does
EventconnectClinical Context AgenttoCase Orchestrator + Clinical Extraction,FHIR Generation + Retry Pipeline,Domain Errors + Intake Findings,Alembic Migrations,Database Connection + Sessions,Admin Flags + Flagsmith Events,Match Agent + Match Service? High betweenness centrality (0.107) - this node is a cross-community bridge. - Are the 387 inferred relationships involving
APIResponse(e.g. withCuraway — Doctor API Router. CRUD + search for doctors and doctor procedures.andList doctors (paginated, filterable by provider_id, specialty).) actually correct?APIResponsehas 387 INFERRED edges - model-reasoned connections that need verification. - Are the 254 inferred relationships involving
Event(e.g. withCuraway — Admin Matching Config Router. Read/write thematching_weights_v1FlandFlagsmith stores feature_state_value as a string; parse it back to dict. Re) actually correct?Eventhas 254 INFERRED edges - model-reasoned connections that need verification. - Are the 174 inferred relationships involving
str(e.g. withseed_doctors_full()andenrich_storefront()) actually correct?strhas 174 INFERRED edges - model-reasoned connections that need verification. - Are the 143 inferred relationships involving
Base(e.g. withFHIRResourceandCuraway — FHIR Resource Storage. Medical data as FHIR R4 compliant resources st) actually correct?Basehas 143 INFERRED edges - model-reasoned connections that need verification.