skills/analyse-inboxmate/SKILL.md
Reference guide for understanding the InboxMate ecosystem - architecture, repos, pipeline, CRM states, metrics, and how to query each system. Use when starting any InboxMate-related work.
npx skillsauth add psquared-development/psquared-skills analyse-inboxmateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill to understand the InboxMate product, its architecture, outreach pipeline, and how to query data across systems.
InboxMate is a module (chatwidget) within the AgentHub platform — a full-stack Nuxt 3 + Supabase + Socket.IO SaaS.
| Repo | Purpose | Key Files |
|---|---|---|
| agenthub | Full-stack app (InboxMate + AgentHub) | server/api/mcp.post.ts (demo MCP), app/pages/demo.vue (demo page), server/utils/scraping.ts (Tavily/Firecrawl), server/utils/subscriptionUtils.ts (tiers), app/components/InboxMatePricingModal.vue |
| notification-service | Email drafts, templates, funnel analytics | src/routes/drafts.ts (draft CRUD), src/routes/stats.ts + frontend/pages/funnel.vue (funnel) |
| psquared-websites | Marketing sites | apps/inboxmate/ (inboxmate.psquared.dev), apps/psquared/ (psquared.dev) |
| psquared-skills | Pipeline skills | skills/ directory |
| Service | URL |
|---|---|
| InboxMate app | app.psquared.dev (chatwidget module) |
| Demo pages | demo.inboxmate.psquared.dev/?id=<demoId> |
| Marketing site | inboxmate.psquared.dev |
| Company site | psquared.dev |
| Notification admin | notifications.psquared.dev/drafts |
| CRM | crm.psquared.dev |
| Analytics | ackee.psquared.dev |
/find-leads [N] → CRM companies + people (German B2B, UWG-compliant)
↓
/inboxmate-batch-demo → Demos created, opportunities at SCREENING/PENDING_REVIEW
↓
/review-demos → demoStatus: OK_TO_SEND or NEEDS_FIX
↓
/fix-demos → Fixes applied, reset to PENDING_REVIEW
↓
/plan-campaign → CRM campaign created, opportunities linked with shared deadline
↓
/setup-email-drafts → Email drafts at notifications.psquared.dev/drafts
↓
Human review + send → demoStatus: SENT, outreachSentAt timestamped
↓
/check-outreach-status → Follow-up drafts created (5+ days after send)
↓
/check-demo-analytics → Pipeline health report (Ackee + CRM)
↓
/refurbish-demos → Upgrade knowledge for campaign demos (clear + re-scrape via MCP)
| Status | Meaning |
|---|---|
| PENDING_REVIEW | Demo built, awaiting QA |
| OK_TO_SEND | QA passed, ready for outreach |
| NEEDS_FIX | QA failed, needs corrections |
| SENT | Initial outreach email sent |
| FOLLOW_UP_SENT | Follow-up email sent |
| SKIP_FAULTY_WEBSITE | Website unreachable/broken |
| SKIP_IRRELEVANT | Company not a fit |
| SKIPPED | Generic skip |
| DISQUALIFIED | Permanently excluded |
| Value | Meaning |
|---|---|
| CHATBOT (or null = legacy) | Personalized chatbot demo (/inboxmate-demo) |
| INBOX | Demo-Postfach: seeded pre-triaged inbox (/inboxmate-inbox-demo), email-product outreach. CRM view "InboxMate Email Outreach" filters on this. |
| Stage | Meaning |
|---|---|
| NEW | Fresh lead, no outreach |
| SCREENING | Outreach phase |
| MEETING | Responded / call scheduled |
| PROPOSAL | Quoted or decision-maker demo |
| CUSTOMER | Paying customer |
Campaigns group opportunities into sendable batches with shared offerExpiresAt and offerText. Created by /plan-campaign, consumed by /setup-email-drafts.
https://crm.psquared.dev/graphqlAuthorization: Bearer $PSQUARED_CRM_TOKENcompanies, people, opportunities, campaigns, tasks, notesExample — list opportunities in a campaign:
query {
opportunities(filter: { campaignId: { eq: "CAMPAIGN_ID" } }) {
edges { node { id name stage demoStatus demoUrl } }
}
}
fevtfywriufbqnvbgyrmmcp__plugin_supabase_supabase__execute_sqldemo_pages, agents, knowledge, knowledge_bucket_items, knowledge_bucket_chunks, chats, messages, accountsExample — find chats on demo agents:
SELECT dp.company_name, c.id as chat_id, c.created_at,
(SELECT count(*) FROM messages m WHERE m.chat_id = c.id) as msg_count
FROM demo_pages dp
JOIN chats c ON c.agent_id = dp.agent_id
ORDER BY c.created_at DESC
https://ackee.psquared.dev/apiAuthorization: Bearer $ACKEE_TOKEN4bdddc8c-11d9-4d7e-ab94-aeb7866f0bb20f037f1c-c2c0-4205-b90d-3cb9bf66f9c2Example — get demo page views:
query {
domain(id: "4bdddc8c-11d9-4d7e-ab94-aeb7866f0bb2") {
statistics { views(interval: MONTHLY, type: UNIQUE) { count } }
facts { viewsMonth viewsToday activeVisitors }
}
}
https://notifications.psquared.devAuthorization: Bearer $BEARER_TOKENAuthorization: Bearer $EMAIL_DRAFT_ONLY_BEARERKey endpoints:
GET /drafts?status=SENT&pageSize=50 — list sent emailsGET /drafts/:id — read full email (html_body, variables, subject)POST /drafts/create — create draft from templatePOST /drafts/send — send drafts { draftIds: [...] }GET /stats/funnel — full conversion funnel dataGET /drafts/campaigns — list CRM campaigns with draft countshttps://app.psquared.dev/api/mcpAuthorization: Bearer $NUXT_MCP_DEMO_TOKENKey tools:
clear_bucket — remove all items from a knowledge bucketscrape_and_build_knowledge — scrape URLs via Tavily, create knowledge items with real sourceUrlscreate_agent, update_prompt, update_widget_style, publish_agentcreate_knowledge_bucket, add_to_bucket, set_knowledgecreate_demo_page, update_demo_page, list_demos, get_democreate_inbox_demo, update_inbox_demo — Demo-Postfach (type='inbox': seeded pre-triaged inbox, no agent)list_bucket_items, list_knowledge, get_knowledge| Metric | Source | How to check |
|---|---|---|
| Demo page views | Ackee | Query demo domain statistics |
| CTA clicks | Ackee | Query CTA event |
| Emails sent | Notification service | GET /drafts?status=SENT |
| Chat interactions | Supabase | chats JOIN demo_pages on agent_id |
| Pipeline funnel | Notification service | GET /stats/funnel |
| Hot leads | CRM | Opportunities with stage > SCREENING |
| Campaign status | CRM + Notification service | Campaigns + draft counts per campaign |
All in /Users/martinpammesberger/Documents/psquared/claude-overlord-folder/.env:
| Variable | Service |
|---|---|
| PSQUARED_CRM_TOKEN | Twenty CRM GraphQL |
| NUXT_MCP_DEMO_TOKEN | InboxMate MCP endpoint |
| NUXT_TAVILY_SEARCH_API_KEY | Tavily web scraping |
| EMAIL_DRAFT_ONLY_BEARER | Notification service (draft creation) |
| NOTIFICATIONS_SERVICE_BEARER_TOKEN | Notification service (admin) |
| ACKEE_TOKEN | Ackee analytics |
Note: If prices change, this table must be updated. The /price-change skill handles pricing updates across all touchpoints — make sure this file is included in the update list.
Model: pay per Postfach (mailbox) + AI credits (chat reply 1, email draft 2, tool call/scrape/PDF 1; setup & rule-based sorting free). Manual invoicing — no Stripe checkout.
| Tier | Price | Postfächer | Credits/mo | Notes | |---|---|---|---|---| | Free | €0 | 0 (chatbot only) | 50 | widget funnel | | Starter | €49/mo (monthly only) | 1 (extra €19) | 500 | full email automation from here | | Pro | €129/mo · €107 yearly | 3 (extra €15) | 2,500 | API+MCP, marketplace; demo discount → €86 first year | | Business | ab €349/mo, custom | 15+ | 10,000+ | custom integrations (first incl.), white-label, SLA; demo offer €199 first year |
Top-ups: €9/€8 per 1,000 (Starter/Pro), instant grant, invoiced afterwards. All paid plans 14-day free trial, no credit card.
Agents use RAG (vector search) over knowledge buckets:
sourceUrl)searchKnowledge tool is called, it returns matching chunks WITH their sourceUrlTo upgrade knowledge quality: clear_bucket → scrape_and_build_knowledge with real page URLs → publish_agent
tools
Set up a personalized InboxMate INBOX demo (Demo-Postfach) for a sales prospect: a public, read-only seeded inbox showing 5-7 pre-triaged emails in their industry's language, with categories, routing and ready AI drafts. Use for email-automation outreach (the €49-349 product), NOT for chatbot outreach. No agent is created.
development
Build InboxMate demos AND write personalised outreach drafts in a single pass per company — eliminating the double-research that happens when /inboxmate-batch-demo and /setup-email-drafts run separately. Use when kicking off a new campaign where the campaign already exists (plan via /plan-campaign first). For each target company, dispatches ONE subagent that researches the site, builds the demo, creates the CRM opportunity, and drafts the outreach email — reusing the same research across all three. After all subagents return, runs a single batch call to auto-generate follow-ups.
testing
Autonomous pilot for the InboxMate EMAIL outreach (Demo-Postfach/INBOX track). Assesses where the inbox pipeline stands (leads → demos → review → campaign → drafts) and executes the next sensible step end-to-end, always finishing with the inbox sanity check and a summary of what the user should do next (ideally: just schedule the mails). Runs in save mode by default: orchestration + all quality gates on the top model, data collection on haiku subagents, content generation on sonnet subagents (pass 'full' to disable). Use when asked to 'advance the email outreach', 'run the inbox pipeline', or 'what's next for the Demo-Postfach motion'.
tools
Generate a polished psquared client offer as a multi-page PDF (title, project description, screenshots, Angebot/pricing, AGB). Walks the user through gathering inputs (or accepts a JSON config), renders branded HTML templates with Playwright in two passes (title page edge-to-edge + body pages with margins and pagination), then merges with pdf-lib.