You are browsing as a guest. Sign up (or log in) to start making projects!

Nextdesk

  • 4 Devlogs
  • 6 Total hours

Nextdesk is the next generation help desk for your company, build around opensoruce and modularity!

Open comments for this post

1h 17m 53s logged

Rewrote the AI engine to actually run tools instead of just talking about them. Key changes:- Tool system rework: Tools now use usage.md for documentation — loaded automatically and fed into the AI’s system prompt so it knows exactly how and when to use each tool. Added usage field to ToolDefinition. Created extras/tools/ping/usage.md with explicit usage rules.- Two-pass AI response: The AI first analyzes the ticket and selects tools. Non-approval tools execute inline, then a second AI call (composeResponse) writes the actual customer message based on the real tool results — no more guessing “we checked” before the tool runs.- Schema validation: Tools with missing required params are silently skipped instead of failing loudly and appending errors to responses.- Per-tool tracking: Every tool execution now creates an AiAction record (even non-approval ones), so the admin UI can show individual tool calls with status, input, and output per ticket.- Admin UI tools display: Tools appear under the customer profile in the ticket detail sidebar — each call shows tool name, status badge (completed/failed/pending), and output message.- SLA fields: Added slaResponseTime and slaResolutionTime (in minutes) to both Customer and Organization models. Displayed formatted (e.g. “1h 30m”) under the customer profile. Added formatSla and parseSlaInput utilities.- CSAT: Added csatScore, csatSentAt, csatRespondedAt to the Ticket model. Admin can close a ticket and rate satisfaction (1-5 stars). CSAT score displays when ticket is closed.- Decision logic fixes: Fixed decide() to handle request_approval explicitly. When non-approval tools run, ticket stays Open instead of auto-resolving or going to Pending — keeps the conversation flowing for follow-up messages. Fixed addMessage skip logic that was preventing AI re-processing when the status was AiPending. Removed “Resolved” from terminal statuses in the re-trigger check.

0
0
2
Open comments for this post

1h 37m 59s logged

Today I refactored the entire app from a multi-tenant demo into a single-tenant production support desk. Stripped out team management, roles, and all mock data from the dashboard. Replaced the Prisma schema to remove Member, OrgSettings, Workflow, ToolConfig, and other unused models. Simplified the auth store to stop persisting user data in localStorage — auth is now verified via the backend on every page load. Built a client portal at /portal where users can submit and track tickets, and a staff area at /staff for admin login. Added role-based routing so clients and admins land in the right place. Added KB creation tools and user management for admins. Still shaking out some DB migration issues on the hosted Postgres instance, but the schema is settling. (user login) will show user portal tmw

0
0
2
Open comments for this post

1h 7m 10s logged

I started by asking v0 to draft the application. I then began working on it by hand with the assistance of OpenCode. I ran into some issues with the database migrations, but I’m working on resolving them. i wi.ll soon let you pick your own branding!

0
0
5

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…