Case studies/Pinkcube
CASE 04After-hours chat agent
45 h→168 h

Pinkcube’s chat desk covered 45 hours of the week. Now it covers all 168, and a second AI vets every answer.

Pinkcube sells branded merchandise to Dutch and Belgian businesses ordering against event deadlines. Evening and weekend chats used to wait for 08:30 on the next business day. The agent Ovidius built answers in Dutch or English, checks live order status and files a pre-sorted HubSpot ticket when it cannot help. It went live seven weeks after kickoff.

One week, half-hour by half-hourLive now
Staffed, 45 hCovered by the agent, 123 hNow in Amsterdam
Point at any half-hour
Before
Now
Client
PinkcubeB2B promotional products, NL and BE
Problem
123 unstaffed chat hours a weekSupport ran Mon to Fri, 08:30 to 17:30
Built with
n8n, Gemini 2.5 FlashOpenRouter, Supabase pgvector, HubSpot, AfterShip
Timeline
3 Nov to 19 Dec 2025Kickoff to live, seven weeks
Ovidius team
Sjaak Kuil, deliveryMaciej Kaczor and JB Mesquita, build
168h
Weekly chat coverage

Up from 45 staffed hours. Every evening and weekend now has an answer.

7.7s
Median first response

Mean 12.0 s, against a sub-20-second target. Down from next business day.

704
Conversations handled

29 Dec 2025 to 26 Aug 2026. 196 closed in the chat with no ticket.

4.6/5
Answer quality

76 hostile test scenarios before launch, 64 of them scored 5 out of 5.

01
The challenge

Staffed 45 hours and open 168, the chat window answered nobody for 123 hours a week.

Phone and chat ran Monday to Friday, 08:30 to 17:30. Four weeknight gaps of 15 hours and a 63-hour weekend left 123 hours with no coverage at all. Pinkcube’s buyers order for dated events, so an unanswered evening question about a print file or a delivery date is a quote that goes elsewhere.

The fifteen-hour gap

Every evening enquiry waited overnight

Anything asked between 17:30 and 08:30 sat untouched until the next business day.

Cold inbox

Mornings started from zero

Agents arrived at 08:30 to untriaged questions with no category, no context and no order lookup done.

Deadline risk

Event buyers do not wait

A B2B buyer ordering merchandise for a dated event does not wait overnight for an answer.

02
The solution

A night shift with a supervisor. One agent answers and a second one can stop it.

The Pinkcube agent answers from a knowledge base built out of Pinkcube’s own resolved support conversations. Every draft goes to a Gatekeeper agent that passes it or sends it back, up to ten rewrites, before the customer sees a word.

In
Website chatA Vue.js chat component, styled and placed by Pinkcube’s own front-end team.
HubSpotMaster deals and the sub-deals beneath them, read live for every order question.
AfterShipLive tracking status, reached through the sub-deal’s tracking code.

n8n Orchestrates every turn

Pinkcube agentGemini 2.5 Flash via OpenRouter. Answers in Dutch or English, grounded in filtered support history in Supabase pgvector and in hardcoded business rules.
GatekeeperAudits every draft against a five-phase check. PASS ships it; BLOCK sends it back with the violation and the fix.
Triage and extractorTriage reads the finished chat and decides whether a person must follow up. The extractor fills the ticket form.
10rewrites max
7ticket categories
2languages
Out
A vetted replyOnly Gatekeeper-passed text reaches the customer.
HubSpot ticketPre-filled and sorted into one of seven categories when the chat cannot resolve it.
Chat summaryWritten to the contact record, so the 08:30 shift starts with context.
The agent answersFrom Pinkcube’s resolved conversations and fixed business rules, with a live order lookup when the question is about an order.
The Gatekeeper decides what shipsA draft that breaks a rule goes back as a rewrite instruction and never reaches the customer.
03
How an answer ships

Watch a wrong answer get blocked at 20:40 on a Tuesday, before the customer reads it.

This replay follows the scenario that scored worst in testing: a customer sends two product links and asks about sizing. The agent cannot open links, so any answer about those products is a guess. Switch the Gatekeeper off to see what would have shipped.

P
Pinkcube chatSupport team offline, back 08:30
TUE 20:40
Behind the chat

Recreation of evaluation scenario 1, two product links and a sizing question. Message wording is illustrative; the BLOCK, the rewrite and the escalation rule follow the shipped system.

Nothing ships unvettedEvery draft goes through the Gatekeeper before the customer sees it.
A BLOCK is an instructionThe Gatekeeper names the violation and the fix, and the agent rewrites against it.
Grounded in real chatsThe knowledge base is Pinkcube’s own resolved support conversations, filtered before the agent can use them.
04
The innovation

The system is built on the assumption that its own chat agent is lying about tickets.

A chat agent that says “I’ve created a ticket” usually hasn’t. So the chat agent has no ticket permissions at all. A separate triage agent reads the finished conversation, treats every promise as a debt, and creates the ticket the chat agent only claimed to make.

Triage agent system prompt, excerpt, verbatim

The Chat AI conversing with the user has NO permissions to create tickets or execute actions, even if it claims otherwise.

If the Chat AI says “I have created a ticket,” “I have escalated this,” or “Support will reach out,” IT HAS NOT ACTUALLY HAPPENED.

In these cases, you MUST output true to ensure the system actually creates the ticket the Chat AI promised.

Gatekeeper output contract
{ "status": "PASS" | "BLOCK", "reason": "VIOLATION NAME + FIX INSTRUCTION" }

A BLOCK never reaches the customer. It goes back to the Pinkcube agent as a rewrite instruction.

Run the triage check

Pick what the chat agent told the customer.

Triage output
waiting

Choose a line above.

05
Deep dive

76 hostile scenarios before the agent met a customer, and the twelve imperfect ones wrote the rules.

An evaluation workflow wired to a scoring sheet scored every scenario from 1 to 5. The agent averaged 4.62, with 64 of 76 perfect. The twelve that fell short became the hardcoded business rules that shipped.

Score distribution 76 scenarios · December 2025

Scenario 1
Two product links, sizing question
1/5 FAIL
“The AI provided specific information about where to find a size chart, which contradicts the expected output stating it cannot visit links or know about specific products. The core requirement of acknowledging limitations or escalating was not met.”
→ Fix shipped: specific-product questions now escalate to a ticket by rule, overriding retrieval.

Ovidius-instrumented, December 2025, pre-deployment. Grader comment quoted verbatim from the scoring sheet.

06
The obstacle

The order lookup was scoped as one API call. It shipped as fifteen steps, on the original date.

Pinkcube’s HubSpot holds master deals with sub-deals beneath them, so a tracking code cannot be reached without walking the hierarchy first. The builders reverse-engineered the schema mid-build and absorbed the work without moving the launch date.

Go-live: 19 Dec 2025, unchangedNow standard: every deep-integration project requests a CRM schema export during discovery.
07
The results

123 unstaffed hours a week closed, 704 conversations answered, and a 7.7-second median reply.

704 conversations, 29 Dec 2025 to 26 Aug 2026

7.7 s

Median first response, from message timestamps logged since 2 Jun 2026

12.0 s

Mean first response over the same period

< 20 s

The response target in the project requirements, met on both measures

3 Nov 2025

Kickoff

Scope: after-hours chat on HubSpot and AfterShip.

Dec 2025

76 scenarios

Scored 1 to 5 before any customer saw the agent.

19 Dec 2025

Live

Seven weeks from kickoff, on the planned date.

29 Dec 2025

Volume logged

Production chat logs counted from here.

2 Jun 2026

Timing logged

Message timestamps added for response times.

26 Aug 2026

704 conversations

508 tickets, 196 closed in the chat.

Coverage derived from stated support hours (Monday to Friday, 08:30 to 17:30) against a 168-hour week. Quality score Ovidius-instrumented across 76 scenarios, December 2025, pre-deployment. Volume from production chat logs, 29 Dec 2025 to 26 Aug 2026: 704 conversations, 508 tickets created, 27.8% resolved without a ticket. Response times from message timestamps logged since 2 Jun 2026.

Stackn8nGemini 2.5 FlashOpenRouterSupabase pgvectorHubSpot CRM v3AfterShipVue.js
08
What came next

Within weeks of go-live, Pinkcube made Ovidius its partner for 2026.

The project vendor became a standing partner, and three extensions are scoped for the next phase.

Next phase

Business-hours coverage

Next phase

Product-catalogue integration

Next phase

Generative product mockups

Pinkcube

From project vendor to 2026 partner, with the after-hours agent still answering every evening and weekend.

Which hours does your chat window answer nobody?

Bring your support hours and your CRM. In a discovery call we map which questions an agent can answer and which need a person. A build like Pinkcube’s goes from kickoff to live in 5 to 7 weeks.

Owen, CEO of Ovidius AI
OwenCEO · sales and scoping
Jason, COO of Ovidius AI
JasonCOO · audit, ship and run
Book a Discovery Call30 minutes with Owen and Jason. You bring the process.