← NowistayCONTENT HISTORY

Update to Nowistay

Snapshot Sep 30, 2026 · 22:55 UTC · version 3.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "nowistay-portfolio-reporting",
  "description": "Build privacy-minimized Nowistay financial and operational reports across many properties. Use for CSV or spreadsheet exports, revenue and fee totals, OTA commissions, cleaning costs, team-member billing, workload reports, owner statements, and booking-to-mission reconciliation.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 480
    }
  ],
  "skill_md_contents": "---\nname: nowistay-portfolio-reporting\ndescription: Build privacy-minimized Nowistay financial and operational reports across many properties. Use for CSV or spreadsheet exports, revenue and fee totals, OTA commissions, cleaning costs, team-member billing, workload reports, owner statements, and booking-to-mission reconciliation.\n---\n\n# Nowistay Portfolio Reporting\n\nFavor complete table-shaped extraction over repeated detailed calls.\n\n## Collect data\n\n1. Confirm the requested date range, portfolio scope, grouping dimensions, and output format. Infer obvious values from the prompt instead of asking unnecessary questions.\n2. Resolve properties once with `list_properties`. Omit `property_ids` from later list calls when the user wants every eligible property.\n3. Call `list_bookings` with `response_format=table`, `include_details=false`, `limit=500`, and `offset=0`.\n4. Append each page's `rows` under the returned `columns`. Continue with `resultMetadata.nextOffset` while `resultMetadata.hasMore=true`.\n5. Call `list_missions` in the same table mode only when the report needs cleaning, operations, assignments, workload, or team-member data.\n6. Join booking and mission rows with `bookingId` when combining finances and operations. Use property IDs only as a secondary key.\n\nNever restart the extraction property by property unless the user explicitly requests separate queries or the server requires it. Never use `get_booking`, `get_mission`, or `include_details=true` for a bulk export.\n\n## Minimize personal data\n\n- Select and retain only the source columns needed for the requested report.\n- Exclude guest names, contact details, reservation references, message content, private notes, and mission descriptions from financial, owner, billing, and workload reports unless the user explicitly requests a specific field and it is necessary for that report.\n- Do not call tools with contact-detail or private-note include flags for aggregate reporting.\n- Team-member names may be included when the user requests assignment, workload, or billing by team member. Do not include their contact details.\n\n## Calculate and verify\n\n- Keep currencies separate. Never sum EUR and USD into one total.\n- Keep cancelled or unavailable bookings separate from active revenue unless the user defines another rule.\n- Preserve source columns in the detailed sheet and add calculated summary sheets or tables.\n- Support grouping by property, team member, mission type, booking channel, status, month, or currency.\n- Reconcile row counts against pagination metadata before reporting completion.\n- State filters, exclusions, currency handling, and any missing source values in the result.\n\n## Deliver\n\nFor a requested CSV or spreadsheet, create the file from the complete concatenated rows. Include a readable summary plus a privacy-minimized detail sheet containing only the columns needed to audit the totals. If the user only asks a question, return the totals directly without creating a file.\n\nDo not claim data is truncated when `hasMore=false` and all pages were collected. A shortened tool card is a display behavior, not evidence that the structured result is incomplete.\n"
}

SHA-256: 2902e132c77ef86cfbf974c126016814c77b9b8ee39deba2a50cd8fcb824350c