@php $brand = app(\App\Settings\GeneralSettings::class); $primaryHsl = \App\Support\ColorHelper::hexToHslVar($brand->primary_color); $appNameLower = strtolower($brand->app_name); @endphp {{ $brand->app_name }} — {{ $brand->app_description }} @vite(['resources/css/app.css', 'resources/js/app.js']) {{-- Sticky nav --}} {{-- Hero --}}
Now with two-way SMS, calls, email, and AI assist

The CRM
that actually talks.

One inbox for every channel. Call, message, and email your contacts from a single workspace — with AI that drafts, fixes, and translates for you.

Built on Laravel 13 Self-host or deploy in minutes No credit card required
{{-- Product preview --}}
{{ $appNameLower }}.app/contacts
Contacts
Messages
Calls
Email
Library
Groups
Tags
Contacts · 1,284
@foreach ([['Ada Lovelace', 'Analytical Inc · CTO'], ['Grace Hopper', 'Compilers Co · Founder'], ['Linus T.', 'Open Source · Maintainer'], ['Margaret H.', 'NASA · Software Lead']] as $row)
{{ collect(explode(' ', $row[0]))->map(fn($w) => $w[0])->take(2)->implode('') }}
{{ $row[0] }}
{{ $row[1] }}
VIP
@endforeach
{{-- Features --}}
Features

Everything you need to follow up.

Built for solo operators and small teams who live in their CRM.

@php $features = [ ['title' => 'Two-way SMS & WhatsApp', 'desc' => 'Send and receive over Twilio. Threads per contact, channel selector, inbound webhook that matches contacts by phone.', 'icon' => 'M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z'], ['title' => 'Click-to-call dialer', 'desc' => 'In-browser dialer powered by Twilio Voice. Calls log automatically against the contact timeline.', 'icon' => 'M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z'], ['title' => 'Queued email + tracking', 'desc' => 'Compose, queue, deliver, count opens via tracking pixel. Per-contact email history.', 'icon' => 'M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z'], ['title' => 'AI-assisted everywhere', 'desc' => 'Paste a signature, get a contact. Misspelled SMS? Fix it. Need to message in another language? Translate.', 'icon' => 'M13 10V3L4 14h7v7l9-11h-7z'], ['title' => 'Smart imports', 'desc' => 'CSV upload with column auto-detection and per-row tag parsing. Duplicate detector + one-click merge.', 'icon' => 'M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12'], ['title' => 'Team workspaces', 'desc' => 'Shared address books with team_id isolation. Invite members, assign roles, switch instantly.', 'icon' => 'M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z'], ['title' => 'Real-time inbound', 'desc' => 'Reverb + Echo broadcast every inbound SMS as a live toast in every open browser session.', 'icon' => 'M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9'], ['title' => 'Audit log', 'desc' => 'Every contact change is recorded. Who, what, when — visible right on the contact page.', 'icon' => 'M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2'], ['title' => 'Personal API + tokens', 'desc' => 'Sanctum-powered JSON API. Generate tokens per integration, revoke them when done.', 'icon' => 'M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z'], ]; @endphp @foreach ($features as $f)

{{ $f['title'] }}

{{ $f['desc'] }}

@endforeach
{{-- Workflow --}}
How it works

Three minutes from sign-up to first message sent.

    @foreach ([ ['Register an account', 'A personal workspace spins up automatically.'], ['Import or add contacts', 'CSV with auto-mapping, or paste a signature and let AI extract the fields.'], ['Connect Twilio', 'Drop SID, token, and number into Settings → Twilio. Or stay in fake mode for demos.'], ['Start the conversation', 'SMS, WhatsApp, calls, email — all from the contact card.'], ] as $i => $step)
  1. {{ $i + 1 }}
    {{ $step[0] }}
    {{ $step[1] }}
  2. @endforeach
JD
Jane Doe
+1 415 555 0142
Hi! Any chance we can chat tomorrow at 2pm?
2 min ago
Sounds great. I'll send a calendar invite!
just now · sent
Type a message…
Inbound
Jane Doe replied just now.
{{-- Tech band --}}
Built on the boring stack

Laravel 13 · Tailwind · Alpine · SQLite/MySQL · Twilio · Anthropic Claude

{{-- Final CTA --}}

Ready to talk to your contacts?

Set up takes under a minute. Bring your own Twilio account, or start in fake mode and add credentials later.