# Research synthesis

A React block (a whole screen) in [Beamline](https://beamline.io/)'s [Research & design](https://beamline.io/components/apps/research-design) app. Live demo: https://beamline.io/components/research-synthesis

A research study turned into evidence in one place. Transcripts: passages marked as accepted highlights or as the assistant's suggestions (dashed); suggestions to review with the passage, the assistant's reason (said to be a reason, not evidence) and tags; Accept puts exactly that passage into evidence and onto the canvas, Reject keeps the decision with its range, either can be undone; a suggestion made on an older transcript revision says the passage may not line up and can't be accepted. Measured silences as their own rows above a chosen threshold, with a note on the measured interval (a higher threshold hides the row but keeps the note and says so); no audio means silences can't be measured. Canvas: accepted highlights and sticky notes as cards dragged or moved with the arrow keys, selected and grouped; suggested groups dashed until kept or dismissed; deleting a group asks whether its cards stay, never touching interviews; a card whose interview was removed stays as an unavailable source; a collaborator's view can be followed; viewing only opens sources. Ask: an answer sentence by sentence with numbered sources that preview the exact words and open the transcript with the passage lit; an unsupported sentence says so; a source you can't open shows none of its words; no answer says so.

## Use it for

- A research repository where interviews become highlights, groups and answers that cite their passages.
- Reviewing AI-suggested evidence without letting the suggestion stand in for the source.

## Not for

- Playing a recording with word-level timing ([transcript-viewer](https://beamline.io/components/transcript-viewer)).
- A clinician's notes after a session ([session-notes](https://beamline.io/components/session-notes)).

## Anatomy

- bar: the study, how many highlights are in evidence; Transcripts, Canvas or Ask
- transcripts: interviews with pending counts; Mark silences and its threshold; the transcript (time, speaker, words with marks) with silence rows and their notes; suggestions to review and the reviewed ones
- canvas: Suggest groups, the selection and Group selected, people here with Follow; the board with groups (kept or suggested) and cards (highlight, note or unavailable source), a followed person's view; the delete question
- ask: the question, the answer's sentences with numbered sources or the unsupported mark, the source preview

## States

- suggestion: suggested, reason visible, accepted, rejected, source changed, read only
- silence: detection off, measuring, silent interval, annotated, threshold changed (note kept), audio unavailable
- canvas: empty, cards selected, group suggested, manual group, missing source, viewing only, following a collaborator
- answer: answering, ready, citation focused, source unavailable, no supported answer
- narrow room: columns stack

## Keyboard

- Tab reaches every interview, suggestion, card and source; Enter or Space picks; arrow keys move a focused card (Shift for larger steps)

## Motion

Marks ease when a passage is lit; a dragged card lifts and follows the pointer, groups ease to fit their cards; answer sentences fade in as they arrive. Nothing runs at rest.

## Props

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `study` (required) | `string` | — | The study's name. |
| `interviews` (required) | `Interview[]` | — |  |
| `suggestions` | `Suggestion[]` | — |  |
| `defaultSuggestions` | `Suggestion[]` | — |  |
| `onSuggestionsChange` | `((s: Suggestion[]) => void)` | — |  |
| `highlights` | `Highlight[]` | — |  |
| `defaultHighlights` | `Highlight[]` | — |  |
| `onHighlightsChange` | `((h: Highlight[]) => void)` | — |  |
| `notes` | `SilenceNote[]` | — |  |
| `defaultNotes` | `SilenceNote[]` | — |  |
| `onNotesChange` | `((n: SilenceNote[]) => void)` | — |  |
| `cards` | `CanvasCard[]` | — |  |
| `defaultCards` | `CanvasCard[]` | — |  |
| `onCardsChange` | `((c: CanvasCard[]) => void)` | — |  |
| `groups` | `CanvasGroup[]` | — |  |
| `defaultGroups` | `CanvasGroup[]` | — |  |
| `onGroupsChange` | `((g: CanvasGroup[]) => void)` | — |  |
| `collaborators` | `Collaborator[]` | — | People on the canvas with you. |
| `canEdit` | `boolean` | — | May review suggestions, annotate and arrange the canvas. Default true. |
| `onSuggestGroups` | `((cards: CanvasCard[]) => Promise<CanvasGroup[]>)` | — | Suggests groups for the canvas's cards. |
| `onAsk` | `AskInterviews` | — | Answers a question sentence by sentence, each with the excerpts behind it. |
| `defaultView` | `ResearchSynthesisView` | — |  |
| `defaultInterview` | `string` | — |  |
| `defaultSilences` | `boolean` | — |  |
| `defaultThreshold` | `number` | — |  |
| `defaultQuestion` | `string` | — |  |
| `defaultAnswer` | `AnswerSentence[]` | — |  |
| `className` | `string` | — | Classes on the documented visual root; no override by default. |
| `style` | `CSSProperties` | — | Inline styles on the documented visual root; no overrides by default. |
| `ref` | `Ref<HTMLDivElement>` | — | Receives the documented native target or imperative handle; omitted by default. |

## Built from

- [segmented-control](https://beamline.io/components/segmented-control)
- switch
- slider
- textarea
- button
- [avatar-group](https://beamline.io/components/avatar-group)
- [hover-card](https://beamline.io/components/hover-card)
- input
- skeleton

## Dependencies

`lucide-react`

## Import

```tsx
import { ResearchSynthesis } from "@beamline/research-synthesis";
```

## Get it

Research synthesis is part of Beamline UI. Install the parts you need in your React app as compiled packages or editable source. [Get Beamline](https://beamline.io/checkout?pack=complete) · [Connect your agent](https://beamline.io/connect)

## More in Research & design

- [Study setup](https://beamline.io/components/study-setup): Set up an unmoderated test and its screener. Test: what's tested (a website, a prototype by its share link, an app by its store page), who takes it…
- [Study flow](https://beamline.io/components/study-flow): A study's blocks in order, each with where people go next. A block that routes by its answer (multiple choice, scale, open question, prototype task) has…
- [Participant review](https://beamline.io/components/participant-review): One participant's session, answer by answer, beside the list of everyone who took the study. The list filters (finished, left early, with a recording)…
- [Click heatmap](https://beamline.io/components/click-heatmap): One screen of a usability task as it looked (your prototype's frame or a page built from your parts, scaled into a phone) with where people clicked over…
- [Tree test](https://beamline.io/components/tree-test): A tree test: build a navigation tree and read where people went. Build: pages added at the top or under any page, indented under the page above or moved…
- [Prototype task](https://beamline.io/components/prototype-task): A prototype task in a study. The linked prototype refreshes from the design keeping the task and paths (a start screen gone from the new version said, a…
- [Task results](https://beamline.io/components/task-results): A usability task's results, from headline outcomes down to paths and screens. Outcomes (direct success, indirect success, gave up) say their share and…
- [Matrix question](https://beamline.io/components/matrix-question): A matrix question and the participant's side of it, side by side. Rows (up to ten) share one set of choices (two to seven); Enter adds a row, several…
- [Prototype review](https://beamline.io/components/prototype-review): Reviewing a design file's clickable prototype. Present: the board on a stage with its wireframe, the flow chosen (an unavailable one can't be), Back…
- [Report builder](https://beamline.io/components/report-builder): Build a chart from your metrics without code: choose metrics, how to group them over time, an optional breakdown, filters, the range and the chart, see…
- [Report library](https://beamline.io/components/report-library): A business's reports in one place. The directory: reports by topic and group with search, each with what it answers; one this person can't open says why…
- [Review page builder](https://beamline.io/components/review-page-builder): Building the page reviewers use to go through records one by one. The queue of records (one with no title shows its id instead of a blank); the record as…
- [Database builder](https://beamline.io/components/database-builder): What a database does for the people who use it, built in one place. Templates: starting values per property (a relation default points at an existing…
- [Workflow builder](https://beamline.io/components/workflow-builder): Automation rules for a SaaS without code: a trigger, conditions built with the query builder that branch into Yes and No, actions and waits, drawn as a…
- [Workflow library](https://beamline.io/components/workflow-library): The automation library: every automation as a row (what starts it, whether it's live, a draft or paused, who owns it, when it last ran, and its runs this…
- [Drawing board](https://beamline.io/components/drawing-board): A whiteboard a team already knows how to use, like FigJam: tools in a floating bar at the bottom (Select V, Hand H, Sticky note S, Shape R/O/D, Connector…
- [Model workbench](https://beamline.io/components/model-workbench): A CAD model's workbench around a large isometric scene of its bodies, each shaded from its material's appearance with a soft ground shadow and an axis…
- [Component properties](https://beamline.io/components/component-properties): A design system component from three sides. Its variants as a matrix on two chosen properties, the others filtering it, each cell drawing the variant; a…
- [Slot editor](https://beamline.io/components/slot-editor): Slots in a design system component, from making to filling. The main component's layer tree with a checkbox per layer: a nested frame converts to a slot…

Part of [Beamline UI: polished, editable React components and complete screens for custom applications](https://beamline.io/). [Build your own style from any look; tokens, fonts, radii, motion; not only colours](https://beamline.io/docs/customize).
