SaaS · Fintech (under NDA)
In-product copilot that accelerates onboarding and reduces support tickets.
Problem
The customer had healthy free activation but conversion to paid stalled: users could not figure out how to configure bank reconciliation rules and abandoned after the first attempt. The success team did not scale.
Solution
We embedded a copilot inside the UI with workspace context. The user describes the automation in natural language; the copilot generates the rule in the internal DSL, previews it on real data and asks for confirmation before saving.
Stack
- Claude 3.5
- TypeScript
- OpenAI embeddings
- Supabase
- Next.js
"We went from depending on a customer-success session to having the product itself explain the hard parts."
Context
The product solved automated bank reconciliation, but initial setup required understanding a custom DSL that produced great results only when written correctly. Users who configured it themselves had 3x the retention of those who needed help.
Technical decisions
Workspace embedding (accounts, categories, history) stored in Supabase with pgvector. The copilot uses Claude for reasoning and produces structured DSL (not free JSON) validated against a schema before execution. Per-suggestion usage logs and confidence to measure effectiveness and tune prompts.
Key guardrails: the copilot never executes changes without human preview, and asks for double confirmation on destructive operations.
Lessons learned
The copilot improved dramatically when we stopped asking it to “solve” and started asking it to “propose and explain”. The explanation is what converts, not the magic.