← All work

Internal sales platform · 2026

Pipalupa Sales Hub

A sales pipeline app with a built-in AI sales agent, designed so the process cannot be skipped. Leads are scored before outreach, follow-ups schedule themselves, and every message is approved before it goes out.

Demo with fictional data.

The situation

Outbound sales ran on a spreadsheet. Leads weren't scored, follow-ups depended on memory, and nothing ever closed out, so nobody could tell which efforts paid off.

What changed

Every lead is scored before outreach and ends in a clear outcome. Follow-ups schedule themselves, and an AI agent handles research, drafts and reply routing, while the founder approves every message that goes out.

Built for Pipalupa, a 2D animation studio that sells to children’s media and education brands.

“For the first time I can see which leads are worth my time and what actually works. I open the app, do today's work, and nothing slips through the cracks.”
Milena PelletanCEO & Founder at Pipalupa

Goals

  • Replace a spreadsheet-driven outreach campaign that had no scoring and no end state, so it was impossible to tell what worked.
  • Make the two rules of the sales process impossible to break. Every lead is scored before contact, and every lead ends in a clear outcome (won, lost, no reply or discarded).
  • Let the system remember follow-ups, so the process survives a busy founder's calendar.
  • Keep the data owned by the studio and queryable by its own AI tooling, so the app can be replaced but the data cannot be lost.

What it does

  • A daily "Today" board with "ready to start" and "due today" queues. Due dates come from a four-touch outreach sequence.
  • An ideal-client scoring form with eight dimensions. Total, band and track only appear once every dimension is filled, because a blank is not a zero.
  • A CSV import that classifies each row as new, duplicate, existing client or needs review, and writes nothing until the user confirms.
  • Approve-before-send drafts. An agent cannot approve its own draft, editing a draft revokes its approval, and sending is capped daily and checked against a blocklist.
  • An inbox for replies and website enquiries, with a guided flow to route each reply to the right lead and outcome.
  • A funnel dashboard, a client history and a run log for the automated research skills that feed the pipeline.
  • A command palette, keyboard shortcuts, dark mode, and the app installs as a PWA.

AI and automation

  • An in-app AI sales agent runs on Claude, GPT or Gemini, with a fast mode and a deep-reasoning mode. It can search leads, summarise history, draft outreach and propose next steps.
  • The agent acts with the user's own permissions. Every action that changes data shows a confirmation card, exactly like the UI does, so it can never do more than the person using it.
  • Guardrails keep it honest. It quotes past work only from an approved-claims list, respects message-length limits, and never guesses email addresses.
  • Incoming replies are classified automatically by intent, meeting proposals and referrals. The decision to stop a sequence relies on email headers, not on model output.
  • Every agent message records its model, tokens and cost, and every write lands in an append-only audit log.
  • AI research skills source companies, validate leads, find contacts and enrich records, then write straight into the pipeline with a run log.
  • The app was built with an AI-native workflow. A visual builder ships the UI, while an AI coding agent reviews plans, writes the test suite, runs parallel code audits and triages bugs.

Engineering notes

  • Business rules live in Postgres as constraints, generated columns and triggers, so the UI, the agent and any automation all obey the same rules.
  • Entity matching runs in a single database function, after a client-side copy once misclassified an existing client as a cold prospect.
  • The agent's model loop runs in an edge function, while its tools run in the browser under the user's session. Conversations are private, deletable and purged after 90 days of inactivity.
  • Architecture decisions are recorded as ADRs, alongside a schema verification script that runs before every migration.