Skip to main content

I am

Plan your app before AI writes a single line of code

Stop prompting. Start planning.

See example
See more
Project Specifications

Application Overview

Idea Summary

RelayDesk is a lightweight shared customer support inbox for indie SaaS founders. It unifies email threads, macros, and light SLA timers so a tiny team can answer customers without enterprise helpdesk complexity or seat-tax pricing.

Indie SaaS teams drown in a mix of personal Gmail, Notion docs, and Slack forwards. Important tickets get lost, replies collide, and founders cannot see response time. RelayDesk closes the gap with a focused shared inbox, reusable macros, and simple SLA lite timers.

Personas, epics, acceptance criteria, and screen states are part of the enriched Overview - the same shape Spec Viewer renders after generation.

Core Features

  • Shared inbox: team mailbox with assignable threads
  • Macros: reusable reply snippets with variables
  • SLA lite: first-response timers and breach badges
  • Email sync: IMAP/SMTP or provider OAuth for a support address
  • Thread status: open, pending, resolved - plus full-text search
Project Specifications

Technical Specification

Architecture Overview

Browser SPA talks to RelayDesk API. API owns threads, macros, and SLA state in Postgres. An email worker syncs IMAP/OAuth mail and enqueues inbound messages. Object storage holds attachments. Stack: React 18 + Vite + TypeScript, Node.js 20 + Express, PostgreSQL 16, S3-compatible storage, email magic-link auth.

Database Schema

PostgreSQL relational model for workspaces, users, mailboxes, threads, messages, and macros - with an ER Mermaid diagram embedded in the enriched Technical stage (same shape Spec Viewer validates).

API Endpoints

  • GET /api/threads - List threads for workspace with filters
  • POST /api/threads/{id}/replies - Send a reply on a thread
  • POST /api/macros - Create macro
  • GET /api/macros - List macros for workspace
  • PATCH /api/threads/{id} - Update status or assignee
Project Specifications

Market Research

Market Opportunity

Indie SaaS teams favor lightweight support tools over enterprise suites; flat pricing and shared inboxes are rising themes. Enriched Market includes SWOT, ICP scorecard, GTM 30/60/90, and competitor gaps - qualitative insights, not fabricated market-size cards.

Focus

Indie SaaS

GTM

30 / 60 / 90

Edge

Flat pricing

Market Trends

Target Market

Primary ICP: indie SaaS founders and tiny support pods (1-5 people) who currently juggle Gmail, Notion, and Slack for customer email. Disqualify: enterprises needing omnichannel WFM or on-prem helpdesks.

Project Specifications

Design & Branding

Design Philosophy

RelayDesk follows a calm ops aesthetic: warm paper background, high-contrast text, and orange primary actions for reply/assign. Design stage includes live palette, theme preview, component inventory, and style notes - one visual system, no duplicate style guides.

Color Palette

Enriched tokens - primary, secondary, accent, background, text.

Primary
#E85D04
Actions
Secondary
#1B1B1E
Ink
Accent
#F48C06
Highlights
Background
#FFF8F0
Paper
Text
#1B1B1E
Body

App Icon Design

Orange rounded square with RD letters in white.

RD

RelayDesk

Project Specifications

Diagrams

System Context - RelayDesk

Enriched Technical + Architecture stages embed validated Mermaid diagrams (context, ER, auth, deploy).

flowchart LR User["Founder or Agent"] --> SPA["RelayDesk Web"] SPA --> API["RelayDesk API"] API --> DB[(Postgres)] API --> Store[(Object Storage)] Worker["Email Worker"] --> API Worker --> Mail["Mail Provider"] API --> Mail
Project Specifications

Prompts

Full Development Prompt

You are building RelayDesk Support Inbox - RelayDesk is a lightweight shared customer support inbox for indie SaaS founders. It unifies email threads, macros, and light SLA timers so a tiny team can answer customers without enterprise helpdesk complexity or seat-tax pricing.

PROJECT OVERVIEW:
RelayDesk gives indie SaaS teams a shared inbox with macros and SLA lite at a flat price. No bloated CRM, no agent seat tax - just email threads, ownership, and fast replies.

TECHNICAL STACK:
- Frontend: React 18 + Vite + TypeScript
- Backend: Node.js 20 + Express
- Database: PostgreSQL 16
- Authentication: Email magic link + session cookies (HttpOnly)

DEVELOPMENT STAGES - BUILD IN THIS EXACT ORDER:
Each stage is an Agent Ticket with Goal, Non-goals, Files, AC, Commands, DoD, Pitfalls, and Build/Review/Tests variants.

═══════════════════════════════════════════════════════════════
STAGE 1: PROJECT SETUP & BASIC STRUCTURE
═══════════════════════════════════════════════════════════════

## Goal
Scaffold RelayDesk monorepo with web, API, and worker packages so agents can implement inbox features next.

## Variant: Build
1.1 Create workspaces
1.2 Add Express health route
1.3 Add Vite React shell
1.4 Add shared ThreadStatus type

## Variant: Review
- Check no secrets committed
- Verify workspace filters

## Variant: Tests
- Unit: health handler returns ok
- Smoke: web index route mounts

═══════════════════════════════════════════════════════════════
STAGE 2: FRONTEND CORE FUNCTIONALITY
═══════════════════════════════════════════════════════════════

## Goal
Implement Inbox list UI against mocked thread API matching Overview screens and SLA badges.

## Variant: Build
2.1 Seed threads
2.2 API list + filters
2.3 ThreadRow + InboxPage
2.4 Empty/error skeletons

Without Specifys vs with Specifys

Same idea. Completely different starting point for AI and your team.

Without Specifys

20+ prompts, missing requirements

  • Vague chats that lose context mid-build
  • Missing edge cases, roles, and data model
  • Rework when AI invents the wrong architecture
  • No shared PRD for founders, PMs, and engineers

With Specifys

Complete PRD ready to build

  • Full PRD with problem, scope, and success metrics
  • User stories and end-to-end flows
  • Database schema and API endpoints
  • Design direction + IDE-ready prompts / MCP

450+

Specs generated

550+

Builders

70%

Fewer prompt iterations

~4 min

Avg time to PRD

~25 pages

Typical full spec

How it works

Three steps from idea to something your team can build.

  1. Questions

    Answer a short brief about your app - pages, features, audience, and constraints.

  2. Spec

    Get a structured PRD with architecture, flows, design direction, and IDE-ready prompts.

  3. Build

    Hand the spec to your team or connect it to your IDE via MCP - then ship with clarity.

Example Specs

Browse real Spec Viewer-style examples, then generate yours from scratch.

CRM - Pipeboard

Pipeline, leads, and follow-ups for small sales teams.

Marketplace - Stallio

Two-sided marketplace with listings, search, and checkout.

Booking - Slotly

Appointments with availability, reminders, and payments.

AI SaaS - PromptForge

AI workspace with prompts, history, and team seats.

Social - Trailfeed

Feed, profiles, follows, and notifications for a niche community.

Support - RelayDesk

Shared inbox with macros and SLA lite for indie SaaS.

MCP and IDE bridge

Already coding in Cursor or your IDE? Connect your spec with MCP.

Specifys.ai helps you plan before AI writes code - turn an idea into a structured PRD, architecture, and IDE-ready prompts.

Got Questions? We Got You!

Everything you need to know about Specifys.ai.

What's Specifys.ai all about?
Specifys.ai is an AI-powered app planning platform. You answer a short brief and get a complete specification - PRD, user stories, architecture, design direction, and IDE-ready prompts - before anyone writes code.
Is there a free plan?
Yes. Your first complete app spec is free - no credit card required. Upgrade anytime for more specs and advanced features.
Can I edit my specifications?
Yes. Pro subscribers get unlimited editing. With purchased credits, you can edit any specs you have saved so plans stay current as the project evolves.
Can I use my spec in Cursor or other IDEs?
Yes. Export structured packages for Cursor and Windsurf, or connect via MCP so your IDE pulls context from the live spec.

Ready to plan before you code?

Your first app spec is on us.