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

# Portfolio Intelligence Contract

> The public-safe metadata contract for portfolio classification, image quality, review, rights, consent, and distribution readiness.

# Portfolio Intelligence Contract

Portfolio intelligence turns uploaded or texted tattoo media into structured, reviewable metadata.

It should help the platform understand the work without leaking private conversations, raw CMS workflows, or unapproved assets.

<Note>
  Review-gated surface: this workflow can stage evidence and prepare review records, but it cannot publish, promote, or write approved portfolio data without TattooAPI policy checks and human approval.
</Note>

## Metadata Groups

| Group          | Fields                                                          |
| -------------- | --------------------------------------------------------------- |
| Classification | `classification`, `confidence`, `reviewRequired`, `blockers`    |
| Style          | `suggestedStyles`, `styleConfidence`, `taxonomyVersion`         |
| Color          | `suggestedColors`, `colorMode`, `colorConfidence`               |
| Placement      | `suggestedPlacement`, `bodyArea`, `size`, `orientation`         |
| Content        | `suggestedTags`, `suggestedAltText`, `suggestedCaption`         |
| Quality        | `quality`, `issues`, `duplicateCandidate`, `portfolioReadiness` |
| Ownership      | `artistOwnerId`, `ownerTenantId`, `delegatedActorId`            |
| Provenance     | `sourceSystem`, `sourceMessageId`, `receivedAt`, `sourceHash`   |
| Rights         | `rightsStatus`, `consentStatus`, `distributionEligibility`      |
| Review         | `reviewStatus`, `reviewedBy`, `reviewedAt`, `approvalSource`    |

## Example Shape

```ts theme={"dark"}
type PortfolioIntelligenceRecord = {
  assetId: string;
  sourceSystem: "communications" | "approved_media" | "tattoo_co" | "studio_os" | "manual";
  visibility: "private_raw" | "public_profile" | "sanitized_metric" | "ontology_fact";
  classification: "portfolio_work" | "flash_available" | "reference_idea" | "in_progress" | "duplicate_candidate" | "low_quality" | "needs_review";
  confidence: number;
  suggestedStyles?: string[];
  suggestedColors?: string[];
  suggestedPlacement?: string;
  suggestedSize?: string;
  suggestedAltText?: string;
  suggestedCaption?: string;
  suggestedTags: string[];
  quality: "good" | "low" | "unusable";
  rightsStatus: "unknown" | "claimed" | "verified" | "blocked";
  consentStatus: "unknown" | "not_required" | "captured" | "blocked";
  reviewStatus: "staged" | "needs_review" | "approved" | "rejected";
  distributionEligibility: "blocked" | "internal_only" | "public_profile" | "partner_projection";
};
```

## Promotion Rule

An intelligence record can support public products only after:

* identity is resolved
* artist ownership is known
* rights and consent posture are acceptable
* review status is approved
* distribution target is explicit
* public projection strips private source details

## Product Uses

Approved portfolio intelligence can power:

* Artist OS portfolio management
* Studio OS portfolio operations
* tattoo.co marketplace profiles
* managed websites
* public portfolio search
* SDK and API projections
* read-only docs guidance

It should not power:

* automatic public publishing from inbound text messages
* unreviewed identity changes
* raw media distribution
* public legal/compliance advice
* direct approved-storage or runtime mutations from private workers

<Tip>
  Data posture legend: `public_profile` can appear in public projections, `private_raw` stays internal, `sanitized_metric` can feed signals, `ontology_fact` can enter the governed graph, and `secret_reference` never leaves host secrets or private runtime configuration.
</Tip>
