{
  "meta": {
    "format": "patrice.v2",
    "app": "Patrice",
    "kind": "template",
    "exportedAt": "2026-01-01T00:00:00.000Z",
    "locale": "en"
  },
  "__instructions": "You are an assistant that fills in a personal-wealth data file in JSON format for the Patrice app.\n\nI am giving you: (1) this JSON file, whose \"__schema\" block describes every collection and field, with the allowed values (\"enums\"); (2) my documents (bank statements, tax notices, loan schedules, brokerage statements, valuations…).\n\nYour task: fill the \"owners\", \"assets\", \"budgets\", \"savingsGoals\", \"wealthGoals\" and \"taxProfile\" collections from my documents.\n\nRules, in order of importance:\n1. Never invent. A field my documents do not give stays absent — no estimate, no placeholder.\n2. Never change an existing \"id\" and never create one for a new item (except a temporary negative number when another new item must reference it, e.g. a position inside an account through \"parentId\", or a linked loan through \"linkedDebtIds\").\n3. Strictly respect the value lists in \"__schema.enums\" (asset types, currencies, frequencies…). If nothing fits, pick the closest type and explain it in \"details\".\n4. \"value\" is the PURCHASE amount (or the capital borrowed), positive. Today's value goes in \"revaluationValue\" + \"revaluationDate\".\n5. Dates as YYYY-MM-DD, months as YYYY-MM, amounts as plain numbers without symbol or thousands separator.\n6. Owners (\"owner\") must exist in \"owners\"; add them if needed, with a short stable id.\n7. Delete nothing. Do not touch fields marked \"readonly\", nor keys starting with \"__\".\n8. Answer with the complete JSON file and nothing else: no comment, no surrounding text, no Markdown block. Keep \"meta\" and \"__schema\" as they are.\n\nIf a document is ambiguous, write what you understand in the item's \"details\" rather than deriving a number.",
  "__schema": {
    "format": "patrice.v2",
    "conventions": [
      "Dates are ISO `YYYY-MM-DD`; months are `YYYY-MM`; datetimes are ISO 8601.",
      "Amounts are plain numbers (no currency symbol, no thousands separator, dot as decimal separator), positive for loans as well.",
      "Percent fields are plain numbers: 30 means 30 %.",
      "Fields marked readonly are written by Patrice and ignored on import.",
      "Omit a field you do not know rather than guessing; omitted fields keep their current value on import.",
      "Keys marked `__` (like `__schema`, `__instructions`, `__examples`) are documentation and are never imported."
    ],
    "enums": {
      "assetType": [
        "bank",
        "livret",
        "currency_account",
        "pea",
        "per",
        "cto",
        "assurance_vie",
        "bonds",
        "real_estate_primary",
        "real_estate_rental",
        "real_estate_secondary",
        "real_estate_bare_ownership",
        "stocks",
        "private_equity",
        "scpi",
        "crypto",
        "gold_physical",
        "gold_paper",
        "commodity",
        "car",
        "luxury",
        "loan_real_estate",
        "loan_auto",
        "loan_other",
        "debt_inter_owner",
        "credit_inter_owner"
      ],
      "assetCategory": [
        "savings",
        "real_estate",
        "investments",
        "safehaven",
        "personal",
        "debts"
      ],
      "ownerType": [
        "primary",
        "partner",
        "child",
        "company",
        "couple",
        "other"
      ],
      "currency": [
        "EUR",
        "USD",
        "GBP",
        "CHF",
        "JPY",
        "CAD",
        "AUD",
        "NZD",
        "SEK",
        "NOK",
        "DKK",
        "PLN",
        "CZK",
        "HUF",
        "CNY",
        "SGD",
        "HKD",
        "AED"
      ],
      "usage": [
        "primary",
        "secondary",
        "rental"
      ],
      "loanAmortization": [
        "french",
        "german",
        "bullet"
      ],
      "purchasePriceMode": [
        "total",
        "per_sqm",
        "per_share"
      ],
      "revaluationPriceMode": [
        "total",
        "per_sqm"
      ],
      "marketValuationMode": [
        "auto",
        "manual",
        "index"
      ],
      "cashflowFrequency": [
        "monthly",
        "weekly",
        "semimonthly",
        "quarterly",
        "annual"
      ],
      "autoIncrementFrequency": [
        "weekly",
        "biweekly",
        "monthly",
        "quarterly",
        "semiannual",
        "annual"
      ],
      "historyKind": [
        "purchase",
        "revaluation",
        "manual",
        "close",
        "market_auto",
        "auto_increment",
        "ticker",
        "market_index"
      ],
      "incomeType": [
        "salary",
        "rental",
        "freelance",
        "pension",
        "dividends",
        "other"
      ],
      "expenseType": [
        "loan",
        "dca",
        "rental"
      ],
      "rentalChargeKind": [
        "recurring",
        "exceptional"
      ],
      "goalTargetType": [
        "total",
        "category",
        "type",
        "asset"
      ],
      "goalSource": [
        "free",
        "premium"
      ],
      "taxRegime": [
        "reel",
        "micro_foncier"
      ],
      "companyTaxRegime": [
        "ir",
        "is"
      ],
      "maritalStatus": [
        "single",
        "couple"
      ],
      "tmiMode": [
        "manual",
        "auto"
      ]
    },
    "assetTypeDescriptions": {
      "bank": "current / checking account",
      "livret": "regulated savings account (Livret A, LDDS, LEP…)",
      "currency_account": "account held in a foreign currency",
      "pea": "French equity savings plan (PEA) — a container; positions are child assets with parentId",
      "per": "French retirement savings plan (PER) — container",
      "cto": "securities account — container; positions are child assets with parentId",
      "assurance_vie": "life insurance contract — container",
      "bonds": "bonds or bond funds",
      "real_estate_primary": "main residence",
      "real_estate_rental": "rental property",
      "real_estate_secondary": "second home",
      "real_estate_bare_ownership": "bare ownership (nue-propriété)",
      "stocks": "listed shares or ETFs (use symbol + quantity for automatic pricing)",
      "private_equity": "unlisted shares, start-ups, funds in units",
      "scpi": "real-estate investment trust units (SCPI)",
      "crypto": "crypto-assets (container or single position)",
      "gold_physical": "physical gold, coins, bars",
      "gold_paper": "gold ETF / certificate",
      "commodity": "other commodities",
      "car": "vehicle",
      "luxury": "watches, art, collectibles",
      "loan_real_estate": "mortgage (liability; value = initial amount borrowed, positive)",
      "loan_auto": "car loan (liability)",
      "loan_other": "consumer or other loan (liability)",
      "debt_inter_owner": "money owed by `owner` to `creditorOwnerId` (both are owners of this file)",
      "credit_inter_owner": "money lent by `owner` to another owner (mirror of debt_inter_owner)"
    },
    "propertyTypesByCountry": {
      "FR": [
        "apartment",
        "house"
      ],
      "GB": [
        "detached",
        "semi_detached",
        "terraced",
        "flat"
      ],
      "IT": [
        "apartment",
        "house"
      ],
      "PT": [
        "apartment",
        "house"
      ],
      "ES": [
        "apartment",
        "house"
      ]
    },
    "collections": {
      "owners": {
        "kind": "list",
        "description": "The people and entities who hold assets. `me` is the account holder and always exists. `couple` is the joint holding of `me` and the partner. Assets point to an owner by `id`.",
        "idField": "id",
        "fields": {
          "id": {
            "type": "id",
            "required": true,
            "description": "Stable identifier used by assets.owner (e.g. `me`, `partner`, `couple`, `child_1`, `sci_family`). Never rename an existing id."
          },
          "label": {
            "type": "string",
            "description": "Display name.",
            "required": true
          },
          "type": {
            "type": "enum",
            "enum": "enums.ownerType",
            "description": "Kind of owner. `primary` is the account holder (`me`).",
            "required": true
          },
          "color": {
            "type": "string",
            "description": "Palette key c01…c15 for the badge; leave unset for the default.",
            "readonly": true
          }
        }
      },
      "companies": {
        "kind": "list",
        "description": "Details of the companies (SCI, SARL…) the household holds, one per owner of type `company`. `partners` drives consolidation: only the shares of partners who are household owners count towards the household's wealth. Without partners, the company counts in full.",
        "idField": "ownerId",
        "fields": {
          "ownerId": {
            "type": "ref",
            "ref": "owners",
            "required": true,
            "description": "Id of the owner (type `company`) this record describes."
          },
          "legalForm": {
            "type": "string",
            "description": "Legal form, free text: SCI, SARL, SAS, holding…"
          },
          "taxRegime": {
            "type": "enum",
            "enum": "enums.companyTaxRegime",
            "description": "ir = transparent (profits taxed at the partners' level); is = corporation tax."
          },
          "siren": {
            "type": "string",
            "description": "French company identifier, 9 digits."
          },
          "registeredName": {
            "type": "string",
            "description": "Registered name, as filed."
          },
          "registeredAddress": {
            "type": "string",
            "description": "Registered office address."
          },
          "activity": {
            "type": "string",
            "description": "Main activity."
          },
          "creationDate": {
            "type": "date",
            "description": "Date the company was created."
          },
          "partners": {
            "type": "array",
            "description": "Partners: {ownerId?, label?, sharePct}. `ownerId` = a household owner (their share belongs to the household); `label` alone = an outside partner. The shares add up to 100."
          },
          "notes": {
            "type": "string",
            "description": "Free notes."
          }
        }
      },
      "assets": {
        "kind": "list",
        "description": "Every asset and liability. `value` is the PURCHASE amount (or initial loan amount) in `purchaseCurrency`; today's value is derived from `history`. To record a current valuation, set `revaluationValue` + `revaluationDate` — Patrice turns them into a history point.",
        "idField": "id",
        "fields": {
          "id": {
            "type": "id",
            "description": "Numeric id assigned by Patrice. Keep it on existing assets; OMIT it on new ones (or use a negative temporary number when another new asset must reference it)."
          },
          "type": {
            "type": "enum",
            "enum": "enums.assetType",
            "description": "Asset type. Liabilities are the loan_* and debt_inter_owner types.",
            "required": true
          },
          "name": {
            "type": "string",
            "description": "Name shown in the app.",
            "required": true
          },
          "owner": {
            "type": "ref",
            "ref": "owners",
            "required": true,
            "description": "Owner id from the `owners` list. For a debt_inter_owner, the DEBTOR."
          },
          "value": {
            "type": "number",
            "unit": "money",
            "description": "Purchase amount / initial loan amount, positive, in purchaseCurrency. 0 only for containers (their value is the sum of child positions).",
            "required": true
          },
          "purchaseCurrency": {
            "type": "enum",
            "enum": "enums.currency",
            "description": "Currency of `value` and of the history points (default EUR)."
          },
          "purchaseDate": {
            "type": "date",
            "description": "Purchase / opening date. Defaults to today when omitted."
          },
          "institution": {
            "type": "string",
            "description": "Bank, broker, insurer, notary."
          },
          "details": {
            "type": "string",
            "description": "Free notes."
          },
          "usage": {
            "type": "enum",
            "enum": "enums.usage",
            "description": "Real estate only: main residence, second home or rental."
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (FR, CH, GB…). Required for real estate."
          },
          "city": {
            "type": "string",
            "description": "Real estate: city."
          },
          "postalCode": {
            "type": "string",
            "description": "Real estate: postal code."
          },
          "sqm": {
            "type": "number",
            "unit": "sqm",
            "description": "Real estate: surface in square metres."
          },
          "propertyType": {
            "type": "string",
            "description": "Real estate: property type for market estimates — see `propertyTypesByCountry`."
          },
          "marketValuationMode": {
            "type": "enum",
            "enum": "enums.marketValuationMode",
            "description": "Real estate: `manual` (you set the value), `auto` (local market estimate), `index` (national price index applied to your value)."
          },
          "purchasePriceMode": {
            "type": "enum",
            "enum": "enums.purchasePriceMode",
            "description": "How the purchase price was entered; `value` always holds the total."
          },
          "purchasePricePerSqm": {
            "type": "number",
            "unit": "money",
            "description": "Real estate: price per square metre at purchase, when purchasePriceMode = per_sqm."
          },
          "revaluationValue": {
            "type": "number",
            "unit": "money",
            "description": "Latest valuation, in revaluationCurrency (or purchaseCurrency)."
          },
          "revaluationDate": {
            "type": "date",
            "description": "Date of the latest valuation. Required with revaluationValue."
          },
          "revaluationCurrency": {
            "type": "enum",
            "enum": "enums.currency",
            "description": "Currency of revaluationValue."
          },
          "revaluationPriceMode": {
            "type": "enum",
            "enum": "enums.revaluationPriceMode",
            "description": "Real estate: how the revaluation was entered."
          },
          "revaluationPricePerSqm": {
            "type": "number",
            "unit": "money",
            "description": "Real estate: revaluation price per square metre."
          },
          "quantity": {
            "type": "number",
            "description": "Number of shares / units / coins."
          },
          "purchasePrice": {
            "type": "number",
            "unit": "money",
            "description": "Unit price at purchase (shares, crypto, private equity units)."
          },
          "symbol": {
            "type": "string",
            "description": "Ticker symbol (Yahoo Finance format, e.g. `AIR.PA`, `CW8.PA`, `BTC-EUR`) for automatic pricing."
          },
          "tickerEnabled": {
            "type": "boolean",
            "description": "true to price the position from `symbol` × `quantity` automatically."
          },
          "sharePurchases": {
            "type": "array",
            "description": "Private equity: successive purchases `{date, quantity, unitPrice}`; when present they drive quantity, purchasePrice and value."
          },
          "inflationEnabled": {
            "type": "boolean",
            "description": "Index the value on inflation at `inflationRate` per year."
          },
          "inflationRate": {
            "type": "number",
            "unit": "percent",
            "description": "Annual rate for inflationEnabled."
          },
          "depreciationEnabled": {
            "type": "boolean",
            "description": "Depreciate the value at `depreciationRate` per year (vehicles)."
          },
          "depreciationRate": {
            "type": "number",
            "unit": "percent",
            "description": "Annual depreciation rate."
          },
          "loanInterestRate": {
            "type": "number",
            "unit": "percent",
            "description": "Loans: annual interest rate."
          },
          "loanTermMonths": {
            "type": "integer",
            "unit": "months",
            "description": "Loans: total term in months."
          },
          "loanAmortization": {
            "type": "enum",
            "enum": "enums.loanAmortization",
            "description": "Loans: `french` (constant instalment), `german` (constant principal), `bullet` (interest only, principal at the end)."
          },
          "loanRemainingOverride": {
            "type": "number",
            "unit": "money",
            "description": "Loans: outstanding principal today, when the statement says so."
          },
          "loanInsuranceRate": {
            "type": "number",
            "unit": "percent",
            "description": "Loans: annual borrower insurance rate on the INITIAL capital."
          },
          "loanInsuranceTaea": {
            "type": "number",
            "unit": "percent",
            "description": "Loans: TAEA shown on the offer, informative only."
          },
          "loanMonthlyFees": {
            "type": "number",
            "unit": "money",
            "description": "Loans: monthly fees excluding interest and insurance."
          },
          "loanSchedule": {
            "type": "array",
            "description": "Loans: the bank's amortization table, one row per instalment `{date, payment, interest, principal, remaining}` (amounts in the loan currency, `remaining` = outstanding principal AFTER the instalment). When present it overrides the theoretical schedule for the outstanding principal, the monthly instalment and the year's interest."
          },
          "linkedDebtIds": {
            "type": "array",
            "description": "Ids of the loans financing this asset (e.g. the mortgage of a property)."
          },
          "parentId": {
            "type": "ref",
            "ref": "assets",
            "description": "Id of the container account (PEA, CTO, life insurance, crypto wallet) this position belongs to. The container's value is the sum of its positions."
          },
          "creditorOwnerId": {
            "type": "ref",
            "ref": "owners",
            "description": "debt_inter_owner / credit_inter_owner: the other party."
          },
          "linkedInterOwnerId": {
            "type": "ref",
            "ref": "assets",
            "description": "Mirror asset of an inter-owner debt / credit.",
            "readonly": true
          },
          "isLiability": {
            "type": "boolean",
            "description": "true for loans and debts. Derived from `type` when omitted."
          },
          "monthlyRent": {
            "type": "number",
            "unit": "money",
            "description": "Rental property / SCPI: gross rent per `rentFrequency` period."
          },
          "rentFrequency": {
            "type": "enum",
            "enum": "enums.cashflowFrequency",
            "description": "Period of monthlyRent (default monthly)."
          },
          "annualCharges": {
            "type": "number",
            "unit": "money",
            "description": "Rental: recurring annual charges (property tax, co-ownership, insurance, management)."
          },
          "annualExceptionalCharges": {
            "type": "number",
            "unit": "money",
            "description": "Rental: this year's exceptional charges (works)."
          },
          "ownershipShares": {
            "type": "object",
            "description": "Split of ownership in percent by owner id, summing to 100, e.g. {\"me\": 60, \"partner\": 40}. Only for `couple` or company owners."
          },
          "showPerformance": {
            "type": "boolean",
            "description": "Show performance (gain / loss) for this asset in the app."
          },
          "autoIncrement": {
            "type": "object",
            "description": "Recurring contribution: {enabled, amount, currency, frequency (autoIncrementFrequency), startDate, endDate?, paused?}."
          },
          "closeDate": {
            "type": "date",
            "description": "Date the asset was sold / closed. The asset is worth 0 from that date."
          },
          "closeValue": {
            "type": "number",
            "unit": "money",
            "description": "Sale price, when it differs from the last value."
          },
          "history": {
            "type": "array",
            "description": "Valuation history: `{date, value, currency, kind}` with kind in historyKind. Written by Patrice; you may ADD `revaluation` points from statements, never remove existing ones."
          },
          "tickerProvider": {
            "type": "string",
            "description": "Pricing provider.",
            "readonly": true
          },
          "lastTickerUpdate": {
            "type": "datetime",
            "description": "Last automatic price update.",
            "readonly": true
          }
        }
      },
      "budgets": {
        "kind": "list",
        "description": "One entry per month (`YYYY-MM`) with income sources and expense categories. Amounts are MONTHLY equivalents in `currency` (default EUR); `nativeAmount` + `frequency` keep what was entered.",
        "idField": "month",
        "fields": {
          "month": {
            "type": "month",
            "required": true,
            "description": "Month, `YYYY-MM`."
          },
          "incomeItems": {
            "type": "array",
            "description": "Income sources: {id, label, amount, currency?, frequency?, nativeAmount?, type (incomeType), owner? (owner id or `couple`), splitPercent?, linkedAssetId?}."
          },
          "categories": {
            "type": "array",
            "description": "Expense categories: {id, label, amount, currency?, frequency?, nativeAmount?, note?, paidBy? (owner id or `couple`), paidFor?, splitPercent?, isFixed?, type? (expenseType), linkedDebtId?, linkedAssetId?}."
          },
          "monthlyIncome": {
            "type": "number",
            "unit": "money",
            "description": "Legacy total income; ignored when incomeItems is present.",
            "readonly": true
          }
        }
      },
      "savingsGoals": {
        "kind": "list",
        "description": "Short-term savings goals with a target and the amount already set aside.",
        "idField": "id",
        "fields": {
          "id": {
            "type": "id",
            "description": "UUID assigned by Patrice. Omit on new goals."
          },
          "label": {
            "type": "string",
            "description": "Name.",
            "required": true
          },
          "targetAmount": {
            "type": "number",
            "unit": "money",
            "description": "Target, in EUR.",
            "required": true
          },
          "currentAmount": {
            "type": "number",
            "unit": "money",
            "description": "Amount already saved, in EUR."
          },
          "deadline": {
            "type": "month",
            "description": "Target month, `YYYY-MM`."
          },
          "priority": {
            "type": "integer",
            "description": "1 (high) to 3 (low)."
          },
          "icon": {
            "type": "string",
            "description": "Emoji."
          },
          "color": {
            "type": "string",
            "description": "Palette key c01…c15.",
            "readonly": true
          }
        }
      },
      "wealthGoals": {
        "kind": "list",
        "description": "Long-term net-worth targets, on the whole portfolio or on a category, a type or one asset.",
        "idField": "id",
        "fields": {
          "id": {
            "type": "id",
            "description": "Text id assigned by Patrice. Omit on new goals."
          },
          "label": {
            "type": "string",
            "description": "Name.",
            "required": true
          },
          "targetAmount": {
            "type": "number",
            "unit": "money",
            "description": "Target, in EUR.",
            "required": true
          },
          "targetYear": {
            "type": "integer",
            "unit": "years",
            "required": true,
            "description": "Year the target should be reached."
          },
          "targetType": {
            "type": "enum",
            "enum": "enums.goalTargetType",
            "description": "What the target applies to."
          },
          "targetCategoryId": {
            "type": "enum",
            "enum": "enums.assetCategory",
            "description": "When targetType = category."
          },
          "targetTypeId": {
            "type": "enum",
            "enum": "enums.assetType",
            "description": "When targetType = type."
          },
          "targetAssetId": {
            "type": "ref",
            "ref": "assets",
            "description": "When targetType = asset."
          },
          "source": {
            "type": "enum",
            "enum": "enums.goalSource",
            "description": "Origin of the goal.",
            "readonly": true
          },
          "createdAt": {
            "type": "datetime",
            "description": "Creation time.",
            "readonly": true
          },
          "color": {
            "type": "string",
            "description": "Palette key.",
            "readonly": true
          }
        }
      },
      "taxProfile": {
        "kind": "singleton",
        "description": "Household tax profile used by the rental and tax calculations.",
        "idField": "taxResidence",
        "fields": {
          "incomeTaxRate": {
            "type": "number",
            "unit": "percent",
            "description": "Marginal income-tax rate (TMI), e.g. 30."
          },
          "socialLeviesRate": {
            "type": "number",
            "unit": "percent",
            "description": "Social levies rate; null = the legal rate of the year."
          },
          "taxResidence": {
            "type": "string",
            "description": "Country of tax residence, ISO code."
          },
          "taxRegime": {
            "type": "enum",
            "enum": "enums.taxRegime",
            "description": "Rental income regime elected for the household."
          },
          "taxableIncome": {
            "type": "number",
            "unit": "money",
            "description": "Household net taxable income per year, from the tax notice; null = not entered."
          },
          "maritalStatus": {
            "type": "enum",
            "enum": "enums.maritalStatus",
            "description": "single = separate assessment; couple = joint assessment (married, civil partnership)."
          },
          "dependentChildren": {
            "type": "integer",
            "description": "Dependent children counted for the family quotient."
          },
          "tmiMode": {
            "type": "enum",
            "enum": "enums.tmiMode",
            "description": "auto = the marginal rate is derived from the scale; manual = entered by the user."
          }
        }
      }
    },
    "notIncluded": [
      "rental module details (buildings, units, leases, rent transactions, statements)",
      "forecast events and scenarios",
      "shared household membership",
      "generated reports"
    ]
  },
  "owners": [
    {
      "id": "me",
      "label": "Me",
      "type": "primary"
    }
  ],
  "companies": [],
  "assets": [],
  "budgets": [],
  "savingsGoals": [],
  "wealthGoals": [],
  "taxProfile": null,
  "__examples": {
    "assets": [
      {
        "type": "bank",
        "name": "Current account — Example Bank",
        "owner": "me",
        "value": 4200,
        "purchaseCurrency": "EUR",
        "purchaseDate": "2024-01-15",
        "institution": "Example Bank"
      },
      {
        "type": "livret",
        "name": "Livret A",
        "owner": "me",
        "value": 12000,
        "purchaseCurrency": "EUR",
        "purchaseDate": "2021-06-01",
        "revaluationValue": 12850,
        "revaluationDate": "2026-08-31"
      },
      {
        "id": -1,
        "type": "pea",
        "name": "PEA — Example Broker",
        "owner": "me",
        "value": 0,
        "purchaseCurrency": "EUR",
        "purchaseDate": "2022-03-10",
        "institution": "Example Broker"
      },
      {
        "type": "stocks",
        "name": "Amundi MSCI World",
        "owner": "me",
        "parentId": -1,
        "value": 9000,
        "purchaseCurrency": "EUR",
        "purchaseDate": "2022-03-10",
        "symbol": "CW8.PA",
        "quantity": 20,
        "purchasePrice": 450,
        "tickerEnabled": true
      },
      {
        "id": -2,
        "type": "loan_real_estate",
        "name": "Mortgage — main residence",
        "owner": "me",
        "value": 250000,
        "purchaseCurrency": "EUR",
        "purchaseDate": "2020-09-01",
        "loanInterestRate": 1.2,
        "loanTermMonths": 240,
        "loanAmortization": "french",
        "loanInsuranceRate": 0.3,
        "institution": "Example Bank"
      },
      {
        "type": "real_estate_primary",
        "name": "Apartment — Lyon",
        "owner": "me",
        "value": 320000,
        "purchaseCurrency": "EUR",
        "purchaseDate": "2020-09-01",
        "country": "FR",
        "city": "Lyon",
        "postalCode": "69003",
        "sqm": 72,
        "usage": "primary",
        "marketValuationMode": "manual",
        "linkedDebtIds": [
          -2
        ]
      }
    ],
    "budgets": [
      {
        "month": "2026-09",
        "incomeItems": [
          {
            "id": "salary_1",
            "label": "Salary",
            "amount": 3200,
            "currency": "EUR",
            "type": "salary",
            "owner": "me"
          }
        ],
        "categories": [
          {
            "id": "housing",
            "label": "Rent / mortgage",
            "amount": 1100,
            "currency": "EUR",
            "isFixed": true
          },
          {
            "id": "food",
            "label": "Groceries",
            "amount": 450,
            "currency": "EUR"
          }
        ]
      }
    ],
    "savingsGoals": [
      {
        "label": "Emergency fund",
        "targetAmount": 10000,
        "currentAmount": 6500,
        "deadline": "2027-06",
        "priority": 1,
        "icon": "🛟"
      }
    ],
    "wealthGoals": [
      {
        "label": "Net worth 500 k€",
        "targetAmount": 500000,
        "targetYear": 2035,
        "targetType": "total"
      }
    ],
    "taxProfile": [
      {
        "incomeTaxRate": 30,
        "socialLeviesRate": null,
        "taxResidence": "FR",
        "taxRegime": "reel"
      }
    ]
  }
}
