Ten roles. 29 tabs. One contact record.
Universal contact database shared across Deals, Ops, Inbox, Mail, Assure, Calendar, Box, and Ads. 29-tab profile UI with financial ledger, compliance documents, family tree, and AI summary. 10 assignable roles filtered by query param. GDPR consent fields as the single source of truth. KYC review queue with AML screening and identity verification. Duplicate detection and merge. Import from CSV or 10 CRM platforms. Organizations, tags, and 51 REST API endpoints.
,0,
profile tabs per contact record
,0,
contact roles (Guest, Tenant, Owner, Investor, Client, Patient, Vendor, Employee, Contractor, Prospect)
,0,
REST API endpoints
,0,
Calisto products read from and write to Contacts
29 tabs per record. One profile UI.
Each contact opens to a tabbed detail view. Core fields, activity feed, financial ledger, compliance documents, family tree, and AI summary all in one place. Tabs are grouped by function and adapt to the contact's role.
Overview
Full contact record: name, email, phone, role, stage, GDPR consent status, custom fields. Avatar, organization link, and lifetime value.
Activity
Chronological feed of every interaction across products. Auto-logged from Deals, Ops, Inbox, Mail, and manual entries.
Meetings
Past and scheduled meetings tied to this contact. Video call links, attendees, and notes.
Bookings
Reservation and booking history pulled from Ops. Dates, properties, status, and revenue totals.
Calendar
Upcoming events for this contact across products. Meetings, bookings, task deadlines, contract renewals.
Deals
Active and closed deals where this contact is the primary. Pipeline stage, value, probability, and linked tasks.
Proposals
Proposals sent to this contact. Status (draft, sent, viewed, accepted, declined), total value, and expiry dates.
Documents
Files attached to this contact via Calisto Box. Upload, preview, and organize with folder structure.
Messages
Inbox threads and email history for this contact. Threaded view with read status and reply actions.
Financial
Invoices, payments, balances, and lifetime value. Payment method on file. Transaction history with date filters.
Access
Portal access, login history, and permission settings for this contact. Grant or revoke guest portal entry.
Guest. Tenant. Owner. Client. Patient. Every role in one database.
Each contact carries a role that determines where they appear. Ops sees Guest, Tenant, Owner, Vendor, Employee, Contractor, Patient. Deals sees Client, Prospect, Investor, Owner. Filter the list by role via query param. GDPR consentMarketing and consentTimestamp on every record.
Guest. Tenant. Owner. Investor. Client. Patient. Vendor. Employee. Contractor. Prospect.
Each contact carries a role that determines which product context they appear in. Filter the contact list by role via query param (/contacts?role=client). Ops surfaces Guest, Tenant, Owner, Vendor, Employee, Contractor, and Patient. Deals surfaces Client, Prospect, Investor, and Owner.
Guest
Hospitality, short-term rental, and hotel bookings. Linked to reservations in Ops.
Tenant
Long-term rental occupant. Linked to lease contracts, maintenance requests, and rent ledger in Ops.
Owner
Property owner or landlord. Linked to property records, income statements, and owner portal access.
Investor
Capital partner or shareholder. Linked to deals and financial reporting in Deals.
Client
Active customer with purchased services. Primary role for Deals pipeline records.
Patient
Healthcare or wellness client. Used in clinic and spa verticals for appointment and treatment records.
Vendor
Supplier or service provider. Linked to purchase orders, vendor invoices, and contractor agreements.
Employee
Internal team member. HR record with payroll reference, department, and access permissions.
Contractor
External worker on contract terms. Linked to tasks, work orders, and contract dates.
Prospect
Pre-sale lead. Enters the Deals pipeline when qualified. Web activity and form submissions tracked.
GDPR Consent Fields
Two fields per contact record. One source of truth across every product.
consentMarketingbooleanWhether this contact has opted in to marketing communications. Toggled per contact, respected across Mail, Campaigns, and Ads.
consentTimestampdatetimeWhen consent was last granted or withdrawn. Single source of truth for audit. Immutable once set (new toggle creates a new timestamp).
,0,
GDPR consent fields (consentMarketing + consentTimestamp)
,0,
compliance tabs (KYC, AML Check, Identity Verification, Right to Rent, Signing History)
,0,
CRM import sources with OAuth
,0,
dashboard metric tiles (Total, New This Week, KYC Pending, Dormant)
Detect duplicates. Compare fields. Merge into one record.
The duplicates scanner matches on name, email, and phone. Side-by-side field comparison picks the most complete data. Merge reassigns all linked deals, invoices, bookings, messages, and notes. Soft-delete on the secondary record.
Find duplicates. Compare fields. Merge into one record.
The duplicates scanner matches on name, email, and phone. Side-by-side comparison lets you pick the most complete fields. The merge operation reassigns every linked record (deals, invoices, bookings, messages, notes) to the surviving contact. Soft-delete on the secondary.
Detect
The duplicates route (/contacts/duplicates) scans the contact database and surfaces records with matching names, email addresses, or phone numbers. Results grouped by potential match clusters.
Review
Side-by-side comparison of duplicate candidates. Field-level diff highlights which record has more complete data. Activity history, deal count, and financial totals shown per record.
Merge
Select the primary record and choose which fields to keep from the secondary. The merge endpoint (/api/contacts/merge) reassigns all linked deals, bookings, invoices, messages, and notes to the surviving record.
Verify
Post-merge audit confirms the surviving record now carries all reassigned relationships. The secondary record is soft-deleted. Merge event logged in the activity timeline.
KYC queue. AML screening. Identity verification. Right to rent.
Centralized KYC review queue with bulk approve/reject. Per-contact AML screening with risk scores and PEP flags. Identity document upload with expiry tracking. UK right-to-rent share code validation. Full audit trail on every decision.
Review queue. AML screening. Identity verification. Right to rent.
Five compliance surfaces: a centralized KYC review queue, per-contact KYC document management, anti-money-laundering checks with risk scoring, identity document verification with expiry tracking, and UK right-to-rent validation.
KYC Review Queue
/contacts/kycCentralized queue for contacts awaiting KYC approval. Filter by status (pending, approved, rejected, expired). Assign reviewers. Bulk approve or reject with mandatory notes. Full audit trail per decision.
Per-Contact KYC Tab
/contacts/[id]/kycDocument upload and verification within the contact profile. ID documents, proof of address, and supplementary evidence. Status history shows every review decision with reviewer name and timestamp.
AML Check
/contacts/[id]/aml-checkAnti-money-laundering screening per contact. Risk score calculation, politically exposed person (PEP) flag, and sanction list matching. Results stored on the contact record with check date and source.
Identity Verification
/contacts/[id]/identity-verificationID document capture and verification workflow. Passport, driving licence, or national ID. Expiry date tracking with renewal reminders. Verification status per document type.
Right to Rent
/contacts/[id]/right-to-rentUK right-to-rent compliance check. Document type selection, verification date, follow-up date scheduling, and Home Office share code validation. Required for UK landlords.
Companies. Accounts. One org record linked to contacts.
Organization records group contacts by company or account. List view with search, detail view with linked contacts, and REST API for programmatic access. A contact can belong to multiple organizations.
Organization List
/contacts/organizationsBrowse and search all organizations at /contacts/organizations. Each row shows name, contact count, primary contact, and creation date. Create new organizations inline or from the contact record.
Organization Detail
/contacts/organizations/[id]Full detail view at /contacts/organizations/[id]. Linked contacts with their roles. Organization-level notes, tags, and custom fields. Edit name, industry, website, and address.
Contact Linking
/contacts/[id]/overviewAttach any contact to an organization from their profile. One contact can belong to multiple organizations. Organization appears on the contact overview tab and in search results.
REST API
/api/contacts/organizationsCRUD endpoints for organizations. GET /api/contacts/organizations returns the full list with pagination. POST creates. GET /api/contacts/organizations/[id] returns detail. PUT updates.
CSV with auto-mapping. 10 CRM platforms with OAuth.
Four-step CSV wizard: upload, map columns, preview, import. Or connect to Salesforce, HubSpot, Pipedrive, Zoho, Dynamics 365, Close, Copper, Freshworks, ActiveCampaign, or Zendesk Sell via OAuth. Preview contact counts before importing.
CSV with column mapping. 10 CRM sources with OAuth.
Two import paths: a four-step CSV/Excel wizard with auto-column-mapping and downloadable template, or direct CRM import from 10 platforms with OAuth authentication, contact count preview, and field mapping.
Upload
Drop a CSV or Excel file. Download a pre-built template from /api/contacts/import/template to see the expected columns.
Map Columns
Auto-mapping matches your column headers to contact fields. Override any mapping manually. Unmapped columns are skipped.
Preview
Review mapped rows before committing. Validation flags missing required fields and format mismatches.
Import
Confirm and import with progress tracking. Contacts created with mapped roles, tags, and organization links.
Deals. Ops. Inbox. Mail. Assure. Calendar. Box. Ads.
Eight Calisto products read from and write to the same contact record. Deal pipelines, operations, messaging, email campaigns, inspections, calendar events, file storage, and ad audiences all reference Contacts.
Deals. Ops. Inbox. Mail. Assure. Calendar. Box. Ads.
Contacts is the shared record that eight other Calisto products read from and write to. Deal pipelines, operations, messaging, email campaigns, inspections, calendar events, file storage, and ad audiences all reference the same contact.
Deals
Every deal record links to a contact via regardingcontact UUID. The Deals pipeline reads contact role, organization, financial history, and communication preferences. Bidirectional: the contact profile shows all linked deals.
Ops
Guest, tenant, owner, and vendor records in Ops are contact records with role-specific views. Reservation guest profiles, tenant lease records, and owner income statements all read from Contacts.
Inbox
Inbox threads are matched to contacts by email address and phone number. The contact card appears in the conversation sidebar. New inbound messages from unknown senders can auto-create contact records.
Mail respects the consentMarketing GDPR field before including a contact in any campaign send list. The contact email, name, role, and tags are available as merge fields in templates.
Assure
Inspection and maintenance records in Assure link to contact records for tenant and owner notification. The contact profile tab shows linked Assure activities.
Calendar
Meetings and bookings on the contact record come from Calendar. Attendee resolution uses the contact email. The Calendar tab on the contact profile aggregates all upcoming events.
Box
Documents attached to a contact are stored in Calisto Box with CDN delivery. The Documents tab on the profile lists all files scoped to this contact with upload, preview, and folder organization.
Ads
Contact segments (filtered by role, tag, location, or custom field) export to Calisto Ads as audience targets. Quick action in the navigation sidebar links directly to /ads/buy/audiences.
,0,
client components (13,676 lines of UI)
,0,
CRM sources (Salesforce, HubSpot, Pipedrive, Zoho, Dynamics 365, Close, Copper, Freshworks, ActiveCampaign, Zendesk Sell)
,0,
merge workflow steps (detect, review, merge, verify)
,0,
sidebar navigation sections (People, Organizations, Tools, Compliance, Sites, Settings)
51 endpoints. 46 components. Self-hosted infrastructure.
Self-hosted database infrastructure. 51 REST API endpoints covering contact CRUD, tab data, import, organizations, tags, and compliance. 46 client components with cross-app data fetching and interaction tracking.
Data Model
- 29 profile tabs per contact record
- 10 contact roles with product-context subsets (OPS_ROLES, DEALS_ROLES)
- GDPR: consentMarketing (boolean) + consentTimestamp (datetime)
- Role filtering via query param (?role=client), not separate routes
- Organization linking (many-to-many)
- Family/relationship graph (parent, spouse, sibling, employer, referrer)
- Lifetime value calculated from financial tab data
API Surface
- 51 REST endpoints under /api/contacts
- Core CRUD: GET, POST, PUT, DELETE on /api/contacts/[id]
- Bulk operations: /api/contacts/bulk
- Tab-specific data: 30+ sub-endpoints (/api/contacts/[id]/financial, /kyc, /aml, etc.)
- Import: /api/contacts/import (CSV), /api/contacts/import/crm/* (10 CRM sources)
- Organizations: /api/contacts/organizations with nested [id]
- Tags: /api/contacts/tags with nested [id]
Infrastructure
- Self-hosted database infrastructure
- Circuit breaker + caching + rate limiting at adapter layer (9,967-line adapter.ts)
- Cross-app data: cross-app-fetch.ts (client) + server-cross-app-fetch.ts (server)
- Interaction tracking: track-interaction.ts (2,817 lines)
- Auth: Calisto Auth (session-based, multi-tenant)
- File storage: Calisto Box (cloud storage + CDN)
- 46 client components totaling 13,676 lines
High-Performance Ops. Zero Monthly Overhead.
Get all 15 Core modules at no monthly cost. You only pay 2% of processed revenue.
Contacts
Universal contact database with 29 profile tabs.
Included in Work Free
Wallet-debit
Add to Pro Shop