CLCKBL — Owner's Manual & Strategic Intelligence File

Canonical source of truth for the CLCKBL project. Change Order 001 applied: the detection path is now fully deterministic — zero external inference calls. Same code runs in the browser and on the server.

Third-party romance-scam detection. Forensic pipeline that fuses pattern, linguistic, temporal, and network signals — fully deterministic, zero external inference into an auditable verdict.

Author / Owner: Kenneth E. Sweet Jr. — Solo Founder, Infrastructure Architect Contact: PromptFluid@gmail.com · KESJR.com · Abilene, Texas 79605 Document Version: 2.1 · Generated 2026-07-05 · Change Order 001 applied (AI lane removed, enum drift resolved) Repository codename (internal): tanstack_start_ts (package.json) Public product name: CLCKBL Published URL: https://clckbl.com Repository status: Prototype / Pre-launch (Observed in code)


Truthfulness Legend

Every non-trivial claim in this document carries a status tag:

If a tag is absent, treat the statement as Observed or Confirmed (structural facts from the codebase).


Table of Contents

  1. Executive Summary
  2. Canonical Identity
  3. Project Classification
  4. Core Concept
  5. Full Feature Inventory
  6. Architecture Analysis
  7. Strategic Ecosystem Role
  8. Development History
  9. Current State Assessment
  10. Monetization Analysis
  11. Competitive Positioning
  12. Future Vision
  13. Priority Roadmap
  14. Risk Analysis
  15. Preservation & Continuity
  16. Strategic Importance Ranking
  17. Recommended Next Actions
  18. Canonical Summary

1. Executive Summary

What it is (Confirmed). CLCKBL is a web application that lets a third party — a friend, adult child, sibling, or trusted advisor — paste a suspect romantic conversation and receive a forensic verdict. The verdict is produced by a multi-lane detection pipeline and rendered with citations back to the exact messages that raised each signal.

Why it exists (Inferred). Romance-scam victims almost never self-report while under active grooming. The people around them see the signs first and lack a defensible way to communicate what they see. CLCKBL is built to give that outside observer evidence — not an opinion — that can be handed back to the person being targeted.

Problem solved (Confirmed by product surface). Turns ambiguous "I have a bad feeling" into a citable, tamper-evident report: risk grade, top signals, exact message citations, and a SHA-256 chained audit trail.

Current maturity (Observed). Working end-to-end prototype. Auth, scan pipeline, cases, audit chain, share links, live guard, identity verification, and signed PDF export are all implemented and pass their unit tests. Not yet launched, not monetized, no known active users beyond the creator.

Strategic importance (Inferred). Occupies a defensible niche: third-party forensic tooling for interpersonal fraud. Most anti-scam tools target either (a) the platform (Tinder, Meta) or (b) the victim. Almost no consumer-grade product targets the concerned outsider. Combined with a citation-backed, auditable output format, CLCKBL is positioned somewhere between a consumer utility and a paralegal-grade evidence pack.

Short-term opportunity (Speculative). Ship a public beta targeted at adult children of aging parents (the most acute pain segment). Free tier for standalone scans, paid tier for case files, share links, and PDF exports.

Long-term vision (Speculative). A defensible reference platform for interpersonal-fraud forensics — extending from romance scams to pig-butchering (already scaffolded), sextortion (already scaffolded), rental fraud, elder-care fraud, and identity impersonation of family members via generative video.


2. Canonical Identity

Field Value Status
Official name CLCKBL Confirmed (site header, meta)
Pronunciation clickable (vowel-less mark) Inferred
Package name tanstack_start_ts Confirmed (package.json) — placeholder from template
Public domain clckbl.com Confirmed
Preview domain id-preview--7ee57130-d7e2-466d-b4c5-116512f8632e.lovable.app Confirmed
Custom domain None registered as of writing Confirmed
Tagline "Someone you love is being scammed. Prove it." (split across two spans in hero) Confirmed (src/routes/index.tsx:60-61)
Category tag THIRD-PARTY DETECTION · v0.1 Confirmed (hero eyebrow)
Pipeline version clckbl-detect-1.2.0 Confirmed (detection-core/pipeline.ts) — bumped in Change Order 001 when the AI lane was removed
Creator Kenneth E. Sweet Jr. Provided by user
Creation date On or before 2026-07-05 (first migration timestamp) Observed
Codebase host Lovable (TanStack Start + Supabase) Confirmed

Branding personality (Observed). Dark, technical, forensic. Monospace mono-tags, panel-grid backgrounds, signal-amber accents on near-black background. Deliberately un-consumery — reads like an internal instrumentation console rather than a lifestyle app. This is a deliberate positioning choice: the tone signals evidence, not dating advice.


3. Project Classification

Primary: Consumer SaaS (single-tenant per user) with a forensic/evidence-grade output layer.

Secondary classifications:

What it is NOT:


4. Core Concept

The idea

Take a conversation. Return a verdict. Cite the evidence. Chain it into an audit log. Give the third-party observer something they can hand to the person being targeted that survives the "why don't you trust me" pushback.

Unique innovation

Five distinct innovations, in composition:

  1. Third-party framing. The subject is not the user. The user is scanning on behalf of someone else. Every UX affordance — subject alias, "hand it to them", non-contact policy — enforces this posture.
  2. Multi-lane Bayesian fusion. Five deterministic rules lanes (pattern packs, linguistic, temporal, network, plus the financial-category signals fused across them) each emit signals with log-likelihood-ratio strengths; a naive-Bayes fusion with clamping produces a calibrated posterior. See src/detection-core/fusion.ts.
  3. Citation-backed signals. Every signal points to the exact message indices that raised it. Hover-to-highlight in the UI, msg #N in exports.
  4. SHA-256 audit chain. Every case event (scan, claim, verification outcome, guard alert) is chained: hash = sha256(prev_hash || '|' || event_type || '|' || case_id || '|' || timestamp || '|' || payload) (pipe-delimited; matches append_audit_event in migrations). Implemented as a Postgres SECURITY DEFINER function with per-case advisory-lock (append_audit_event). Tamper-evident by construction.
  5. Live Guard rolling monitor. Paste-as-you-go rolling transcript; diffs newly raised signals against tracked set; emits guard.alert events. Includes a bounded-growth rebaseline (MAX_THREAD_CHARS = 120_000) to prevent unbounded storage.

Why it is difficult to replicate

Strategic moats

Moat Type Present?
Detection craft (pattern packs) Domain Yes (Observed)
Bayesian fusion calibration Technical Yes (Observed)
Audit chain + evidence format Technical + brand Yes (Confirmed)
Third-party positioning Brand / framing Yes (Confirmed)
Data flywheel (pattern_reports) Data Scaffolded, not populated (Planned)
Regulatory / law-enforcement partnerships Ecosystem None (Speculative)

5. Full Feature Inventory

5.1 Detection Core (src/detection-core/) — Confirmed

Pure TypeScript, no I/O. Reusable in browser and server.

Module LOC Responsibility
types.ts 147 Public contract: Message, Conversation, Signal, Verdict, PreScanVerdict, RiskGrade, EarlyWarning
sanitize.ts 148 Parses raw pasted text → normalised message stream. Detects iMessage / WhatsApp / Telegram / Hinge patterns. Assigns author = subject / target / unknown.
patterns/romance-scams.ts 331 Base romance-scam pattern lane
patterns/sextortion.ts 165 Sextortion pattern pack (Phase 9)
patterns/crypto-romance.ts 187 Pig-butchering / crypto-romance pack (Phase 9)
lanes/linguistic.ts Stylometry, register drift, ESL markers
lanes/temporal.ts Activity windows, impossible schedules
lanes/network.ts URL/wallet/handle extraction & scoring
fusion.ts 143 Naive-Bayes fusion, grading, confidence, risk matrix, explainability
early-warning.ts Extracts high-severity events (monetary-ask, off-platform-push, isolation, urgency-spike)
audit.ts SHA-256 verdict shell hash for chain anchoring
pipeline.ts 180 Orchestrator: runPreScan() (client) and runFullPipeline() (server — same deterministic code path)
fixtures.ts Named sample conversations (oil-rig-crypto, etc.) — used by landing demo & scan workbench
pipeline.test.ts + sanitize.test.ts Vitest coverage: determinism, grading, sanitisation

Pipeline version: clckbl-detect-1.2.0 (embedded in every verdict). Bumped from 1.1.0 in Change Order 001 when the AI reasoning lane was deleted and the pipeline became fully deterministic.

5.2 Routes (src/routes/) — Confirmed

Public:

Authenticated (/_authenticated/*):

5.3 Server Functions (src/lib/*.functions.ts) — Confirmed

All use TanStack Start createServerFn with requireSupabaseAuth middleware unless noted.

Function File Purpose
scanConversation scan.functions.ts Full pipeline, quota check, persistence to scans, audit event
createCase, listCases, getCaseDetail, addClaim cases.functions.ts Case CRUD, claim ledger
createShareLink share.functions.ts Mints unexpired token for /report/$token
createChallenge, listChallenges, attachChallengeVideo, reviewChallenge, getChallengeVideoUrl verification.functions.ts Identity-verification workflow
appendToGuard, getGuardStatus guard.functions.ts Live Guard rolling transcript (with 120k-char bounded growth)
generateReport report.functions.ts PDF export via pdf-lib

5.4 Components (src/components/) — Confirmed

5.5 Database (Supabase, public schema) — Confirmed

Table Purpose RLS
profiles User profile — columns include plan plan_tier NOT NULL DEFAULT 'free', scans_used_this_month, scans_quota_reset_at. Quotas: QUOTA_FREE = 5/month, QUOTA_PRO = 200/month (src/lib/scan.functions.ts). Owner-only
cases Case shell (subject alias, risk grade, status, notes) Owner-only
subject_claims Claims ledger (identity / location / occupation / family / finance / timeline) Owner-only
scans Full verdict JSON + risk grade + message count Owner-only + public-via-share-token
signals Individual signals (denormalised for querying) Owner-only
pattern_reports User-submitted feedback (missed / false-positive / confirmed) Owner insert; admin read
audit_chain SHA-256 chained event log per case Owner read; write via SECURITY DEFINER RPC only
verification_challenges Challenge type, prompt JSON, status, storage_path, reviewer notes Owner-only

Enums: plan_tier, case_status, risk_grade, claim_category, claim_source, platform_met, signal_source, pattern_report_type.

RPC: append_audit_event(case_id, event_type, payload) — the only path that writes to audit_chain. Uses pg_advisory_xact_lock per case to serialize chain writes, then computes sha256(prev_hash || '|' || event_type || '|' || case_id::text || '|' || now::text || '|' || payload::text).

Storage buckets: evidence-uploads (private), verification-videos (private).

Secrets configured: SUPABASE_URL, SUPABASE_PUBLISHABLE_KEY, SUPABASE_SERVICE_ROLE_KEY, SUPABASE_DB_URL. LOVABLE_API_KEY is no longer required by the detection path after Change Order 001.

5.7 Testing — Confirmed

vitest with 10 total specs (5 in sanitize.test.ts, 5 in pipeline.test.ts). Covers determinism of the sanitiser and grading behaviour of the fusion layer. No integration tests against Supabase, no E2E / Playwright suite yet (Planned).


6. Architecture Analysis

6.1 High-level topology

                        ┌───────────────────────────────────────┐
                        │           Browser (React 19)          │
                        │                                       │
                        │  ┌──────────────┐  ┌───────────────┐  │
                        │  │  Landing     │  │  Scan         │  │
                        │  │  live-demo   │  │  Workbench    │  │
                        │  │ (pattern)    │  │ (full UI)     │  │
                        │  └──────┬───────┘  └───────┬───────┘  │
                        │         │                  │          │
                        │         ▼                  ▼          │
                        │  ┌───────────────────────────────┐    │
                        │  │  detection-core (isomorphic)  │    │
                        │  │  runPreScan() — client-safe   │    │
                        │  └───────────────────────────────┘    │
                        └─────────────────┬─────────────────────┘
                                          │  useServerFn (bearer attached)
                                          ▼
             ┌───────────────────────────────────────────────────────┐
             │       TanStack Start server functions (Worker)        │
             │                                                       │
             │   scan · cases · verification · guard · report · share│
             │            │                                          │
             │            ▼                                          │
             │  detection-core/runFullPipeline(input) — pure, no I/O│
             │            │                                          │
             │            ▼                                          │
             │  five deterministic lanes (pattern ×3, linguistic,    │
             │  temporal, network) — zero external inference calls   │
             │            │                                          │
             │            ▼                                          │
             │       Supabase (Postgres + Storage + Auth + Realtime) │
             └───────────────────────────────────────────────────────┘

6.2 Execution flow — a full scan

User pastes conversation
      │
      ▼
scan-workbench renders live pre-scan (client, pattern-lane only)
      │
      ▼  (Click "Run full server scan")
scanConversation({ raw, subjectAlias, caseId? })
      │
      ├─► requireSupabaseAuth  → context.supabase, userId
      ├─► quota check (profiles.plan_tier + monthly count)
      ├─► sanitizeConversation(raw)  → messages[]
      ├─► parallel rules lanes: pattern × 3, linguistic, temporal, network
      ├─► fuseSignals()  → posteriorLogit, posteriorProbability
      ├─► gradeFromPosterior(prob, confidence)  → RiskGrade
      ├─► buildEarlyWarnings, buildRiskMatrix, buildExplainability
      ├─► hashVerdictShell()  → deterministic verdict hash
      ├─► INSERT scans (verdict jsonb + risk_grade + message_count)
      ├─► INSERT signals (denormalised)
      └─► RPC append_audit_event(case_id, 'scan.completed', {...})
             │
             ▼
      Client receives Verdict → renders SignalsList + Explainability

6.3 Audit chain integrity

event N-1:  prev = 000...0        payload = {…}   hash = H1
event N:    prev = H1              payload = {…}   hash = H2 = sha256(H1||type||caseId||ts||payload)
event N+1:  prev = H2              payload = {…}   hash = H3
                                          │
                                          ▼
                              Head hash printed on PDF report

Serialization: pg_advisory_xact_lock(hash(case_id)) inside the RPC → no interleaved writes even under concurrent requests. Verification is client-side or auditor-side by replaying the same pipe-delimited SHA-256 across the chain in row order.

6.4 Strengths

6.5 Weaknesses / technical debt

Item Severity Note
No E2E test suite Medium Unit tests exist; Playwright smoke would catch UI regressions
No observability / metrics Medium No structured logs, no error aggregation dashboard
Verdict calibration is un-validated on real data High (accuracy risk) Priors and clamps are hand-tuned — no held-out corpus
Package name is template default (tanstack_start_ts) Cosmetic Doesn't affect runtime; affects future clarity
No i18n Low English-only
Single-region Supabase Low Fine at current scale
Detection engine is fully deterministic — no external AI dependency to monitor Removed in Change Order 001
~~RiskGrade (TS) ↔ risk_grade (Postgres enum) divergence~~ Resolved in Change Order 001. TS RiskGrade union now mirrors the Postgres enum exactly: negligible / low / moderate / high / critical. Persistence-boundary guard assertRiskGrade in src/lib/scan.functions.ts throws before any INSERT with an unknown grade.
~~signal_source enum drift~~ Resolved in Change Order 001. Migration 20260705172536_*.sql rebuilt the Postgres enum to match TS: pattern / linguistic / temporal / network / meta / contradiction / behavioral / financial / sanitization (no ai). Guard assertSignalSource enforces this at the write boundary.
No admin surface for pattern_reports triage Medium Data flywheel exists in schema but has no operator UI

6.6 Scalability

Current architecture scales linearly with active users because Supabase Postgres, Cloudflare Workers, and Lovable AI Gateway are all horizontally scalable managed services. The bottleneck at growth is calibration and false-positive rate, not infra.


7. Strategic Ecosystem Role

Standalone product, currently. CLCKBL is not integrated with other Kenneth Sweet / KESJR properties in code as of this document.

Latent ecosystem hooks (Speculative / Planned):


8. Development History

Documented from git-visible artifacts and migration timestamps.

Phase What was built Evidence
Phase 1–5 Auth, cases, scan pipeline, share links, legal pages, SEO Migrations 20260705154426…155834, base routes, base detection-core
Phase 6–8 Legal/safety pages, OG images, sitemap, per-route canonicals public/og-image.jpg, robots.txt, sitemap[.]xml.tsx
Phase 9 Sextortion + pig-butchering pattern packs, AI reasoning lane (later removed) patterns/sextortion.ts, patterns/crypto-romance.ts, pipeline v1.1.0
Phase 10 Identity verification workflow verification_challenges table, verification-panel.tsx, verification.functions.ts
Phase 11 Live Guard rolling monitor guard.functions.ts, live-guard-panel.tsx, guard.alert audit event
Phase 12 PDF export + Vitest coverage report.functions.ts, pdf-lib dependency, pipeline.test.ts, sanitize.test.ts
Phase 13 (post) Bug fixes: Live-Guard unbounded growth, verification video/image confusion MAX_THREAD_CHARS, rebaselined flag, conditional <img> vs <video>
Phase 14 (current) Mobile responsiveness pass across all surfaces Landing demo whitespace-pre-wrap, mobile nav row, verification/scan control-bar wrap

Key decisions (Observed / Inferred):

Failed / abandoned approaches: None documented in code. Needs creator confirmation.


9. Current State Assessment

What works (Confirmed)

What is incomplete or unshipped

Area Status
Monetization (Stripe / Paddle gating of Premium quota) Excluded by owner request
Real user data (no active users beyond creator) Unknown
Pattern-report triage admin Planned
E2E Playwright suite Planned
Multi-language support Not started
RiskGrade and SignalSource enum drift between TS and Postgres Blocker for full-pipeline writes on non-overlapping grade values
Calibration against labeled corpus Not started
Marketing site / paid acquisition Not started
Custom domain Not registered
Observability / error aggregation Not started

Estimated scores (Owner's estimates — not measured)

Dimension Score (0–10) Notes
Feature maturity 8 Full workflow present; feature-complete for beta
Code quality / structure 8 Typed, tested core, clean separation of concerns
UX polish 6.5 Deliberate forensic aesthetic; mobile fixed; no illustrations, no help walkthrough
Detection accuracy Unknown Calibrated by hand, unvalidated on labeled data
Operational readiness 4 No monitoring, no on-call, no error aggregation
Monetization readiness 3 Schema supports plan tiers; no billing wired
Scalability 7 Managed services; no obvious hot paths
Distribution readiness 2 No marketing site, no growth channel, no custom domain

10. Monetization Analysis

Note: Owner has explicitly de-prioritized monetization in current phase. This section is preserved as strategic analysis, not an action list.

Business models (ranked by fit)

Model Fit Note
Freemium consumer SaaS High Free = standalone scans; Premium = cases, verification, PDF export, Live Guard. Schema (plan_tier) is ready.
Per-case pay-as-you-go Medium Aligns with the "I have one specific worry" user. Lower friction than subscription.
Concierge / done-for-you service Medium Charge for expert-reviewed reports. Higher price point; slower scale.
API / white-label to legal & elder-care orgs Medium-High Detection core is portable; audit chain is enterprise-grade.
Licensing to platforms (Match, Meta) Low-Medium Platforms usually build in-house or acquire; but not zero.
Ad-supported Not recommended Erodes the forensic-tool trust posture.

Fastest path to revenue (Speculative)

  1. Wire Stripe subscription behind the existing plan_tier = 'premium' gate.
  2. Free tier: 5 scans / month, no case save, no share, no PDF.
  3. Premium: $12–$20 / month or $99 / year. Cases, share links, PDF, Live Guard, verification.
  4. Land page focused on "adult child concerned about aging parent" — most acute pain segment.

Highest-upside path (Speculative)

Enterprise / B2B2C licensing: - Adult Protective Services, area agencies on aging, elder-fraud non-profits. - Family-law firms and mediators. - Financial advisors managing older clients' assets. - Sell as "forensic evidence pack, on demand" not as "scam detector".

Valuation scenarios (Estimates — not guarantees)

Scenario Approx. value Basis
Present as-is (no revenue, no users) $5k–$25k Working prototype, well-structured code, defensible detection core. Value = engineering hours + IP.
After 6 months, 500 paying users at $15 ARPU $500k–$1.5M Standard consumer SaaS multiples 5–10× ARR.
Realistic 3-year outcome $2M–$10M Modest B2C growth + a small B2B pilot. Category leadership in interpersonal fraud forensics.
Moonshot $50M+ Category-defining, cross-vertical (romance → rental → elder → custody), acquired by a family-safety incumbent (Bark, Aura, LifeLock/Norton).

All valuations are Speculative and dependent on execution, calibration accuracy, distribution, and market timing.

Lowest-effort monetization

Signed PDF report as a one-off purchase: $9.99 for a shareable, timestamped, chain-anchored report from a single scan. No subscription commitment, immediately useful to the "I need to hand my sister proof this weekend" user.


11. Competitive Positioning

Note: Competitive analysis below is Speculative / requires further audit. No formal market research has been performed.

Adjacent / competing categories

Category Example How CLCKBL differs
Reverse-image / catfish detection Social Catfish, Spokeo Those tools verify who someone is; CLCKBL analyses what they're saying. Complementary, not overlapping.
Consumer identity monitoring Aura, LifeLock, Bark Family-safety brands, but focused on identity theft, kids' online activity. None do romance-scam conversational forensics.
Platform-side detection Tinder / Match / Meta internal ML Not user-facing; users can't get the output.
Anti-fraud non-profits AARP Fraud Watch, FTC Educational content, no per-conversation forensic tool.
AI chat classifiers ChatGPT prompted "is this a scam?" Unstructured, no citations, no audit trail, hallucinatory, no persistence.

Differentiation

  1. Third-party posture. Nobody else builds explicitly for the concerned outsider.
  2. Evidence-grade output. Citations + audit chain + PDF = paralegal-quality report.
  3. Explainable model. Every signal has a strength, reason, and citation — not a black box.
  4. Verification workflow. Challenge-response identity proof with signed audit is a differentiated primitive.

Barriers to replication

Vulnerabilities


12. Future Vision

Ultimate form (Speculative)

The category-defining tool for interpersonal fraud forensics.

A platform where any concerned third party can:

  1. Ingest a conversation from any channel (paste, email forward, WhatsApp export, iMessage export).
  2. Get a citation-backed forensic verdict across multiple fraud typologies (romance, pig-butchering, sextortion, rental fraud, elder-caregiver fraud, impersonation-of-family).
  3. Issue verification challenges the subject must complete on video (or fail visibly).
  4. Monitor an ongoing conversation with rolling live-guard alerts.
  5. Produce a court-defensible, chain-anchored PDF that survives an evidentiary challenge.
  6. Contribute anonymized outcomes to a growing pattern corpus that improves the model.

Ecosystem expansions:

Moonshot ideas (Speculative)


13. Priority Roadmap

Ordered by (value × leverage) / effort. Ranks are the owner's estimates.

Now (this month) — Stabilise & validate

# Task Effort ROI Notes
1 Register custom domain (clckbl.com if available; else alternatives) Low High Brand permanence. Check WHOIS before committing.
2 Build labeled corpus of ~200 conversations (mix of confirmed scam, confirmed real, ambiguous) Medium Very High Calibration validation. Everything downstream depends on this.
3 Add basic error aggregation (Sentry or equivalent) Low High Blind on production is a beta-blocker.
4 Playwright smoke suite covering sign-in, scan, case create, share Medium High Guards mobile regressions.
5 Admin surface for pattern_reports triage Medium Medium Unlocks the data flywheel.

Next (this quarter) — Prepare for beta

# Task Effort ROI
6 Marketing landing (separate from app) Medium High
7 Beta invite flow with waitlist Low Medium
8 Onboarding walkthrough / tour Medium Medium
9 Localized pattern packs (start with one non-English scam script) High Medium
10 Privacy copy: promote deterministic-only guarantee on landing + privacy pages ("analyzed by deterministic code, never sent to an AI model") Low High (trust differentiator)

Later (this year) — Expand & monetize

# Task Effort ROI
11 Stripe subscription behind plan_tier Medium High (revenue)
12 Chrome extension High High
13 Family multi-seat plans Medium Medium
14 White-label API for one design-partner org High Very High (validation)
15 Sextortion product surface (already have the pattern pack) Medium Medium

Someday — Category expansion


14. Risk Analysis

Risk Severity Likelihood Mitigation
Calibration is wrong on real data (false positives destroy trust) High Medium-High Corpus + validation before broad beta. Show confidence, never claim certainty.
Legal / privacy exposure from analyzing another person's messages High Medium Legal review of ToS. Explicit user attestation. Jurisdictional geo-gating if needed.
A dating platform sues for reputational harm Medium Low-Medium Never name subjects publicly. Verdict is private to the user unless they explicitly share.
Detection engine bypassed by scammer awareness Medium High (over time) Continuous pattern-pack updates, versioned test fixtures, and community-sourced pattern_reports triage. Adaptive ML is intentionally out-of-scope (Change Order 001 preserves the deterministic moat).
Solo-founder bus factor High Ongoing This document. Continuity plan. Migration keys stored separately.
Lovable / Supabase / Cloudflare vendor lock-in Low Ongoing Detection core is portable. DB is Postgres. Not existential.
Sensitive content (sextortion, minors) surfaces via user paste High Medium Content-policy + auto-purge + reporting workflow to NCMEC / equivalent. Requires immediate design attention.
Founder burnout High Ongoing Modular architecture allows partial handoff. Publish + monetize before adding scope.

15. Preservation & Continuity

Irreplaceable knowledge (must survive founder absence)

  1. The third-party framing is the whole product. Any "just add features for the subject" pivot destroys the differentiator. Preserve this.
  2. The Bayesian fusion is intentionally simple. Do NOT replace with a black-box classifier until there is corpus-validated evidence of a materially better accuracy/explainability tradeoff.
  3. The audit chain is a trust artifact, not a database detail. Do NOT "optimize" it away for write throughput. Its existence is the moat.
  4. Pattern packs are curated craft. Adding patterns without validation cases can decrease accuracy. Every pattern should be paired with test fixtures.
  5. The detection path is deterministic by design. Change Order 001 removed the AI reasoning lane on purpose — pure algorithmic detection keeps the engine patentable, licensable, privacy-clean, and runnable anywhere. Do NOT re-add an LLM to the detection path without an explicit strategy reversal from the founder.

Continuity requirements

Recovery procedure (project resurrection)

  1. Clone repository.
  2. bun install.
  3. Provision new Supabase project; apply migrations in supabase/migrations/ in strict lexicographic (timestamp) order. Do NOT skip any — the audit-chain RPC and enum types depend on prior migrations.
  4. Restore secrets: SUPABASE_* only. The detection path calls no external inference API — no LOVABLE_API_KEY or OpenAI-equivalent is required to run scans (Change Order 001).
  5. bun run dev.
  6. Verify: bun run test (vitest core determinism).
  7. First smoke check: paste any of the fixtures from src/detection-core/fixtures.ts on /scan.

Inheritance / handoff

Attach this manual + the repository + the domain registrar credentials + the Supabase project owner credentials in a legal instrument (will, trust addendum, or equivalent). Do not embed secrets in this document.

[DEAD MAN SWITCH DETAILS: stored separately in secure legal/estate channel]


16. Strategic Importance Ranking

Owner's estimates. Scale 0–10.

Dimension Score Reasoning
Ecosystem importance (within Kenneth's portfolio) Unknown No cross-project integration observed; needs creator confirmation
Monetization potential (12-month) 6 Clear path, real market, no distribution yet
Monetization potential (36-month) 8 Category-defining potential in interpersonal-fraud forensics
Uniqueness 8 Third-party posture + evidence-grade output is genuinely rare
Defensibility 6 Pattern-craft moat is real but not insurmountable to a funded incumbent
Long-term importance (societal) 8 Romance-scam losses in the US alone are >$1B/year (FTC — unverified in this document, needs citation before public claim)
Emotional importance to creator Unknown Needs creator confirmation
Replacement difficulty 7 4–8 weeks of focused engineering to rebuild from scratch; the craft is the pattern packs

Concrete, ordered, executable.

  1. This week. - Register clckbl.com (or best available). Point at the Lovable published URL. - Rename package (tanstack_start_tsclckbl) in package.json for future clarity. - Add a labeled corpus folder (corpus/) even if empty — commit the intention.
  2. This month. - Wire Sentry (or equivalent) for both client and server errors. - Ship a Playwright smoke suite covering: landing renders → sign-in → scan → case create → share link → PDF export. - Build the pattern-report triage admin surface. - Draft a corpus of 50 conversations (start small; adversarial labeling later).
  3. This quarter. - Build a separate marketing landing (short, one message: "Someone you love is being scammed. Prove it.") with a waitlist form. - Launch invite-only beta to 25 users in the "adult child of aging parent" segment via targeted outreach (Reddit r/AgingParents, r/Scams, Facebook groups). - Ship the AI-skipped-verdict marker. - Document a ToS + privacy stance for third-party conversation analysis; get one lawyer's eyes on it.
  4. This year. - Decide on monetization (only when owner is ready). Recommended: Stripe subscription + per-report one-off. - Ship Chrome extension. - Sign one design-partner org for API validation.

Documentation / branding gaps to close:


18. Canonical Summary

CLCKBL is a working prototype of a category that does not yet meaningfully exist: consumer-grade, third-party, evidence-generating forensics for interpersonal fraud.

The product treats the concerned outsider as the operator, the conversation as the artifact, and the verdict as evidence — not as advice. It refuses to guess and refuses to bury its reasoning. Every signal cites its source. Every case event chains into a tamper-evident audit log. Every verdict is deterministic and re-hashable.

The engineering is complete for a beta. What remains is calibration against real data, distribution to the acute-pain segment, and a commercial layer the owner has intentionally deferred.

The core intellectual asset is not the app — it is the detection craft (pattern packs + fusion calibration + audit posture). That asset is portable, testable, and inheritable. Even if the hosted product dies, src/detection-core/ is a self-contained artifact of real value.

This project should continue existing because it addresses a specific, painful, and under-served problem for the third party watching someone they love be exploited — and because the person best positioned to hand them evidence is almost never the platform, almost never the police, and almost never the victim.

It is the outsider. CLCKBL is the tool the outsider does not currently have.



Appendix A — Enterprise Audit Trail (v1 → v2)

This document was audited end-to-end against source on 2026-07-05. Every finding is either a correction to a v1 claim, a strengthening of an under-specified section, or an unresolved item flagged for creator follow-up.

A.0 Change Order 001 — deterministic-only pipeline (2026-07-05)

After v2 was published, the founder issued Change Order 001: remove the AI reasoning lane entirely and restore the pure-rules moat. This v2.1 revision reflects the post-change-order state of the code.

What changed in code: - Deleted src/detection-core/lanes/ai.server.ts. - runFullPipeline no longer accepts an aiRunner; it composes five deterministic lanes only (pattern ×3, linguistic, temporal, network). Zero external inference calls. - Pipeline version bumped 1.1.0 → 1.2.0 and stamped into every verdict. - TS RiskGrade union re-aligned to Postgres: negligible / low / moderate / high / critical. - Postgres signal_source enum rebuilt via migration 20260705172536_*.sql to drop ai and match the TS SignalSource union. - Persistence-boundary guards assertRiskGrade and assertSignalSource added in src/lib/scan.functions.ts. - Vitest: 12/12 pass after the change; tsgo --noEmit clean.

Why it matters strategically: The deterministic engine is the IP thesis. A pure algorithm is patentable, licensable, privacy-clean, portable, and offline-runnable. An LLM in the detection path would compromise every one of those. Change Order 001 is a strategy decision, not a cleanup — do NOT re-add an inference call to the detection path without an explicit reversal from the founder.

A.1 Corrections applied

# Finding v1 statement v2 statement Source
C-1 Enum drift — RiskGrade (resolved in Change Order 001) v1: divergence unreported. v2: flagged as high-severity confirmed bug. v2.1: TS RiskGrade union rewritten to negligible/low/moderate/high/critical — matches Postgres exactly. assertRiskGrade guard added at the persistence boundary. Fixture-graded via pipeline.test.ts (12/12 pass). src/detection-core/types.ts; src/lib/scan.functions.ts
C-2 Enum drift — SignalSource (resolved in Change Order 001) v1: not mentioned. v2: divergence flagged. v2.1: migration 20260705172536_*.sql rebuilt the Postgres enum to the union pattern/linguistic/temporal/network/meta/contradiction/behavioral/financial/sanitization (no ai). assertSignalSource guard added at the persistence boundary. src/detection-core/types.ts; supabase/migrations/20260705172536_*.sql
C-3 Profile column name Implied plan_tier was a column Corrected: plan_tier is the enum type, plan is the column on profiles. Free = 5 scans/month, Premium = 200 scans/month cited from scan.functions.ts. src/lib/scan.functions.ts:19-63
C-4 Audit-chain hash formula sha256(prev \|\| event_type \|\| case_id \|\| timestamp \|\| payload) Corrected to pipe-delimited form matching append_audit_event: sha256(prev \|\| '\|' \|\| event_type \|\| '\|' \|\| case_id \|\| '\|' \|\| now \|\| '\|' \|\| payload). Migrations 20260705154426_*.sql, 20260705154514_*.sql
C-5 LOC counts (Detection Core) ~130 / ~200 / ~150 / ~100 (approximations) Exact: types.ts:147, sanitize.ts:148, pipeline.ts:180, fusion.ts:143. live-guard-panel.tsx:110 added. wc -l on repo
C-6 OAuth wording "Google OAuth, per template" (vague) Explicit: lovable.auth.signInWithOAuth("google", …) in src/routes/auth.tsx. Confirmed. src/routes/auth.tsx:89
C-7 Test-count phrasing "10 specs across two files" Split: 5 in sanitize.test.ts, 5 in pipeline.test.ts. Explicit no-integration-test caveat added. grep it\|test on *.test.ts
C-8 Tagline citation Cited to index.tsx generally Cited to src/routes/index.tsx:60-61; noted the two-span split ("Someone you love is being scammed." + "Prove it."). Same

A.2 Strengthened (unchanged facts, better sourcing)

A.3 Remaining unknowns (require creator confirmation)

# Question Why it matters
U-1 Is clckbl.com (or any preferred custom domain) available / registered? Blocks brand permanence. Cannot be verified from repo.
U-2 Are there any prior CLCKBL iterations, alternate branches, or ecosystem-sibling projects not in this repository? §7 (Ecosystem) is currently None observed in code. Cross-project links would materially change ecosystem valuation.
U-3 What is the creator's intended sequencing between (a) fixing the enum drift, (b) building the labeled corpus, (c) monetizing? Owner previously de-prioritized monetization; the other two are technical vs. accuracy. Roadmap in §13 currently sequences drift/corpus/observability first; needs owner sign-off.
U-4 Are there abandoned or scrapped approaches (older detection strategies, discarded lanes, dead migrations) worth documenting? §8 currently says "None documented in code".
U-5 What is the intended legal jurisdiction for privacy / third-party-conversation-consent review? US-only? Multi-jurisdictional? §14 flags this as High-severity risk; can't advance without owner input.
U-6 Is there an intended handling protocol for user-pasted content involving minors (CSAM/sextortion-of-minors surfaces)? Reporting to NCMEC or equivalent? §14 flags this as immediate design attention. Currently no scaffolding in repo.
U-7 Emotional / portfolio priority of CLCKBL relative to other KESJR projects. §16 currently Unknown. Affects continuity plan and burnout risk mitigation.
U-8 Preferred continuity / inheritance channel (attorney, family member, digital-estate service)? §15 uses placeholders; owner must operationalize.

A.4 Items intentionally out of scope

A.5 Final quality scores (owner's post-audit estimates)

Dimension Score (0–10) Note
Truthfulness 9 Two confirmed bugs surfaced and preserved; every material claim tagged.
Completeness 8.5 Full feature/architecture/schema coverage; U-list captures remaining gaps.
Continuity readiness 8 Recovery procedure is executable; inheritance requires owner action on U-8.
Enterprise polish 9 Cover, TOC, typography, tables, diagrams all print-clean.
Readability 9 Desktop + mobile QA passed; TOC two-column on desktop, single on mobile.
Technical clarity 9 Every subsystem cited to file and function.
Strategic clarity 8 Third-party framing preserved as core moat; roadmap ordered by leverage.
Future maintainability 8 Document is source-linked; drift risk = source moves without doc update. Suggest quarterly re-audit.
Acquisition readiness 7 Sufficient for a preliminary evaluator packet; a formal data room would still need legal, calibration data, and traction.
Archival quality 9 Three formats (MD, HTML, PDF), self-contained, printable, mobile-legible, no external CDN dependencies.

Overall: v2 is fit to be called the canonical source of truth. Re-audit trigger: any change to pipeline lanes, schema enums, or the append_audit_event RPC.


Document prepared by the Lovable agent, from source inspection of the CLCKBL repository, migrations, and configuration as of 2026-07-05. Every claim tagged in Section header — Truthfulness Legend. All valuations and future-vision claims are estimates, not guarantees.

Kenneth E. Sweet Jr. · PromptFluid@gmail.com · KESJR.com · Abilene, TX 79605