> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dacard.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Generate a Signal Card

> Anonymous endpoint that accepts a self-reported IC Signal Assessment and returns
a scored Signal Card with dimension breakdowns, a narrative, peer percentile,
and a shareable link.

Rate-limited to 2 requests per IP per hour. No authentication required.
Costs 0 credits (public access path).

**Permission:** Public (no auth required)




## OpenAPI

````yaml post /api/signal-score
openapi: 3.1.0
info:
  title: Dacard.ai API
  description: >
    Decision intelligence platform for AI-native product teams.

    Score, connect, and compound your product maturity across two original
    frameworks.
  version: 0.1.0
  contact:
    name: Darren Card
    email: darren@darrencard.com
    url: https://darrencard.com
  license:
    name: Proprietary
servers:
  - url: https://app.dacard.ai
    description: Production
  - url: http://localhost:3001
    description: Local development
security: []
tags:
  - name: Scoring
    description: AI maturity scoring engine
  - name: Lifecycle
    description: Development Lifecycle assessment
  - name: Products
    description: Product management and analytics
  - name: Dashboard
    description: Dashboard and suite analytics
  - name: Account
    description: Account and team management
  - name: Billing
    description: Stripe billing integration
  - name: User
    description: User profile, onboarding, and preferences
  - name: System
    description: Health checks and diagnostics
  - name: Internal
    description: Internal and admin endpoints (PQL tracking, demo data management)
  - name: Agents
    description: Agent Studio - autonomous AI agents, triggers, and artifacts
  - name: Intelligence
    description: Alerts, coaching context, and score timeline
  - name: Anomalies
    description: Signal anomaly detection, acknowledgment, and sensitivity overrides
  - name: Outcomes
    description: Longitudinal outcome observations for validation study (E2.2)
  - name: Settings
    description: User and account notification preferences
  - name: Webhooks
    description: Outbound webhook management
  - name: API Keys
    description: API key management (Team and Enterprise plans)
paths:
  /api/signal-score:
    post:
      tags:
        - Scoring
      summary: Generate a Signal Card
      description: >
        Anonymous endpoint that accepts a self-reported IC Signal Assessment and
        returns

        a scored Signal Card with dimension breakdowns, a narrative, peer
        percentile,

        and a shareable link.


        Rate-limited to 2 requests per IP per hour. No authentication required.

        Costs 0 credits (public access path).


        **Permission:** Public (no auth required)
      operationId: generateSignalCard
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignalAssessmentInput'
      responses:
        '200':
          description: Signal Card generated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignalCardResponse'
        '400':
          description: Validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: SIGNAL_VALIDATION_FAILED
                message: Please complete all assessment fields.
                action: Check your responses and try again.
        '429':
          description: Rate limit exceeded (2 per IP per hour)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: SIGNAL_RATE_LIMITED
                message: You have already generated a signal card recently.
                action: Try again in an hour.
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    SignalAssessmentInput:
      type: object
      required:
        - displayName
        - functionId
        - level
        - openEndedResponse
        - practiceSelections
        - confidenceRatings
      properties:
        displayName:
          type: string
          maxLength: 50
          description: Display name shown on the Signal Card (1-50 characters)
          example: Sarah K.
        functionId:
          type: string
          enum:
            - pm
            - design
            - engineering
            - data
            - operations
            - gtm
          description: Job function of the respondent
        level:
          type: string
          enum:
            - associate
            - mid
            - senior
            - staff
            - lead
          description: Seniority level of the respondent
        openEndedResponse:
          type: string
          minLength: 40
          description: Description of a recent product decision (40+ characters)
        practiceSelections:
          type: array
          items:
            type: string
          minItems: 6
          maxItems: 8
          description: 6-8 practice IDs selected from the assessment question bank
        confidenceRatings:
          type: object
          description: Map of 5 confidence area IDs to ratings (1-5)
          additionalProperties:
            type: integer
            minimum: 1
            maximum: 5
          example:
            data_driven_decisions: 4
            cross_functional_alignment: 3
            technical_depth: 5
            customer_empathy: 4
            strategic_clarity: 3
    SignalCardResponse:
      type: object
      required:
        - card
        - shareId
        - shareUrl
      properties:
        card:
          $ref: '#/components/schemas/SignalCard'
        shareId:
          type: string
          description: Unique share token for the card
        shareUrl:
          type: string
          description: Relative URL to the shareable card page
          example: /c/abc123xyz
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Machine-readable error message
        code:
          type: string
          description: Error code
          enum:
            - AUTH_REQUIRED
            - FORBIDDEN
            - NOT_FOUND
            - INVALID_URL
            - CRAWL_FAILED
            - SCORE_FAILED
            - QUOTA_EXCEEDED
            - ANON_RATE_LIMIT
            - SIGNAL_RATE_LIMITED
            - SIGNAL_VALIDATION_FAILED
            - SERVER_ERROR
        message:
          type: string
          description: Human-readable message
        details:
          description: Additional context
    SignalCard:
      type: object
      required:
        - id
        - displayName
        - functionId
        - level
        - totalScore
        - normalizedScore
        - stageName
        - dimensions
        - narrative
        - peerPercentile
      properties:
        id:
          type: string
          format: uuid
          description: Signal Card ID
        displayName:
          type: string
          description: Display name on the card
        functionId:
          type: string
          description: Job function
        level:
          type: string
          description: Seniority level
        totalScore:
          type: number
          description: Raw total score
        normalizedScore:
          type: number
          minimum: 0
          maximum: 100
          description: Score normalized to 0-100 scale
        stageName:
          type: string
          description: Overall maturity stage name
        dimensions:
          type: array
          items:
            $ref: '#/components/schemas/SignalDimensionScore'
        narrative:
          type: string
          description: LLM-generated narrative summarizing the assessment
        peerPercentile:
          type: integer
          minimum: 0
          maximum: 100
          nullable: true
          description: Estimated percentile rank among peers in the same function and level
    SignalDimensionScore:
      type: object
      required:
        - dimensionId
        - dimensionName
        - score
        - stageName
      properties:
        dimensionId:
          type: string
          description: Dimension identifier
        dimensionName:
          type: string
          description: Human-readable dimension name
        score:
          type: number
          minimum: 0
          maximum: 100
          description: Normalized score for this dimension
        stageName:
          type: string
          description: Stage name for this score level

````