GCS Centros Estratégicos is a browser-based virtual office built with Next.js that brings the full GCS Consultores Empresariales service catalog into a single interactive experience. Visitors land in a welcoming Lobby, then navigate to one of five specialized consulting rooms — each scoped to a distinct service area. Sally, the AI virtual consultant, greets users contextually in every room, answers questions, and routes prospects toward a discovery call, a free compliance diagnostic, or a contact form. The platform is designed to be embedded directly in the GCS WordPress/DIVI website or accessed as a standalone progressive web app.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/gcsconsultores/centros-estrategicos-gcs/llms.txt
Use this file to discover all available pages before exploring further.
How It Works
VirtualOffice is the root container component that owns all shared state and wires together every sub-component. It renders the Header, the currently active room, the SallyChat side panel, and the LeadFormModal.
The four key state variables managed at this level are:
| State variable | Type | Purpose |
|---|---|---|
currentRoom | RoomId | Tracks which of the six room IDs is active |
chatHistory | SallyMessage[] | Accumulated conversation messages shown in SallyChat |
isLeadFormOpen | boolean | Controls visibility of the lead capture modal |
isChatOpen | boolean | Controls visibility of the SallyChat side panel |
leadFormContext | string | Context string (e.g. 'compliance', 'general') passed to LeadFormModal to pre-select the user’s area of interest |
handleRoomChange(room: RoomId) updates currentRoom and immediately pushes a new SallyMessage sourced from the SALLY_GREETINGS constant into chatHistory. This means Sally’s contextual greeting is ready the instant the user opens the chat panel — no extra round trip required.
Room Overview
The virtual office contains six rooms. The Lobby is the public entry point; the five consulting rooms below are the core service areas.Lobby
The public entry point. Displays a responsive grid of all available room cards and renders Sally’s animated welcome greeting. Accessible to all users regardless of role.
Sala Ejecutiva
Private. High-level meeting room for one-on-one strategy sessions with senior GCS consultants. Primary CTA is Microsoft Teams meeting scheduling.
Compliance
Public. Specialized center for ISO certifications (9001, 14001, 45001, 27001), BASC, SARLAFT, and PTEE. Offers a free compliance diagnostic accessible to any visitor.
Estrategia
Private. Co-creation lab for strategic planning, competitive analysis, process optimization, and digital transformation engagements.
Training
Private. Corporate learning academy offering bespoke training programs, workshops, professional certifications, and leadership development.
Innovación
Public. Innovation lab combining AI, data analytics, agile methodologies, and Design Thinking to prototype and deliver technology-driven solutions.
Sally Integration
Sally is the virtual AI consultant that accompanies users throughout the office. She is rendered inside aSallyChat component that slides in from the right edge of the screen using a Shadcn Sheet. Users open the panel by clicking Hablar con Sally in the Lobby hero section or the chat button in the Header.
Sally’s behavior is driven by two constants in lib/constants.ts:
SALLY_SYSTEM_PROMPT— A detailed system instruction that sets Sally’s identity, tone (professional but warm, uses “usted”), knowledge domain (ISO, BASC, SARLAFT, PTEE, strategy, training, innovation), and behavioral objectives (welcome, qualify, recommend, capture lead, schedule meeting).SALLY_GREETINGS— ARecord<RoomId, string>map that provides a unique opening message for each room. The lobby greeting fires on first load; greetings for other rooms are appended tochatHistoryautomatically when the user navigates.
VirtualOffice via the onOpenLeadForm or onRoomChange props.
Lead Capture
Any room or service interaction can trigger theLeadFormModal by calling onOpenLeadForm(context), where context is a string identifying the room or service that initiated the capture (e.g. 'compliance', 'ejecutiva', or 'general'). This context string is stored as leadFormContext state and passed to the modal so the form can pre-select the user’s area of interest.
On submission, the handler calls handleSubmitLead(data: LeadFormData), logs the captured LeadFormData, closes the modal, and adds a personalized confirmation message from Sally into the chat history. The intended production path is a POST request to /api/leads, which will relay data to a SharePoint list via Microsoft Graph.
The LeadFormData interface collects the following fields:
WordPress / DIVI Embedding
The virtual office is designed to be embedded in the existing GCS WordPress/DIVI site as a full-width iframe. Place the following snippet inside any DIVI Code Module or WordPress Custom HTML block:src to match your deployment URL and increase height if content is clipped on tall screens.
Access to private rooms (Sala Ejecutiva, Estrategia, Training) requires the authenticated user to have
role === 'consultor'. Clientes can only enter rooms whose type is 'public' (Lobby, Compliance, Innovación). Additionally, all users — regardless of role — must have eligible: true before any room is shown; users without this flag see a gate screen directing them to complete the Revisoría Fiscal evaluation at /evaluacion.