Mission Chi Siamo Prodotti Approccio
Contattaci
SISTEMA OPERATIVO // V2.1.0

Sistemi Intelligenti
Mission-Critical

AI applicata, cybersecurity, software enterprise e networking in un'unica visione ingegneristica. Progettiamo piattaforme affidabili, scalabili e governabili.

UPTIME SLA
99.95%
THREAT BLOCKED
1.2M+
LATENCY P99
<12ms
AI ACCURACY
97.8%
ZERO TRUST ARCHITECTURE
AI GOVERNANCE & MLOPS
NIS2 COMPLIANCE READY
ENGINEERING-FIRST APPROACH
MULTI-TENANT SAAS
SLA/SLO ESPLICITI
HUMAN-IN-THE-LOOP
END-TO-END SECURITY
ZERO TRUST ARCHITECTURE
AI GOVERNANCE & MLOPS
NIS2 COMPLIANCE READY
ENGINEERING-FIRST APPROACH
MULTI-TENANT SAAS
SLA/SLO ESPLICITI
HUMAN-IN-THE-LOOP
END-TO-END SECURITY
10
Prodotti SaaS
4
Aree di Competenza
500k+
Asset Monitorati
99%
Uptime Garantito

Trasformare la Complessità
in Affidabilità

La nostra missione è progettare, realizzare e gestire soluzioni digitali mission-critical che uniscono AI, cybersecurity, software enterprise e networking in un'unica visione ingegneristica.

AI Verificabile

Portiamo l'intelligenza artificiale dal prototipo alla produzione in modo sicuro: pipeline dati affidabili, MLOps, valutazione continua, controllo dei rischi. L'AI non è un fine, ma un acceleratore.

Security by Design

Adottiamo un paradigma zero trust fin dal primo giorno: threat modeling, secure SDLC, gestione vulnerabilità e compliance normativa. La sicurezza è un processo continuo, non un progetto.

Sistemi Governabili

Architetture modulari, API rigoroso, osservabilità totale e SLA espliciti. Progettiamo per durare, evolvere e scalare con misurabilità, qualità e impatto concreto sul business.

"La missione di JERVAS è essere un partner tecnologico capace di trasformare requisiti complessi in piattaforme e servizi affidabili, sicuri e performanti, progettati per durare, evolvere e scalare."
// JERVAS ENGINEERING MANIFESTO

Just Evolved Robust
Virtual AI Systems

JERVAS nasce dalla convergenza di quattro discipline ingegneristiche: intelligenza artificiale applicata, cybersecurity, sviluppo software enterprise e telecomunicazioni. Non siamo generalisti: siamo specialisti che parlano la stessa lingua tecnica.

Il nostro team unisce decenni di esperienza su infrastrutture mission-critical con la curiosità necessaria per adottare le tecnologie emergenti in modo responsabile. Ogni prodotto che realizziamo nasce da un problema reale, non da un trend.

01

Engineering-First

Qualità misurabile, SLO espliciti e architetture documentate. Nessuna scorciatoia.

02

Trasparenza Radicale

Auditabilità, tracciabilità e explainability in ogni sistema che consegniamo.

03

Continuità Operativa

Progettiamo per i guasti, non nonostante essi. Resilienza, idempotenza, rollback atomico.

04

Impatto sul Business

L'ingegneria serve il risultato. Misuriamo il nostro lavoro con KPI reali, non deliverable.

J
AI & ML
Security
Network
Software

Soluzioni Pronte
per la Produzione

🔥 HOT
// 01
◈ AI Governance

Secure AI Workspace

LLM aziendale governato con RAG, ACL per ruolo, prompt governance, DLP e audit trail completo.

🔥 HOT
// 02
◈ Compliance

NIS2 / ISO27001 Compliance Hub

Gap analysis guidata, risk register, evidence management e dashboard KPI. Compliance come processo operativo.

// 03
◈ Security

Vulnerability & Exposure Management

Scanner agentless, correlazione CVE + exploitability + asset criticality. Patch playbooks e report executive.

// 04
◈ Identity

PAM per PMI

Vault credenziali, session recording SSH/RDP, accesso Just-in-Time con MFA e audit per vendor e tecnici.

// 05
◈ Network

Zero Trust Remote Access

Identity-aware proxy, device posture check, segmentazione per applicazione. Accesso sicuro senza aprire la LAN.

🔥 HOT
// 06
◈ Observability

Network Observability & SLA Monitor

Synthetic monitoring, mappe rete, alert intelligente. Misura e rispetta SLA per sede, linea e ISP.

// 07
◈ Telecom

Telecom Billing & Provisioning

Rating CDR, fatturazione automatica, provisioning SIP trunk e portale self-care per ISP e MVNO.

// 08
◈ API

Secure API Gateway Enterprise

OAuth2, rate limit, WAF, schema validation, versioning e developer portal con documentazione e sandbox.

// 09
◈ Ops

Incident Response & Post-Mortem

War-room integrata, runbook, escalation. Post-mortem guidato con action items e metrics MTTD/MTTR.

Engineering
First, Always

01 — Design for Failure

Resilienza ai guasti, degradazione graceful, idempotenza e consistenza sono requisiti, non opzioni.

02 — Security by Design

Threat modeling, zero trust e hardening integrati nel ciclo di sviluppo, non aggiunti a posteriori.

03 — Observable Systems

Logging forense, tracing distribuito, metriche e SLO espliciti per ogni componente critico.

04 — Continuous Validation

Test automatizzati, valutazione continua AI, drift detection e monitoring in produzione.

05 — Governed Delivery

Rilascio controllato, rollback atomico, canary deploy e post-mortem sistematici.

AI Ops
Security
Network
DevOps

Pronto a portare la tua infrastruttura
al livello enterprise?

Parliamo dei tuoi requisiti. Nessun pitch commerciale, solo engineering.

// Ciao! Posso aiutarti a scegliere il prodotto giusto
JERVAS Assistant
Online — AI-Powered
// ─── PRODUCTS DATA ─── const products = [ { num:"01", tag:"AI Governance", tagClass:"tag-ai", title:"Secure AI Workspace", subtitle:"LLM aziendale governato per ambienti enterprise e PA con vincoli di compliance e riservatezza dei dati.", visual:``, visualLabel:"// RAG PIPELINE — SECURE DATA FLOW", features:["Chat e assistenti su documenti aziendali con RAG avanzato","Controllo accessi (ACL) granulare per ruolo e tenant","Prompt governance: template, approvazioni e versioning","Redaction PII automatica e policy DLP configurabile","Log e audit trail completo: chi, cosa, su quali fonti","Valutazione qualità con grounding score e citazioni","Guardrail per prevenire hallucination e output fuori policy"], arch:["Multi-tenant isolation con namespace separati","Pipeline RAG su vettori crittografati at-rest","LLM ospitato on-premise o cloud privato (opzione)","Integrazione SharePoint, Google Drive, database","API REST/GraphQL per integrazione sistemi esistenti","SSO/SAML, SCIM, MFA nativi"], metrics:[{v:"<2s",l:"Latenza media RAG"},{v:"99.9%",l:"Uptime SLA"},{v:"100%",l:"Audit coverage"}], pricing:"Per utente/mese + add-on connettori + hosting privato" }, { num:"02", tag:"Compliance", tagClass:"tag-sec", title:"NIS2 / ISO27001 Compliance Hub", subtitle:"Trasforma la compliance da esercizio documentale a processo operativo misurabile e continuo.", visual:``, visualLabel:"// COMPLIANCE WORKFLOW — GAP → EVIDENCE → AUDIT", features:["Gap analysis guidata per NIS2 e ISO27001","Risk register dinamico con scoring e priorità","Policy generator con workflow di approvazione","Evidence management: prove, ticket, verbali","Audit pack automatico per certificatori","Dashboard KPI, scadenze e responsabilità RACI","Integrazione Jira, ServiceNow, Microsoft Teams"], arch:["Workflow engine configurabile per ogni controllo","Storage evidence con hash immutabile (audit trail)","Notifiche automatiche per scadenze e remediation","API per import asset da CMDB/ITSM","Multi-framework: NIS2, ISO27001, GDPR, DORA","Report esecutivo e tecnico esportabile"], metrics:[{v:"90%",l:"Riduzione prep. audit"},{v:"<4h",l:"Time to gap report"},{v:"100%",l:"Evidence tracciata"}], pricing:"Tier per dimensione aziendale + moduli audit, supplier risk, incident" }, { num:"03", tag:"Security", tagClass:"tag-sec", title:"Vulnerability & Exposure Management", subtitle:"Visibilità continua su vulnerabilità, esposizioni e priorità reali per PMI e enti senza SOC strutturato.", visual:``, visualLabel:"// ATTACK SURFACE MAP — LIVE EXPOSURE SCAN", features:["Scanner agentless (rete) + agent opzionale su host","Correlazione CVE con CVSS, EPSS e exploitability reale","Scoring per asset criticality e contesto business","Patch playbook generati automaticamente","Tracking remediation con SLA e assegnazioni","Alert su esposizioni: porte, certificati, misconfig","Report executive sintetico + report tecnico dettagliato"], arch:["Scanner distribuiti con orchestrazione centrale","Feed CVE aggiornati in real-time (NVD, CISA KEV)","Integrazione con vulnerability DB proprietari","Connettori SIEM/SOAR per escalation automatica","API per integrazione con patch management","Tenant isolation per MSSP e multi-cliente"], metrics:[{v:"<1h",l:"Time to first scan"},{v:"95%",l:"True positive rate"},{v:"70%",l:"Riduzione MTTV"}], pricing:"Per asset monitorato/mese + add-on managed remediation" }, { num:"04", tag:"Identity", tagClass:"tag-sec", title:"PAM per PMI — Privileged Access Management", subtitle:"Accesso privilegiato sotto controllo senza progetti infiniti. Vault, session recording e JIT access pronti in ore.", visual:`VAULTCREDENTIALSSESSION PROXYAUDIT LOGGERSSH / RDPRECORDING`, visualLabel:"// PAM ARCHITECTURE — VAULT → PROXY → SESSION REC", features:["Vault credenziali con rotazione automatica e one-time password","Session recording completo SSH e RDP","Approval workflow per accessi privilegiati ad alto rischio","Accesso Just-in-Time: durata limitata e revocabile","MFA obbligatorio con policy per ruolo e risorsa","Accessi vendor temporanei con scadenza automatica","Audit trail immutabile di ogni sessione e accesso"], arch:["Proxy basato su bastione containerizzato","Vault crittografato AES-256 con HSM opzionale","Integrazione AD/LDAP, Azure AD, Okta","Connettori SSH, RDP, database, API","Recording esportabile con playback e ricerca","Alerting su comportamenti anomali durante sessione"], metrics:[{v:"<15min",l:"Onboarding nuovo admin"},{v:"0",l:"Password esposte"},{v:"100%",l:"Sessioni registrate"}], pricing:"Per account admin/mese o per sessione registrata" }, { num:"05", tag:"Network", tagClass:"tag-net", title:"Zero Trust Remote Access (ZTNA)", subtitle:"Accesso remoto sicuro per applicazione, non per tutta la LAN. Identity-aware, device-aware, context-aware.", visual:`USER +DEVICEIDENTITY-AWAREPROXY ENGINEAPP 1APP 2`, visualLabel:"// ZTNA FLOW — IDENTITY CHECK → MICRO-SEGMENTATION", features:["Identity-aware proxy: accesso per singola applicazione","Device posture check: OS, patch level, EDR, certificato","Segmentazione per app/servizio con policy dinamiche","Client nativo (Windows/macOS/Linux) + accesso browser","Politiche contestuali: orario, geolocation, rischio sessione","Log centralizzati con anomaly detection ML-based","Integrazione IdP: Okta, Azure AD, Google Workspace"], arch:["Control plane cloud-hosted, data plane on-prem opzionale","Connettori leggeri (agent) per ogni risorsa interna","Policy engine con valutazione real-time","Tunnel crittografato DTLS/TLS 1.3","Split tunneling configurabile per applicazione","API per orchestrazione e self-service"], metrics:[{v:"<200ms",l:"Latenza aggiuntiva"},{v:"0",l:"LAN esposta"},{v:"99.99%",l:"Availability proxy"}], pricing:"Per utente/mese + per connettore/risorsa protetta" }, { num:"06", tag:"Observability", tagClass:"tag-net", title:"Network Observability & SLA Monitor", subtitle:"Misura e rispetta gli SLA di rete. Visibilità end-to-end su latenza, jitter, perdita e uptime per ogni sede.", visual:``, visualLabel:"// SYNTHETIC MONITORING — LATENCY & JITTER TRACKING", features:["Synthetic monitoring: ping, HTTP, VoIP, traceroute","Mappe rete interattive con topology discovery","Inventory automatico dispositivi e link","Alerting intelligente con deduplicazione e correlazione","Report SLA per sede, linea e ISP esportabili","Integrazione MikroTik, Fortinet, Cisco, SD-WAN","Capacity planning e trend analysis predittivo"], arch:["Sonde distribuite (agent/container) per sede","Collector centrale con TSDB (Prometheus/InfluxDB)","Dashboard Grafana personalizzabile","API per esportazione dati verso NOC esterno","Alerting via email, Slack, Teams, PagerDuty","Multi-tenant per MSP con branding white-label"], metrics:[{v:"30s",l:"Polling interval"},{v:"99.9%",l:"Collector uptime"},{v:"<1min",l:"Alert time-to-fire"}], pricing:"Per sito/sonda/mese + add-on reportistica clienti (MSP)" }, { num:"07", tag:"Telecom", tagClass:"tag-net", title:"Telecom Billing & Provisioning", subtitle:"Piattaforma BSS/OSS verticale per ISP, VoIP provider e MVNO. Rating CDR, provisioning e self-care in un'unica suite.", visual:`CDR RATINGENGINEBILLING &INVOICINGPROVISIONINGSIP/SIMSELF-CAREPORTALCRM/ERP`, visualLabel:"// BSS/OSS PIPELINE — CDR → BILLING → PROVISIONING", features:["Catalogo offerte flessibile: flat, bundle, a consumo","Rating CDR real-time con politiche tariffarie configurabili","Fatturazione automatica, insoluti e solleciti","Provisioning SIP trunk, interni VoIP, SIM/eSIM","Portale self-care per il cliente con ticketing integrato","API aperte per integrazione CRM, ERP, contabilità","Dashboard operatore con KPI ricavi e churn"], arch:["Rating engine scalabile (milioni CDR/giorno)","Mediation layer per normalizzazione sorgenti eterogenee","Provisioning via API SIP, REST e SOAP legacy","Database billing con partitioning per volume","White-label completo: brand, domini, email","Multi-currency e multi-VAT per mercati internazionali"], metrics:[{v:"1M+",l:"CDR/giorno"},{v:"<5min",l:"Provisioning SIP"},{v:"99.9%",l:"Billing accuracy"}], pricing:"Per linea/SIM/utenza attiva + fee transazionale fatture" }, { num:"08", tag:"API", tagClass:"tag-ent", title:"Secure API Gateway Enterprise", subtitle:"Governance, sicurezza e performance delle API aziendali. Developer portal, policy as code e analytics in tempo reale.", visual:`CLIENT APPAPI GATEWAYAUTHRATE LIMITWAFANALYTICSSERVICE ASERVICE B`, visualLabel:"// API GATEWAY — AUTH → WAF → ROUTING → ANALYTICS", features:["API keys, OAuth2/OIDC, JWT validation nativa","Rate limiting granulare: per client, endpoint, piano","WAF con regole OWASP Top 10 e custom rules","Schema validation request/response (OpenAPI)","Versioning API e lifecycle management","Error budget tracking e latency SLO","Developer portal con docs interattive e sandbox"], arch:["Gateway distribuito con HA e failover automatico","Policy as code (YAML/OPA) versionato su Git","Plugin system per estensioni custom","Osservabilità: traces OpenTelemetry, metriche Prometheus","Supporto REST, GraphQL, gRPC, WebSocket","Deploy on-prem, cloud o ibrido"], metrics:[{v:"<5ms",l:"Gateway overhead"},{v:"M/ora",l:"Request gestite"},{v:"99.99%",l:"Gateway uptime"}], pricing:"Per chiamate/mese (tier) o per ambiente dev/stage/prod" }, { num:"09", tag:"Ops", tagClass:"tag-ent", title:"Incident Response & Post-Mortem Platform", subtitle:"Disciplina operativa per ridurre MTTR e rendere ripetibile la gestione degli incidenti IT e security.", visual:`DETECTTRIAGEWAR ROOMRESOLVEPOST-MORTEMMTTDMTTR`, visualLabel:"// INCIDENT LIFECYCLE — DETECT → TRIAGE → RESOLVE → LEARN", features:["War-room integrata: chat, timeline eventi ed evidenze","Runbook e playbook eseguibili con checklist","Escalation automatica e paging (PagerDuty, Opsgenie)","Severity management e SLA automatici per tier","Post-mortem guidato con template strutturato","Action items con assignee, scadenza e follow-up","Metriche: MTTD, MTTR, trend e root cause analysis"], arch:["Event timeline immutabile per ogni incidente","Integrazione bidirezionale SIEM, ticketing, monitoring","Notifiche multicanale: Slack, Teams, email, SMS","Role-based war-room con permessi granulari","Export report PDF/Markdown per management","API per automazione e integrazione custom"], metrics:[{v:"-60%",l:"MTTR medio"},{v:"100%",l:"Incidenti documentati"},{v:"<2min",l:"Alert-to-war-room"}], pricing:"Per team/mese + add-on integrazioni SIEM e ticketing" } ]; // ─── MODAL ─── function openModal(i) { const p = products[i]; const content = `
// PRICING — ${p.pricing}
`; document.getElementById('modalContent').innerHTML = content; document.getElementById('modalOverlay').classList.add('open'); document.body.style.overflow = 'hidden'; } function closeModal() { document.getElementById('modalOverlay').classList.remove('open'); document.body.style.overflow = ''; } function checkClose(e) { if (e.target === document.getElementById('modalOverlay')) closeModal(); } document.addEventListener('keydown', e => { if (e.key === 'Escape') closeModal(); }); // ─── MOBILE MENU ─── function toggleMobile() { const h = document.getElementById('hamburger'); const m = document.getElementById('mobileMenu'); h.classList.toggle('open'); m.classList.toggle('open'); document.body.style.overflow = m.classList.contains('open') ? 'hidden' : ''; } function closeMobile() { document.getElementById('hamburger').classList.remove('open'); document.getElementById('mobileMenu').classList.remove('open'); document.body.style.overflow = ''; } // ─── CURSOR ─── const dot = document.querySelector('.cursor-dot'); const ring = document.querySelector('.cursor-ring'); let mx=0,my=0,rx=0,ry=0; document.addEventListener('mousemove',e=>{mx=e.clientX;my=e.clientY}); function animCursor(){ dot.style.left=mx+'px';dot.style.top=my+'px'; rx+=(mx-rx)*.12;ry+=(my-ry)*.12; ring.style.left=rx+'px';ring.style.top=ry+'px'; requestAnimationFrame(animCursor); } animCursor(); document.querySelectorAll('a,button,.product-card,.pillar-card,.value-item,.mcard,.quick-btn,.chat-fab,.chat-send,.chat-header-close').forEach(el=>{ el.addEventListener('mouseenter',()=>{ring.style.transform='translate(-50%,-50%) scale(1.8)';ring.style.borderColor='rgba(0,212,255,.8)'}); el.addEventListener('mouseleave',()=>{ring.style.transform='translate(-50%,-50%) scale(1)';ring.style.borderColor='rgba(0,212,255,.5)'}); }); // ─── NAV SCROLL ─── window.addEventListener('scroll',()=>{ document.getElementById('navbar').classList.toggle('scrolled',window.scrollY>40); }); // ─── CANVAS ─── const canvas=document.getElementById('bg-canvas'); const ctx=canvas.getContext('2d'); let W,H; function resize(){W=canvas.width=window.innerWidth;H=canvas.height=window.innerHeight} resize();window.addEventListener('resize',resize); class Particle{ constructor(){this.reset()} reset(){this.x=Math.random()*W;this.y=Math.random()*H;this.vx=(Math.random()-.5)*.3;this.vy=(Math.random()-.5)*.3;this.size=Math.random()*2+.5;this.alpha=Math.random()*.6+.1;this.color=Math.random()>.5?'0,212,255':'0,255,136'} update(){this.x+=this.vx;this.y+=this.vy;if(this.x<0||this.x>W||this.y<0||this.y>H)this.reset()} draw(){ctx.beginPath();ctx.arc(this.x,this.y,this.size,0,Math.PI*2);ctx.fillStyle=`rgba(${this.color},${this.alpha})`;ctx.fill()} } const particles=Array.from({length:80},()=>new Particle()); function drawGrid(){ctx.strokeStyle='rgba(0,212,255,.03)';ctx.lineWidth=1;for(let x=0;x{p.update();p.draw()});drawConn();requestAnimationFrame(animBg)} animBg(); // ─── CHATBOT ─── let chatHistory = []; let chatOpen = false; let isTyping = false; let chatInitialized = false; function toggleChat() { chatOpen = !chatOpen; const panel = document.getElementById('chatPanel'); const fab = document.getElementById('chatFab'); const icon = document.getElementById('chatFabIcon'); panel.classList.toggle('open', chatOpen); fab.classList.toggle('open', chatOpen); if (chatOpen) { icon.innerHTML = ''; if (!chatInitialized) { chatInitialized = true; initChat(); } setTimeout(() => document.getElementById('chatInput').focus(), 400); } else { icon.innerHTML = ''; } } function initChat() { const welcomeMsg = `Ciao! Sono l'assistente AI di JERVAS. Posso aiutarti a orientarti tra i nostri prodotti SaaS o rispondere a qualsiasi domanda tecnica. Per iniziare, dimmi: qual è la tua sfida principale oggi?`; addMessage('bot', welcomeMsg, [ 'Sicurezza e compliance', 'AI in azienda', 'Accessi remoti sicuri', 'Monitoraggio rete', 'Voglio una demo' ]); } function addMessage(role, text, quickReplies = []) { const msgs = document.getElementById('chatMessages'); const div = document.createElement('div'); div.className = `chat-msg ${role === 'bot' ? 'bot' : 'user'}`; const avatar = document.createElement('div'); avatar.className = `msg-avatar ${role === 'bot' ? 'bot' : 'user-av'}`; avatar.textContent = role === 'bot' ? 'AI' : 'Tu'; const bubble = document.createElement('div'); bubble.className = 'msg-bubble'; bubble.innerHTML = text.replace(/\n/g, '
'); div.appendChild(avatar); div.appendChild(bubble); msgs.appendChild(div); if (quickReplies.length > 0 && role === 'bot') { const qr = document.createElement('div'); qr.className = 'quick-replies'; qr.style.marginLeft = '34px'; quickReplies.forEach(q => { const btn = document.createElement('button'); btn.className = 'quick-btn'; btn.textContent = q; btn.onclick = () => { qr.remove(); sendQuick(q); }; qr.appendChild(btn); }); msgs.appendChild(qr); } msgs.scrollTop = msgs.scrollHeight; } function showTyping() { const msgs = document.getElementById('chatMessages'); const div = document.createElement('div'); div.className = 'chat-msg bot'; div.id = 'typingIndicator'; const avatar = document.createElement('div'); avatar.className = 'msg-avatar bot'; avatar.textContent = 'AI'; const ind = document.createElement('div'); ind.className = 'typing-indicator'; ind.innerHTML = '
'; div.appendChild(avatar); div.appendChild(ind); msgs.appendChild(div); msgs.scrollTop = msgs.scrollHeight; } function hideTyping() { const el = document.getElementById('typingIndicator'); if (el) el.remove(); } // ─── KNOWLEDGE BASE ─── const KB = { products: { ai: { name: 'Secure AI Workspace', tag: '// 01 — AI Governance', desc: 'LLM aziendale governato con RAG su documenti interni, controllo accessi per ruolo, prompt governance, DLP automatico e audit trail completo. Ideale per aziende e PA che vogliono usare l\'AI senza rischi di compliance o data breach.', for: ['azienda con dati sensibili','PA','compliance AI','rag','llm','chatbot interno','documenti','gdpr ai','data governance'], metrics: 'Latenza RAG < 2s · Audit coverage 100% · Tenant isolation certificata', pricing: 'Per utente/mese + connettori (SharePoint, Drive, DB) + hosting privato opzionale' }, compliance: { name: 'NIS2 / ISO27001 Compliance Hub', tag: '// 02 — Compliance', desc: 'Trasforma la compliance da esercizio documentale a processo operativo: gap analysis guidata, risk register dinamico, evidence management con hash immutabile, dashboard KPI e audit pack automatico per certificatori.', for: ['nis2','iso27001','compliance','audit','gdpr','normativa','certificazione','gap analysis','risk register','dora','banca'], metrics: 'Riduzione prep. audit -90% · Time-to-gap-report < 4h · Evidence 100% tracciata', pricing: 'Tier per dimensione aziendale + moduli audit, supplier risk, incident' }, vuln: { name: 'Vulnerability & Exposure Management', tag: '// 03 — Security', desc: 'Visibilità continua su vulnerabilità e superfici d\'attacco: scanner agentless, correlazione CVE con exploitability reale (EPSS), scoring per asset criticality, patch playbook automatici e report executive.', for: ['vulnerabilità','cve','patch','scanner','sicurezza','soc','pentest','esposizione','attacco','hacker','firewall'], metrics: 'True positive rate 95% · Riduzione MTTV -70% · Time-to-first-scan < 1h', pricing: 'Per asset monitorato/mese + add-on managed remediation' }, pam: { name: 'PAM per PMI', tag: '// 04 — Identity', desc: 'Accesso privilegiato sotto controllo: vault credenziali con rotazione automatica, session recording SSH/RDP, Just-in-Time access, MFA obbligatorio e accessi vendor temporanei con audit completo.', for: ['accessi admin','password','credenziali','rdp','ssh','vendor','tecnici','privilegiato','pam','vault','mfa'], metrics: 'Onboarding < 15min · Zero password esposte · 100% sessioni registrate', pricing: 'Per account admin/mese o per sessione registrata' }, ztna: { name: 'Zero Trust Remote Access', tag: '// 05 — Network', desc: 'Accesso remoto sicuro per singola applicazione, non per tutta la LAN: identity-aware proxy, device posture check (OS, patch, EDR), segmentazione dinamica e log centralizzati con anomaly detection.', for: ['vpn','remoto','smart working','zero trust','ztna','accesso da casa','lavoro ibrido','sicurezza rete','device','posture'], metrics: 'Latenza aggiuntiva < 200ms · Zero LAN esposta · Availability 99.99%', pricing: 'Per utente/mese + per connettore/risorsa protetta' }, noc: { name: 'Network Observability & SLA Monitor', tag: '// 06 — Observability', desc: 'Misura e rispetta gli SLA di rete: synthetic monitoring (ping, HTTP, VoIP), traceroute, mappe topologiche, alerting intelligente con deduplicazione e report SLA per sede/linea/ISP.', for: ['rete','sla','latenza','uptime','monitoraggio','noc','msp','multisede','isp','jitter','ping','voip','sd-wan','mikrotik'], metrics: 'Polling interval 30s · Alert time-to-fire < 1min · Collector uptime 99.9%', pricing: 'Per sito/sonda/mese + add-on reportistica clienti (white-label MSP)' }, telecom: { name: 'Telecom Billing & Provisioning', tag: '// 07 — Telecom', desc: 'Suite BSS/OSS per ISP, VoIP provider e MVNO: rating CDR real-time, fatturazione automatica, provisioning SIP trunk, portale self-care cliente e API aperte per CRM/ERP.', for: ['isp','voip','mvno','operatore','fatturazione','cdr','sip','sim','telecomunicazioni','billing','provisioning'], metrics: 'Rating 1M+ CDR/giorno · Provisioning SIP < 5min · Billing accuracy 99.9%', pricing: 'Per linea/SIM/utenza attiva + fee transazionale fatture' }, api: { name: 'Secure API Gateway Enterprise', tag: '// 08 — API', desc: 'Governance, sicurezza e performance delle API: OAuth2/OIDC, rate limiting granulare, WAF OWASP Top 10, schema validation, versioning, error budget tracking e developer portal con sandbox.', for: ['api','gateway','microservizi','oauth','rest','graphql','developer','integrazione','rate limit','waf','swagger'], metrics: 'Overhead < 5ms · Availability 99.99% · Milioni request/ora gestite', pricing: 'Per chiamate/mese (tier) o per ambiente dev/stage/prod' }, incident: { name: 'Incident Response & Post-Mortem', tag: '// 09 — Ops', desc: 'Disciplina operativa per ridurre MTTR: war-room integrata con timeline e evidenze, runbook eseguibili, escalation automatica, post-mortem guidati con action items tracciati e metriche MTTD/MTTR.', for: ['incidente','downtime','mttr','post-mortem','runbook','escalation','on-call','war room','siem','alerting','devops','sre'], metrics: 'MTTR ridotto -60% · Alert-to-war-room < 2min · 100% incidenti documentati', pricing: 'Per team/mese + add-on integrazioni SIEM e ticketing' } }, // Intent detection: returns array of matching product keys detectIntent(text) { const t = text.toLowerCase(); const scores = {}; for (const [key, prod] of Object.entries(this.products)) { scores[key] = prod.for.filter(kw => t.includes(kw)).length; } return Object.entries(scores) .filter(([,s]) => s > 0) .sort(([,a],[,b]) => b - a) .map(([k]) => k); } }; // ─── CONVERSATION ENGINE ─── // State machine: welcome → qualify → recommend → detail → cta const STATE = { step: 'welcome', // welcome | size | role | pain | recommend | detail | cta | freeform size: null, // pmi | enterprise | msp | isp | pa role: null, // it | security | cto | compliance | dev | ops pain: null, // detected pain area recommended: [], // product keys recommended focusProduct: null }; function nextResponse(userText) { const t = userText.toLowerCase().trim(); // ── Global shortcuts ── if (/demo|prova gratis|trial|provare/.test(t)) { return { text: 'Perfetto! Per prenotare una demo personalizzata, scrivi a hello@jervas.io o usa il form nella sezione Contatti in fondo alla pagina.\n\nDimmi intanto quale prodotto ti interessa di più e il tuo settore — così la demo sarà mirata.', qr: ['Secure AI Workspace','NIS2 Hub','ZTNA','Torna alle domande'] }; } if (/contatt|email|telefon|parla con|commerciale|sales/.test(t)) { return { text: 'Puoi contattarci direttamente:\n\nEmail: hello@jervas.io\nDemo: calendly.jervas.io\nEmergenze security: security@jervas.io\n\nRispondiamo entro 4 ore lavorative.', qr: ['Richiedi demo', 'Torna ai prodotti'] }; } if (/prezz|cost|pricing|quanto costa|abbonamento|piano/.test(t) && STATE.focusProduct) { const p = KB.products[STATE.focusProduct]; return { text: `${p.name}\n\n${p.pricing}\n\nTutti i piani includono SLA contrattuale, supporto tecnico e onboarding guidato. I prezzi sono personalizzabili per volume e configurazione.`, qr: ['Richiedi un preventivo','Confronta i piani','Altro prodotto'] }; } if (/prezz|cost|pricing|quanto/.test(t)) { return { text: 'I prezzi JERVAS variano in base al prodotto, volume e piano scelto. Qual è il prodotto che ti interessa? Ti do subito il modello di pricing specifico.', qr: Object.values(KB.products).map(p=>p.name).slice(0,4).concat(['Tutti i prodotti']) }; } if (/(tutti|lista|elenco).*(prodott|serviz)|cosa (fate|offrite|avete)/.test(t)) { return { text: 'JERVAS offre 9 prodotti SaaS in 4 aree:\n\nAI: Secure AI Workspace\nSecurity: Compliance Hub, Vuln. Management, PAM, ZTNA\nNetwork: SLA Monitor, Telecom Billing\nEnterprise: API Gateway, Incident Response\n\nQuale area ti interessa di più?', qr: ['AI & Governance','Security & Compliance','Networking & TLC','Enterprise Ops'] }; } if (/ciao|salve|buongiorno|buonasera|hey|hello/.test(t) && STATE.step === 'freeform') { return { text: 'Ciao! Come posso aiutarti? Sono qui per guidarti tra i prodotti JERVAS e trovare la soluzione più adatta alla tua situazione.', qr: ['Mostrami i prodotti','Ho un problema specifico','Voglio una demo'] }; } // ── Intent detection ── const intents = KB.detectIntent(userText); // ── Step: size ── if (STATE.step === 'size') { if (/pmi|piccol|medio|startup|<50|meno di 50/.test(t)) { STATE.size = 'pmi'; } else if (/enterprise|grande|corporate|multinazional|>500/.test(t)) { STATE.size = 'enterprise'; } else if (/msp|managed|rivenditore|partner|resell/.test(t)) { STATE.size = 'msp'; } else if (/isp|operatore|provider|voip|telco/.test(t)) { STATE.size = 'isp'; } else if (/pa|pubblica amministrazione|comune|regione|ente/.test(t)) { STATE.size = 'pa'; } else STATE.size = 'enterprise'; STATE.step = 'pain'; return { text: 'Capito. Qual è la sfida principale che vuoi risolvere? Puoi descriverla liberamente.', qr: ['Sicurezza e vulnerabilità','Compliance normativa','Accessi remoti sicuri','Monitoraggio rete','AI in azienda','Gestione incidenti'] }; } // ── Step: pain ── if (STATE.step === 'pain' || intents.length > 0) { STATE.step = 'recommend'; let keys = intents.length > 0 ? intents : []; // Fallback by text pattern if (keys.length === 0) { if (/sicurezza|attacco|hacker|breach|cyber/.test(t)) keys = ['vuln','pam','ztna']; else if (/compliance|normat|audit|certif/.test(t)) keys = ['compliance']; else if (/ai|intelligenza|llm|chat|document/.test(t)) keys = ['ai']; else if (/rete|network|latenz|uptime/.test(t)) keys = ['noc']; else if (/accesso|remoto|vpn|smart work/.test(t)) keys = ['ztna','pam']; else if (/isp|voip|operatore|billing/.test(t)) keys = ['telecom']; else if (/api|gateway|microservizi/.test(t)) keys = ['api']; else if (/incidente|downtime|sre|devops/.test(t)) keys = ['incident']; else keys = ['ai','compliance','ztna']; // default popular } // Size-based refinement if (STATE.size === 'pmi') keys = keys.filter(k => !['api'].includes(k)); if (STATE.size === 'isp') { if (!keys.includes('telecom')) keys.unshift('telecom'); } if (STATE.size === 'msp') { if (!keys.includes('noc')) keys.unshift('noc'); } if (STATE.size === 'pa') { if (!keys.includes('compliance')) keys.unshift('compliance'); } STATE.recommended = [...new Set(keys)].slice(0, 2); STATE.focusProduct = STATE.recommended[0]; STATE.pain = t; const primary = KB.products[STATE.recommended[0]]; const secondary = STATE.recommended[1] ? KB.products[STATE.recommended[1]] : null; let reply = `In base a quello che mi hai descritto, il prodotto più indicato è:\n\n${primary.tag}\n${primary.name}\n\n${primary.desc}\n\n// ${primary.metrics}`; if (secondary) reply += `\n\nPotresti trovare utile anche ${secondary.name}, che si integra bene con il primo.`; const qr = ['Dimmi di più','Quanto costa?','Voglio una demo']; if (secondary) qr.splice(1, 0, `Cos'è ${secondary.name.split(' ')[0]}?`); return { text: reply, qr }; } // ── Step: detail ── if (STATE.step === 'recommend' && /di più|dettagli|come funziona|approfond|spiegami/.test(t)) { STATE.step = 'detail'; const p = KB.products[STATE.focusProduct]; return { text: `${p.name}\n\n${p.desc}\n\nMetriche chiave:\n${p.metrics}\n\nPricing: ${p.pricing}\n\nVuoi che ti metta in contatto con un nostro specialista per una demo personalizzata?`, qr: ['Sì, voglio una demo','Confronta con altro prodotto','Ho un\'altra domanda'] }; } // ── Product name shortcuts ── for (const [key, prod] of Object.entries(KB.products)) { const nameWords = prod.name.toLowerCase().split(' '); if (nameWords.some(w => w.length > 4 && t.includes(w))) { STATE.focusProduct = key; STATE.step = 'recommend'; return { text: `${prod.tag}\n${prod.name}\n\n${prod.desc}\n\n// ${prod.metrics}`, qr: ['Quanto costa?','Voglio una demo','Confronta prodotti'] }; } } // ── Category shortcuts ── if (/ai.*govern|governance|ai.*(aziend|sicur)|secure.*ai/.test(t)) return nextResponse('ai llm documenti'); if (/security|sicurezza compliance|nis2|iso27001/.test(t)) return nextResponse('compliance nis2 audit'); if (/network|networking|tlc/.test(t)) return nextResponse('rete sla monitoraggio noc'); if (/enterprise|ops|devops|sre/.test(t)) return nextResponse('incidente downtime sre'); if (/msp|managed service/.test(t)) { STATE.size='msp'; return nextResponse('monitoraggio rete sla msp'); } // ── Quick reply shortcuts ── if (/confronta|altro prodotto|alternativ/.test(t)) { const others = Object.entries(KB.products).filter(([k])=>k!==STATE.focusProduct).slice(0,3); return { text: 'Altri prodotti JERVAS che potrebbero interessarti:', qr: others.map(([,p])=>p.name).concat(['Mostra tutti']) }; } if (/mostra tutti|tutti i prodotti/.test(t)) { return { text: 'Ecco tutti i prodotti JERVAS:\n\n' + Object.values(KB.products).map(p=>`${p.name}`).join('\n'), qr: ['Aiutami a scegliere','Voglio una demo'] }; } if (/aiutami a sceglier|non so|quale scegliere|consigliami/.test(t)) { STATE.step = 'size'; return { text: 'Nessun problema, ti guido io. Per prima cosa: che tipo di organizzazione sei?', qr: ['PMI (< 100 persone)','Enterprise (> 100)','MSP / Partner','ISP / Operatore TLC','Pubblica Amministrazione'] }; } // ── Fallback ── STATE.step = 'freeform'; return { text: 'Capisco. Puoi descrivermi più nel dettaglio il problema che stai cercando di risolvere? Oppure dimmi il tuo settore e dimensione aziendale così ti indirizzo subito al prodotto giusto.', qr: ['Sicurezza IT','Compliance NIS2/ISO27001','Smart working sicuro','Monitoraggio rete','AI su documenti','Sono un ISP/VoIP'] }; } async function callClaude(userMessage) { chatHistory.push({ role: 'user', content: userMessage }); showTyping(); isTyping = true; document.getElementById('chatSend').disabled = true; // Simulate thinking delay (80-180ms) for natural feel await new Promise(r => setTimeout(r, 600 + Math.random() * 600)); hideTyping(); const { text, qr } = nextResponse(userMessage); chatHistory.push({ role: 'assistant', content: text }); addMessage('bot', text, qr || []); isTyping = false; document.getElementById('chatSend').disabled = false; } function sendQuick(text) { addMessage('user', text); callClaude(text); } function sendMessage() { const input = document.getElementById('chatInput'); const text = input.value.trim(); if (!text || isTyping) return; input.value = ''; autoResize(input); addMessage('user', text); callClaude(text); } function handleKey(e) { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); sendMessage(); } } function autoResize(el) { el.style.height = 'auto'; el.style.height = Math.min(el.scrollHeight, 100) + 'px'; } // ─── SCROLL REVEAL ─── const reveals=document.querySelectorAll('.reveal,.reveal-left,.reveal-right'); const obs=new IntersectionObserver(entries=>{entries.forEach(e=>{if(e.isIntersecting)e.target.classList.add('visible')})},{threshold:.12}); reveals.forEach(el=>obs.observe(el));