PersonaLM
Buyer intelligence for ecommerce brands: turn your own store data into named customer groups and ranked campaigns, overnight.
The product
“Klaviyo sends emails. Tresl finds segments. PLM tells you which campaigns to run.”
PersonaLM was built for founders and operators of $500K–$3M ecommerce brands. It replaced the week-long customer-segment brief a brand would otherwise buy from a research firm. Overnight, it turned a brand's own store data into a Customer Activation Map: named customer groups, campaigns ranked by revenue, plus ready-to-use Klaviyo segments and Meta seed lists. It connected to WooCommerce, Shopify, GA4, BigCommerce, CSV and a REST API, and was 88% accurate on customers it had never seen.
I founded it and built across brand, product, ML and backend: a Next.js app on Vercel, a FastAPI backend on Railway, and GPU training jobs on Modal.
The models
The rule in production was tower only: trained models predict, LLMs explain.
- Learned tower (shipped). A two-tower-style scorer (an MLP of about 1.7M parameters) over LLM-written preference documents, trained with a contrastive loss and hard negatives. It reached 0.792 test AUC on the main benchmark and 0.942 on one brand's holdout, and served production.
- Qwen3-8B SFT and GRPO. A LoRA fine-tune on 40,588 examples through Tinker, followed by a GRPO run. GRPO collapsed (every persona bought the same things), so that path was abandoned.
- Qwen3-Embedding-0.6B. A contrastive full fine-tune on 30,792 purchase pairs. It scored 0.685 AUC, just under an off-the-shelf OpenAI embedding at 0.691, which settled that question.
- DistilBERT heads for churn and category affinity, plus XGBoost as a diagnostic baseline.
PersonaLM has since been retired; the team pivoted to a new product.