EIAAW SalesAgent handles customer pipelines, prospect records, outbound messaging, and AI reasoning. This page sets out the security controls, compliance alignment, and operational practices that protect it.
All traffic between your browser, the application, and our sub-processors is encrypted. Data at rest is protected by the hosting platform's managed encryption.
Passwords are hashed with bcrypt (10 rounds). Sessions use opaque 32-byte tokens with a 24-hour absolute expiry and a 30-minute idle timeout.
AI outputs are suggestions. Every message, voice script, and stage change requires a human to approve before it is sent, unless you explicitly enable automation.
Per-route limits guard login, AI, and outbound email so that a compromised credential or runaway script cannot drain your quotas or damage sender reputation.
| Encryption in transit | TLS 1.2+ on all HTTPS endpoints; HSTS preload-eligible configuration |
| Encryption at rest | Provided by the hosting platform (Railway) and by each sub-processor (Stripe, Anthropic, Retell, Resend) under their respective security programmes. We do not operate our own storage layer. |
| Password hashing | bcrypt with cost factor 10; legacy SHA-256 hashes auto-upgraded on next login |
| Secrets at rest | Credentials (SMTP, Stripe, voice provider keys) stored encrypted in the settings table, decrypted only inside the server process |
| PII minimisation | Voice call transcripts are truncated to a 500-character preview server-side; full audio remains with the voice provider under their retention policy |
| Session handling | Opaque 32-byte crypto.randomBytes bearer tokens, expire 24h after issue and 30min idle |
user_id; cross-tenant reads are blocked at the query layer.maxAge: 0 and ETag so security-relevant changes take effect on next request.| HTTPS | Forced on all public endpoints; HTTP redirects 301 to HTTPS |
| CSP | Restrictive Content Security Policy via Helmet — script, style, image, and connect sources are explicitly allow-listed |
| CORS | Origin allow-list: sa.eiaawsolutions.com, the Railway production domain, and local development; credentials: true |
| CSRF | Bearer-token authentication on state-changing endpoints, plus Origin-header check for cookie-bearing calls |
| Clickjacking, MIME sniffing, Referrer-Policy | Applied via Helmet's default hardened header set (including X-Frame-Options, X-Content-Type-Options: nosniff, and a restrictive Referrer-Policy). We do not override the defaults. |
| General API | 120 requests / minute / IP |
| Login endpoint | 10 attempts / 15 minutes / IP — defends against credential stuffing |
| AI agent endpoints | 10 requests / minute / authenticated user |
| Outbound email (per user) | 3 / minute — protects sender reputation |
| Monthly quotas | Enforced per plan for leads, campaigns, AI actions, voice calls, contact reveals |
The Service relies on Anthropic's Claude models for lead scoring, qualification, and copy generation. We align to the OWASP LLM Top 10 (2024):
| Risk | Control |
|---|---|
| LLM01 Prompt injection | System prompts are fixed server-side; user input is clearly delimited; tool use is whitelisted; outputs are treated as untrusted data |
| LLM02 Insecure output handling | LLM outputs are sanitised before display; never executed as code; voice tool-callbacks are validated server-side |
| LLM03 Training-data poisoning | We do not fine-tune; we use Anthropic's hosted models only |
| LLM04 Model DoS | Per-user rate limits + per-campaign and per-account budget ceilings (USD); requests abort when budget exceeded |
| LLM05 Supply-chain | Only Anthropic's official SDK; pinned versions; CVE monitoring |
| LLM06 Sensitive info disclosure | Customer context is scoped per user; no cross-tenant context leakage; AI cost log stores token counts, not message bodies |
| LLM07 Insecure plugin design | Tool calls (send_overview, schedule_meeting, etc.) validate inputs, check the caller's ownership, and never execute arbitrary code |
| LLM08 Excessive agency | Human approval required for outbound messages; AI cannot send unapproved email or change billing without explicit user action |
| LLM09 Overreliance | UI surfaces AI outputs as suggestions, with explicit "review before send" affordances; model rationale is shown alongside scores |
| LLM10 Model theft | Not applicable — we do not host model weights |
/api/tracking/webhook and used to update lead engagement state.main branch; deploys require manual trigger (railway up).We design the Service to align with the frameworks below. Unless explicitly noted otherwise, these are design-alignment statements, not third-party certifications.
We follow a published response policy with the commitments below. These are the response targets we operate against; they are not contractual SLAs unless stated in a signed order form.
We welcome coordinated disclosure from security researchers. If you believe you have found a security issue in EIAAW SalesAgent, please email [email protected] with:
We commit to: acknowledging your report within 72 hours, providing a triage decision within 7 days, and keeping you informed through remediation. We will not pursue legal action against researchers acting in good faith within this policy (no data exfiltration, no disruption of service, no social engineering of our staff or customers).
See the Privacy Policy §6 for the full, current list of sub-processors. We notify account owners by email at least 30 days before onboarding a new sub-processor that processes Customer Data.
Security, compliance, or trust enquiries:
EIAAW SOLUTIONS (SSM Reg. No. 202603133419 / CT0164540-H)
Kuala Lumpur, Malaysia
Email: [email protected]