# Coming from the hosted app (/docs/guide/from-the-hosted-app)



The hosted Siftline app and this toolkit run the same Engine. A Template in the app is a
Recipe; the Examples tab holds Fixtures; the Review queue is where Unsure Records wait for a
person. The words differ because the app is written for people who do not code, but the data
is the same.

## What carries over [#what-carries-over]

* **The Recipe:** the app exports a Template as Recipe JSON, byte for byte what
  `siftline test` and `siftline label` read. Save it as `recipe.json`.
* **The Fixtures:** Examples export as a JSONL file of Fixtures, the format on
  [Measure it with Fixtures](/docs/guide/measure-with-fixtures).
* **Decisions:** a webhook Action in the app posts the same Decision line the toolkit's
  webhook adapter builds, so one receiver handles both.

{/* TODO(cloud export): once the Template screen exports, replace this callout with the steps. */}

<Callout title="Export is being built">
  The export button on the Template screen is not in the app yet. This page describes the contract
  it is built to; the files it produces will be exactly what the guide uses.
</Callout>

## What does not [#what-does-not]

* **Review:** the toolkit has no queue. `siftline label` writes Unsure Decisions with
  `review: true` and no Action, and where they go is yours to decide.
* **Corrections:** answering in Review produces a Fixture in the app. On your machine, add a
  line to `fixtures.jsonl`.
* **Sending:** the app performs Actions for you. The toolkit's CLI routes but does not send;
  [`@siftline/actions`](/docs/guide/send-an-action) is the package for that, and
  [a short script](/docs/guide/label-records#sending) takes the CLI's output through a pipe.

## A typical loop [#a-typical-loop]

Export the Recipe and the Fixtures, commit both, and run `siftline test --min-accuracy` in CI.
A Recipe change that breaks a Question fails the build before it reaches the inbox. When the
Recipe is good, `siftline label` runs it over a backlog, and the Decisions land wherever your
pipeline puts JSONL.
