A database per tenant
Not a tenant_id column. Your organisation gets its own database, reached over its own subdomain, so a token from one tenant is a miss in another.
Suporta is a multi-tenant helpdesk with a database per organisation and a subdomain to match. Inside it, the modules were designed together, so a leave day changes sprint capacity and a timelog becomes an invoice line.
Tickets
Clients file tickets in their own portal, staff file them from Outlook, and Sentry files them by itself. Everything after that is designed to keep the thread readable six months later.
Clients of SLA-enabled companies set P1–P3 at creation; the deadline is derived and a breach check runs every minute.
Discuss the ticket next to the ticket. A reply marked for the client is emailed, with a send status and a resend button when it fails.
Authors can fix their own reply, forever, and every reader sees the (edited) label. Admins cannot edit yours.
Mention your team or the client users of that ticket's company. A client can never enumerate another company's users.
High, medium and low live separately from the client's SLA priority. Staff set it, clients only see it.
Issues sync in every fifteen minutes and become tickets, ready to be picked up by an agent automatically.
Sprints & capacity
Capacity in Suporta isn't a guess. It's each developer's working days and dev-hours per day, minus their approved and pending leave, over the exact dates of the sprint.
Backlog, active, review and done, with points per column and a search across the whole board.
Per-member dev hours per weekday, with full-day leave removing the day and half-day leave removing half.
Reserve a percentage of the team for ongoing support, so sprint capacity reflects the week you'll really have.
Fills each developer up to their own budget, on the projects they are allocated to. Uncovered projects never fall through.
Ask for a redistribution across the team, informed by which tickets are turning negative. Advisory: preview it, then apply.
Preview per-developer points before you close, then push the incomplete work to the next sprint or back to the backlog.
Time & billing
A timer in the sidebar, a quick-log on the ticket, and a report view built for the conversation you have with your accountant at month end.
Company → project → ticket, pause and resume, and a description prompt on stop so no entry is a mystery later.
A freelancer invoicing their hours to you and you invoicing the client are separate flags. One never silently sets the other.
Log the ad-hoc LLM spend that went into the work, right next to the hours it went with.
Filter the report to everything you haven't passed on to the client yet. That filter is remembered per user.
Hours and token euros per row, totalled at the bottom, filtered by date and client.
Agent token spend grouped per client with a per-project breakdown, priced and marked up for invoicing.
Dashboards
A client, a support engineer and an admin do not need the same numbers. So they don't get them.
Tickets grouped by real status, plus an explicit list of the ones whose last reply came from someone else, and why.
Assigned to me, resolved in the last thirty days with points, a status breakdown and a personal attention list.
Open, overdue, unassigned and resolved this month, sprint progress in points, and the latest attention report. Every tile deep-links into a filtered list.
A daily sweep flags tickets that are long-open, inactive, or trending negative in tone, with the actual tickets listed per bucket.
Real-time over websockets, with polling as fallback. Clients see completions only; staff see everything.
Running agents, the needs-a-human queue, PRs approved, hours saved, cost per ticket per phase, and merged-per-month.
Everything else
Built into the same system, on the same data. Not integrations you have to maintain.
Projects belong to companies, users are allocated to companies, and clients only ever see their own.
An Apple-Notes-style editor with sharing, real-time collaboration, autosave with conflict detection, and an offline queue.
Internal events plus two-way sync with Microsoft 365 and Google Calendar over webhooks.
Requests, approvals and public holidays, feeding straight into sprint capacity.
Admin, support and client roles with granular permissions on every endpoint.
An automatic Friday mail to client users per company: completed, new, updated and still open, bucketed per project.
Each one is a settings page with a status pill, not a support ticket to us.
Repositories, branches, pull requests and approvals
Issues become tickets automatically
Calendar sync and the Outlook add-in
Two-way sync over webhooks
Notifications where the team already talks
Same, for the Microsoft half of the world
Attachments on the storage you already pay for
Subscriptions and billing
Not a tenant_id column. Your organisation gets its own database, reached over its own subdomain, so a token from one tenant is a miss in another.
Tickets, notes, the activity feed and the agent dashboard all push over websockets, with polling underneath as a fallback.
The whole interface, the mails, the mobile app, and even the language your agents work and report in.
Ticket activity, agent runs down to the individual tool call, and every claim, lease and status a local agent reports.
What a client cannot see in the UI, they also cannot request. Restrictions are enforced server-side, not hidden client-side.
Features are gated per plan with a middleware, and a free trial unlocks everything so you can judge the whole thing.
Fourteen days, every feature unlocked, no credit card. Bring your own model, or point it at the Claude Code you already pay for.