CRM · Growth Ops · 2026

The KlindrOS CRM — turning a stranger into a paying tenant

The engine behind the scans: four lead doors into one workspace, two-way email over IMAP, Calendly write-backs, a one-click convert-to-tenant, and a Ghost blog wired straight into the same sales pipeline.

People see the marketing platform and the scans, but they miss the engine that turns a stranger into a paying customer. That engine is the CRM. Every workflow below is real — my sales team runs these steps every day.

What the CRM is

The CRM is an admin panel served at /crm. It runs on Filament inside the same Laravel backend as the rest of KlindrOS, under a module called PublicScanner. It is internal tooling for the KlindrOS and Digicrats sales team, and it is single-tenant — the product platform isolates every customer, but the CRM is our own house, so it stays one shared workspace for the whole team.

You sign in with Google. The panel never creates accounts on its own — it matches your Google email to an existing approved user, checks that you are active and hold an Admin or Super Admin role, then lets you in. Failed attempts go to a security log, and a time-based one-time passcode guards the login as a second factor.

The four doors a lead comes through

A lead reaches the CRM through four doors, and every door feeds one workspace.

  1. A KScore Business scan — a company scans one account on the landing page; the team sees the score before they write a word.
  2. A KScore Personal scan — an individual runs the three-minute personal-brand scan; a hot consumer signal never gets lost in the business pipeline.
  3. A Calendly booking — a prospect books a call; the webhook creates or matches the lead and moves it forward.
  4. The blog — a reader subscribes through Ghost and flows into the same module.

Manual entry, referral, and bulk import round out the sources.

What lives inside

Leads are the core record — business name, contact, industry, size, status, source, assignee, and the full UTM trail from the landing page, each carrying its lite scans, activity timeline, and email threads. Alongside them sit personal-scan leads, ten prewritten email templates across four stages, a shared library of reusable PDF attachments, blog subscribers kept in sync with Ghost, and trackable short links with QR codes and click analytics. Three working pages — Scheduled Outbox, Bulk Send Campaign, and Broadcast Queue — drive the sending.

KlindrOS CRM Short Links analytics — a short URL with UTM presets, server-side backend click log, GA4 attribution, a humans-vs-bots clicks-over-time chart, and top countries and cities
Every outreach link is measured twice: a server-side backend log and GA4, split by real humans vs bots.

The email engine

The CRM sends real email, not links to another tool. It authenticates as hello@klindros.com and sends as the sales@ alias, so the prospect sees a sales address. Every email builds through one pipeline: substitute the lead’s variables, convert markdown to HTML, append the sender’s signature, wrap it in a branded template, inject a tracking pixel, rewrite every link through a click redirect with UTM, and add a one-click unsubscribe header. Each message gets a Message-ID in the KlindrOS domain — the key that ties replies back to the right conversation later.

Working a lead from scan to signed customer

A growth head runs a KScore Business scan on their Instagram. The lead lands as new, scan attached. You read the KEI score and the two platform gaps, pick the cold-intro template on the attribution gap, and lead with the brand’s own numbers. The status moves to contacted. The CRM shows the prospect opened the email twice and clicked the report link — and that first open flips the lead to email-verified on its own.

No reply after a day, so you send the follow-up. The prospect replies from their own inbox and it threads back onto the lead, matched by the reply header — you never leave the panel. They ask for a demo, you send an invite, they book, and the lead moves to qualified automatically. After the demo you move it to trial. When they agree to buy, you click Convert to Customer.

One atomic action creates an Organization, an admin user with a one-time password, attaches the Super Admin role, and flips the lead to customer. The lead just became a live tenant on the platform.

Two-way email

The CRM reads replies, not just sends them. A background command polls the inbox every two minutes over IMAP and routes each message through a matcher: In-Reply-To against an outbound Message-ID first, then the references chain, then a subject starting with Re/Fwd plus sender, then the sender email alone as a new thread. Matched mail moves to a Processed folder so it never gets read twice, and the team answers from the timeline without opening Gmail. Failed and bounced sends are first-class states, shown in red on the dashboard.

Booking meetings with Calendly

Each lead has a Send Meeting Invite action — pick an intro call, a demo, or a pricing discussion, and the CRM asks Calendly for a single-use scheduling link, decorates it with the lead’s details and a tracking id, and emails it through the same branded pipeline. When the prospect acts, a Calendly webhook writes back on its own: a booking moves the lead from new to qualified and records the times, location, and answers; a cancel logs the reason. The webhook proves it is really Calendly through a secret in the URL path, because the plan issues no signing keys.

How the Ghost blog joins the CRM

Here is the part people miss: the blog is not a separate island. Our Ghost CMS runs the KlindrOS blog at cms.klindros.com and wires straight into the same CRM module — content and sales share one engine, one SMTP account, and one branded email wrapper. Ghost sends three webhooks, each verified by an HMAC signature with a five-minute replay window: member added writes the reader into the subscribers table, member deleted flips them to unsubscribed but keeps the row, and post published enriches the article through the Content API and queues it for a blast with an idempotency lock so a double-fire never double-sends.

Every evening at 18:00 Jakarta, a scheduled job gathers new posts and sends one digest to every active subscriber, one message at a time with a sixty-second gap to respect the mail server. The digest and the per-post blast use the same branded wrapper and the same tracking as the sales email.

KlindrOS CRM Vendor Costs page — total cost $0.0823 across 1,059 calls, a daily cost breakdown stacked by vendor (OpenAI, Apify, Other), and a per-actor/model table with cost per call and token counts
Every scan and AI call is costed per vendor and per actor/model, so the unit economics stay visible next to the pipeline.

A blog reader becomes a sales conversation

A marketer reads a KlindrOS article on attribution and subscribes for the digest. Ghost fires the member-added webhook, she lands in the subscribers table, and she gets the branded welcome that evening. Over two weeks she opens five digests and clicks three articles — all tracked through the same pixel and redirect the sales email uses. Your team sees an engaged contact who keeps returning to attribution content. That is a buying signal.

You open with a KScore Business scan of her company’s account. The blog reader became a warm lead, and the warmth came from data the CRM already held. Content fed the pipeline with no manual export.

What you can take away

  • 4 lead doors into one workspace
  • 2 min IMAP reply-polling cadence
  • 1-click convert a lead into a live tenant
  • 18:00 nightly Ghost digest, Jakarta time

Put every door into one workspace, and your team works one pipeline, not five. Read the replies where you send. Let the tools write back on their own — Calendly bookings, opens, clicks, and blog engagement all log themselves. Close the loop from scan to tenant in one action. And join content to sales: a reader who keeps clicking attribution posts is a lead the data already warmed.