The skeleton is a day's work for one person: read a mailbox over IMAP, thread the messages, reply over SMTP, add a chat widget and a Markdown help center. The weekend goes into what makes a support tool dependable: email threading that survives odd clients, deliverability for your sending domain, a Slack inbox, Linear issues that tell customers when a fix ships, and an AI agent you would let answer customers from your docs and code. Productlane's per-seat price pays off when a team shares the inbox; a solo founder is closer to the self-hosted FreeScout or Chatwoot.
Before you buildProductlane has no free plan. If you only need a shared mailbox, the open-source FreeScout or Chatwoot cost nothing to try before you build.
Build me a support inbox and help center to replace Productlane. Requirements: - Node.js 22 + TypeScript: a Fastify server and a React UI built with Vite. `npm start` serves http://localhost:4920: inbox at /inbox, public help center at /help, chat widget at /widget.js. - Storage: better-sqlite3 in ./data/support.db for customers, conversations (open/snoozed/closed, tags), messages (channel, direction, Message-ID, In-Reply-To, References), help articles with FTS5 search and links to Linear issues. - Email: poll one IMAP mailbox every 30 seconds (`imapflow`, `mailparser`), thread by In-Reply-To and References and then by sender + subject, strip quoted replies (`email-reply-parser`), and answer through SMTP (`nodemailer`) with correct threading headers. Credentials in .env. - Chat widget: `/widget.js` opens a panel; messages travel over WebSocket (`ws`). When nobody is online, ask for an email address and turn the chat into an email conversation. Escape all message text and allow only the origins listed in .env. - Help center: Markdown files in ./help/*.md with front matter, rendered as public pages with search. - Linear: LINEAR_API_KEY in .env; a "Create issue" button on a conversation (`@linear/sdk`) that links both ways, and a webhook that shows a banner when the linked issue is done so I can send a follow-up. Nothing is sent automatically. - AI drafts: an OpenAI-compatible endpoint (LLM_BASE_URL, LLM_API_KEY, LLM_MODEL) drafts a reply from the top five matching help articles, cites them, and waits for my edit and click. The README states what is sent. - Single user: one password in .env. No accounts, no telemetry. Outbound calls: IMAP/SMTP, Linear, the LLM. - Out of scope: Slack and Teams inboxes, more than one agent, SLA rules, a customer login portal, replies sent by the AI without a human. - README: app-password setup for the mailbox, checking SPF, DKIM and DMARC for the sending domain, and exposing the widget and help center through a tunnel or VPS.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Productlane.
Add saved replies to the support inbox in this folder. Requirements:
- A saved replies page: title, shortcut, and Markdown body with variables {{customer.name}},
{{customer.email}} and {{agent.name}}.
- In the reply box, typing `/` opens a fuzzy-search list (`fuse.js`); picking one inserts the
body with variables filled and highlights anything left unfilled.
- Count uses per reply and show the most used first.
- Replies are plain text in SQLite; escape the body when it is shown as HTML.
- Update the README.Add Slack notifications to the support inbox in this folder. Requirements: - SLACK_WEBHOOK_URL in .env; post one message for each new conversation and for each customer reply to a conversation that was snoozed or closed, with the customer, a 200-character preview and a link to the inbox. - Batch messages that arrive within 30 seconds into one, and never include attachments. - A quiet-hours setting in the UI during which nothing is sent. - Log every Slack call and failure in SQLite. - Update the README with how to create the incoming webhook.
Add a feedback board to the support inbox in this folder. Requirements: - Public pages at /feedback: posts with title, description, status (open, planned, shipped) and an upvote button limited to one vote per browser cookie and per IP per day. - Customers can post after confirming their email through a magic link; posts start unlisted until I approve them in the inbox. - A conversation can be linked to a post; when I mark it shipped, show the customers who asked a draft follow-up that I send by hand. - Rate-limit submissions and escape all text. - Update the README.
Software teams that already live in Linear pay to keep a customer's message, the bug report and the issue that fixes it in one thread, so the person who reported it hears when it ships. The AI agent is priced per resolution, so the bill follows how much support it actually does.
Estimate · Runs on a free tunnel or a $5 VPS; the mailbox is the one you already have. LLM drafts cost cents per reply. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Starter | $35/user | $29/user | Shared email inbox, live chat, Productlane Agent (25 AI resolutions included, then $0.79 each, $5 of AI credits a month), self-updating help center, Linear integration, feature requests. |
| Pro | $79/user | $59/user | Everything in Starter plus a shared Slack inbox, custom connectors, custom theme and views, reporting, macros; 50 AI resolutions and $10 of AI credits. |
| Scale | $129/user | $99/user | Everything in Pro plus a customer support portal, multiple and private portals, multi-language, SSO (JWT), SLA policies; 100 AI resolutions and $20 of AI credits. |
| Enterprise | custom | — | Volume AI resolution rates, invoicing and custom terms, security review and DPA, dedicated onboarding, white-glove migration, a named support contact. |
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: The Productlane Agent, which answers customers from your docs and code and files Linear issues itself, A help center that updates itself from GitHub and Linear changes.
About $35 a month on the Starter plan per seat, $420 a year (checked 2026-10-19).
The Productlane Agent, which answers customers from your docs and code and files Linear issues itself; A help center that updates itself from GitHub and Linear changes; A shared Slack inbox, Microsoft Teams, custom connectors, macros and reporting; A customer portal with multi-language, private portals, SSO and SLA policies; A feature-request portal and changelog that notify customers when something ships. If any of those matter to you, keep paying.
Yes: Chatwoot (open source), FreeScout (open source), Zammad (open source).