Brand
The single record every reply, draft, and agent call reads — what it holds and who consumes it.
This page describes an earlier design of ListeningKit, built on an in-browser demo, so parts of it do not match the app that runs today. For what works now, read the Guide.
Brand
One workspace, one brand record. Onboarding creates it from the website URL, the reveal enriches it, the dashboard's Brand tab edits it, and every reply draft and (soon) agent call reads it. Nothing in the app invents business facts — anything the brand hasn't provided falls back to generic phrasing.
This is the hackathon build: the brand store is a mock (in-memory + localStorage) with deterministic seed data. The live backend replaces the transport; the shapes below stay the same.
Sections
Every field has exactly one defined consumer. If a field has no consumer, it doesn't belong on the record.
| Section | Holds | Consumed by |
|---|---|---|
identity | name, website, tagline, logo URL | Reply sign-off, resource URLs, dashboard header |
voice | tone, formality, dos / don'ts, gold-example replies | buildBrandSystemPrompt() → agent instructions |
channels | per-channel style, raw texting snippets, triage flow | simulateReply() preview, per-channel agent generation |
memory | working facts & boundaries (pricing, jobs taken/declined) | Compiled into the system prompt; retrieved, never dumped raw |
offerings | { name, detail }[] services / products | Reply service-bit, agent tool/RAG context |
location | label, lat / lng, radius km | Listings default, group scoping, reply area |
sources | indexed website pages (url, title, headings, text, status) | RAG namespace content, reply citations |
intelligence | selected keyword, competitor domains, target communities | Keywords / groups seeding |
Two rules the model enforces:
- Areas live in
location, never invoice. Voice is purely about language — how replies read, not where they apply. - Offerings are objects, not strings. The agent quotes the one-line
detailper service instead of dropping a bare name into a reply.