For one person or a team of three, the core of Freshdesk is a mailbox that becomes tickets: threads grouped by reply headers, an assignee, a status, canned replies, search and a response-time clock. An agent builds that on IMAP, SMTP and SQLite in a weekend. The time goes on what surrounds it: mail that must land in the customer's inbox (SPF, DKIM, loops with auto-replies), attachments, several agents with roles, and the channels and apps Freshdesk adds, such as chat, phone, social and a customer portal. If email is your only channel, the build is realistic; if it isn't, self-hosting Zammad or FreeScout is the shorter road.
Before you buildFreshdesk shows no free plan any more, but the 14-day trial is a full Enterprise account, enough to export a sample of tickets and test your import.
Build me a small help desk to replace Freshdesk for one support mailbox. Requirements: - Node.js 22 + TypeScript: a Fastify server and a React UI built with Vite. `npm start` serves http://localhost:4950; the mailbox address and credentials come from .env. - Mail in: poll one IMAP mailbox every 60 seconds with `imapflow`, parse with `mailparser`, and thread messages into tickets by In-Reply-To and References, falling back to a [#1234] tag in the subject. Save attachments to ./data/files. - Mail out: replies go through nodemailer SMTP from .env with the same threading headers and quoted history. Internal notes are stored with the ticket and never emailed. - Storage: better-sqlite3 in ./data/desk.db with FTS5 search: tickets (status new, open, pending, solved; priority; assignee; tags), messages, contacts, canned replies and business hours. - Interface: an inbox with filters (mine, unassigned, overdue), a ticket page with the thread and reply box, canned replies inserted with a `/` shortcut, tag and assign controls, and full-text search. - Rules: a first-response timer counted in business hours with `luxon` that turns a ticket red when overdue, an auto-reply carrying the ticket number, and a pending ticket that re-opens on a reply. - Agents: 2 to 5 logins with argon2 hashes and signed session cookies; roles admin and agent. - Tests (Vitest): threading for a reply, a forward and the subject-tag fallback; the timer across a weekend; a loop guard that ignores auto-replies and mail from your own address. - No telemetry, local-first. Outbound calls: your IMAP and SMTP servers only. - Out of scope: chat widgets, phone, social channels, a customer portal, a knowledge base, AI replies, reports. - README: the .env keys, SPF and DKIM for the sending domain, and a warning that replies from a domain without them often land in spam.
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 Freshdesk.
Add a Freshdesk importer to the help desk in this folder. Requirements: - A command `desk import-freshdesk <path>` that reads the ticket CSV from the Tickets export and, when given, the XML from Admin > Account > Account Details > Export data. - Map status, priority, requester, agent, tags and created date; create contacts that are missing. - Store each conversation as messages when the XML has them; otherwise keep the description as a single first message and mark the ticket as imported. - Print counts of tickets, contacts and rows it skipped, and make a second run skip tickets that already exist. - Update the README with the export steps.
Add a public contact form to the help desk in this folder. Requirements: - A form page that creates a ticket (name, email, subject, message, one attachment up to 5 MB). - Protect it with a honeypot field and a rate limit of 5 submissions per hour per IP address. - The requester gets an email with a private link to a read-only page of their ticket and can reply there; replies land in the same thread. - Serve the form on a second port (FORM_PORT in .env) so only that one can be exposed. - Update the README.
Add a knowledge base to the help desk in this folder. Requirements: - Articles written in Markdown with a title, a category and a draft or published flag, stored in SQLite with FTS5 search. - A public read-only page per article and a search page. - In the reply box, suggest the three best matching articles for the ticket text and insert a link with one click. - Update the README.
Add feedback and a weekly summary to the help desk in this folder. Requirements: - When a ticket is solved, send one email with two links, good and bad, that record a rating once per ticket. - A page showing the last 8 weeks: tickets opened and solved, median first response in business hours, and the share of tickets that missed the response deadline. - A Monday 08:00 email with the same numbers for the previous week, sent through the existing SMTP settings. - Update the README.
A support inbox is a promise to customers, and a lost or late reply costs more than $23 a month. Teams pay so that channels, deadlines, saved answers and the AI agent are kept working by someone else, and so a new agent can start on day one without touching a mail server.
Estimate · Runs on a $5 VPS or hardware you own, with a mailbox you already pay for. Freshdesk Growth for three agents is $69 a month billed monthly. The build is token usage on your agent plan.
Checked 2026-10-19 against Freshdesk's docs: 1, 2, 3, 4, 5, 6
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Growth | $23 | $19 | Ticketing and shared inbox, customer portal and knowledge base, threads and tasks, automations, roles, SAML single sign-on, standard reports, Email AI Agent with 500 sessions included once per account. |
| Pro | $66 | $55 | Everything in Growth plus a multilingual help desk, custom dashboards, round-robin and load-balanced routing, multiple SLA policies, business hours, portal branding, community forums and 5,000 external collaborators. |
| Enterprise | $107 | $89 | Everything in Pro plus skill-based routing, sandbox, audit logs, IP allowlisting, JWT authentication, approval workflow for articles and Freddy AI Insights. |
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Live chat, phone, WhatsApp and social channels in the same inbox, The customer portal, knowledge base and community forums.
About $23 a month on the Growth plan per seat, $276 a year (checked 2026-10-19).
Live chat, phone, WhatsApp and social channels in the same inbox; The customer portal, knowledge base and community forums; Freddy AI Agent answering tickets and Copilot drafting replies; Marketplace apps and connectors to CRMs and billing tools; Multiple SLA policies, skill-based routing, audit logs and sandbox; Mobile apps and the built-in analytics dashboards. If any of those matter to you, keep paying.
Yes: Zammad (open source), FreeScout (open source), Chatwoot (open source).