| "Create an IXP project" / "Upload documents to a new project" | Project Setup Guide — new projects only (uploads + taxonomy in one call). For existing projects, see the "Upload a document" row below. |
| "Import this taxonomy" / provides a taxonomy file | Project Setup Guide — Option B (--skip-taxonomy + import-taxonomy) |
| "Label documents" / "Review predictions" | Label Documents Guide |
| "Improve scores" / "Fix prompts" / "Improve F1" | Improve Prompts Guide |
| "Publish the model" / "Tag as live" | uip ixp projects publish <project-name> --output json — publishes the latest version, untagged. Add --tag <live|staging> to also tag it. See cli-reference for --model-version/--description. |
| "Roll back to a previous version" / "Restore version N" | uip ixp projects publish <project-name> --model-version <N> --output json — re-publishes an earlier version. Get available versions from uip ixp projects list-models <project-name> --output json. |
| "Unpublish a model" / "Take a model out of production" | uip ixp projects unpublish <project-name> --model-version <N> --output json — removes a version from the published set (it stays trained/listable). --model-version is required; find published versions via list-models (Pinned: true). To change which version is live, publish a different one instead. |
| "Remove the live/staging tag" / "Untag a version" | uip ixp projects untag <project-name> --tag <live|staging> --output json — removes the named tag (the version it pointed at stays published). untag is the only way to remove a tag — do NOT unpublish or re-publish to clear it (unpublish removes publication, not the tag; publish without --tag leaves the existing tag untouched). To switch live→staging, publish --tag staging instead. |
| "Show metrics" / "What are the scores?" | uip ixp projects get-metrics <project-name> --output json |
| "List projects" | uip ixp projects list --output json |
| "Configure the model" | uip ixp projects configure-model <project-name> [options] --output json |
| "Delete a project" / "Remove this project" | uip ixp projects delete <project-name> -y --output json — permanent and irreversible; removes the project's documents, taxonomy, and trained models. Requires -y/--yes (the CLI never prompts). |
| "Upload a document" / "Add documents to an existing project" | uip ixp documents upload <project-name> <file> --output json — see CLI Reference § Uploading documents. One file per call; loop for multiple. For brand-new projects use projects create instead. |
| "Delete a document" / "Remove a document" | uip ixp documents delete <project-name> <document-id> -y --output json — irreversible, triggers retrain. -y/--yes is required (the CLI never prompts). To delete by filename, look up the DocumentId via documents list (the Filename field shows the original upload name). |
| "Add / delete / rename a field group" | uip ixp groups {add,delete,rename} <project-name> --name <name> ... --output json — see CLI Reference § Groups. groups add requires --instructions and --fields '<json>' — pass all of the new group's fields in that one --fields array (batch); do NOT create the group then add fields one at a time (use fields add only for an already-existing group). delete requires -y/--yes (the CLI never prompts). |
| "Add / edit / rename / delete a data type" | uip ixp data-types {add,update-instructions,rename,delete} <project-name> --name <name> ... --output json — see CLI Reference § Data Types. add requires --kind (text/date/money/number/boolean/choice) and --instructions. --input-value (exact-match/inferred) is required only for --kind text and --kind choice; the other kinds don't have this property and the CLI rejects the flag for them. delete requires -y/--yes (the CLI never prompts); deleting a data type breaks any field referencing it. Reuse a default data type before adding a custom one (Critical Rule 17) — most needs map to a built-in (e.g. currency → Monetary Quantity). |
| "Add / delete / rename / retype a field" | uip ixp fields {add,delete,rename,change-type} <project-name> --group <name> --field <name> ... --output json — see CLI Reference § Fields. delete requires -y/--yes; change-type deletes annotations and also requires -y/--yes. |
| "Mark a field as missing for a document" | uip ixp labellings mark-missing <project-name> <document-id> --fields <ids> --output json — marks the listed fields missing; use when a field is genuinely absent and IXP predicted no value for it. Listing the field in labellings confirm --fields records the same missing marker when the field appears in predictions with an empty value. Only mark a field missing if IXP also predicted nothing for it — never to override a wrong prediction. See Critical Rule 12. |
| "Undo / unconfirm a wrong confirmation" | uip ixp labellings unconfirm <project-name> <document-id> --fields <ids> --output json — rolls back an earlier confirm or mark-missing for the listed fields (confirm can't un-confirm — Critical Rule 14). Every other annotation on the document is carried forward. With --fields alone, a field id shared across occurrences of a repeatable group is removed from all of them; to roll back specific occurrences, add --group with --occurrence <N> or --updates '[…]' (mirrors confirm — see the row below and Critical Rule 14). |
| "Confirm one line item / extraction" / "Confirm only this occurrence" | uip ixp labellings confirm <project-name> <document-id> --group <name> --occurrence <N> [--fields <ids>] --output json — targets one specific extraction of a repeatable field group (0-based index). Without --fields, confirms every predicted field in that occurrence; with --fields, only those. Other occurrences untouched. For confirming multiple occurrences in one call, use --updates '[…]' instead. See Critical Rule 13. |
| "Unconfirm one line item / extraction" / "Roll back only this occurrence" | uip ixp labellings unconfirm <project-name> <document-id> --group <name> --occurrence <N> [--fields <ids>] --output json — rolls back one specific extraction of a repeatable field group (0-based index, same as get-predictions/confirm). Without --fields, unconfirms every annotated field in that occurrence; with --fields, only those. Other occurrences untouched. For several occurrences in one call, use --updates '[…]' instead. See Critical Rule 14. |
| "Set overall extraction instructions" / "Update project prompt" | uip ixp projects update-prompt <project-name> --prompt "<text>" --output json — replaces the taxonomy-wide prompt (the "Overall extraction instructions" field in the IXP UI). Distinct from fields update-prompts (per-field) and groups update-prompts (per-field-group). |
| "How is this project performing?" / "What's the F1?" | uip ixp projects get-metrics <project-name> --output json (+ list-models for the live version). If Data is { Metrics: null } the model isn't validated yet — report that and stop. If the call instead returns Result: Failure with ErrorCode: not_found (a project with no trained model yet, e.g. no confirmed labellings), treat it the same way — report "no metrics yet" and stop. Otherwise Data is flat; report in order: (1) published version — live/published + TrainedTime (Tags[] Name=live, Models[] Pinned); (2) overall ProjectScore/ProjectScoreQuality; (3) per-group scores from FieldGroups[] (F1/Precision/Recall); (4) per-field scores from Fields[], sorted lowest-F1 first. State numbers plainly; no "good enough" judgement unless asked; route low scores to Improve Prompts Guide. Answer from these two calls only — no ad-hoc discovery (Critical Rule #1). |
| "Describe this project" / "What's in it?" | Three calls, reported in order: (1) identity — Title/Name from uip ixp projects get <project-name> --output json; (2) current model — live/published + TrainedTime from list-models; (3) taxonomy — label-group/field counts from uip ixp projects get-taxonomy <project-name> --output json (raw artifact: counts live under Data.dataset.label_groups and Data.dataset.entity_defs, snake_case). Fold in performance (above) only if asked. Do NOT page documents list (its Data is a paged { Documents, Total, Offset, Limit } envelope — use Total for a count) or read deployment bindings. Answer from these calls only (Critical Rule #1). |