New: ask your spec questions from Slack

Turn intent into
crystal-clear specs.

Describe what you're building in plain language and get back a structured, versioned spec: flows, data models, roles, test cases. The AI proposes changes. Nothing lands without your approval.

Free 14-day trial. No credit card. Cancel in two clicks.

app.crystalspec.com / acme / onboarding / F-0007-user-sign-in
Flow · F-0007
User Sign-In
✎ Editing draft
1
Enter email & passwordUSER
2
Validate credentialsSYS
3
Suspicious sign-in?DECISIONSYS
4
Verify via magic linkSUB-FLOWSYS
5
Land on the dashboardUSER
4 Test Cases2 Roles2 TriggersAI Assist
AI Proposal
Add a "Rate-limit failed attempts" step to block brute-force sign-ins.
Approve Reject
Revision v4 · draft
Every AI edit needs your approval
Versioned & revertible by default
Permissions enforced server-side
Pushes tasks to GitHub, Linear & ClickUp

Your spec shouldn't die in a wiki.

Product intent ends up spread across a doc nobody updated, a thread nobody saved, and a few people's heads. The code drifts from all three, one small decision at a time.

Specs today

  • Wiki pages are out of date before the feature ships
  • Nobody can say which version is the current one
  • AI coding tools guess at your product intent
  • Spec-driven tools generate a spec, then throw it away once code ships
  • Decisions vanish into chat scrollback and memory

With CrystalSpec

  • One living spec, versioned and diffed like code
  • A published revision is always the source of truth
  • Agents read the same spec your team does, via MCP
  • The spec stays current after the code ships
  • Every decision proposed, approved, and recorded

Six months later, someone re-opens a question that was settled, argues it from scratch, and lands somewhere new. The original reasoning lived in a meeting nobody wrote up.

From a rough idea to a published spec, in four steps.

The AI handles the structure. The decisions stay with you, from the first draft to the published revision.

01

Describe

Tell the assistant what you're building. It reads your whole project for context: every flow, model, role, and glossary term.

02

Review & approve

The AI returns concrete proposals: create this flow, update that step. Each one is validated before it can be applied, and you accept or reject them individually.

03

Analyze

Run the inconsistency analyzer on a project, flow, or step. Contradictions, gaps, and unused terms come back as graded findings, with a one-click path to fix them.

04

Publish

Publishing cuts a versioned revision with a drafted change summary. Share it read-only, export a PDF, fire a signed webhook, revert any time.

AI proposes. You decide.

Chat with an assistant that knows your whole project. Suggestions arrive as structured proposals (create this flow, update that field, delete that role), each validated before it can be applied. Nothing is written until you approve it.

  • Approve or reject proposals one by one, or all at once
  • Validation catches missing fields and broken references up front
  • Every approval and rejection is recorded
AI Proposed Changes3 pending
CREATE
Flows › Refund request
New flow with 6 steps, USER trigger, 2 test cases
appliable
UPDATE
Data Models › Order › status
Add REFUNDED to the status enum
appliable
DELETE
Roles › Billing Clerk
Superseded by the Finance Manager role
appliable
Reviewing never consumes AI credits.
Reject (1)Approve (2)

Find the holes before they cost a sprint.

One click scans a project, flow, or step for contradictions, gaps, and dead glossary terms. Findings come back graded by severity, and "Fix all with AI" turns the report into proposals you review like any other change.

  • Whole-project, per-flow, or per-step analysis with an optional goal
  • Findings graded as contradictions, warnings, and notes
  • A browsable history of past analyses, with jumps straight to the flow
Inconsistency analysis — Whole project3 findings
CONTRADICTIONCheckout
Checkout flow has no payment step
The Checkout flow ends before the customer is charged.
WARNINGRefunds
Refund flow has no test cases
Every other top-level flow defines at least one.
NOTEGlossary
Glossary term 'SKU' is never used
Defined in the glossary but not referenced by any flow or step.
Previous analyses Fix all with AI

Git-style history for product decisions.

Editing forks a draft revision locked to one editor, so the published spec stays stable while you work. Publishing cuts a new version with a change summary and a field-level changeset. Any version can be reverted.

  • One active editor per draft, so edits never collide
  • Field-level "View changes" diffs between revisions
  • Optional sign-off before publish, with named approvers
  • Revert with full lineage, plus a per-project activity timeline
Revision history — Acme Onboardingv4
v4Editing draftin progress
Locked by Maria — refining the refund epic
v3Publishedby Maria · 2 days ago
Refunds epic: 2 new flows, Order model gains REFUNDED status
+2 flows~1 data model−1 roleView changes Revert
v2Publishedby Alex · last week
Checkout hardening after the inconsistency report
+4 test cases~2 flowsView changes Revert

Your agents can query the spec.

The spec is typed data, so an agent can pull a flow, list revisions, diff what changed, or ask the project a question over a hosted MCP server, a scoped GraphQL API, and signed webhooks on every publish. A markdown PRD can't answer those questions. A structured spec can.

  • MCP tools for Claude Code, Claude Desktop, and Cursor
  • Query the typed graph: flows, models, revisions, glossary terms
  • HMAC-signed revision.published webhooks, plus read-only public links
MCPGraphQLWebhooksPDF
# Point your agent at your spec
claude mcp add crystalspec \
https://app.crystalspec.com/mcp \
--header "Authorization: Bearer csk_…"
# Tools your agent can call
get_spec_overviewget_flowlist_revisionsask_projectget_custom_instructions+15 more
# Signed webhook on every publish
revision.published → X-CrystalSpec-Signature: sha256=…

Ship the spec straight into GitHub, Linear, or ClickUp.

Publish a revision and CrystalSpec breaks the changes into atomic tasks, pushed to the tracker your team already uses. Every issue links back to the revision it came from, so the spec stays the single source of truth.

  • AI-decomposed atomic tasks from any published revision
  • Push to GitHub, Linear, or ClickUp
  • Idempotent: re-running never creates a task twice
GitHubLinearClickUpfrom revision #3
Build the Refund request flow (6 steps)
F-0012 · USER trigger
Add REFUNDED to the Order.status enum
DM-Order · data model
Add 2 test cases to Refund request
TC-0012 · QA
Retire the Billing Clerk role
ROLE · cleanup
Re-running skips tasks already pushed. Push 4 tasks

Answers from the spec, in the channel you already use.

Mention @CrystalSpec in a bound channel and it replies in the thread, grounded in the project's published revision. Nobody needs an account to ask, and a question can never change the spec.

  • Native, formatted answers with a link back to the project
  • Stateless and read-only by design
  • Billed to the connection owner, so the whole channel can ask for free
product-specbound project
DK
Dana K.10:24

@CrystalSpec what happens if payment fails at checkout?

CrystalSpecAPP
The Checkout flow branches on a failed charge: the order is held, the customer sees a retry prompt, and a payment.failed event fires. Retries are rate-limited to 3 attempts.
Answered from the current spec · Open project

Bring a messy doc. Leave with a spec.

Paste what you already have. The assistant proposes the structure, flow by flow, and you approve what's right.

Start free

Everything a spec needs, in one place.

Built for product, engineering, and design teams. The spec is typed, queryable data, so people and agents work from the same structure.

Flows that branch

Plain steps, nested sub-flows, and decision points with labelled branches. Every flow renders as a live diagram you can click into.

Data models, drawn or generated

Typed fields, enums, arrays, and references between models. Build them by hand or generate them from your project's context.

Test cases on every flow

Each flow carries verification cases with codes and descriptions, so QA starts from the spec instead of guessing at it.

Discussions where the work is

Threads anchored to flows and projects, with @mentions, a global unread inbox, and an AI teammate that answers when you mention @cs.

Share without an account

Publish a read-only link to any project. Visitors browse the live spec, and signed-in viewers can ask the AI questions about it.

The full anatomy of a spec

Roles, phases, epics, glossary terms, and reference resources, typed and cross-referenced so every flow and model shares one vocabulary.

Cmd+K everything

A command palette that searches every flow, step, model, and term in your project, and lands you there with the editor open.

Access control that holds

Owners, admins, and contributors, with per-project read/write overrides enforced server-side on every operation.

PDF & DOCX export

A server-rendered PDF or a styled Word document of the entire specification, for whenever a stakeholder asks for "the document."

Ask the spec in Slack

Mention @CrystalSpec in a bound channel and it answers in-thread from your published revision, with a link back to the project.

Standing instructions

House style, tone, and things to always check, injected into every AI call across chat, analysis, and revision summaries. Only an owner can change them.

Sign-off before a revision ships

Require approval before publish. Drafts park as pending, approvers are notified in-app, in Slack, and over webhooks, and both sides are credited on release.

Ten dollars a seat. That's the pricing page.

Try everything free, then pay $10 per member per month, with each member's monthly AI allowance included. A five-person team runs $50 a month, all in.

Free Trial

Every feature unlocked while you evaluate.

$0to start

Upgrade only when you're ready to commit.

  • Full spec authoring & AI assistant
  • 500 AI credits per member, monthly
  • Versioned revisions & publishing
  • Read-only public sharing
Start free trial
No credit card to start500 AI credits per member, refreshed monthlyShared one-time top-ups for busy weeksAdd or remove seats anytimeCancel whenever

Questions we hear a lot.

No. That's the core design decision. The assistant only produces proposals: structured create, update, and delete suggestions that wait for your explicit approval. Each one is validated before you can approve it, every decision is recorded, and rejected proposals are kept so you can see what was suggested and who declined it.

Every team member gets 500 AI credits each month (roughly $5 of AI usage), included with their seat and refreshed automatically. When someone runs out, usage draws from a shared team top-up balance you can buy once and keep. Reviewing proposals never costs credits; only generation does.

Editing forks a draft revision that's locked to a single active editor, while everyone else keeps seeing the stable published version. Publishing promotes the draft to a new version with a change summary and a field-level diff. Discussions live outside the lock, so the conversation never stops while someone is editing.

Yes. Any project can publish a read-only share link that requires no account. Visitors browse the live published spec, and signed-in viewers can ask the AI questions about it, billed to their own workspace rather than yours. Rotate or disable the link at any time and old URLs stop resolving immediately.

Yes, it's a first-class feature. CrystalSpec hosts an MCP server that Claude Code, Claude Desktop, and Cursor can connect to with a scoped personal token. There's also a GraphQL API, HMAC-signed webhooks that fire when a revision is published, and PDF and DOCX export for the humans in the room.

Yes. Connect a Slack workspace, bind a channel, and mention @CrystalSpec with a question. It answers in the thread from the project's published revision, formatted natively, with a link back to the project. It's stateless and read-only, so a Slack question can never change the spec. Usage is billed to the connection owner's allowance, so anyone in the channel can ask without an account or credits of their own.

Turn on "require approval before publish" and a submitted draft parks as pending instead of publishing, while its editor keeps working. Choose who can approve: any member, the team owners, or a named set. Approvers are notified in-app, in Slack, and over webhooks, and re-pinged if the draft changes before they sign off. On publish, both the author and the approver are credited.

No. Create an account and start a free trial with every feature unlocked, including your monthly AI allowance. When you're ready, the paid plan is a single per-seat price: $10 per member per month.

Didn't find your question? Start free →

Ready to crystallize
your next project?

Describe it in a sentence. Review what the AI proposes. Publish when it's right. From then on, your team and their agents read the same spec.

Free trial, no credit cardEvery AI edit human-approvedCancel in two clicks