You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Update sponsor + ticket sanitizers to use the snake_case field names Zoho actually returns (company_name, sponsorship_type_name, website_url; amount, currency_code, sales_start_date, sales_end_date, quantity, sold, status_string). Drop sponsor logoUrl since Zoho's sponsor schema doesn't include it. Add quantity/sold/status to the ticket snapshot, and derive isSoldOut/isAvailable. Update SKILL.md table + workflows to match.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy file name to clipboardExpand all lines: skills/techbash/SKILL.md
+9-7Lines changed: 9 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -121,8 +121,8 @@ Sponsor and ticket data come from committed JSON snapshots that organizers refre
121
121
122
122
| File | Content |
123
123
| --- | --- |
124
-
|`skills/techbash/data/sponsors.json`|`{ event, source, fetchedAt, sponsors[] }` — each sponsor has `id, name, tier, description, websiteUrl, logoUrl`. |
125
-
|`skills/techbash/data/tickets.json`|`{ event, source, fetchedAt, tickets[] }` — each ticket has `id, name, description, price, currency, saleStartsAt, saleEndsAt, isSoldOut, isAvailable`. |
124
+
|`skills/techbash/data/sponsors.json`|`{ event, source, fetchedAt, sponsors[] }` — each sponsor has `id, name, tier, description, websiteUrl`. The description may contain HTML; strip tags before display. |
125
+
|`skills/techbash/data/tickets.json`|`{ event, source, fetchedAt, tickets[] }` — each ticket has `id, name, description, price, currency, quantity, sold, saleStartsAt, saleEndsAt, status, isSoldOut, isAvailable`. `price` is a number in the units of `currency` (e.g. `999` + `USD` means $999). |
2. If empty or `fetchedAt` is null, say "Sponsor list is not in the snapshot yet — see <https://techbash.com> for the current sponsor list." and stop.
229
-
3. Group sponsors by `tier` (preserve any order present in the file; otherwise alphabetize by tier then by name).
230
-
4. For each sponsor return name + one-line description (truncate longer descriptions) and the `websiteUrl` if present. Mention the `fetchedAt` timestamp at the bottom.
229
+
3. Group sponsors by `tier` (preserve any order present in the file; otherwise sort tiers in conventional order — Platinum, Gold, Silver, Bronze, Community — falling back to alphabetical for unknown tiers; alphabetize sponsors within a tier by `name`).
230
+
4. For each sponsor return `name` + one-line description (strip HTML tags from `description` and truncate longer descriptions to ~200 chars) and the `websiteUrl` if present.
231
+
5. The snapshot does not include sponsor logos — for logos, direct the user to <https://techbash.com>. Mention the `fetchedAt` timestamp at the bottom.
231
232
232
233
### "What ticket types are available?" / "How much is a TechBash ticket?"
233
234
234
235
1. Read `skills/techbash/data/tickets.json`.
235
236
2. If empty or `fetchedAt` is null, say "Ticket data is not in the snapshot yet — see <https://techbash.zohobackstage.com/TechBash2026>." and stop.
236
-
3. List ticket types with name, description (truncated), and price formatted as `<price> <currency>`.
237
-
4. Flag any ticket where `isSoldOut === true` as **SOLD OUT** at the top of its entry.
238
-
5. Mention the `fetchedAt` timestamp and always close with "To buy, transfer, or refund tickets, go to <https://techbash.zohobackstage.com/TechBash2026>."
237
+
3. List ticket types with `name`, description (strip HTML, truncate), and price formatted as `<price> <currency>` (e.g. `$999 USD`). If `currency` is null, just print the number.
238
+
4. Flag any ticket where `isSoldOut === true` as **SOLD OUT** at the top of its entry. If `isSoldOut` is false and both `quantity` and `sold` are present, you may add a parenthetical "(N of M left)" where helpful.
239
+
5. If `status` is something other than `active` (e.g. `inactive`, `hidden`), de-emphasize or omit those tickets from the main list — they are not currently for sale.
240
+
6. Mention the `fetchedAt` timestamp and always close with "To buy, transfer, or refund tickets, go to <https://techbash.zohobackstage.com/TechBash2026>."
0 commit comments