# Graph Report - portalonsms2  (2026-07-08)

## Corpus Check
- 201 files · ~315,603 words
- Verdict: corpus is large enough that graph structure adds value.

## Summary
- 2450 nodes · 5659 edges · 128 communities (86 shown, 42 thin omitted)
- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS · INFERRED: 20 edges (avg confidence: 0.77)
- Token cost: 0 input · 0 output

## Graph Freshness
- Built from commit: `f8f1c0ef`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).

## Community Hubs (Navigation)
- Storage Interface Methods
- Database Storage Implementation
- NPM Runtime Dependencies
- Badge and Card UI
- Roles and Permissions
- Schema Status Enums
- Accordion and Dialog UI
- Account Management Page
- Button and Alert Dialog UI
- Reporting and Monitoring Types
- AI Panel and Tabs UI
- App Routing and Auth Context
- Infobip API Integration
- Build Tooling Dependencies
- Template Utilities and Form UI
- Project Memory Notes
- Sender Profile and Notices UI
- Infobip Sender Storage
- Sidebar Layout UI
- Campaign Storage Methods
- CLAUDE.md Documentation
- Multi-BM Validated Templates UI
- WABA Template Storage
- Auth Middleware and Checknumber
- HubSpot Auth and Timeline
- AI Agent Orchestration
- Background Dispatch Workers
- Server Bootstrap and Blocklist
- Campaign Chat UI
- Multi-BM Dispatch Logic
- DB Cleanup and Seed Scripts
- replit.md Documentation
- User and Sender Assignment Storage
- Multi-BM Submission Storage
- Admin Logs UI
- Media Storage Utilities
- RCS API Client
- TypeScript Configuration
- Menubar UI Component
- Shadcn UI Config
- Sidebar and Branding Context
- Toast and Notice System
- Chart UI Component
- HubSpot Action Sync
- Branding Storage Methods
- Button, Calendar, Pagination UI
- Multi-BM Template Storage
- Infobip Config Storage
- WABA Message Storage
- Carousel UI Component
- Chip Provisioning Clients
- Multi-BM Health Sync
- Business Manager Storage
- HubSpot Dispatch Queue Storage
- AI Conversation Storage
- WA Filter Batch Storage
- Multi-BM Dashboard UI
- Toast UI Component
- BM Sender Storage
- Chip Activation Storage
- HubSpot Connection Storage
- RCS Sender Storage
- API Token Storage
- Multi-BM Webhook Tests
- Error Boundary Component
- Command Palette UI
- Context Menu UI
- Dropdown Menu UI
- Knowledge Base Storage
- Multi-BM Message Storage
- RCS Config Storage
- RCS Message Storage
- Multi-BM Template Cluster Tests
- Multi-BM Template Sync Tests
- HubSpot Diagnostics UI
- Activity Log Storage
- Breadcrumb UI Component
- Drawer UI Component
- Navigation Menu UI
- Sheet UI Component
- Account Service Balance Storage
- HubSpot Execute Diagnostics
- Blocklist Term Storage
- Status Mapping Storage
- AI Client Settings Storage
- Vendor Mask Exposure Tests
- Toggle UI Components
- File Upload Hook
- Multi-BM Validated Template Storage
- API Settings Storage
- Template Media Storage
- AI Agent Safeguards Tests
- Multi-BM Marketing Dispatch Tests
- OTP Input UI Component
- Column Keyword Storage
- Two-Stage Campaign Config Storage
- AI Agent Config Storage
- HubSpot Alert Config Storage
- Multi-BM Alert Config Storage
- Multi-BM Config Storage
- HubSpot Workflow Action Tests
- Toast Notification State
- Email Alert Mailer
- AI Conversation Messages
- HubSpot Timeline Template Storage
- Object Uploader Component
- Avatar UI Component
- HubSpot Action Registration
- Sender Stats Queries
- HubSpot Alert State
- Multi-BM Alert State
- User & Service Queries
- Template Preset Storage
- Build Script Allowlist
- Credit Transactions
- Output Sanitization
- Infobip Template Header Rule
- Slider UI Component
- Production Deploy Script
- Dev Deploy Script
- Post-Merge Hook Script
- TemplateGeneratorConfig
- vendor-mask.ts

## God Nodes (most connected - your core abstractions)
1. `DatabaseStorage` - 318 edges
2. `IStorage` - 307 edges
3. `registerRoutes()` - 103 edges
4. `cn()` - 96 edges
5. `useToast()` - 87 edges
6. `apiRequest()` - 75 edges
7. `useAuth()` - 49 edges
8. `scrubCurrentUserError()` - 47 edges
9. `Button` - 44 edges
10. `Card` - 41 edges

## Surprising Connections (you probably didn't know these)
- `registerRoutes()` --indirect_call--> `tpl()`  [INFERRED]
  server/routes.ts → tests/multibmDispatchMarketing.test.ts
- `registerRoutes()` --indirect_call--> `sender()`  [INFERRED]
  server/routes.ts → tests/multibmTemplateCluster.test.ts
- `useFormField()` --references--> `react`  [EXTRACTED]
  client/src/components/ui/form.tsx → package.json
- `registerRoutes()` --indirect_call--> `displayName()`  [INFERRED]
  server/routes.ts → client/src/lib/accountUtils.ts
- `CampaignDetail()` --references--> `jspdf`  [EXTRACTED]
  client/src/pages/campaign-detail.tsx → package.json

## Import Cycles
- 3-file cycle: `client/src/hooks/use-auth.tsx -> client/src/lib/queryClient.ts -> client/src/lib/vendor-mask.ts -> client/src/hooks/use-auth.tsx`

## Communities (128 total, 42 thin omitted)

### Community 1 - "Database Storage Implementation"
Cohesion: 0.02
Nodes (5): DatabaseStorage, AccountServiceBalance, InsertMultibmValidatedTemplate, MultibmAlertState, MultibmValidatedTemplate

### Community 2 - "NPM Runtime Dependencies"
Cohesion: 0.02
Nodes (83): dependencies, archiver, bcrypt, class-variance-authority, clsx, cmdk, connect-pg-simple, date-fns (+75 more)

### Community 3 - "Badge and Card UI"
Cohesion: 0.06
Nodes (53): Card, CardContent, CardFooter, CardHeader, CardTitle, Input, PasswordInput(), PasswordInputProps (+45 more)

### Community 4 - "Roles and Permissions"
Cohesion: 0.04
Nodes (61): RFC-4180, CREATABLE_ROLES, hasPermission(), Permission, PERMISSIONS, REQUIRED_PARENT_ROLES, requirePermission(), allRoles (+53 more)

### Community 5 - "Schema Status Enums"
Cohesion: 0.03
Nodes (75): BmQuality, bmQualityEnum, BmStatus, bmStatusEnum, CampaignStatus, campaignStatusEnum, ChipActivationStatus, chipActivationStatusEnum (+67 more)

### Community 6 - "Accordion and Dialog UI"
Cohesion: 0.11
Nodes (44): AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter(), AlertDialogHeader(), AlertDialogOverlay, AlertDialogTitle (+36 more)

### Community 7 - "Account Management Page"
Cohesion: 0.10
Nodes (56): SenderProfileSheet(), canDoOperational(), canManageCredits(), getRoleLabel(), useAuth(), useToast(), displayName(), apiRequest() (+48 more)

### Community 8 - "Button and Alert Dialog UI"
Cohesion: 0.09
Nodes (28): CampaignChat(), CampaignChatProps, ConversationPane(), ConversationRow, MessageBubble(), STATUS_LABEL, AccordionContent, AccordionItem (+20 more)

### Community 9 - "Reporting and Monitoring Types"
Cohesion: 0.04
Nodes (52): AccountServiceRow, BmAssignmentClientRow, MultibmBmFailureStat, MultibmBmMetrics, MultibmClientMetrics, MultibmMonitoring, MultibmVolumePoint, PaginatedResult (+44 more)

### Community 10 - "AI Panel and Tabs UI"
Cohesion: 0.04
Nodes (65): Badge(), BadgeProps, badgeVariants, Progress, SelectContent, SelectItem, SelectLabel, SelectScrollDownButton (+57 more)

### Community 11 - "App Routing and Auth Context"
Cohesion: 0.10
Nodes (21): ProtectedRoute(), Router(), ThemeToggle(), AuthContext, AuthContextType, AuthProvider(), AuthUser, canBranding() (+13 more)

### Community 12 - "Infobip API Integration"
Cohesion: 0.09
Nodes (46): buildAuthHeaders(), buildButtonsArray(), buildCarouselCard(), buildHeaderComponent(), buildHeaders(), buscarRelatorio(), buscarSaldo(), buscarStatusTemplate() (+38 more)

### Community 13 - "Build Tooling Dependencies"
Cohesion: 0.04
Nodes (42): devDependencies, autoprefixer, drizzle-kit, esbuild, postcss, @replit/vite-plugin-cartographer, @replit/vite-plugin-dev-banner, @replit/vite-plugin-runtime-error-modal (+34 more)

### Community 14 - "Template Utilities and Form UI"
Cohesion: 0.15
Nodes (13): RadioGroup, RadioGroupItem, AnyTemplateButton, getDynamicUrlButtonBase(), applyPreset(), BannerMode, MultibmSubmissionVariation, MultibmTemplate (+5 more)

### Community 15 - "Project Memory Notes"
Cohesion: 0.12
Nodes (5): Every automatic free-form send must pass the shared guard, Inbound API-service campaigns require a template, Multi-BM monitoring & alerts (Task #337), Safe date formatting, SSRF guard for user-supplied URL fetches

### Community 16 - "Sender Profile and Notices UI"
Cohesion: 0.07
Nodes (37): ACCEPTED_MIMES, profileFormSchema, ProfileFormValues, ProfileResponse, SenderProfileSheetProps, Alert, AlertDescription, AlertTitle (+29 more)

### Community 17 - "Infobip Sender Storage"
Cohesion: 0.07
Nodes (4): InfobipSender, InsertInfobipSender, InsertSenderAssignment, SenderAssignment

### Community 18 - "Sidebar Layout UI"
Cohesion: 0.11
Nodes (34): AppSidebar(), ROLE_ICON, ResizableHandle(), ResizablePanelGroup(), Sidebar(), SidebarContent(), SidebarContext, SidebarContextProps (+26 more)

### Community 19 - "Campaign Storage Methods"
Cohesion: 0.08
Nodes (5): Campaign, Contact, InsertCampaign, InsertContact, UpdateCampaign

### Community 20 - "CLAUDE.md Documentation"
Cohesion: 0.06
Nodes (31): Agendamento de Campanhas, Agente de IA (Respostas Automáticas a Mensagens Recebidas / MO), Ambiente atual (Claude Code / servidor dedicado), API Token por Serviço (API de entrada), Armazenamento de mídia, Arquitetura, Atribuição por sender (não por BM), Comandos úteis (+23 more)

### Community 21 - "Multi-BM Validated Templates UI"
Cohesion: 0.13
Nodes (18): BmAssignment, BmDetail, BmSender, BmWithSenders, BusinessManager, clientLabel(), ClientSenderAssignments, ClientSummaryRow (+10 more)

### Community 22 - "WABA Template Storage"
Cohesion: 0.08
Nodes (4): InsertTemplateAccountPreset, InsertWabaTemplate, TemplateAccountPreset, WabaTemplate

### Community 23 - "Auth Middleware and Checknumber"
Cohesion: 0.11
Nodes (25): express, express-session, hashPassword(), requireAdmin(), requireAuth(), requireUserManager(), SessionData, verifyPassword() (+17 more)

### Community 24 - "HubSpot Auth and Timeline"
Cohesion: 0.11
Nodes (25): getHubspotOAuthConfig(), getValidAccessToken(), HubSpotAuthError, hubspotRefreshLocks, buildEventTemplateDefinition(), buildOnsmsLink(), getDeveloperConfig(), getPublicBaseUrl() (+17 more)

### Community 25 - "AI Agent Orchestration"
Cohesion: 0.07
Nodes (36): ProfileResponse, buildProfileSection(), buildSystemPrompt(), handleInboundMessage(), InboundMessage, normalizeForMatch(), selectKnowledge(), AiChatTurn (+28 more)

### Community 26 - "Background Dispatch Workers"
Cohesion: 0.15
Nodes (19): ClientCallbackContact, ClientCallbackPayload, isClientCallbackUrlSafe(), sendClientCallback(), dispatchHubspotMessageStandalone(), DispatchStandaloneResult, buildSendButtonsPayload(), enviarMensagemTemplate() (+11 more)

### Community 27 - "Server Bootstrap and Blocklist"
Cohesion: 0.10
Nodes (20): app, http, httpServer, IncomingMessage, Issue, pgPool, PgStore, applyBlocklist() (+12 more)

### Community 28 - "Campaign Chat UI"
Cohesion: 0.08
Nodes (37): BusinessManager, countVars(), EditorForm, emptyForm, HeaderChoice, statusBadge(), ValidatedButton, ValidatedTemplate (+29 more)

### Community 29 - "Multi-BM Dispatch Logic"
Cohesion: 0.10
Nodes (29): countBodyPlaceholders(), deriveTemplate(), dispatchMultibmCampaign(), finalizarCampanhaMultibm(), inFlightCampaigns, isTerminalMultibmStatus(), MultibmDispatchResult, PoolSender (+21 more)

### Community 30 - "DB Cleanup and Seed Scripts"
Cohesion: 0.11
Nodes (21): main(), cleanupApiCampaignOrphanMedia(), CleanupReport, CleanupRow, MEDIA_DIR, safeUnlink(), db, pool (+13 more)

### Community 31 - "replit.md Documentation"
Cohesion: 0.07
Nodes (26): AI Agent (Automatic WhatsApp Replies), API Configuration, API Token per Service (Inbound API), Atribuição por sender (não por BM), Company Profile (Task #4), Core Technologies, Data Models and SaaS Module, External Dependencies (+18 more)

### Community 32 - "User and Sender Assignment Storage"
Cohesion: 0.09
Nodes (6): UserWithServices, BmClientAssignment, InsertService, InsertUser, Service, User

### Community 33 - "Multi-BM Submission Storage"
Cohesion: 0.10
Nodes (4): MultibmPhysicalSubmission, MultibmTemplateSubmissionWithBm, InsertMultibmTemplateSubmission, MultibmTemplateSubmission

### Community 34 - "Admin Logs UI"
Cohesion: 0.15
Nodes (14): fmt(), HubspotRow, HubspotTab(), InfobipRow, InfobipTab(), LogSource, ORIGIN_COLORS, OUTCOME_COLORS (+6 more)

### Community 35 - "Media Storage Utilities"
Cohesion: 0.15
Nodes (21): assertPublicHost(), deleteMediaObject(), DownloadedMedia, downloadMediaBuffer(), downloadMediaFromUrl(), ensureMediaDir(), extFromMime(), getUploadDir() (+13 more)

### Community 36 - "RCS API Client"
Cohesion: 0.14
Nodes (17): buildPayload(), mapSuggestions(), RcsCard, RcsSendBasicParams, RcsSendParams, RcsSendResult, RcsSendSingleCardParams, RcsSendSingleMediaParams (+9 more)

### Community 37 - "TypeScript Configuration"
Cohesion: 0.10
Nodes (19): compilerOptions, allowImportingTsExtensions, baseUrl, esModuleInterop, incremental, jsx, lib, module (+11 more)

### Community 38 - "Menubar UI Component"
Cohesion: 0.12
Nodes (11): Menubar, MenubarCheckboxItem, MenubarContent, MenubarItem, MenubarLabel, MenubarRadioItem, MenubarSeparator, MenubarShortcut() (+3 more)

### Community 39 - "Shadcn UI Config"
Cohesion: 0.12
Nodes (16): aliases, components, hooks, lib, ui, utils, rsc, $schema (+8 more)

### Community 40 - "Sidebar and Branding Context"
Cohesion: 0.32
Nodes (7): applyPrimaryColor(), BrandingConfig, BrandingContext, BrandingContextValue, BrandingProvider(), DEFAULT_BRANDING, hexToHsl()

### Community 41 - "Toast and Notice System"
Cohesion: 0.11
Nodes (25): BusinessManager, CATEGORIA_LABELS, ClusterSignature, countVars(), emptyForm, hasQuickReply(), HEADER_TYPES, HeaderMarker (+17 more)

### Community 42 - "Chart UI Component"
Cohesion: 0.12
Nodes (13): useCarousel(), ChartConfig, ChartContainer, ChartContext, ChartContextProps, ChartLegendContent, ChartTooltipContent, THEMES (+5 more)

### Community 43 - "HubSpot Action Sync"
Cohesion: 0.19
Nodes (13): checkHubspotActionSync(), currentHash, HubspotActionSyncState, HubspotActionSyncStatus, state, buildExpectedCanonicalShape(), CanonicalActionShape, CanonicalDependency (+5 more)

### Community 45 - "Button, Calendar, Pagination UI"
Cohesion: 0.16
Nodes (12): ButtonProps, buttonVariants, Calendar(), CalendarProps, Pagination(), PaginationContent, PaginationEllipsis(), PaginationItem (+4 more)

### Community 46 - "Multi-BM Template Storage"
Cohesion: 0.27
Nodes (3): MultibmTemplateWithSubmissions, InsertMultibmTemplate, MultibmTemplate

### Community 49 - "Carousel UI Component"
Cohesion: 0.15
Nodes (12): Carousel, CarouselApi, CarouselContent, CarouselContext, CarouselContextProps, CarouselItem, CarouselNext, CarouselOptions (+4 more)

### Community 50 - "Chip Provisioning Clients"
Cohesion: 0.23
Nodes (12): apiGet(), getNumber(), GetNumberError, GetNumberResult, getStatus(), GetStatusResult, setStatus(), storage (+4 more)

### Community 51 - "Multi-BM Health Sync"
Cohesion: 0.24
Nodes (12): InfobipSenderFromApi, listarSendersFromApi(), diagnoseMultibmForService(), MultibmDiagnosticItem, MultibmDiagnosticKind, MultibmDiagnosticsResult, MultibmHealthSyncResult, normalizeNumber() (+4 more)

### Community 52 - "Business Manager Storage"
Cohesion: 0.19
Nodes (3): BusinessManagerWithStats, BusinessManager, InsertBusinessManager

### Community 56 - "Multi-BM Dashboard UI"
Cohesion: 0.16
Nodes (7): ICON, NoticeBanner(), NoticeBannerProps, VARIANT, useNotices(), InsertSystemNotice, SystemNotice

### Community 57 - "Toast UI Component"
Cohesion: 0.24
Nodes (10): Toast, ToastAction, ToastActionElement, ToastClose, ToastDescription, ToastProps, ToastTitle, toastVariants (+2 more)

### Community 63 - "Multi-BM Webhook Tests"
Cohesion: 0.18
Nodes (8): buildApp(), createCalls, deleteCalls, infobipState, listCalls, sessionState, storageHandlers, storageState

### Community 64 - "Error Boundary Component"
Cohesion: 0.13
Nodes (5): ErrorBoundary, ErrorBoundaryProps, ErrorBoundaryState, ObjectUploaderProps, IMPORTANT: This receives the file object - use file.name, file.size, file.type

### Community 65 - "Command Palette UI"
Cohesion: 0.20
Nodes (8): Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut()

### Community 66 - "Context Menu UI"
Cohesion: 0.20
Nodes (9): ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut(), ContextMenuSubContent (+1 more)

### Community 67 - "Dropdown Menu UI"
Cohesion: 0.20
Nodes (9): DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut(), DropdownMenuSubContent (+1 more)

### Community 72 - "Multi-BM Template Cluster Tests"
Cohesion: 0.18
Nodes (11): Como retomar isto numa sessão nova, ⚠️ CONFLITOS/LACUNAS mapeados no código atual (resolver na implementação), Contexto e decisão do dono (redesenho — substitui uma proposta anterior de, Guardrails, Modelo definido pelo dono, Multi-BM sidebar + HubSpot compatibility — pending, not yet implemented, Ordem recomendada de execução, PARTE A — UX: Multi-BM na barra lateral com sub-itens (+3 more)

### Community 73 - "Multi-BM Template Sync Tests"
Cohesion: 0.20
Nodes (7): buildApp(), db, infobipState, sessionState, storageHandlers, Sub, Tpl

### Community 74 - "HubSpot Diagnostics UI"
Cohesion: 0.12
Nodes (18): Action, ActionType, actionTypes, listeners, memoryState, State, ToasterToast, toastTimeouts (+10 more)

### Community 75 - "Activity Log Storage"
Cohesion: 0.28
Nodes (4): inferActivityLogOrigin(), ActivityLog, ActivityLogOrigin, InsertActivityLog

### Community 76 - "Breadcrumb UI Component"
Cohesion: 0.25
Nodes (7): Breadcrumb, BreadcrumbEllipsis(), BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator()

### Community 77 - "Drawer UI Component"
Cohesion: 0.25
Nodes (6): DrawerContent, DrawerDescription, DrawerFooter(), DrawerHeader(), DrawerOverlay, DrawerTitle

### Community 78 - "Navigation Menu UI"
Cohesion: 0.25
Nodes (7): NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuList, NavigationMenuTrigger, navigationMenuTriggerStyle, NavigationMenuViewport

### Community 79 - "Sheet UI Component"
Cohesion: 0.22
Nodes (8): SheetContent, SheetContentProps, SheetDescription, SheetFooter(), SheetHeader(), SheetOverlay, SheetTitle, sheetVariants

### Community 80 - "Account Service Balance Storage"
Cohesion: 0.18
Nodes (10): Achados da análise (já verificados no código — corrigir nesta ordem), ALTO, Como retomar isto numa sessão nova, Contexto, CRÍTICO, Entregável, Guardrails, MÉDIO (+2 more)

### Community 85 - "Vendor Mask Exposure Tests"
Cohesion: 0.25
Nodes (5): buildApp(), EnviarFn, fetchCalls, HubSpotAuthError, storageState

### Community 86 - "Toggle UI Components"
Cohesion: 0.33
Nodes (5): ToggleGroup, ToggleGroupContext, ToggleGroupItem, Toggle, toggleVariants

### Community 87 - "File Upload Hook"
Cohesion: 0.38
Nodes (6): IMPORTANT: This function receives the UppyFile object from Uppy., IMPORTANT: Send JSON metadata, NOT the file itself., UploadMetadata, UploadResponse, useUpload(), UseUploadOptions

### Community 88 - "Multi-BM Validated Template Storage"
Cohesion: 0.29
Nodes (6): AI inbound (MO) attribution depends on dispatch-time ownership, MO attribution must cover BOTH dispatch tracks (WA OFICIAL + Multi-BM), MO dedupe must be DB-atomic, and empty ids must be null, Per-dispatch reply cap: conversation lookup must include LIMIT_REACHED, Persist the inbound BEFORE any no-send gate; exclude it from prompt history by row id, Reply-window is measured from the latest inbound USER message, not the dispatch

### Community 90 - "Template Media Storage"
Cohesion: 0.07
Nodes (44): xlsx, AiProvider, InfobipTemplateCreate, TemplateButton, bodyStartsOrEndsWithVariable(), ButtonLike, ContactWithParams, containsPlaceholder() (+36 more)

### Community 93 - "OTP Input UI Component"
Cohesion: 0.33
Nodes (5): InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, input-otp

### Community 100 - "HubSpot Workflow Action Tests"
Cohesion: 0.33
Nodes (4): buildApp(), enviarCalls, EnviarMensagemArgs, storageState

### Community 101 - "Toast Notification State"
Cohesion: 0.50
Nodes (5): addToRemoveQueue(), dispatch(), genId(), reducer(), Toast

### Community 105 - "Object Uploader Component"
Cohesion: 0.38
Nodes (5): extFromMime(), getTemplateMediaDir(), PUBLIC_BASE_URL, safeDeleteTemplateMedia(), uploadTemplateMediaToObjectStorage()

### Community 106 - "Avatar UI Component"
Cohesion: 0.27
Nodes (4): Avatar, AvatarFallback, AvatarImage, HoverCardContent

### Community 107 - "HubSpot Action Registration"
Cohesion: 0.50
Nodes (3): baseTrimmed, definition, isUpdate

### Community 108 - "Sender Stats Queries"
Cohesion: 0.29
Nodes (5): db, dispatch(), storageHandlers, Sub, tpl()

### Community 111 - "User & Service Queries"
Cohesion: 0.40
Nodes (4): Multi-BM template fallback (T09) & per-second throttle (T01), Per-second throttle, Retry is intentionally absent, Template fallback resolution

### Community 112 - "Template Preset Storage"
Cohesion: 0.50
Nodes (3): Do NOT migrate to `exceljs` as a drop-in replacement, Remediating the `xlsx` (SheetJS) npm advisory, The fix

### Community 116 - "Output Sanitization"
Cohesion: 0.22
Nodes (7): buildApp(), criarCalls, handlers, infobipState, sessionState, St, validBody

### Community 132 - "vendor-mask.ts"
Cohesion: 0.83
Nodes (3): RESTRICTED_ROLES, scrubVendor(), scrubVendorForRole()

## Knowledge Gaps
- **812 isolated node(s):** `ObjectUploaderProps`, `profileFormSchema`, `ProfileFormValues`, `ProfileResponse`, `SenderProfileSheetProps` (+807 more)
  These have ≤1 connection - possible missing edges or undocumented components.
- **42 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.

## Suggested Questions
_Questions this graph is uniquely positioned to answer:_

- **Why does `registerRoutes()` connect `Template Media Storage` to `Roles and Permissions`, `Schema Status Enums`, `Account Management Page`, `Infobip API Integration`, `Auth Middleware and Checknumber`, `HubSpot Auth and Timeline`, `AI Agent Orchestration`, `Background Dispatch Workers`, `Server Bootstrap and Blocklist`, `Multi-BM Dispatch Logic`, `DB Cleanup and Seed Scripts`, `Media Storage Utilities`, `RCS API Client`, `HubSpot Action Sync`, `Chip Provisioning Clients`, `Multi-BM Health Sync`, `Email Alert Mailer`, `Object Uploader Component`, `Sender Stats Queries`?**
  _High betweenness centrality (0.143) - this node is a cross-community bridge._
- **Why does `dependencies` connect `NPM Runtime Dependencies` to `Chart UI Component`, `Build Tooling Dependencies`, `Auth Middleware and Checknumber`, `Template Media Storage`, `OTP Input UI Component`?**
  _High betweenness centrality (0.130) - this node is a cross-community bridge._
- **Why does `IStorage` connect `Storage Interface Methods` to `Database Storage Implementation`, `TemplateGeneratorConfig`, `Reporting and Monitoring Types`, `Infobip Sender Storage`, `Campaign Storage Methods`, `WABA Template Storage`, `AI Agent Orchestration`, `User and Sender Assignment Storage`, `Multi-BM Submission Storage`, `Branding Storage Methods`, `Multi-BM Template Storage`, `Infobip Config Storage`, `WABA Message Storage`, `Business Manager Storage`, `HubSpot Dispatch Queue Storage`, `AI Conversation Storage`, `WA Filter Batch Storage`, `Multi-BM Dashboard UI`, `BM Sender Storage`, `Chip Activation Storage`, `HubSpot Connection Storage`, `RCS Sender Storage`, `API Token Storage`, `Knowledge Base Storage`, `Multi-BM Message Storage`, `RCS Config Storage`, `RCS Message Storage`, `Activity Log Storage`, `HubSpot Execute Diagnostics`, `Blocklist Term Storage`, `Status Mapping Storage`, `AI Client Settings Storage`, `API Settings Storage`, `Multi-BM Marketing Dispatch Tests`, `Column Keyword Storage`, `Two-Stage Campaign Config Storage`, `AI Agent Config Storage`, `HubSpot Alert Config Storage`, `Multi-BM Alert Config Storage`, `Multi-BM Config Storage`, `AI Conversation Messages`, `HubSpot Timeline Template Storage`, `HubSpot Alert State`, `Credit Transactions`?**
  _High betweenness centrality (0.119) - this node is a cross-community bridge._
- **Are the 6 inferred relationships involving `registerRoutes()` (e.g. with `displayName()` and `requireAdmin()`) actually correct?**
  _`registerRoutes()` has 6 INFERRED edges - model-reasoned connections that need verification._
- **What connects `ObjectUploaderProps`, `IMPORTANT: This receives the file object - use file.name, file.size, file.type`, `profileFormSchema` to the rest of the system?**
  _816 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Storage Interface Methods` be split into smaller, more focused modules?**
  _Cohesion score 0.017857142857142856 - nodes in this community are weakly interconnected._
- **Should `Database Storage Implementation` be split into smaller, more focused modules?**
  _Cohesion score 0.019592163134746102 - nodes in this community are weakly interconnected._