---
name: prisebe-json-generator
description: Create a valid prisebe JSON workspace from a user's asset notes so it can be opened and visualized offline by the app.
metadata:
  short-description: Generate an offline prisebe workspace
---

# prisebe JSON generator

Use this skill when a user asks to turn manually provided accounts, holdings, balances, dates, currencies, or tags into a JSON file for prisebe.

## Outcome

Create a complete `schemaVersion: 1.2` workspace that the user can save as a `.json` file and open from the app's **Open existing file** action. If the environment supports local file creation, write the result to a user-visible `.json` file. Otherwise, return JSON only when the user explicitly requests the file contents.

## Offline workflow

1. Extract only facts supplied by the user.
2. Use the user's base currency; use `USD` only as the product default when no other base currency is stated and no conflicting conversion assumption is needed.
3. Create compact, stable unique IDs: exactly 8 alphanumeric characters, without names, URLs, or dates, and resolve every relationship by ID.
4. Represent classification with reusable generic tags. Do not invent `assetCategory`, `owner`, `monthlyPrice`, or `price` fields.
5. Represent each known dated observation as a new append-only value entry. Do not invent history.
6. Store each value only in its resource currency. Never add a converted amount or guess an exchange rate in the JSON.
7. Validate the finished object before saving it.

## Required invariants

- Top-level fields: `schemaVersion`, `updatedAt`, `baseCurrency`, `portfolios`, `resources`, `tags`, `valueEntries`.
- Do not add a top-level `currencies` field. Currency codes are derived from `baseCurrency` and each resource's `currency`.
- Each resource references an existing `portfolioId` and each `tagIds` entry references an existing tag.
- Each value entry references an existing `resourceId`.
- Every generated ID is exactly 8 alphanumeric characters; reuse the same IDs in all relationship fields.
- `status` is either `active` or `archived`.
- Archived resources include `archivedAt` as the ISO 8601 date-time when archiving occurred; active resources omit this optional field.
- Monetary amounts are decimal strings, not JSON numbers.
- Dates use ISO 8601 date-time strings.

Read [the full schema and example guide](../../docs/ai-generated-json.md) when field-level detail or a copy-ready prompt is needed.

## Response behavior

- Ask concise clarification questions when a required fact is missing and guessing would change the user's financial data.
- When the user asks for a downloadable file, make the JSON the file contents and keep commentary outside the file.
- Do not add Markdown fences, comments, trailing commas, temporary UI state, or extra top-level properties to the JSON.
- State any assumptions outside the JSON, especially a default base currency.
