saascode
Replica

Replica

A white-label AI chatbot platform for agencies to launch and operate branded chatbot services for their clients.

inside the product
01· Landing
02· Pricing
03· Features
04· How It Works
05· Widget Demo
06· Contact
07· Dashboard
the complete operation

Replica is a white-label AI chatbot platform built for agencies. An agency signs up, gets its own branded workspace, and resells AI chatbots to its own end clients. Every bot is trained on that client's own material and is embedded on the client's website through a small script tag.

Replica in depth

Each client gets useful answers without sharing another client's context.

An agency can sell a chatbot quickly; keeping it trustworthy across a growing client roster is the harder business. One weak answer can become a support escalation, while one client's material appearing in another client's response would damage both relationships at once. The work also compounds: every new account brings a separate body of information, a separate standard of accuracy and another set of questions that changes over time. Without a disciplined way to keep those boundaries and answers dependable, the service stops scaling long before the agency runs out of prospects.

  • Self-contained RAG chatbot engine (per-bot model, streamed)
  • KB management (PDF/TXT/DOCX/URL → async chunk+embed) (Async knowledge-base ingestion for text-based PDFs, TXT, DOCX and URLs, with chunking and embeddings)
  • Bot configuration

The service looks and feels like the business that sold it.

A reseller loses credibility when the product it delivers keeps reminding the customer that somebody else built it. The problem appears in small places first: an unfamiliar name in the portal, a generic interface beside the client's website, or a support experience that feels disconnected from the agency that sold it. Each mismatch makes the service look rented and makes the agency easier to replace. As the client roster grows, those inconsistencies turn into repeated explanations, extra onboarding work and a weaker relationship at the exact moment the agency is trying to prove that the service is its own.

  • Embeddable chat widget (isolated, cross-domain)
  • Per-client dashboard (client login)
  • White-label branding (per-org)
  • Advanced per-client branding (custom CSS, domain docs)

Every report shows what worked and what the knowledge still misses.

Chatbot activity is easy to count and hard to defend. A client does not renew because message volume went up; they renew when the agency can show which questions were resolved, where people still needed help and what should change next. Without that evidence, a monthly report becomes a decorative chart and every renewal conversation falls back to opinion. The agency then spends time explaining value manually while the client's most expensive unanswered questions keep repeating. A useful operating report has to make both sides visible: the work the chatbot removed and the gaps that still deserve attention.

  • Usage tracking (Client-level message and conversation usage, bot- and organization-level token tracking, and organization-wide ready-document totals)
  • Analytics dashboard (agency + client)
  • Deflection analytics + gap report

A difficult conversation reaches a person before the client loses trust.

Automation becomes a liability when a visitor needs judgment and the only available response is another automated turn. The damage is rarely one unanswered question. It is the feeling that nobody is watching while frustration rises, followed by a complaint the agency hears about after the customer has already decided the service failed. Teams that cannot see those moments also cannot learn from them: the same difficult topics recur, operators arrive late and the client experiences the gap as silence. A reliable service needs a clear boundary between conversations the bot can finish and conversations that now belong to a person.

  • Conversation history + transcripts
  • Live human handoff
complete feature inventory
Self-contained RAG chatbot engine (per-bot model, streamed)1. The visitor's question is converted into the same numeric representation as the stored chunks. 2. The bot's own chunks — never another bot's — are searched for the closest matches. 3. The best matches are handed to the chat model together with the bot's system prompt. 4. The answer is streamed back to the visitor a token at a time.

If nothing in the knowledge base is close enough, the bot gives its fallback response rather than inventing an answer. If the question hits a handoff keyword, or the visitor asks for a person, the conversation is escalated instead.

KB management (PDF/TXT/DOCX/URL → async chunk+embed) (Async knowledge-base ingestion for text-based PDFs, TXT, DOCX and URLs, with chunking and embeddings)Async knowledge-base ingestion for text-based PDFs, TXT, DOCX and URLs, with chunking and embeddings
Bot configurationEach bot also carries its own public widget key (a string beginning rb_pub_). That key is what the embed snippet carries, and it is scoped to that one bot.

Each bot carries:

Embeddable chat widget (isolated, cross-domain)The loader script draws only a small launcher button. The conversation itself runs inside a cross-origin frame, so none of the host site's styles, scripts or global variables can collide with the widget — and the widget cannot read the host page. Resizing and open/close state are exchanged through a narrow message channel.

That isolation is why the widget looks identical on a WordPress theme, a Shopify storefront and a hand-written landing page.

Advanced per-client branding (custom CSS, domain docs)Widget appearance is edited on the same Embed screen: accent colour, launcher position, avatar image, and a short list of suggested questions shown before the visitor types anything. Agencies on the paid tiers additionally get custom CSS for per-client styling.

You receive this. It ships behind a feature flag and sits on the Pro, Scale tier as configured, so it is revenue you can reserve for your own paying customers.

Client management (create, assign bots, per-client toggles)Each client record carries a name, a contact email, a status and a set of permissions. A client may optionally be linked to a login account; without one the client simply has no portal access and the agency runs everything on their behalf.

Client status is one of: - active — normal operation. - paused — temporarily suspended. - archived — retired, kept for history.

Bots are assigned to a client, so a client's dashboard, analytics and conversations all resolve through the bots that belong to them.

Per-client dashboard (client login)The whole portal renders under the agency's branding — logo, name and colours — not under Replica's. That is the white-label promise: the client never learns which platform the agency is standing on.

A client with a login lands in /client/*, which is a much narrower space than the agency app:

Conversation history + transcriptsConversations in the agency app lists them with search and filters by date, client and bot. Selecting one opens the full thread beside the list, so you can scan the list and read a thread without losing your place. Threads can be flagged for follow-up, and conversations can be exported in bulk on the plans that include export.

Visitors are anonymous by design — a widget conversation carries no name or email unless the visitor typed one into the chat.

Live human handoffHandoff is a paid-plan feature (live_handoff, available on Pro and Scale). When it is enabled, a conversation can be escalated to a person and lands in the Live chat queue.

An escalation is triggered by one of four things, recorded on the handoff record: - user_request — the visitor asked for a human. - keyword — the message matched one of the bot's handoff trigger keywords. - low_confidence — nothing in the knowledge base was a good enough match. - fallback — the bot had to fall back rather than answer.

The handoff then moves through pending → accepted → active → resolved, or is declined. The queue updates live, so an operator watching the Live chat screen sees a new request appear without refreshing.

If handoff is not enabled on the agency's plan, the bot still uses its fallback response — it simply does not offer a human.

You receive this. It ships behind a feature flag and sits on the Pro, Scale tier as configured, so it is revenue you can reserve for your own paying customers.

Usage tracking (Client-level message and conversation usage, bot- and organization-level token tracking, and organization-wide ready-document totals)Client-level message and conversation usage, bot- and organization-level token tracking, and organization-wide ready-document totals
Analytics dashboard (agency + client)Analytics is where an agency turns a chatbot into a number it can put on an invoice. There are two levels: the agency's own view across all its clients, and each client's view of their own bot.
Deflection analytics + gap reportThe grouping is produced on a nightly schedule: questions that the knowledge base covered weakly are clustered by similarity, and each cluster is given a plain-language label. The result is not a list of raw log lines but a short list such as "refund window" or "international shipping" — the things worth writing a new document about.

Analytics → Gap report is the report the agency hands its client. It contains:

That is the loop the product is built around: the gap report tells the agency exactly which documents to add, adding them raises the deflection rate, and the next report proves it went up.

Clients with can_view_gap_report enabled see their own version of the same report at /client/analytics/gap-report.

White-label branding (per-org)An agency sets its own logo, product name, colours and favicon under Settings → Branding. Those settings then apply everywhere that agency's clients look — the client portal and the widget — so the end client sees the agency's brand, never Replica's.

Branding is resolved per agency from the address the visitor arrived on, which is why an installation intended for multiple agencies should be served on a wildcard subdomain: each agency gets its own host, and the host is what selects the branding.

Per-client custom CSS is the paid extension of this, available on Pro and Scale.

KB + conversation bulk import/export (Scale bulk document import and analytics export, plus multi-select transcript export across plans)Scale bulk document import and analytics export, plus multi-select transcript export across plans

You receive this. It ships behind a feature flag and sits on the Scale tier as configured, so it is revenue you can reserve for your own paying customers.

what's included

The platform underneath the product — counted in this product's own source, not claimed from a template. Where a row carries a list, open it to read the names behind the number.

AlipayCoinbasedLocalFlutterwaveKakaoPayKomojuLemon SqueezyMercado PagoMollieNOWPaymentsOpnPaddlePagSeguroPayPalPaystackRazorpayStripeWeChat Pay
AlipayAppleBitbucketDiscordFacebookFigmaGitHubGitLabGoogleKakaoKeycloakLINELinkedInMicrosoft AzureNaverNotionQQSlackSnapchatSpotifyTwitchVKWeChatWeiboWorkOSXYandexZoom
the schema and build
89page modules
297http operations
64tables
112migrations
162,422lines of source
5roles
measured 2026-09-01release v1.0.0 · built 2026-08-06
64 tables · 108 relationships
organizations51 refsusers26 refsbots7 refsclients4 refsactive_boostsadmin_notificationsanalytics_dailyanalytics_eventsanalytics_funnelsannouncement_dismissalsannouncementsapi_key_logsapi_keysassistant_actionsassistant_conversationsassistant_messagesassistant_usageaudit_logsauthautomation_logautomation_templatesconversationscredit_balancescredit_transactionscurrenciesdata_exportsdata_importsfaq_categoriesfaq_itemsfeature_flagsgap_topicshandoff_sessionsinbound_webhook_eventsinbound_webhookskb_chunkskb_documentslanguagesmarketing_audience_membersmarketing_audiencesmessagesnotification_lognotification_rulesnotificationsorg_brandingorganization_limit_overridesplansplatform_secretsplatform_settingsproduct_purchasesproductsprovider_pricespush_devicesreport_templatesrolesscheduled_tasksseo_metasubscriptionstheme_page_sectionstheme_section_librarytheme_sectionstranslationsusage_logsuser_sessionswebhook_logswebhooks

Hover a table to isolate what it touches; click one to read its relationships. The big nodes are what everything else hangs off. organizations is referenced by 51 tables because every single record in this product belongs to an organization, and that is what makes tenant isolation a property of the database rather than something the application has to remember on every query.

all 64 tables, as text

active_boosts · admin_notifications · analytics_daily · analytics_events · analytics_funnels · announcement_dismissals · announcements · api_key_logs · api_keys · assistant_actions · assistant_conversations · assistant_messages · assistant_usage · audit_logs · automation_log · automation_templates · bots · clients · conversations · credit_balances · credit_transactions · currencies · data_exports · data_imports · faq_categories · faq_items · feature_flags · gap_topics · handoff_sessions · inbound_webhook_events · inbound_webhooks · kb_chunks · kb_documents · languages · marketing_audience_members · marketing_audiences · messages · notification_log · notification_rules · notifications · org_branding · organization_limit_overrides · organizations · plans · platform_secrets · platform_settings · product_purchases · products · provider_prices · push_devices · report_templates · roles · scheduled_tasks · seo_meta · subscriptions · theme_page_sections · theme_section_library · theme_sections · translations · usage_logs · user_sessions · users · webhook_logs · webhooks

what you need to run Replica

The chassis, and anything particular to this product. 3 required, 2 optional.

A Node host and a Supabase projectrequired

The Node version is not pinned; the application declares Next 16.2.10. Supabase supplies Postgres, authentication and storage.

A scheduled runnerrequired

Five jobs are declared in `vercel.json`. On another host, those schedules must be wired to the shipped endpoints.

An email delivery providerrequired

Choose one of the shipped Brevo, Mailgun, Resend, SendGrid or SMTP providers for invitations and notifications.

Upstashoptional

The example environment exposes Upstash configuration for deployments that use the hosted integration.

Sentryoptional

The example environment exposes Sentry configuration for deployments that want external error monitoring.

Already built — plug and play

Every provider integration in this list ships wired into the product. You bring your own keys, connect them in the admin, and go live — there is no integration code to write. Nothing is resold through us: the ongoing cost is whatever these providers charge you. Capabilities marked plan-gated elsewhere on this page unlock by plan, not by extra code.

questions worth answering
What exactly do I receive after purchase?

The complete source repository behind the live demo — 162,422 lines across the application and its database, 64 tables defined by 112 migrations that the shipped scripts apply for you, plus the seed data, the demo accounts and the setup documentation. Not a subset and not a scaffold: the same code that runs the demo you just used.

Is the live demo the same product whose source I receive?

Yes. The Replica demo runs the delivered release (v1.0.0), and the build figures on this page are measured from that same source — not from a showcase build kept separately.

Can I test every account role before buying?

Yes — all 4 of them: End client, Agency operator, Agency owner, Platform operator. Each one is seeded in the live demo and reachable from the role board above, so you can inspect the product from the customer's side, the agent's side and the administrator's side before you decide.

Is this a complete product or a starter template?

Complete. 89 page modules and 297 HTTP operations, with authentication, roles, billing, an administration panel, background jobs and seeded demo data all wired and running. A template gives you the shape of an application; this is one you can deploy and start operating.

Can I rebrand and modify it?

Yes, without asking. The name, identity, copy, styling and code are yours to change. Rebranding and operating it as your own service is exactly what the licence is for.

What does the licence allow?

A perpetual, worldwide, non-exclusive, non-transferable licence to the product you bought and to every update released for it. The Standard licence covers one business — yours. If you deploy for clients, the Client licence covers up to five. You can modify it, rebrand it, deploy it and charge your own customers.

Can I resell the source code?

No. Reselling, redistributing, sublicensing or giving away the source itself is not permitted under either licence. You build and deliver products with it — the code stays with you.

What services and ongoing costs are required?

You bring your own accounts, so we never mark anything up and there is no ongoing cost to us beyond the purchase. Required: A Node host and a Supabase project, A scheduled runner, An email delivery provider. Optional: Upstash, Sentry. The table above says exactly what stops working without each one; most have usable free tiers at low volume.

How difficult is deployment?

Two ways, and most buyers use the first. The installer in your saascode dashboard walks it: you create free accounts at Vercel and Supabase, connect them, and it provisions the database, applies 112 migrations, seeds the data, deploys and verifies the result — you watch the steps go green. Or take the source and do it yourself with the shipped scripts and docs, which is the same sequence run by hand.

What updates and support are included?

Updates to that product for as long as we maintain it — no renewal fee and no expiry date on your access. Support covers download problems, defects in the code as shipped, questions about what the product does and how it is structured, and licence questions. It does not cover debugging your own modifications, building features for you, or setting up your hosting and third-party accounts.

Why does a complete codebase cost $299?

Because it was built once and is distributed many times. SaaSCode builds each product and ships the same finished release through the catalog, so the price reflects repeatable distribution — not a reduced codebase, an unfinished template, or what the same work would cost commissioned.

Do I need to be a developer?

No, for the normal path. You create free accounts at Vercel and Supabase, connect them to the installer in your saascode dashboard, and it does the deployment for you — provision, migrate, seed, deploy, verify. What it asks of you is creating two accounts and copying a token, not writing code. If you would rather deploy it yourself, or host it somewhere else, the full source and the scripts are yours to do that with. Running the product day to day needs no technical skill at all: that happens through its own interface, which is what the demo shows.