# Resolv

> The complete helpdesk & ticketing platform — Zendesk-class capability at an accessible price.

Source page: https://saascode.ai/products/resolv
Machine-readable record: https://saascode.ai/products/resolv.md

One-time purchase · full source code · self-hosted by the buyer.

Price: $139 (one-time)

## How to read this document

Written for a model auditing this product on a buyer's behalf. Two labels
appear throughout and they mean different things:

- **measured** — produced by a script reading the product's own source tree
  or database at the stated date. The method is named beside each number.
- **stated** — written by the seller. True or not, it is a claim, and this
  document does not ask you to treat it as evidence.

The live demo is the strongest verification available from outside: it runs
the same source a buyer receives. Nothing to sign up for — the public side is
open, and the seeded credentials below get you into each role.

## What it is

Resolv is a complete helpdesk for a business that answers its own customers. Email and customer-portal requests land in a split-view inbox that keeps the queue, conversation and customer context together; agents route work through teams, track response and resolution targets against business hours, use saved replies and automations, and publish knowledge-base articles customers can search before writing in. The product also includes satisfaction surveys and reports, a public API for connecting other software, and workflow endpoints that create, close and assign tickets in one call.

## Live demo

Two doors into the same running instance, and the same source a buyer
receives. There is no account to create; the public side is open, and the
seeded credentials below sign you into each role.

- **Guided (recommended):** https://saascode.ai/demo/resolv — our shell, with a role switcher and
  the credentials in the menu. Best for a person.
- **Direct:** https://resolv.saascode.ai — the product on its own, no chrome.
  Best when you are relaying steps to someone, or fetching a page.

5 roles seeded on the demo (of the 6 the schema defines — the build data below counts them all). Credentials are published deliberately: these
are demo accounts on a public demo instance, and a reviewer who cannot get
in cannot verify anything.

- **Customer** (`client`) — sign in as `customer@demo.com` (magic link)
  Submits a request and follows it in the portal. Lands on `/portal`.
- **Agent** (`agent`) — `agent@demo.com` / `demo123`
  Works the queue: assigned tickets, macros, KB drafts. Lands on `/inbox`.
- **Team lead** (`agent_lead`) — `lead@demo.com` / `demo123`
  The team queue, its reports and shared macros. Lands on `/inbox`.
- **Business owner** (`admin`) — `manager@demo.com` / `demo123`
  Runs the helpdesk: agents, SLAs, automations, billing. Lands on `/inbox`.
- **Platform admin** (`super_admin`) — `admin@demo.com` / `demo123`
  The backend: plans, feature flags, instance settings. Lands on `/admin/tickets`.

Or open a role directly: https://saascode.ai/demo/resolv?role={role}

## Measured build

*measured — each number names the method that produced it.*

- **roles: 6** — distinct roles accepted by the role CHECK constraint: admin, agent, agent_lead, client, member, super_admin
- **tables: 69** — distinct CREATE TABLE statements across every applied migration
- **migrations: 58** — .sql files in supabase/migrations
- **page modules: 87** — files named page.tsx under src/app, excluding node_modules and .next
- **source lines: 123,715** — lines of code (comments and blank lines excluded) across 908 TypeScript files (113,138) and 70 SQL files (10,577); node_modules and .next excluded
- **api route files: 220** — files named route.ts under src/app/api
- **http operations: 304** — exported HTTP method handlers across those files, de-duplicated per file, OPTIONS excluded as CORS preflight
- **schema graph: 69 tables, 115 relationships** — parsed from the applied migrations

A large number here is scope, not quality. It says the product models a
real domain rather than a CRUD skeleton; it says nothing about code
quality, duplication, test coverage or maintainability, and should not be
read as if it did.

Release: v1.0.0 · built 2026-07-12

## Complete capability inventory

22 capabilities. Each summary is *stated* — selected from the
product's own buyer documentation, or written by the seller where marked.

### Customer experience

- **Email channel (inbound + outbound threading)** — Most support arrives by email, and most support tools make that fact awkward. This one does not: you point a support address at Resolv and email simply becomes tickets, with nothing for the customer to learn and nothing for them to sign up to.
- **Customer portal channel** — Some customers would rather see their tickets than search their inbox for them. The portal is that: a place they can submit a request, watch it move, and read the reply — without asking anyone where it stands.
- **Knowledge base** — The knowledge base is the only part of a helpdesk that makes the work smaller instead of better organised. Every question it answers is a ticket that never gets written.
- **Branded customer portal** — A customer arriving at your support portal should see your company, not a support tool with your name typed into the corner.
- **CSAT surveys (1–5)** — When a ticket closes, the customer can be asked how it went on a scale of one to five. That part is ordinary. What makes it useful is where the scores go.

### Agent workspace

- **Ticket lifecycle management** — A ticket always has one honest answer to "where is this?": waiting on us, waiting on them, or done.
- **Agent split-view inbox** — This is the screen an agent lives in, and it is deliberately not a dashboard. Nobody's job is to look at charts about tickets; their job is to answer them.
- **Macros & canned responses** — Every support team answers the same twenty questions forever. Macros are those answers, kept.
- **Saved ticket views** — A view is a question you ask the queue often enough that it deserves a name: my open tickets, unassigned, high priority, past its response target.
- **Ticket merge (atomic)** — Customers write twice. They reply to an old thread, they use a different address, they forget they already asked.
- **Collision detection** — Two agents open the same ticket. Both start writing. The customer gets two different answers to the same question, ten seconds apart, from a company that supposedly has one position on it.
- **Custom fields** — Every business asks something a generic helpdesk has never heard of — an order number, a plan, a serial, a region, a contract reference.
- **AI assist** — Four things, all inside the inbox where the work is: it finds the article that answers the ticket, summarises a long thread so whoever picks it up does not read forty messages first, drafts a reply, and sorts incoming tickets into the right category.

### Operations & automation

- **Email notifications** — Nobody should have to sit watching a queue to find out something needs them.
- **Basic reports** — The numbers a support lead is asked for every month: how many tickets came in, how long they took to resolve, how each agent is doing, and how satisfied customers were — all filterable by date range.
- **Teams / groups** — They route work — a ticket can go to a person or to a team, so "someone in billing" is a real destination instead of a guess about who is free right now. And they scope reporting, so a team lead sees their own team's queue and their own team's numbers rather than a company-wide average that tells them nothing about their five people.
- **SLA policies** — A response-time target that ignores your working hours is not a target, it is a way of making everyone look bad on Monday.
- **Advanced automations (form rule builder)** — Automations are what keep a queue moving when nobody is watching it — evenings, weekends, the week someone is on holiday.
- **Advanced reporting** — The next question is "why, and what should we change", and that needs a different kind of number.

### Platform & growth

- **API access** — A public REST API authenticated with a key you generate, for the things a support tool should not be the only place to do: pulling tickets into a warehouse, creating them from your own product when something fails, syncing status back into an internal dashboard.
- **Multi-brand portals** — One installation, several brands, one team behind all of them.
- **Connect API** — The difference between an API and a workflow endpoint is how many round trips it takes to do something real.

## What each system gives the operator

*stated.*

- **Customer experience** — Every channel, one coherent support journey.
- **Agent workspace** — Everything agents need to resolve faster without losing context.
- **Operations & automation** — Run SLAs, teams and workflows without managing every ticket manually.
- **Platform & growth** — Brand it, extend it and build a business on top of it.

## The problems it was built to solve

*stated — the seller's argument, given in full so you can judge it.*

### Every conversation lands in one queue — already threaded.

The expensive part of support is not that requests arrive in several places. It is that nobody can answer “what is outstanding right now?” without asking three people. Work sits in a shared mailbox one person is watching, a form nobody checks on Fridays, and somebody's DMs. Two things follow, and both get worse with every hire: a customer chases an answer that was already sent, and the team finds out about the angry ones last. What that costs is not measured in tickets, it is measured in the customers who stop writing in and leave instead.

### Targets that respect your working hours, and rules that act without you.

A promise about response time is only as real as the thing watching it. Most teams make one — on a pricing page, in a contract, or out loud on a sales call — and then discover they broke it when the customer tells them. The queue itself has the same problem: it only moves while someone is looking at it, so the backlog is built on Friday evening and paid for on Monday morning. Both are the same gap, between what you said you would do and a mechanism that makes it happen when nobody is in the room.

### Your customers should never meet the tool.

After the sale, support is often the only place a customer keeps meeting your company — and it is the surface most likely to look like it belongs to somebody else. That is a strange thing to outsource: the moment a customer is already unhappy is the moment they are reading whose product this is. It gets harder if you serve more than one brand, where the usual answer is one installation per brand, a team split across tools, and no way to see the whole workload at once.

### One call does the whole sequence — and an agent can make it.

A helpdesk that other software cannot reach becomes a place people copy things into. Somebody re-types a failure your product already detected. Somebody exports a CSV every month because the numbers live in a tool the rest of the business cannot query. Somebody reads a ticket in one window and updates a record in another. None of it is hard work and all of it is a person doing what a call should have done — which is also, exactly, the part an AI agent could take over if it were allowed to reach the product at all.

## What it takes to run it

*stated — external services the buyer supplies and pays for directly.*

- **Node host** (required) — Next.js 16 · React 19 · TypeScript strict. No platform lock-in.
- **Supabase** (required) — Postgres with row-level security. 27 tables across 56 migrations, applied by the shipped scripts.
- **Resend** (required for email) — Inbound and outbound. Without it the portal and widget still take tickets; email intake and notifications do not run.
- **Upstash Redis** (required) — Rate limiting on every route, and specifically the public ticket, portal and widget endpoints.
- **A cron caller** (required for SLA) — Holds the shared secret and hits the breach sweep. Without it targets display but breaches are not detected or escalated.
- **OpenRouter key** (optional) — AI assist is inert without it. Nothing else changes.
- **Sentry** (optional) — Error monitoring. Omit it and the application runs unchanged.

## FAQ

**What exactly do I receive after purchase?**

The complete source repository behind the live demo — 123,715 lines across the application and its database, 69 tables defined by 58 migrations that the shipped scripts apply for you, plus the seed data, the demo accounts and the setup documentation. Not a subset and not a scaffold: the same code that runs the demo you just used.

**Is the live demo the same product whose source I receive?**

Yes. The Resolv demo runs the delivered release (v1.0.0), and the build figures on this page are measured from that same source — not from a showcase build kept separately.

**Can I test every account role before buying?**

Yes — all 5 of them: Customer, Agent, Team lead, Business owner, Platform admin. Each one is seeded in the live demo and reachable from the role board above, so you can inspect the product from the customer's side, the agent's side and the administrator's side before you decide.

**Is this a complete product or a starter template?**

Complete. 87 page modules and 304 HTTP operations, with authentication, roles, billing, an administration panel, background jobs and seeded demo data all wired and running. A template gives you the shape of an application; this is one you can deploy and start operating.

**Can I rebrand and modify it?**

Yes, without asking. The name, identity, copy, styling and code are yours to change. Rebranding and operating it as your own service is exactly what the licence is for.

**What does the licence allow?**

A perpetual, worldwide, non-exclusive, non-transferable licence to the product you bought and to every update released for it. The Standard licence covers one business — yours. If you deploy for clients, the Client licence covers up to five. You can modify it, rebrand it, deploy it and charge your own customers.

**Can I resell the source code?**

No. Reselling, redistributing, sublicensing or giving away the source itself is not permitted under either licence. You build and deliver products with it — the code stays with you.

**What services and ongoing costs are required?**

You bring your own accounts, so we never mark anything up and there is no ongoing cost to us beyond the purchase. Required: Node host, Supabase, Resend, Upstash Redis, A cron caller. Optional: OpenRouter key, Sentry. The table above says exactly what stops working without each one; most have usable free tiers at low volume.

**How difficult is deployment?**

Two ways, and most buyers use the first. The installer in your saascode dashboard walks it: you create free accounts at Vercel and Supabase, connect them, and it provisions the database, applies 58 migrations, seeds the data, deploys and verifies the result — you watch the steps go green. Or take the source and do it yourself with the shipped scripts and docs, which is the same sequence run by hand.

**What updates and support are included?**

Updates to that product for as long as we maintain it — no renewal fee and no expiry date on your access. Support covers download problems, defects in the code as shipped, questions about what the product does and how it is structured, and licence questions. It does not cover debugging your own modifications, building features for you, or setting up your hosting and third-party accounts.

**Why does a complete codebase cost $139?**

Because it was built once and is distributed many times. SaaSCode builds each product and ships the same finished release through the catalog, so the price reflects repeatable distribution — not a reduced codebase, an unfinished template, or what the same work would cost commissioned.

**Do I need to be a developer?**

No, for the normal path. You create free accounts at Vercel and Supabase, connect them to the installer in your saascode dashboard, and it does the deployment for you — provision, migrate, seed, deploy, verify. What it asks of you is creating two accounts and copying a token, not writing code. If you would rather deploy it yourself, or host it somewhere else, the full source and the scripts are yours to do that with. Running the product day to day needs no technical skill at all: that happens through its own interface, which is what the demo shows.

## Licence

The buyer receives the complete source and may deploy, modify and operate it
as their own SaaS, charging their own customers. The source itself is not
resold or redistributed: you build and deliver **with** it, you do not sell **it**.

## What this document cannot tell you

Stated plainly because a review that misses it is not a review:

- code quality, duplication, or architectural consistency
- test coverage
- query performance under load
- security posture beyond what the stack implies
- how maintainable it will be in a year

Scope is measurable from outside; implementation quality is not. Anyone
evaluating this should say so rather than infer quality from size.

## Written about it

- [Resolv: a complete help desk built around the work of resolving tickets](https://saascode.ai/inside/resolv-complete-help-desk-built-around-resolving-tickets.md)
- [Help Desk Software: Who Runs It When Things Change or Fail?](https://saascode.ai/inside/help-desk-software-operational-responsibility.md)
- [Resolv vs Zendesk: Source-Code Ownership vs Managed Customer Service](https://saascode.ai/inside/resolv-vs-zendesk-source-code-helpdesk.md)

## Links

- Catalog page: https://saascode.ai/products/resolv
- Product record: https://saascode.ai/inside/products/resolv
- Live demo: https://resolv.saascode.ai
- Every product: https://saascode.ai/llms.txt

