← Back to all products
$19
Testimonial Collector
Automated testimonial collection system with request workflows, display widgets, and approval routing.
JSONMarkdownPython
📄 Product Preview
Try the interactive reader and demo tools below, or get the full product with all content unlocked.
📖 Interactive Reader (Free Preview) ⚙ Try Demo Tools 📦 Download Free Sample📁 File Structure 9 files
testimonial-collector/
├── LICENSE
├── README.md
├── examples/
│ └── responses.json
├── free-sample.zip
├── guide/
│ ├── 01_features.md
│ ├── 02_cli-reference.md
│ └── 03_examples.md
├── index.html
└── src/
└── testimonial_collector.py
📖 Documentation Preview README excerpt
Testimonial Collector
Part of the Landing Lab by CodeVault
A complete testimonial collection workflow: generate personalised request emails, import customer responses, manage an approval queue, and export display-ready HTML or JSON. Handles the full lifecycle from asking for testimonials to showing them on your landing page.
Features
- Generate personalised request emails (initial + follow-up templates)
- Import testimonial responses from JSON
- Approval workflow: review, approve, or reject testimonials
- JSON-backed database (no external DB needed)
- Export approved testimonials as embeddable HTML or JSON
- Star ratings and company attribution
- Styled HTML output with responsive grid layout
- Python stdlib only — zero pip dependencies
Quick Start
# Generate a testimonial request email
python src/testimonial_collector.py --generate-request --name "Alex" --email "alex@example.com"
# Import customer responses
python src/testimonial_collector.py --import-response examples/responses.json --db testimonials.json
# Review pending testimonials
python src/testimonial_collector.py --review --db testimonials.json
# Approve a testimonial
python src/testimonial_collector.py --approve t-0001 --db testimonials.json
# Export approved testimonials as HTML
python src/testimonial_collector.py --export html --db testimonials.json
CLI Reference
| Flag | Description |
|---|---|
--db | Path to testimonial database JSON (default: testimonials.json) |
--generate-request | Generate a request email |
--name | Customer name (for request generation) |
--email | Customer email (for request generation) |
--follow-up | Generate follow-up email instead of initial |
--import-response | Import responses from a JSON file |
--review | Show pending testimonials for review |
--approve ID | Approve a testimonial by ID |
--reject ID | Reject a testimonial by ID |
--export | Export approved testimonials: html or json |
--product-name | Product name for emails (default: Acme Product) |
--sender-name | Sender name for emails (default: The Acme Team) |
--verbose, -v | Enable verbose logging |
Configuration
See examples/responses.json for the expected response import format.
Examples
... continues with setup instructions, usage examples, and more.
📄 Code Sample .py preview
src/testimonial_collector.py
#!/usr/bin/env python3
"""
Testimonial Collector — Landing Lab by DataNest
A complete testimonial collection workflow: generate personalised request
emails, manage an approval queue (approve/reject/edit), and export
display-ready HTML or JSON. Handles the full lifecycle from asking for
testimonials to showing them on your landing page.
Why this exists:
Getting testimonials is awkward. You email customers one at a time,
paste their responses into a spreadsheet, then manually format them
for your website. This tool automates the entire pipeline: generate
request emails, track responses, approve the good ones, and export
them as embeddable HTML.
Usage:
python testimonial_collector.py --generate-request --name "Alex" --email "alex@example.com"
python testimonial_collector.py --import-response responses.json
python testimonial_collector.py --review --db testimonials.json
python testimonial_collector.py --export html --db testimonials.json
License: MIT
"""
from __future__ import annotations
import argparse
import html
import json
import logging
import sys
from dataclasses import dataclass, field, asdict
from datetime import datetime, timezone
from pathlib import Path
from typing import Any
# ---------------------------------------------------------------------------
# Constants
# ---------------------------------------------------------------------------
LOG = logging.getLogger("testimonial-collector")
STATUS_PENDING = "pending"
STATUS_APPROVED = "approved"
STATUS_REJECTED = "rejected"
# Email template placeholders: {customer_name}, {product_name}, {sender_name}, {form_url}
DEFAULT_EMAIL_SUBJECT = "Quick favour? Share your experience with {product_name}"
# ... 465 more lines ...