The CRM App: Your HubSpot-Style Sales Hub Inside Gato

 

Every customer relationship is a story. We make sure no chapter gets lost. Built by www.aica.to !


The CRM app in Gato is a full customer-relationship and sales pipeline tool built into the platform. It’s designed HubSpot-style: pipelines with drag-and-drop deals, contacts and companies, activities and tickets, and a dashboard — all with the same glass-morphism UI and microservice-ready architecture as the rest of Gato.

This post walks through what the app does, how it’s built, and how it’s maintained with the help of the project’s AI agents.


What the CRM App Does

The app is built as a view-based experience with clear separation of concerns:

  • Dashboard — SalesDashboard: KPIs, charts, and metrics at a glance. Background from the shared landscape system.

  • Contacts — EnhancedContactList: full contact list with deal counts; add, edit, delete contacts; link contacts to companies.

  • Companies — CompanyList: companies with counts; add, edit, delete; industry, website, address, notes.

  • Deals — Pipeline board: select a pipeline, see stages (e.g. Lead → Qualified → Proposal → Negotiation → Closed Won), drag deals between stages. Deal cards show title, value, contact; click to open DealDetailModal. Inline edit deal title on the card (Enter to save, Escape to cancel). Optional pipeline header images via the shared CoverImageBrowser.

  • Deal detail — DealDetailModal: full context (contact, value, probability, expected close date, notes). Activities and attachments live in dealDetailService. Calendar integration: set expected close date, “Add to Calendar” (syncs via calendarIntegrationService), “View in Calendar” opens the Calendar app to the linked event.

  • Activities — ActivitiesView: timeline / activity log across the CRM.

  • Tickets — TicketList: Service Hub–style support tickets.

  • Pipeline management — NewPipelineModal to create a pipeline (with default stages); NewStageModal to add a stage (title, color). PipelinesPanel lists pipelines, lets you switch, add pipeline/stage, or delete (with safe delete handling).

  • Priority deals — PriorityDealsPanel: pin deals for quick access; open from the panel.

Deals live inside pipeline stages; each pipeline has stages, each stage has deals. Contacts and companies are first-class entities; deals link to contacts via contactId. The app supports multiple pipelines and keeps deal details, activity logs, and priority pins in dedicated storage with quota and compression where needed.


Architecture: Microservice-Ready and Agent-Aware

The CRM app follows Gato’s app-per-directory pattern and is built so the UI doesn’t depend on where data lives.

  • Components — SalesDashboard, EnhancedContactList, CompanyList, PipelineBoard, PipelinesPanel, PipelineStage, DealCard, DealDetailModal, NewPipelineModal, NewStageModal, PriorityDealsPanel, ActivitiesView, ActivityLog, TicketList; plus shared CoverImageBrowser from the Kanban app for pipeline headers.

  • Services — crmService.js is the main facade: pipelines, stages, deals, contacts, companies. It calls storageService with collection keys CRM_PIPELINESCRM_DEALSCRM_CONTACTSCRM_COMPANIES (backed by gatoCrmPipelinesgatoCrmContacts, etc.). dealDetailService handles deal details, activities, attachments, and priority deals (localStorage keys like gatoCrmDealDetailsgatoCrmActivityLoggatoCrmPriorityDeals). hubspotService provides HubSpot-style entities (contacts, companies, deals, activities, tickets, etc.) with its own localStorage keys for future Sales/Service/Marketing expansion. All service methods return a consistent { success, data?, error? } shape so swapping in a real API later is straightforward.

  • Storage — Primary: storageService → backend (localStorage or Electron/PostgreSQL). Deals are stored inside pipeline stages in CRM_PIPELINES; legacy flat deals remain in CRM_DEALS for compatibility. Deal details and HubSpot-style data currently use localStorage directly; the directory brain (BRAIN.md) and data-schemas.md document this so it can be unified or migrated when needed.

So: today it’s a rich client with local (or Electron) persistence; tomorrow the same components can talk to a CRM microservice by replacing the service layer.


The PULSE Agent: Who Maintains This

The CRM app has a dedicated dir agent named PULSE — the “CRM Specialist” in Gato’s AI consulting firm.

  • Codename: PULSE

  • Workspace: src/apps/crm/dir_agent/

  • Character: Relationship-driven and data-savvy. PULSE treats CRM as the heartbeat of the business — deals move through pipelines, contacts need context, and losing track of a conversation means losing revenue. They think in deal stages, conversion rates, and customer lifecycle.

PULSE’s goals (from the agent character file) are:

  1. Pipeline management with customizable stages and drag-and-drop.

  2. Deal cards with full context (contacts, notes, value, probability).

  3. Contact management with relationship mapping.

  4. Pipeline analytics (conversion rates, deal velocity).

  5. Import/export for CRM data migration.

  6. Multi-pipeline support.

PULSE works closely with LEDGER (Invoice) for deal-to-invoice flow, SCOUT (Recruit) for shared contact patterns, FLOW (Import/Export) for CRM data migration, and TEMPO (Calendar) for activity scheduling. Calendar integration is first-class: deal close dates can sync to Calendar, and the app can open the Calendar tab to a linked event via onOpenCalendarEvent.

The agent’s memory lives in markdown under src/apps/crm/dir_agent/: a BRAIN.md (directory map, storage flow, crmService vs dealDetailService vs hubspotService), data-schemas.md (collections, entity schemas, relationships), ux-training.md (key flows and components), plus changelogs and topic docs. When PULSE “levels up,” they re-scan the codebase, refresh BRAIN and data-schemas, update UX training, and document findings so the next iteration — or a future fine-tuned model — can pick up where they left off.


Key Flows (From UX Training)

The dir agent’s UX training doc summarizes the main user journeys:

  • Dashboard: Open CRM → SalesDashboard (metrics, charts).

  • Contacts: Switch to Contacts → EnhancedContactList; load contacts and deal counts; add/edit/delete contact.

  • Companies: Switch to Companies → CompanyList; load companies and counts; add/edit company.

  • Deals / Pipeline: Switch to Deals → PipelinesPanel + PipelineBoard; select pipeline; drag deals between stages; open DealDetailModal; add/edit deal, pin priority deal; optional header image (CoverImageBrowser). Inline edit deal title on DealCard.

  • Deal close date + Calendar: In DealDetailModal, set Expected Close Date; optionally “Add to Calendar”; “View in Calendar” opens Calendar app to the linked event when onOpenCalendarEvent is provided.

  • Activities: Switch to Activities → ActivitiesView (timeline / activity log).

  • Tickets: Switch to Tickets → TicketList (Service Hub–style tickets).

  • Pipeline management: New pipeline (NewPipelineModal); add stage (NewStageModal); delete pipeline/stage via PipelinesPanel.

  • Priority deals: PriorityDealsPanel; pin/unpin deal; open from panel.

So the blog you’re reading is aligned with the same flows the agents use when they reason about the app.


Tests and How to Run Them

The CRM app is covered by integration-style tests. CRM behavior is exercised in test/crm.test.js. Run the full suite with:

npm test

So when we (or PULSE) change pipelines, deals, contacts, or storage behavior, we can confirm we didn’t break the contract.


Summary

The CRM app in Gato is a full-featured, HubSpot-style sales and relationship hub: pipelines with drag-and-drop deals, contacts and companies, activities and tickets, dashboard, and calendar integration. It’s built with a clear service boundary and storage abstraction so it can stay in the UI layer while the backend evolves from local storage to a real API. The PULSE agent owns the crm app directory, keeps BRAIN, data-schemas, and UX training up to date, and documents everything so that both humans and future AI iterations can work on it with full context.

PULSE feels the rhythm of every deal.


Sources: ai_agents/app_agents/PULSE.mdsrc/apps/crm/dir_agent/BRAIN.mdsrc/apps/crm/dir_agent/ux-training.mdsrc/apps/crm/dir_agent/data-schemas.mdsrc/apps/crm/index.jsxsrc/apps/crm/services/crmService.js, and the Gato README.

crafted by builders at www.dev3lop.com




Comments

Popular posts from this blog

Data Privacy and Security: Navigating the Digital Landscape Safely

Geospatial Tensor Analysis: Multi-Dimensional Location Intelligence

Thread-Local Storage Optimization for Parallel Data Processing