---
name: tabular-pro
description: |
  Use this skill whenever the user asks to design surveys, collect fieldwork,
  clean or weight research data, run analysis, or build dashboards and reports.
  It orchestrates the Tabular Pro MCP server tools to plan, execute, and
  deliver full research projects from a single conversation.
---

# Tabular Pro — Research Engine Skill

Tabular Pro is an AI-powered research platform. This skill teaches an agent how
to use the `tabularpro` MCP server to run an end-to-end research workflow:
questionnaire design → fieldwork → data cleaning → analysis → dashboards →
reports.

## Prerequisites

1. The `tabularpro` MCP server is configured in `.claude/settings.json`:

   ```json
   {
     "mcpServers": {
       "tabularpro": {
         "url": "https://tabularpro.com/api/mcp",
         "headers": { "Authorization": "Bearer tp_your_key_here" }
       }
     }
   }
   ```

2. The user's API key has access to the target workspace.

## Core principle

Tabular Pro is **agentic**. The agent does the work end-to-end and surfaces
decisions, not clicks. Prefer doing over asking — but always show what was done
and let the user redirect.

## Workflow map

### 1. Questionnaire design

- `create_survey(name)` — start a new study
- `create_page(survey_id, title)` — add a page
- `create_question(survey_id, page_id, type, text, options)` — add questions
- `update_question(id, ...)` — apply branching, piping, randomization
- `publish_survey(id)` — open fieldwork

**Defaults to apply without asking:**
- Randomize option order on attitude/brand batteries
- Force-respond on screener questions, not on sensitive demographics
- Include a "prefer not to say" option on demographic questions
- Add an open-ended "Anything else?" at the end of most studies

### 2. Fieldwork

- `list_survey_links(survey_id)` — get distribution URLs
- `list_waves(survey_id)`, `get_wave_progress(wave_id)` — monitor quotas
- `get_response_stats(survey_id)` — live completion and speed stats

### 3. Data cleaning

- `get_response_grid(survey_id)` — full editable data grid
- `detect_anomalies(survey_id)` — speeders, straight-liners, duplicates
- Every flag must be explainable — surface the rule that fired
- Recommend removals; do not silently delete. Confirm first.

### 4. Analysis

- `get_summary_statistics(survey_id)` — quant overview
- `get_frequency_analysis(survey_id, question_id)` — per-question breakdowns
- `get_distribution(survey_id, question_id)` — distributions and crossbreaks
- `run_sentiment_analysis`, `run_theme_extraction`, `run_text_classification`
  — open-ended analysis (consumes AI credits)
- `summarize_responses`, `generate_insights` — AI-written findings

### 5. Dashboards & reports

- `list_dashboards`, `create_dashboard(name)` — build shareable dashboards
- `get_chart_data(...)` — preview before committing
- Element types: `bar`, `horizontal-bar`, `stacked-bar`, `line`, `area`, `pie`,
  `donut`, `radar`, `gauge`, `kpi`, `line-bar`, `table`, plus non-chart
  elements `text`, `filter`, `variable`
- `list_reports`, `get_report`, `export_report_pdf` — deliverables

## Question type reference

- `single_choice` — radio, one answer
- `multiple_choice` — checkboxes, multiple answers
- `text` — open-ended
- `number` — numeric
- `scale` — linear scale (e.g. 1–10)
- `nps` — Net Promoter Score
- `matrix` — grid of rows × options
- `ranking` — drag-and-drop ordering

## Conventions the agent must follow

- **Workspace context**: call `list_workspaces` first if ambiguous
- **Survey IDs**: resolve by searching `list_surveys` — never ask the user
  for a numeric ID if a name is given
- **AI credit spend**: confirm before running bulk AI analysis on >500
  responses, otherwise proceed
- **Exports**: `csv`/`xlsx` for raw data, `pdf`/`pptx` for deliverables
- **Significance testing**: column proportions at 95% by default; surface the
  test used
- **Weighting**: if a target is provided, apply rim weighting and show the
  effective sample size

## Example: end-to-end study

```
User: "Run a brand tracker for Acme — awareness, consideration, and NPS.
       Target is 800 US adults, nat rep."

Agent:
  1. create_survey("Acme Brand Tracker Q2")
  2. create_page(…), create_question(…) ×N for awareness, consideration,
     attribute battery, NPS, demographics
  3. publish_survey(…)
  4. Monitor: get_wave_progress(…) until 800 complete
  5. detect_anomalies(…) → remove 14 flagged speeders (with confirmation)
  6. run_theme_extraction on open-ends
  7. create_dashboard("Acme Brand Tracker Q2") with KPI tiles and
     significance-tested crossbreaks by region
  8. export_report_pdf(…) — ready for the client deck
```

## Related

- MCP server reference: https://tabularpro.com/docs/mcp
- API reference: https://tabularpro.com/docs/api
- Skills overview: https://tabularpro.com/docs/skills
