# Graph Report - /home/claude/Developer/groupanel-v2 (2026-05-02) ## Corpus Check - Large corpus: 1060 files · ~669,388 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only. ## Summary - 2612 nodes · 2383 edges · 70 communities detected - Extraction: 81% EXTRACTED · 19% INFERRED · 0% AMBIGUOUS · INFERRED: 451 edges (avg confidence: 0.8) - Token cost: 0 input · 0 output ## Community Hubs (Navigation) - [[_COMMUNITY_Convex Backend Core|Convex Backend Core]] - [[_COMMUNITY_Admin Group Creation|Admin Group Creation]] - [[_COMMUNITY_Form Handlers UI|Form Handlers UI]] - [[_COMMUNITY_Bulk Operations & Delivery|Bulk Operations & Delivery]] - [[_COMMUNITY_Project Documentation|Project Documentation]] - [[_COMMUNITY_Automation Rules & Access|Automation Rules & Access]] - [[_COMMUNITY_Performance Documentation|Performance Documentation]] - [[_COMMUNITY_UAZAPIWhatsApp Integration|UAZAPI/WhatsApp Integration]] - [[_COMMUNITY_Bulk Members State Hooks|Bulk Members State Hooks]] - [[_COMMUNITY_Groups & Messages Backend|Groups & Messages Backend]] - [[_COMMUNITY_Pipeline & Notifications|Pipeline & Notifications]] - [[_COMMUNITY_Page Rendering & Error Boundaries|Page Rendering & Error Boundaries]] - [[_COMMUNITY_Connection Dialogs|Connection Dialogs]] - [[_COMMUNITY_DateTimezone Utilities|Date/Timezone Utilities]] - [[_COMMUNITY_E2E Groups Page Object|E2E Groups Page Object]] - [[_COMMUNITY_Jobs Subscriber & Route Guards|Jobs Subscriber & Route Guards]] - [[_COMMUNITY_Error Recovery|Error Recovery]] - [[_COMMUNITY_Logger & Edge Dispatch|Logger & Edge Dispatch]] - [[_COMMUNITY_Landing Page Assets|Landing Page Assets]] - [[_COMMUNITY_Contacts CSV Export|Contacts CSV Export]] - [[_COMMUNITY_Contribution Workflow|Contribution Workflow]] - [[_COMMUNITY_Brand Identity|Brand Identity]] - [[_COMMUNITY_CSV Phone Validation|CSV Phone Validation]] - [[_COMMUNITY_Money & UI Formatting|Money & UI Formatting]] - [[_COMMUNITY_Feature Entitlements|Feature Entitlements]] - [[_COMMUNITY_Security & Hashing|Security & Hashing]] - [[_COMMUNITY_Capability Badges|Capability Badges]] - [[_COMMUNITY_Schedule Helpers|Schedule Helpers]] - [[_COMMUNITY_E2E Login Page Object|E2E Login Page Object]] - [[_COMMUNITY_Community 30|Community 30]] - [[_COMMUNITY_Community 31|Community 31]] - [[_COMMUNITY_Community 32|Community 32]] - [[_COMMUNITY_Community 33|Community 33]] - [[_COMMUNITY_Community 34|Community 34]] - [[_COMMUNITY_Community 35|Community 35]] - [[_COMMUNITY_Community 36|Community 36]] - [[_COMMUNITY_Community 37|Community 37]] - [[_COMMUNITY_Community 38|Community 38]] - [[_COMMUNITY_Community 39|Community 39]] - [[_COMMUNITY_Community 40|Community 40]] - [[_COMMUNITY_Community 41|Community 41]] - [[_COMMUNITY_Community 42|Community 42]] - [[_COMMUNITY_Community 43|Community 43]] - [[_COMMUNITY_Community 49|Community 49]] - [[_COMMUNITY_Community 52|Community 52]] - [[_COMMUNITY_Community 53|Community 53]] - [[_COMMUNITY_Community 57|Community 57]] - [[_COMMUNITY_Community 58|Community 58]] - [[_COMMUNITY_Community 59|Community 59]] - [[_COMMUNITY_Community 61|Community 61]] - [[_COMMUNITY_Community 66|Community 66]] - [[_COMMUNITY_Community 67|Community 67]] - [[_COMMUNITY_Community 69|Community 69]] - [[_COMMUNITY_Community 74|Community 74]] - [[_COMMUNITY_Community 75|Community 75]] - [[_COMMUNITY_Community 77|Community 77]] - [[_COMMUNITY_Community 78|Community 78]] - [[_COMMUNITY_Community 82|Community 82]] - [[_COMMUNITY_Community 98|Community 98]] - [[_COMMUNITY_Community 104|Community 104]] - [[_COMMUNITY_Community 105|Community 105]] - [[_COMMUNITY_Community 120|Community 120]] - [[_COMMUNITY_Community 133|Community 133]] - [[_COMMUNITY_Community 153|Community 153]] - [[_COMMUNITY_Community 165|Community 165]] - [[_COMMUNITY_Community 175|Community 175]] - [[_COMMUNITY_Community 179|Community 179]] - [[_COMMUNITY_Community 753|Community 753]] - [[_COMMUNITY_Community 754|Community 754]] - [[_COMMUNITY_Community 755|Community 755]] ## God Nodes (most connected - your core abstractions) 1. `useAuth()` - 31 edges 2. `callProviderApi()` - 30 edges 3. `dispatchAction()` - 27 edges 4. `buildResult()` - 26 edges 5. `GroupsPage` - 26 edges 6. `Database (Convex Cloud)` - 25 edges 7. `Frontend (React/Vite/TS)` - 25 edges 8. `requireAuth()` - 22 edges 9. `requireAuthToken()` - 22 edges 10. `fetch()` - 21 edges ## Surprising Connections (you probably didn't know these) - `Workflow desenvolvimento` --semantically_similar_to--> `Fluxo Branch (main/feature/fix)` [INFERRED] [semantically similar] docs/WORKFLOW.md → CONTRIBUTING.md - `campaign-invite HTTP Action` --semantically_similar_to--> `convex/http.ts (webhook receiver)` [INFERRED] [semantically similar] docs/SHORT-LINKS.md → CLAUDE.md - `GitHub Actions CI` --semantically_similar_to--> `GitHub Actions deploy.yml` [INFERRED] [semantically similar] docs/TESTING.md → CLAUDE.md - `Sentry preconnect` --semantically_similar_to--> `src/lib/sentry.ts` [INFERRED] [semantically similar] index.html → docs/FRONTEND.md - `sentry chunk (255 kB)` --semantically_similar_to--> `Sentry preconnect` [INFERRED] [semantically similar] docs/PERFORMANCE-BASELINE.md → index.html ## Hyperedges (group relationships) - **Convex Self-Hosted Production Stack** — docker_compose_convex_backend, docker_compose_convex_dashboard, claude_md_convex_self_hosted_prod, claude_md_dashboard_prod, claude_md_github_actions_deploy, claude_md_vercel_prod [EXTRACTED 1.00] - **Global Contacts unified schema** — database_table_contacts_master, database_table_contact_accounts, database_view_v_global_contacts, database_function_ensure_contact, database_function_rebuild_fast, roadmap_global_contacts_migration [EXTRACTED 1.00] - **Campaign short link redirect flow** — shortlinks_grpnl_link_domain, shortlinks_http_action_campaign_invite, shortlinks_table_campaign_slugs, shortlinks_table_campaign_groups, shortlinks_table_campaign_activities, shortlinks_component_invite_page [EXTRACTED 1.00] - **Security hardening release 2026-04-21 (PBKDF2 rehash + replay protection + Sentry + healthReport + version tags)** — [INFERRED] - **WhatsApp provider integration stack (UAZAPI/Evolution + actions + normalizers)** — [INFERRED] - **Campaign invite flow (short link -> resolver -> group selector -> auto-create)** — [INFERRED] ## Communities ### Community 0 - "Convex Backend Core" Cohesion: 0.01 Nodes (33): asaasRequest(), getAsaasConfig(), fetchConnectionState(), fetchProfilePicUrl(), sanitizeBaseUrl(), callGroupEditApi(), checkConnection(), callUpdateParticipant() (+25 more) ### Community 1 - "Admin Group Creation" Cohesion: 0.03 Nodes (45): AdminHeader(), TemplateSelector(), GroupCreationWizard(), AuthGuard(), SuperAdminGuard(), UserGuard(), useAuthFlow(), useBulkScheduleActions() (+37 more) ### Community 2 - "Form Handlers UI" Cohesion: 0.03 Nodes (36): confirmLeaveGroup(), handleSave(), getParticipantToastId(), handleRemoveFromAllGroups(), handleRemoveFromSingleGroup(), loadCommonGroups(), handleSearch(), handleAvatarUpload() (+28 more) ### Community 3 - "Bulk Operations & Delivery" Cohesion: 0.03 Nodes (39): BulkEditLayout(), DeliveryReportDashboard(), getParticipantLabels(), useAiAssistant(), useAnalytics(), useAutomationRules(), useBulkGroupEditActions(), useBulkGroupEditState() (+31 more) ### Community 4 - "Project Documentation" Cohesion: 0.03 Nodes (76): convex/actions/, convex/auth.ts (PBKDF2), convex/crons.ts, convex/http.ts (webhook receiver), convex/schema.ts (63 tabelas), groupanel.convex.hdbr.studio, convex/storage.ts, dash.groupanel.convex.hdbr.studio (+68 more) ### Community 5 - "Automation Rules & Access" Cohesion: 0.05 Nodes (51): requireRuleAccess(), filterAccessibleConfigs(), getAccessibleConfigSet(), assertGroupJidAccess(), assertGroupJidAccess(), requireConfigAccessByStringId(), cancelStuckSyncsImpl(), createBulkRemoveJobImpl() (+43 more) ### Community 6 - "Performance Documentation" Cohesion: 0.05 Nodes (58): Audit Cleanup 2026-01-27, commit 48ccb794, 9 duplicate indexes removed, 5 missing FK indexes created, get_groups_page_data fix, Supabase prod pjgeswtptdejmcgnyoct, pg_cron, pg_graphql (+50 more) ### Community 7 - "UAZAPI/WhatsApp Integration" Cohesion: 0.05 Nodes (49): ADR-001 Convex self-hosted no Guzz, ADR-002 Auth custom (PBKDF2), ADR-003 Dual-provider UAZAPI + Evolution, ADR-004 Stripe + Asaas em paralelo, ADR-005 Dual-scheduler de scheduledMessages, ADR-006 PBKDF2 rehash 100k -> 600k, ADR-007 Replay protection idempotencyKeys, ADR-008 Sentry backend via Envelope API (+41 more) ### Community 8 - "Bulk Members State Hooks" Cohesion: 0.05 Nodes (19): BulkMembersLayout(), useBulkMembersActions(), useBulkMembersState(), useBulkScheduleState(), useCommunityDetailActions(), useCommunityDetailState(), useGlobalContactsData(), useGroupDetailActions() (+11 more) ### Community 9 - "Groups & Messages Backend" Cohesion: 0.14 Nodes (36): handleCreateGroup(), handleFetchAllGroups(), handleFetchGroupInfo(), handleLeaveGroup(), handleUpdateGroupDescription(), handleUpdateGroupPicture(), handleUpdateGroupSetting(), handleUpdateGroupSubject() (+28 more) ### Community 10 - "Pipeline & Notifications" Cohesion: 0.06 Nodes (42): Deal Tracking, Group Synchronization, Lead Management, Metrics Panel, Multi-instance WhatsApp, Notifications Center, Recurring Messaging, Sales Pipeline (+34 more) ### Community 11 - "Page Rendering & Error Boundaries" Cohesion: 0.06 Nodes (16): MessagesErrorBoundary, useMessagesForConfig(), useGroupsAnimation(), useGroupsData(), useGroupsPage(), useGroupsRealtime(), useGroupsState(), useGroupsSync() (+8 more) ### Community 12 - "Connection Dialogs" Cohesion: 0.09 Nodes (21): confirmDelete(), handleSave(), handleTestConnection(), refreshServerInstanceCounts(), testConnection(), toggleActive(), handleConfirmChanges(), handleSave() (+13 more) ### Community 13 - "Date/Timezone Utilities" Cohesion: 0.09 Nodes (17): calculateEstimatedTime(), generateGroupName(), previewGroupNames(), calculateNextScheduleWithTimezone(), formatDate(), formatDateTime(), formatInUserTimezone(), formatShortDateTime() (+9 more) ### Community 14 - "E2E Groups Page Object" Cohesion: 0.08 Nodes (1): GroupsPage ### Community 15 - "Jobs Subscriber & Route Guards" Cohesion: 0.08 Nodes (10): JobsConvexSubscriber(), FeatureRouteGuard(), useBatchAggregator(), useBulkJobProgress(), useFeature(), useProgressNotifications(), useProgressSubscriptions(), GlobalProgressManager() (+2 more) ### Community 16 - "Error Recovery" Cohesion: 0.1 Nodes (15): clearStaleConfigAndReload(), ErrorFallback(), isChunkLoadError(), isStaleConfigError(), SectionErrorBoundary, tryAutoClearStaleConfig(), tryAutoReloadForChunkError(), logAppError() (+7 more) ### Community 17 - "Logger & Edge Dispatch" Cohesion: 0.13 Nodes (20): dispatchEvent(), invokeEdgeFunction(), triggerBulkGroupCreateJob(), triggerBulkGroupEditJob(), triggerBulkMemberBatch(), triggerBulkMemberJob(), triggerRecurringMessageSchedule(), triggerScheduledMessage() (+12 more) ### Community 18 - "Landing Page Assets" Cohesion: 0.15 Nodes (22): addons, admin_sidebar_nav, billing_plans, can_access_feature, entitlements_table, extra_instances, manual_overrides, plan_features_list (+14 more) ### Community 19 - "Contacts CSV Export" Cohesion: 0.1 Nodes (4): contactsToCSV(), exportContacts(), generateExportFilename(), handleExport() ### Community 20 - "Contribution Workflow" Cohesion: 0.11 Nodes (20): docs/BOUNTIES.md, Fluxo Branch (main/feature/fix), CODEOWNERS, Conventional Commits, Governança Groupanel, HDBR Studios, npm run build, npm run check (+12 more) ### Community 21 - "Brand Identity" Cohesion: 0.14 Nodes (19): Blue Brand Color #3b82f6, Two Overlapping Chat Bubbles Icon, Groupanel Favicon SVG, Messaging / Group Conversation Concept, Rounded Blue Square Background, Primary CTA 'Comecar gratis', Secondary CTA 'Ver como funciona', CTA Button 'Entrar' (+11 more) ### Community 22 - "CSV Phone Validation" Cohesion: 0.17 Nodes (9): getMappedValue(), downloadErrorReport(), generateErrorReportCSV(), validateImportRows(), validatePhone(), formatPhoneForDisplay(), normalizePhone(), phonesMatch() (+1 more) ### Community 23 - "Money & UI Formatting" Cohesion: 0.15 Nodes (6): handleClose(), handleClose(), handleConfirm(), reset(), stripePriceIdFor(), handleClose() ### Community 24 - "Feature Entitlements" Cohesion: 0.25 Nodes (10): canAccessFeature(), checkFeature(), getMaxInstances(), getTier(), hasAddon(), overrideFor(), requireFeature(), resolveEntitlements() (+2 more) ### Community 25 - "Security & Hashing" Cohesion: 0.22 Nodes (8): generateToken(), hashPassword(), hashPiiShort(), hexEncode(), sendSignupOtpEmail(), hexEncode(), logOtpDev(), otpCodeFingerprint() ### Community 26 - "Capability Badges" Cohesion: 0.17 Nodes (4): getProviderIcon(), cn(), formatDate(), SettingsTab() ### Community 27 - "Schedule Helpers" Cohesion: 0.51 Nodes (9): addDaysInTimezone(), addMonthsInTimezone(), adjustToBusinessHours(), calculateNextSchedule(), createDateInTimezone(), getDatePartsInTimezone(), getTimezoneOffsetMs(), parseTimeString() (+1 more) ### Community 28 - "E2E Login Page Object" Cohesion: 0.18 Nodes (1): LoginPage ### Community 30 - "Community 30" Cohesion: 0.18 Nodes (3): usePreviewEntitlements(), AccessTab(), OverridesTab() ### Community 31 - "Community 31" Cohesion: 0.2 Nodes (4): useIsMobile(), CustomTimePicker(), useSidebar(), WizardFooter() ### Community 32 - "Community 32" Cohesion: 0.22 Nodes (3): AddOnEditorDialog(), centsToReais(), useUpsertAddonPrice() ### Community 33 - "Community 33" Cohesion: 0.27 Nodes (7): AdminObservability(), AdminDashboard(), useAdminActivityLogs(), useAdminHealthCheck(), useAdminMetrics(), useAdminUsers(), useAdminUserUsage() ### Community 34 - "Community 34" Cohesion: 0.36 Nodes (1): MetricsClient ### Community 35 - "Community 35" Cohesion: 0.27 Nodes (9): app_sidebar_nav, automation_history, automation_rules, crm_dashboard, crm_events, crm_pipeline, crm_tasks, instance_selector (+1 more) ### Community 36 - "Community 36" Cohesion: 0.25 Nodes (2): isInstancePhone(), phoneFromJid() ### Community 37 - "Community 37" Cohesion: 0.28 Nodes (5): buildInviteCorsHeaders(), inviteJsonResponse(), resolveInviteAllowOrigin(), verifyStripeSignature(), timingSafeEqual() ### Community 38 - "Community 38" Cohesion: 0.22 Nodes (2): PlanEditorDialog(), useUpsertPlan() ### Community 39 - "Community 39" Cohesion: 0.25 Nodes (9): Barrel exports, useConfigSelector, useDatabaseActions, JSDoc completo, Hooks Patterns, readonly props/return, useState/useActions separation, Type Exports (ReturnType) (+1 more) ### Community 40 - "Community 40" Cohesion: 0.29 Nodes (2): checkVercelCli(), pullEnv() ### Community 41 - "Community 41" Cohesion: 0.25 Nodes (3): onSubmit(), handleSubmit(), handleSubmit() ### Community 42 - "Community 42" Cohesion: 0.25 Nodes (3): AnimatedValue(), AnimatedStatValue(), useCountAnimation() ### Community 43 - "Community 43" Cohesion: 0.36 Nodes (5): handleConfigToggle(), handleCreate(), handleNext(), updateField(), validateStep() ### Community 49 - "Community 49" Cohesion: 0.33 Nodes (2): findParentPattern(), matchPattern() ### Community 52 - "Community 52" Cohesion: 0.53 Nodes (4): extractMessageMetadata(), isSentByInstance(), normalizeMessageType(), phoneFromJid() ### Community 53 - "Community 53" Cohesion: 0.47 Nodes (4): buildMsg(), formatDateBr(), reminderWindow(), shouldSendReminder() ### Community 57 - "Community 57" Cohesion: 0.33 Nodes (2): DealDetailSheet(), useActivityTimeline() ### Community 58 - "Community 58" Cohesion: 0.47 Nodes (3): createImage(), getCroppedImg(), handleCrop() ### Community 59 - "Community 59" Cohesion: 0.4 Nodes (2): getServiceIcon(), getStatusColor() ### Community 61 - "Community 61" Cohesion: 0.4 Nodes (2): handleDrop(), handleFileChange() ### Community 66 - "Community 66" Cohesion: 0.4 Nodes (6): Feature module structure (components/hooks/utils/__tests__), JSDoc templates (component/hook/util), React.memo + useMemo + useCallback patterns, Type guards, discriminated unions, readonly, Zod validation schemas, Code Examples Guide ### Community 67 - "Community 67" Cohesion: 0.7 Nodes (4): capture(), ensureDir(), login(), main() ### Community 69 - "Community 69" Cohesion: 0.5 Nodes (3): InstanceApiTypeBadge(), getProviderConfigByType(), getProviderDisplayName() ### Community 74 - "Community 74" Cohesion: 0.5 Nodes (2): createDefaultParams(), createMockGroupDetailState() ### Community 75 - "Community 75" Cohesion: 0.5 Nodes (2): validateField(), validateFields() ### Community 77 - "Community 77" Cohesion: 0.5 Nodes (2): handleConfigToggle(), updateField() ### Community 78 - "Community 78" Cohesion: 0.6 Nodes (3): nextTierUp(), suggestUpgradeFor(), tierThatIncludes() ### Community 82 - "Community 82" Cohesion: 0.67 Nodes (2): ctxNoPlans(), makeFakeCtx() ### Community 98 - "Community 98" Cohesion: 0.67 Nodes (2): handleSubmit(), resetForm() ### Community 104 - "Community 104" Cohesion: 0.5 Nodes (4): forwardRef (32 components), React 18.3.1, React 19 upgrade plan, Renovate / Dependabot ### Community 105 - "Community 105" Cohesion: 0.5 Nodes (4): Solid Green Background, Test Groupanel V2 Placeholder Image, Text 'Teste Groupanel V2', WhatsApp-style Green Brand Color ### Community 120 - "Community 120" Cohesion: 1.0 Nodes (2): createImage(), getCroppedImg() ### Community 133 - "Community 133" Cohesion: 1.0 Nodes (2): formatPhoneNumber(), getParticipantLabels() ### Community 153 - "Community 153" Cohesion: 1.0 Nodes (2): createDefaultParams(), createMockGroupDetailState() ### Community 165 - "Community 165" Cohesion: 1.0 Nodes (2): formatRecurrenceLabel(), RecurringReviewStep() ### Community 175 - "Community 175" Cohesion: 1.0 Nodes (2): escapeHtml(), formatWhatsAppText() ### Community 179 - "Community 179" Cohesion: 0.67 Nodes (3): npx convex dev --once deploy, Sempre responder em Portugues do Brasil, Codex rules ### Community 753 - "Community 753" Cohesion: 1.0 Nodes (1): npm run test:unit ### Community 754 - "Community 754" Cohesion: 1.0 Nodes (1): npm run test:e2e ### Community 755 - "Community 755" Cohesion: 1.0 Nodes (1): Tailwind v4 (defer) ## Knowledge Gaps - **120 isolated node(s):** `.env.example`, `HDBR Studios`, `Conventional Commits`, `npm run check`, `npm run build` (+115 more) These have ≤1 connection - possible missing edges or undocumented components. - **Thin community `E2E Groups Page Object`** (27 nodes): `groups.page.ts`, `GroupsPage`, `.cancelLeaveGroup()`, `.clearSearch()`, `.clickGroup()`, `.confirmLeaveGroup()`, `.constructor()`, `.getFilterCountText()`, `.getGroupCard()`, `.getToastMessage()`, `.goto()`, `.goToBulkMembers()`, `.goToRecurringMessages()`, `.goToScheduledMessages()`, `.gotoWithConfig()`, `.isEmptyState()`, `.isLoading()`, `.openLeaveGroupDialog()`, `.openTagManager()`, `.resetFilters()`, `.searchGroups()`, `.switchTab()`, `.syncGroups()`, `.syncParticipants()`, `.waitForGroupsLoad()`, `.waitForPageLoad()`, `.waitForToast()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `E2E Login Page Object`** (11 nodes): `login.page.ts`, `LoginPage`, `.constructor()`, `.getToastMessage()`, `.goto()`, `.isLoginMode()`, `.login()`, `.signup()`, `.switchToLogin()`, `.switchToSignup()`, `.waitForRedirect()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 34`** (10 nodes): `MetricsClient`, `.logApiCall()`, `.logApiCallWithConfig()`, `.logJobCompleted()`, `.logJobCreated()`, `.logJobFailed()`, `.logMessageFailed()`, `.logMessageSent()`, `.logMetric()`, `metrics-client.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 36`** (9 nodes): `webhookHelpers.ts`, `buildChangeSummary()`, `detectEventType()`, `detectProvider()`, `extractConnectionStatus()`, `extractGroupJid()`, `isGroupJid()`, `isInstancePhone()`, `phoneFromJid()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 38`** (9 nodes): `centsToReais()`, `optionalNumber()`, `PlanEditorDialog()`, `reaisToCents()`, `useDeletePlan()`, `useListPlans()`, `useUpsertPlan()`, `PlanEditorDialog.tsx`, `useAdminPlans.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 40`** (8 nodes): `createLogger()`, `logger.mjs`, `redactSensitiveData()`, `shouldLog()`, `checkVercelCli()`, `sync-env.mjs`, `pullEnv()`, `showHelp()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 49`** (7 nodes): `buildHref()`, `findParentPattern()`, `findSection()`, `getRouteLabel()`, `matchPattern()`, `useBreadcrumbs()`, `useBreadcrumbs.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 57`** (6 nodes): `DealDetailSheet()`, `formatCurrency()`, `formatPhone()`, `useActivityTimeline()`, `DealDetailSheet.tsx`, `useActivityTimeline.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 59`** (6 nodes): `OverviewTab.tsx`, `getOverallStatus()`, `getOverallStatusColor()`, `getServiceIcon()`, `getStatusBadgeVariant()`, `getStatusColor()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 61`** (6 nodes): `handleClick()`, `handleDragLeave()`, `handleDragOver()`, `handleDrop()`, `handleFileChange()`, `AvatarUpload.tsx` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 74`** (5 nodes): `useMessaging.test.ts`, `createDefaultParams()`, `createMockFile()`, `createMockGroupDetailState()`, `createMockParticipant()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 75`** (5 nodes): `getInitialValues()`, `useProviderForm()`, `validateField()`, `validateFields()`, `useProviderForm.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 77`** (5 nodes): `index.tsx`, `handleClose()`, `handleConfigToggle()`, `handleCreate()`, `updateField()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 82`** (4 nodes): `entitlements.test.ts`, `ctxNoPlans()`, `makeFakeCtx()`, `makeProfile()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 98`** (4 nodes): `handleSubmit()`, `resetForm()`, `showNew()`, `SecuritySection.tsx` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 120`** (3 nodes): `createImage()`, `getCroppedImg()`, `ImageEditorModal.tsx` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 133`** (3 nodes): `participant-card.tsx`, `formatPhoneNumber()`, `getParticipantLabels()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 153`** (3 nodes): `useGroupDetailActions.test.ts`, `createDefaultParams()`, `createMockGroupDetailState()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 165`** (3 nodes): `formatRecurrenceLabel()`, `RecurringReviewStep()`, `RecurringReviewStep.tsx` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 175`** (3 nodes): `escapeHtml()`, `formatWhatsAppText()`, `whatsapp-formatter.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 753`** (1 nodes): `npm run test:unit` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 754`** (1 nodes): `npm run test:e2e` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 755`** (1 nodes): `Tailwind v4 (defer)` Too small to be a meaningful cluster - may be noise or needs more connections extracted. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ - **Why does `fetch()` connect `Convex Backend Core` to `Security & Hashing`, `Form Handlers UI`, `Groups & Messages Backend`, `Admin Group Creation`?** _High betweenness centrality (0.045) - this node is a cross-community bridge._ - **Why does `useAuth()` connect `Admin Group Creation` to `Bulk Members State Hooks`, `Bulk Operations & Delivery`?** _High betweenness centrality (0.040) - this node is a cross-community bridge._ - **Why does `requireAuthToken()` connect `Form Handlers UI` to `Admin Group Creation`, `Connection Dialogs`?** _High betweenness centrality (0.039) - this node is a cross-community bridge._ - **Are the 30 inferred relationships involving `useAuth()` (e.g. with `useGroupCreationActions()` and `AppSidebarShell()`) actually correct?** _`useAuth()` has 30 INFERRED edges - model-reasoned connections that need verification._ - **Are the 28 inferred relationships involving `callProviderApi()` (e.g. with `handleFetchAllGroups()` and `handleFetchGroupInfo()`) actually correct?** _`callProviderApi()` has 28 INFERRED edges - model-reasoned connections that need verification._ - **Are the 25 inferred relationships involving `dispatchAction()` (e.g. with `handleGetConnectionState()` and `handleConnectInstance()`) actually correct?** _`dispatchAction()` has 25 INFERRED edges - model-reasoned connections that need verification._ - **Are the 25 inferred relationships involving `buildResult()` (e.g. with `handleFetchAllGroups()` and `handleFetchGroupInfo()`) actually correct?** _`buildResult()` has 25 INFERRED edges - model-reasoned connections that need verification._