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

# Intake and Repro Gathering

> Turn messy customer bug reports into structured repro-ready cases

Bug reports usually arrive incomplete. The intake layer should preserve the original customer language, add context, and run a repeatable repro checklist before creating engineering work.

## What It Does

The intake and repro-gathering function:

* Receives customer reports from support tickets, chat, email, or webhook events
* Normalizes the customer report into a structured bug intake record
* Links the bug intake record to the original support conversation
* Fetches account, product, environment, version, incident, and recent activity context
* Checks for reproduction steps, expected behavior, actual behavior, impact, logs, screenshots, and affected objects
* Detects likely duplicates or known incidents
* Asks customer follow-up questions when required information is missing
* Passes repro-ready cases to the engineering issue workflow

## Recommended Components

| Need                               | Duckie component                                    |
| ---------------------------------- | --------------------------------------------------- |
| Receive customer reports           | Ticketing, messaging, email, or webhook deployment  |
| Normalize and link records         | Bug intake workflow                                 |
| Fetch customer and product context | App tool, custom tool, or MCP tool                  |
| Interpret messy descriptions       | Autonomous bug intake agent                         |
| Ask missing-context questions      | Customer follow-up workflow or support ticket agent |
| Track repro completeness           | Categories and attributes                           |

## Flow

```mermaid theme={null}
flowchart TD
  Trigger["Customer support report"]
  Trigger --> Intake["Bug intake deployment"]
  Intake --> Normalize["Normalize report workflow"]
  Normalize --> Link["Link to original support ticket"]
  Link --> Context["Fetch customer and product context"]
  Context --> Checklist["Run repro checklist"]
  Checklist --> Ready["Repro readiness check"]
  Ready --> Question["Draft customer follow-up question"]
  Question --> Ticket["Post to original support ticket"]
  Ticket --> Answer["Customer answer"]
  Answer --> Checklist
  Ready --> Draft["Draft engineering-ready report"]
```

## Repro Checklist

Start with a checklist that engineering actually uses.

| Field                             | Why it matters                                                              |
| --------------------------------- | --------------------------------------------------------------------------- |
| **Customer impact**               | Helps engineering prioritize severity and urgency.                          |
| **Affected account or workspace** | Lets the team inspect the right record.                                     |
| **Product area**                  | Routes the issue to the right owning team.                                  |
| **Environment**                   | Captures browser, device, app version, region, integration, or API version. |
| **Steps to reproduce**            | Turns a complaint into an actionable bug.                                   |
| **Expected behavior**             | Clarifies what the customer thought should happen.                          |
| **Actual behavior**               | States the failure in observable terms.                                     |
| **Frequency**                     | Distinguishes one-time confusion from reproducible defects.                 |
| **Logs or errors**                | Gives engineering debugging material.                                       |
| **Screenshot or recording**       | Helps verify the state quickly.                                             |
| **Known incident match**          | Prevents duplicate escalation for active incidents.                         |
| **Duplicate issue match**         | Links the customer to existing engineering work when possible.              |

## Customer Follow-Up Questions

Ask only for information that changes engineering action.

Good follow-up questions are:

* Specific
* Short
* Written in customer-friendly language
* Tied to one missing field
* Sent in the original conversation
* Stored as part of the bug intake state

Example:

```text theme={null}
Thanks for reporting this. Could you send the exact steps you took right before the dashboard went blank, plus the browser and device you were using? That will help our engineering team reproduce it.
```

## Suggested Intake Contract

```json theme={null}
{
  "support_ticket_id": "ticket_123",
  "customer": {
    "account_id": "acct_123",
    "segment": "business",
    "support_tier": "priority"
  },
  "bug_report": {
    "product_area": "dashboard",
    "impact": "cannot view project data",
    "expected_behavior": "dashboard loads project metrics",
    "actual_behavior": "dashboard is blank after login",
    "steps_to_reproduce": ["log in", "open dashboard"],
    "environment": {
      "browser": "Chrome",
      "device": "desktop"
    },
    "logs": [],
    "screenshots": [],
    "missing_fields": ["console logs"]
  },
  "links": {
    "original_ticket_url": "https://helpdesk.example/tickets/123",
    "known_incident_url": null,
    "duplicate_issue_url": null
  }
}
```

## What to Track

Track categories and attributes from the start:

* Product area
* Severity
* Customer segment
* Support tier
* Repro completeness
* Missing field type
* Duplicate issue match
* Known incident match
* Follow-up question status
* Time waiting on customer

## Related Docs

<CardGroup cols={2}>
  <Card title="Creating Deployments" icon="plus" href="/deployments/creating-deployments">
    Create the customer-side intake deployment.
  </Card>

  <Card title="App Tools" icon="plug" href="/tools/app-tools">
    Use connected tools to read support, CRM, and product context.
  </Card>

  <Card title="Custom Tools" icon="code" href="/tools/custom-tools">
    Add internal lookups for logs, product events, or account data.
  </Card>

  <Card title="Attributes" icon="tags" href="/tagging/attributes">
    Track severity, completeness, and waiting states.
  </Card>
</CardGroup>
