Skip to content
Prabal Pratap Singh
All work

Reviews & social contentby WitLabs2026Live

Testimonia

Testimonials SaaS for Indian brands. Customers leave a review over WhatsApp or QR, the brand approves it, and it becomes Reels, social posts, website widgets and a Wall of Love.

At a glance

20+ languages

  • Live at testimonia.xyz with Free, Starter (₹999) and Pro (₹2,499) plans
  • AI co-writing that cannot add facts the customer didn't write
  • Embed widget under 3 KB for Shopify, Wix, WordPress or any HTML page

What it is

Turn real customer reviews into social proof and site widgets, using AI to help people write without ever inventing a review.

Why it exists

Brands want social proof, and AI makes it trivially easy to fake. Most testimonial tools either ignore AI or let it write whatever sounds good. Testimonia had to make writing easier for real customers without ever producing a review nobody gave.

How it works

Customers leave a review through one link on WhatsApp or a QR code. The brand approves it in an inbox, and Studio renders it into Reels and images in the browser. Every AI path goes through one server route that calls Anthropic or OpenRouter, or falls back to a grounded local template generator when no key is set. Workspace state lives in PostgreSQL behind authenticated APIs, with generated files in Cloudflare R2.

Decisions worth explaining

Strip numbers the customer never wrote

A model asked to polish a review will happily add “3x more sales”. Instead of trusting a prompt, scrubClaims removes any number that doesn't appear in the customer's notes or the brand's approved proof points. The guardrail is code, so it holds whichever model is behind it.

A local fallback for every AI flow

With no model key configured, a grounded template generator produces drafts from the same inputs. The product stays demoable and testable without API spend, and a model-provider outage never breaks the review flow.

Treat URL imports as hostile

Product pages are fetched server-side, so the importer pins validated public addresses on every redirect, decodes and re-encodes images, and renders JavaScript pages only in a sandboxed browser behind a deny-all proxy. That closes the obvious SSRF holes in a feature that fetches arbitrary URLs.

Results

  • Live at testimonia.xyz with Free, Starter (₹999) and Pro (₹2,499) plans billed through Cashfree UPI.
  • Trust rules enforced in code: sample reviews are flagged and hidden, AI exports carry a locked badge, and unsupported numbers are stripped.
  • Embeds on Shopify, WooCommerce, Wix, WordPress and any HTML page; direct and scheduled posting to X.

Stack

Next.js 16TypeScriptPostgreSQLAnthropicOpenRouterCloudflare R2Cashfree

From the code

src/lib/ai.ts

// AI drafts may only repeat numbers the customer actually wrote
// (or that the brand approved). Anything else is removed.
export function scrubClaims(text: string, allowedSources: string[]) {
const allowedNums = new Set(
(allowedSources.join(" ").match(/\d+(?:[.,]\d+)?%?/g) || [])
.map(n => n.replace(",", ""))
);
return text
.replace(/\b\d+(?:[.,]\d+)?%?/g, m =>
allowedNums.has(m.replace(",", "")) ? m : "")
.replace(/\s{2,}/g, " ")
.replace(/\s([.,])/g, "$1");
}

Want something like this built?

Open to roles & contracts. Remote · IST with US/EU overlap.

Email me