Harper (HRPR)
A consent-driven, multi-tenant conversational AI assistant — answers in 1–3 sentences first, asks before it goes deeper, and embeds in any host site with one script tag.

LLM chatbots overwhelm — and act without permission.
Most embedded AI assistants do two things wrong: they dump walls of text on first contact, and they shift contexts (recommend a tool, switch domains, take an action) without asking. The result is a chatbot that feels noisy on a brand site and pushy in a serious workflow.
Banyan needed a conversational AI that could embed inside client products and feel domain-aware, multi-tenant, and consent-driven from the first message — without rebuilding the host's design system or backend.
Listen → Verify → Pivot → Immerse.
Harper answers in 1–3 sentences first — what the team calls a tiny response. Only after the user explicitly says yes does it activate a focused context (a tenant-specific tool, a domain guide, a recovery resource).
Architecturally it's a food-truck pattern. The Flutter app is the window. A Go backend-for-frontend is the counter. The intelligence — Bedrock + a Model Context Protocol catalog — lives in a separate service the BFF proxies to. The Flutter client never holds backend keys.
End-to-end ownership.
- Flutter client targeting iOS, Android, web, and desktop — voice-first hold-to-speak with speech-to-text, multi-provider TTS, and a fully themable UI.
- Embeddable web widget with PostMessage bridge — auto-detects host page colors, fonts, and dark/light mode, and renders a resizable sidebar that pushes host content aside.
- Go BFF with middleware, health checks, server-side AUTH_API_KEY injection, multi-stage Docker builds, and GitHub Actions CI/CD covering Go quality gates and Flutter web builds.
- MCP-driven tool catalog — tools, domain policies, tone/verbosity restrictions, and trigger keywords routed by tenant slug.
- Multi-provider TTS (AWS Polly + ElevenLabs + browser voices) with voice selection UI, speed slider, and per-user voice preferences persisted server-side.
What it's built on.
Production conversational AI inside a real product.
Harper ships as a native mobile app and as an embeddable web widget — installable on third-party sites with a single script tag. The consent-driven loop holds across both surfaces, and 34 cross-stack tests (24 Flutter, 10 Go) keep regressions out of the BFF.
Honest framing: this is Banyan-Labs internal/client work, NDA-sensitive, and depends on a separate backend service called Armada Core. The case study describes my contributions, not the full product surface.