đź‘‹ Hey Product Hunt!
I’m the CTO at Peakflo, and I want to share something we’ve been building in stealth: our AI agents that act as a real person across all possible channels of communications.
The problem we had to solve
Imagine this: a customer texts you on Monday, calls on Wednesday, then emails on Friday. Most AI systems handle that like the protagonist from movie “Memento” waking up with no memory and every conversation starts from scratch.
For insurance and finance, this is a dealbreaker. When someone asks “What’s the status on that thing we discussed?”, the agent needs to know exactly what “that thing” was whether it was mentioned in a phone call last week or a WhatsApp message yesterday.
Our omni‑channel approach
We built Peakflo agents to work seamlessly across:
-
📞Phone calls: The core voice experience.
-
đź’¬SMS: Quick updates and reminders.
-
🟢WhatsApp: Increasingly popular for business communication.
-
đź“§Email: Formal correspondence and document sharing.
-
🧑‍💻Web chat: For those who prefer typing.
-
🧑‍💼CRM: Hubspot, Salesforce, …
-
âśš many other channels…
The hardest part is making the AI remember context across all of them.
The two‑tier memory architecture
-
Short‑term memory: Message history
For recent interactions (last few days/weeks), we use the actual conversation history. This gives us:
-
Verbatim recall: Exact phrasing and context.
-
Precision: Ability to reference specific details.
-
Immediacy: Fast access to recent conversations.
Think of this like working memory with immediate access to what just happened.
-
Long‑term memory: Summarization + vector search
For older interactions or high‑volume customers, storing everything becomes impractical and slow. So we:
-
Generate structured summaries after each interaction:
-
Key topics discussed
-
Action items and outcomes
-
Customer sentiment and preferences
-
Important dates, amounts.
-
-
Use vector embeddings for semantic search:
-
Convert summaries and key data into embeddings
-
Retrieve relevant context even when wording differs
-
Example: “payment issue” finds “billing problem” from 3 months ago
-
Why this matters in regulated industries
In insurance and finance, you can’t afford to:
-
Ask customers to repeat themselves
-
Lose track of commitments made in previous calls
-
Miss context that affects compliance or risk
Our approach means:
-
Compliance: Complete audit trail across all channels.
-
Consistency: Same information regardless of how customers reach us.
-
Efficiency: Agents don’t waste time catching up on history.
-
Trust: Customers feel heard and remembered.
Technical choices we made
-
Vector DB: We chose pg_vector because we love postgres and generally find it the fastest and easy to use given our stack.
-
Summarization: Special summarisation agent is being triggered after 1 hour from interaction finish, and produces schema‑constrained summaries immediately after each conversation.
-
Hybrid retrieval: We combine:
-
Exact keyword matching for policy numbers, amounts, and dates
-
Vector similarity for semantic understanding
-
Recency weighting so fresh interactions rank higher
-
When a customer reaches out on any channel, our agent:
-
Instantly retrieves short‑term message history.
-
Searches long‑term memory for relevant past interactions.
-
Synthesizes a complete picture before responding.
-
Updates memory after the conversation.
Happy to answer any technical questions about our implementation!


