{"type":"session","version":3,"id":"019db52f-df63-716e-b5fc-10f13fd9de1b","timestamp":"2026-04-22T12:35:06.723Z","cwd":"/mnt/rpi/repos/ballbox"}
{"type":"model_change","id":"d5e05206","parentId":null,"timestamp":"2026-04-22T12:35:07.750Z","provider":"google-gemini-cli","modelId":"gemini-3-flash-preview"}
{"type":"thinking_level_change","id":"8a97783b","parentId":"d5e05206","timestamp":"2026-04-22T12:35:07.750Z","thinkingLevel":"low"}
{"type":"message","id":"073a3193","parentId":"8a97783b","timestamp":"2026-04-22T12:43:39.353Z","message":{"role":"user","content":[{"type":"text","text":"read last handoff from memory (last memory created), then explore api to find it"}],"timestamp":1776861819351}}
{"type":"message","id":"d40ad0ec","parentId":"073a3193","timestamp":"2026-04-22T12:44:07.934Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"bash_1776861847833_1","name":"bash","arguments":{"command":"curl -s http://100.116.176.16:8091/api/search?limit=1"},"thoughtSignature":"CiEBjz1rX+cuT5sV7VNPpuPHSjWBif8sD1tC+ubkBMSRt/s="}],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":3893,"output":38,"cacheRead":0,"cacheWrite":0,"totalTokens":3931,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"toolUse","timestamp":1776861819448,"responseId":"lsLoaff3H8jEodAP0vr1-As"}}
{"type":"message","id":"12e673f2","parentId":"d40ad0ec","timestamp":"2026-04-22T12:44:07.952Z","message":{"role":"toolResult","toolCallId":"bash_1776861847833_1","toolName":"bash","content":[{"type":"text","text":"<!DOCTYPE HTML>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\">\n        <title>Error response</title>\n    </head>\n    <body>\n        <h1>Error response</h1>\n        <p>Error code: 400</p>\n        <p>Message: Missing query parameter 'q'.</p>\n        <p>Error code explanation: 400 - Bad request syntax or unsupported method.</p>\n    </body>\n</html>\n"}],"isError":false,"timestamp":1776861847951}}
{"type":"message","id":"70bcf4e1","parentId":"12e673f2","timestamp":"2026-04-22T12:44:17.371Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"bash_1776861857239_2","name":"bash","arguments":{"command":"curl -s \"http://100.116.176.16:8091/api/search?q=handoff&limit=1\""},"thoughtSignature":"CiEBjz1rX/wqtPAAqjugnaeUA9ruG2+jLOb96hZhLkqbm3E="}],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":4039,"output":45,"cacheRead":0,"cacheWrite":0,"totalTokens":4084,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"toolUse","timestamp":1776861847953,"responseId":"oMLoabjxDo-b4_UP9t250AI"}}
{"type":"message","id":"b0999f3f","parentId":"70bcf4e1","timestamp":"2026-04-22T12:44:17.447Z","message":{"role":"toolResult","toolCallId":"bash_1776861857239_2","toolName":"bash","content":[{"type":"text","text":"{\"retrieval_id\": \"ret_a8e06e09d62c4a9895c2168cba36c413\", \"results\": [{\"memory\": {\"id\": \"mem_2ef834866b1040b6bfa62a0c9eb3e1a8\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": null, \"scope\": \"agent\", \"status\": \"active\", \"project_id\": \"proj_personal_agent\", \"repo_id\": \"repo_personal_agent\", \"agent_id\": null, \"origin_agent\": null, \"run_id\": null, \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Task completed: P0: close the real code-implementation loop after ai-dev-workflow handoff\", \"content\": \"## Findings\\n\\n- Desired ai-dev-workflow loop closure is largely in place. A task that returns `outcome: complete` plus handoff actions stays `in_progress` with `awaiting_handoff_result` instead of being marked complete immediately. See [runtime.py](/Users/sebas/personal-agent/personal_agent/runtime.py#L627).\\n- Explicit downstream terminal results are required before completion. `accepted` keeps the parent in progress; `completed` is the only success path that closes the task. See [runtime.py](/Users/sebas/personal-agent/personal_agent/runtime.py#L370) and [runtime.py](/Users/sebas/personal-agent/personal_agent/runtime.py#L386).\\n- Legacy durable `ai-dev-workflow` handoffs are now rejected and converted into a blocked task with a handoff-result artifact, forcing code work back into the in-process Codex subagent path. See [runtime.py](/Users/sebas/personal-agent/personal_agent/runtime.py#L296) and test coverage at [test_personal.py](/Users/sebas/personal-agent/tests/test_personal.py#L997).\\n- Focused tests passed: `python3 -m pytest tests/test_personal.py -k \\\"handoff or end_to_end_intake_approval_resume_complete\\\"`.\\n\\n## Risk\\n\\n- One real loophole remains for multiple handoffs from one run. Creation stores `awaiting_handoff_ids`, plural, but terminal completion still resolves via a single handoff and `_complete_task_after_handoff()` marks the parent completed without checking sibling handoffs. See [runtime.py](/Users/sebas/personal-agent/personal_agent/runtime.py#L642), [runtime.py](/Users/sebas/personal-agent/personal_agent/runtime.py#L386), and [runtime.py](/Users/sebas/personal-agent/personal_agent/runtime.py#L912). If multiple downstream handoffs are ever emitted, the first completed result can close the parent early.\\n\\n## Recommended Next Actions\\n\\n- Implement aggregate handoff gating: keep parent `in_progress` until all non-terminal handoffs for the task are terminal, then derive final parent status from the full set.\\n- Add regression tests for: two handoffs where one completes early, mixed `accepted`/`completed`, and `completed` + `blocked` combinations.\\n- Align task metadata on one shape (`awaiting_handoff_ids` vs `awaiting_handoff_id`) and update docs/tests to reflect the aggregate rule.\", \"summary\": \"## Findings\\n\\n- Desired ai-dev-workflow loop closure is largely in place. A task that returns `outcome: complete` plus handoff actions stays `in_progress` with `awaiting_handoff_res\", \"confidence\": 1.0, \"freshness\": 1.0, \"created_at\": \"2026-03-16T15:57:44.776866+00:00\", \"updated_at\": \"2026-03-16T15:57:44.776866+00:00\", \"observed_at\": \"2026-03-16T15:57:44.776866+00:00\", \"source_ref\": \"personal-agent\", \"evidence_ref\": \"art_7ef85235f7784cce9c2099f90017319e\", \"metadata\": {\"task_id\": \"task_c20a048b387d4513ac38cf0e67bf83cd\", \"task_run_id\": \"run_47b68d44cf254b358eccd9b72c081fea\"}, \"embedding\": [0.4745395896427946, 0.45158472822647644, 0.41636483528507573, 0.3563186875332993, 0.30840293868832797, 0.27512175545012363, 0.24715856063388153, 0.19664440225615393]}, \"score\": 0.5431218047542705, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.9541453650284701, \"confidence\": 1.0, \"freshness\": 1.0}, \"matched_scope\": \"agent\", \"evidence_ref\": \"art_7ef85235f7784cce9c2099f90017319e\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.95 confidence=1.00 freshness=1.00\"}]}"}],"isError":false,"timestamp":1776861857446}}
{"type":"message","id":"fefd30d0","parentId":"b0999f3f","timestamp":"2026-04-22T12:45:07.131Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"bash_1776861907032_3","name":"bash","arguments":{"command":"curl -s \"http://100.116.176.16:8091/api/search?q=*&limit=5&sort=created_at:desc\""},"thoughtSignature":"CiEBjz1rX6lnWLerjJB6UiClliUgV+fZJu8lDsksLClAqnY="}],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":5566,"output":51,"cacheRead":0,"cacheWrite":0,"totalTokens":5617,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"toolUse","timestamp":1776861857448,"responseId":"0sLoaZ3nAd_w6tkPlIaC-Ag"}}
{"type":"message","id":"3a056e84","parentId":"fefd30d0","timestamp":"2026-04-22T12:45:07.228Z","message":{"role":"toolResult","toolCallId":"bash_1776861907032_3","toolName":"bash","content":[{"type":"text","text":"{\"retrieval_id\": \"ret_638e0dffabd344de8157ade525e284bd\", \"results\": [{\"memory\": {\"id\": \"mem_3d48d97c66d04808844820d8f1e5e8f8\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"artifact\", \"subtype\": \"research_artifact\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"task_id\": null, \"url\": \"https://matchable.io/business/pricing\", \"domain\": \"matchable.io\", \"source_kind\": \"manual\", \"title\": \"Capture: Pricing | Software automation tool for your business\", \"content\": \"{\\\"content_type\\\": \\\"text/html; charset=utf-8\\\", \\\"text\\\": \\\"Pricing | Software automation tool for your business Integrate your bookings with MATCHi Learn more Pricing Resources For clients Request demo English Spanish French Czech Create account Software that grows with your business Matchable is subscription-free for venues, independent trainers, and organizers. For business For freelancers For venues or academies Matchable takes as low as 1.8% to keep the engines running. Pay only when receiving a payment. No upfront fees, no hidden costs, not for you, not for your client. Accept payments in 36+ countries Keep track through the trainer application Add your availability and holidays Add your certifications, skills and more Instantly receive payments 1.8% / Per transaction Create account Request demo Features Private training service Unlimited services Classes and events Unlimited schedules Courses Coming soon Unlimited seasons Promotion tools Free Automated invoices Free Client CRM Unlimited clients Insights Coming soon Coming soon Recruitment Venue profile Manager Web-only manager to manage your everyday Trainer application Let your trainers manager their profile, bookings, availabilities and more. Free Multi-venue management Manage multiple venues from your manager Unlimited venues Manager seats Add multiple manager to your account Unlimited seats Payments Online payments You only pay when you get paid. Simple as that. We only take a small commission when you receive money through a booking. * Stripe or Mollie will also charge standard processing fees, which depend on the payment method selected. 1.8%* Subscription fee No monthly fee, no hidden costs Free Client fee Matchable doesn't monetise your clients, not now, not ever. Fair and square. Free Manual payment links Coming soon Coming soon In-person payments Coming soon Coming soon Manual bookings Free Matchable Marketplace (optional) No additional fee applied to new clients who discover your business via the marketplace. Free Optional add-ons Matchable Widget Show your services and activities on your own website through our widget. On request Google Calendar View your Matchable bookings in your own Apple or Google calendar. Free Stripe Receive payments Free Mollie Receive payments Free MATCHi Automate court bookings Free Coming soon Google Analytics Automate court bookings Coming soon Coming soon Meta Pixel Automate court bookings Coming soon Support Chat support Available through Manager Panel Email support Response within 24 hours Knowledge base Video Support Dedicated agent For freelancers or organisers Matchable takes as low as 1.8% to keep the engines running. Pay only when receiving a payment. No upfront fees, no hidden costs, not for you, not for your client. Accept payments in 36+ countries Manage your trainers and activities Automate your back-office Unlimited connected trainers Instantly receive payments 1.8% / Per transaction Create account Request demo Features Private training service Unlimited services Classes and events Unlimited schedules Courses Coming soon Unlimited seasons Promotion tools Free Automated invoices Free Client CRM Unlimited clients Insights Coming soon Coming soon Recruitment - Venue profile - Manager Web-only manager to manage your everyday Trainer application Let your trainers manager their profile, bookings, availabilities and more. Free Multi-venue management Manage multiple venues from your manager Unlimited venues Manager seats Add multiple manager to your account - Payments Online payments You only pay when you get paid. Simple as that. We only take a small commission when you receive money through a booking. * Stripe or Mollie will also charge standard processing fees, which depend on the payment method selected. 1.8%* Subscription fee No monthly fee, no hidden costs Free Client fee Matchable doesn't monetise your clients, not now, not ever. Fair and square. Free Manual payment links Coming soon Coming soon In-person payments Coming soon Coming soon Manual bookings Free Matchable Marketplace (optional) No additional fee applied to new clients who discover your business via the marketplace. Free Optional add-ons Matchable Widget Show your services and activities on your own website through our widget. Free Google Calendar View your Matchable bookings in your own Apple or Google calendar. Free Stripe Receive payments Free Mollie Receive payments Free MATCHi Automate court bookings Free Google Analytics Automate court bookings Coming soon Meta Pixel Automate court bookings Coming soon Support Chat support Available through Manager Panel Email support Response within 24 hours Knowledge base Video Support - Dedicated agent - Freelancer Business Pricing? Glad you asked Matchable takes as low as 1.8% to keep the engines running. Pay only when receiving a payment. No upfront fees, no hidden costs, not for you, not for your client. Accept payments in 36+ countries Keep track through the trainer application Add your availability and holidays Add your certifications, skills and more Instantly receive payments 1.8% / Per transaction Create account Request demo Manage your trainers and activities Automate your back-office Unlimited connected trainers Instantly receive payments 1.8% / Per transaction Create account Request demo Features Private training service Unlimited services Classes and events Unlimited schedules Courses Coming soon Unlimited seasons Promotion tools Free Automated invoices Free Client CRM Unlimited clients Insights Coming soon Coming soon Recruitment - Venue profile - Manager Web-only manager to manage your everyday Trainer application Let your trainers manager their profile, bookings, availabilities and more. Free Multi-venue management Manage multiple venues from your manager Unlimited venues Manager seats Add multiple manager to your account - Unlimited seats Payments Online payments You only pay when you get paid. Simple as that. We only take a small commission when you receive money through a booking. * Stripe or Mollie will also charge standard processing fees, which depend on the payment method selected. 1.8%* 1.8%* Subscription fee No monthly fee, no hidden costs Free Client fee Matchable doesn't monetise your clients, not now, not ever. Fair and square. Free Manual payment links Coming soon Coming soon In-person payments Coming soon Coming soon Manual bookings Free Matchable Marketplace (optional) No additional fee applied to new clients who discover your business via the marketplace. Free Optional add-ons Matchable Widget Show your services and activities on your own website through our widget. Free On request Google Calendar View your Matchable bookings in your own Apple or Google calendar. Free Stripe Receive payments Free Mollie Receive payments Free MATCHi Automate court bookings On request Coming soon Google Analytics Automate court bookings Coming soon Coming soon Meta Pixel Automate court bookings Coming soon Support Chat support Available through Manager Panel Email support Response within 24 hours Knowledge base Video Support - Dedicated agent - Frequently asked questions. Answered. What is Matchable? Matchable is an academy automation tool and a global marketplace in one. Trainers and venues can showcase themselves to clients and businesses to get booked instantly. You can automate lessons bookings, trainer schedules and court reservations. Players book and pay in Matchable and courts are auto-assigned in real time through MATCHi. How can I join Matchable as a venue or a trainer? We\\\\u2019d love to have you on the platform! Visit this page to register and we'll reach out to you as soon as possible. Is there a cost for using Matchable? Matchable takes as low as 1.8% to keep the engines running. Pay only when receiving a payment. No upfront fees, no hidden costs, not for you, not for your client. Can I still use MATCHi for my bookings? Yes, for sure! The integration is only visible in the back-office admin of the Matchable Manager. How do I offer private training as a service using Matchable and MATCHi? It\\\\u2019s very easy. The first step is to request your account, and from there, read this article for the step by step guide. How do I integrate with Matchable as a MATCHi club? You only have to register once, and we\\\\u2019ll guide you through the integration process, read the full article here for onboarding . How to contact you if I have any additional questions? We\\\\u2019re happy to hear from you, so you can contact us for an introduction call here or send us an email at info@getmatchable.com . Does Matchable have an App? Yes, we have a Trainer App and Client App that we recently launched. You can download them in the Apple Store or on Google Play . Marketplace Log in Create account List your business Report a bug Support Request demo Talk to sales Help Center Voucher balance Contact us Company Integrations Partnerships Company news Work with us Investor portal Tools Resource overview Talent interviews Press kit \\\\u00a9 2025 Matchable Privacy Policy Terms of Service Cookies Settings Follow-us\\\", \\\"title\\\": \\\"Pricing | Software automation tool for your business\\\", \\\"url\\\": \\\"https://matchable.io/business/pricing\\\"}\", \"summary\": \"Pricing | Software automation tool for your business\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-24T14:20:17.332786+00:00\", \"updated_at\": \"2026-03-24T14:20:17.332786+00:00\", \"observed_at\": \"2026-03-24T14:20:17.332786+00:00\", \"source_ref\": \"personal-agent:run:a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"evidence_ref\": \"https://matchable.io/business/pricing\", \"metadata\": {\"artifact_kind\": \"source_capture\"}, \"embedding\": [0.5292556164037588, 0.48531753305805714, 0.43653241186476366, 0.3554767198589, 0.26573727628063015, 0.22618041156080354, 0.17905398448808205, 0.11660588193349267]}, \"score\": 0.4543883424605638, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.5292556164037588, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://matchable.io/business/pricing\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.53 confidence=0.75 freshness=0.75\"}, {\"memory\": {\"id\": \"mem_b0ce3e3a54564120b9143265165b91ef\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": null, \"scope\": \"agent\", \"status\": \"active\", \"project_id\": \"proj_personal_agent\", \"repo_id\": \"repo_personal_agent\", \"agent_id\": null, \"origin_agent\": null, \"run_id\": null, \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Task completed: investigar playtomic y armar un mapeo exhaustivo de todas sus features y use cases. Primero un br...\", \"content\": \"## Brief ejecutivo\\n\\n**Qu\\u00e9 es Playtomic**\\n\\nPlaytomic es una plataforma de dos caras para deportes de raqueta y, en partes del producto, otros deportes de pista/cancha. Tiene cuatro capas principales:\\n\\n1. **Marketplace/player app**: descubrir clubes, reservar canchas, encontrar rivales/partidos, pagar, chatear, seguir actividad, competir y entrenar.\\n2. **Club OS / Playtomic Manager**: agenda, pricing, reservas, partidos abiertos, torneos, ligas, academia, clientes, wallets, comunicaci\\u00f3n y reporting.\\n3. **Growth + monetizaci\\u00f3n**: discovery en app, pagos online, wallets, memberships, categor\\u00edas/benefits, programas sociales, academy.\\n4. **Infra/API**: API third-party para bookings y players; reporting/export; soporte para organizaciones multi-sede.\\n\\n**Tesis producto**\\n\\nNo es solo \\u201cbookings software\\u201d. El n\\u00facleo es: **llenar capacidad infrautilizada de clubes** y **reducir fricci\\u00f3n social para jugar**, combinando scheduling + payments + matching + skill graph + community layer.\\n\\n**Qui\\u00e9n usa Playtomic**\\n\\n- **Jugador**: reservar, encontrar partido, competir, seguir nivel, pagar, chatear, entrenar.\\n- **Club/venue**: vender capacidad, automatizar operaci\\u00f3n, lanzar programas, cobrar, comunicar y medir.\\n- **Coach/academy**: publicar clases/cursos/clinics y monetizar agenda.\\n- **Cadena/integrador**: consolidar datos, exportar, usar API, operar varias sedes.\\n\\n**Superficies clave**\\n\\n- **Reservas privadas**\\n- **Open Matches**\\n- **Community Matches**\\n- **Tournaments**\\n- **Leagues**\\n- **Open Play**\\n- **Academy**: courses, public classes/clinics, private classes\\n- **Payments**: card, club wallet, sometimes onsite cash/card\\n- **Memberships / benefits / categories**\\n- **Chat + notifications**\\n- **Player level + stats/history**\\n- **Reports + exports + API**\\n\\n**Hallazgos estrat\\u00e9gicos**\\n\\n- Playtomic monetiza y retiene mejor cuando el club no solo vende canchas, sino tambi\\u00e9n **social play + training + competitions + memberships**.\\n- El asset diferencial parece ser la combinaci\\u00f3n de **distribution demand-side** (jugadores en app) con **club backoffice** y **skill/level graph**.\\n- El producto est\\u00e1 **regionalizado**: por ejemplo **Open Play** est\\u00e1 documentado como **solo US** al 6-9 Mar 2026.\\n- Hay se\\u00f1ales de evoluci\\u00f3n r\\u00e1pida: docs recientes sobre **recurrence**, **new reports**, **new business model**, **memberships**, **Open Play**.\\n\\n## Mapeo exhaustivo de features\\n\\n### 1. Discovery / marketplace jugador\\n\\n**Features**\\n\\n- Buscar clubes por ciudad, direcci\\u00f3n, club, postcode.\\n- Ver clubes top / favoritos / visitados.\\n- Ver actividad pr\\u00f3xima del club en \\u201cClub Updates\\u201d.\\n- Filtrar por deporte, distancia, fecha, tipo de actividad.\\n- Ver clubes, canchas, eventos y disponibilidad desde app.\\n\\n**Use cases**\\n\\n- Encontrar d\\u00f3nde jugar esta noche cerca.\\n- Seguir actividad de clubes favoritos sin abrir uno por uno.\\n- Comparar oferta de distintos clubes por tipo de actividad.\\n- Descubrir torneos, ligas o clases relevantes por zona.\\n\\n### 2. Reservas privadas de cancha\\n\\n**Features**\\n\\n- Reservar cancha por fecha, hora, duraci\\u00f3n y deporte.\\n- Elegir **single payment** o **split payment**.\\n- Ver pol\\u00edtica de cancelaci\\u00f3n del club en checkout.\\n- Reservas privadas pueden ser **competitive** o **friendly**.\\n- Historial de reservas y actividad.\\n- Desde manager: reservas manuales, recurrentes, gratuitas, reprogramaci\\u00f3n, drag-and-drop, cambio de cancha/d\\u00eda.\\n- Soporte para duraciones flexibles en bloques de 15 min.\\n- Soporte para franjas despu\\u00e9s de medianoche con configuraci\\u00f3n espec\\u00edfica.\\n\\n**Use cases jugador**\\n\\n- Reservar partido cerrado con amigos.\\n- Dividir pago entre participantes.\\n- Jugar amistoso sin afectar nivel.\\n- Jugar competitivo y cargar resultado para afectar nivel.\\n\\n**Use cases club**\\n\\n- Operar agenda de canchas con pricing variable.\\n- Crear reservas internas, cortes\\u00edas, bloqueos o series recurrentes.\\n- Mover reservas por clima, mantenimiento o reprogramaci\\u00f3n.\\n\\n### 3. Open Matches\\n\\n**Qu\\u00e9 son**\\n\\nPartidos abiertos publicados en el ecosistema Playtomic para que otros jugadores completen plazas.\\n\\n**Features**\\n\\n- El club activa Open Matches; el sistema los crea autom\\u00e1ticamente sobre slots disponibles.\\n- Jugador puede **crear** o **sumarse** a partidos abiertos.\\n- Matching con referencia al **player level**.\\n- Pago online obligatorio para confirmar plaza en Open Matches.\\n- Chat p\\u00fablico del match.\\n- Compartir enlace del partido.\\n- Manager puede cancelar, a\\u00f1adir/quitar jugadores, bloquear manualmente un match, moverlo a cancha concreta.\\n- Reglas autom\\u00e1ticas de ocupaci\\u00f3n de cancha seg\\u00fan n\\u00famero de jugadores y anticipaci\\u00f3n.\\n- Mensaje espec\\u00edfico de inscripci\\u00f3n a Open Matches configurable por club.\\n\\n**Use cases jugador**\\n\\n- \\u201cNo tengo grupo; quiero jugar hoy\\u201d.\\n- \\u201cQuiero un partido con nivel parecido\\u201d.\\n- \\u201cCreo un match y dejo que la comunidad complete el resto\\u201d.\\n- \\u201cComparto link del match por WhatsApp/externo/chat\\u201d.\\n\\n**Use cases club**\\n\\n- Convertir huecos muertos en demanda pagada.\\n- Generar adquisici\\u00f3n de nuevos jugadores.\\n- Crear social layer sin coordinar manualmente por WhatsApp.\\n- Controlar pagos previos para reducir no-shows.\\n\\n### 4. Community Matches\\n\\n**Qu\\u00e9 son**\\n\\nPartidos creados por usuarios fuera de clubes Playtomic o sin reserva/pago gestionado por la plataforma.\\n\\n**Features**\\n\\n- Crear match en cualquier cancha/instalaci\\u00f3n del mundo.\\n- Puede ser p\\u00fablico o privado.\\n- Sin booking ni cobro procesado por Playtomic.\\n- Chat y coordinaci\\u00f3n entre jugadores.\\n- Posibilidad de a\\u00f1adirlo al calendario del m\\u00f3vil.\\n\\n**Use cases**\\n\\n- Organizar partido en club no integrado.\\n- Mantener stats/historial dentro de Playtomic aunque la reserva ocurra fuera.\\n- Usar la red social/matching sin usar el backoffice del venue.\\n\\n### 5. Nivel, resultados, stats, ranking\\n\\n**Features**\\n\\n- Sistema de **player level estimation**.\\n- En reservas privadas competitivas, cargar resultado cambia nivel.\\n- En reservas friendly, resultado no cambia nivel.\\n- Subida manual de resultados jugados fuera de Playtomic dentro de \\u00faltimos 30 d\\u00edas.\\n- Requiere que jugadores tengan cuenta/nivel para que competitivo impacte en nivel.\\n- Historial de matches y estad\\u00edsticas en perfil.\\n- Clubs niveladores / proceso de **Leveling Club** y certificaci\\u00f3n para coaches/clubes.\\n\\n**Use cases**\\n\\n- Encontrar rivales de nivel similar.\\n- Estandarizar onboarding competitivo de nuevos jugadores.\\n- Consolidar todo el historial de juego en una plataforma.\\n- Permitir que el club certifique nivel y mejore calidad del matching.\\n\\n### 6. Social / communication\\n\\n**Features**\\n\\n- Chat p\\u00fablico en matches y tournaments.\\n- Chat privado entre jugadores con perfil p\\u00fablico.\\n- Mute/block de chats.\\n- Push notifications sobre mensajes.\\n- Manager puede entrar al chat de match/reserva y enviar mensajes.\\n- Booking confirmation email configurable por cancha o global.\\n- Idioma de comunicaciones configurable.\\n- Club updates / notificaciones de actividades pr\\u00f3ximas.\\n- Profile privacy: cuenta privada impide apuntarse a public Playtomic matches.\\n\\n**Use cases**\\n\\n- Coordinar llegadas, sustituciones, dudas o reglas.\\n- Resolver huecos en partidos o torneos.\\n- Enviar instrucciones del club: parking, lockers, alquiler de palas.\\n- Re-engagement en favoritos/clubes frecuentes.\\n\\n### 7. Payments / wallets / checkout\\n\\n**Features jugador**\\n\\n- Pago con tarjeta cr\\u00e9dito/d\\u00e9bito/prepaid.\\n- **Club Wallet / Merchant Wallet** si el club lo activa.\\n- En algunas regiones/casos: cash/card onsite.\\n- Service charge informado antes de completar booking.\\n\\n**Features club**\\n\\n- Recargar wallet por jugador.\\n- Crear wallet offers visibles en app.\\n- Wallet por defecto del club para compensaciones/casos internos.\\n- Ver deudas y estados de pago en matches/bookings.\\n- Mark as paid onsite en algunos productos como tournaments.\\n- Nuevo modelo de negocio/billing con visibilidad en Stripe + payouts + summary table.\\n\\n**Use cases**\\n\\n- Prepaid balance y fidelizaci\\u00f3n por club.\\n- Compensaciones y goodwill credit.\\n- Incentivos comerciales con saldo extra.\\n- Simplificar pagos repetidos de usuarios frecuentes.\\n- Cobranza de outstanding payments.\\n\\n### 8. Memberships / benefits / categories\\n\\n**Features**\\n\\n- **Club Memberships** suscripci\\u00f3n mensual o anual con auto-renovaci\\u00f3n.\\n- Compra solo en app; pago por card v\\u00eda Stripe.\\n- Gesti\\u00f3n/cancelaci\\u00f3n desde app.\\n- Beneficios exclusivos definidos por el club.\\n- Incompatibilidad pr\\u00e1ctica entre membership y benefit category simult\\u00e1nea en el mismo club.\\n- Beneficios de terceros posibles si el club configura categor\\u00eda especial y email coincide.\\n- En API de players aparece entidad `benefits`; docs indican categor\\u00edas y memberships.\\n\\n**Use cases**\\n\\n- Club de socios con descuentos, prioridad de reserva u otros perks.\\n- Integraci\\u00f3n operacional con Wellpass, Wellhub, Hansefit, Gymlib, Urban Sports Club, Virgin Active, etc., cuando el club lo configure.\\n- Segmentar clientes frecuentes vs casuales.\\n- Retenci\\u00f3n y previsibilidad de revenue.\\n\\n### 9. Academy / coaching product\\n\\n**Qu\\u00e9 es**\\n\\nSoluci\\u00f3n built-in de entrenamiento para clubes y coaches.\\n\\n**Subproductos**\\n\\n- **Private Classes**\\n- **Public Classes / Clinics**\\n- **Courses**\\n\\n**Features**\\n\\n- Publicaci\\u00f3n en app; booking y pago in-app.\\n- Gesti\\u00f3n desde Playtomic Manager.\\n- Cursos multi-sesi\\u00f3n con pricing y niveles custom.\\n- Private classes con disponibilidad flexible de coach y pricing por coach/tipo.\\n- Public classes visibles y pagables por jugadores.\\n- Recurrence para public classes: creaci\\u00f3n de series, hasta 365 d\\u00edas, cancelaci\\u00f3n por sesi\\u00f3n/serie, manejo de conflictos de disponibilidad.\\n- Soporte a sesiones de leveling usando public classes dentro de Academy.\\n\\n**Use cases**\\n\\n- Escuela de menores o adultos.\\n- Clinics de fin de semana.\\n- Onboarding de beginners.\\n- Monetizaci\\u00f3n de coaches a agenda completa.\\n- Programas recurrentes de mejora y retenci\\u00f3n.\\n- Sessions de nivelaci\\u00f3n certificada.\\n\\n### 10. Tournaments\\n\\n**Features**\\n\\n- Crear torneos p\\u00fablicos o privados.\\n- Inscripci\\u00f3n individual o por parejas.\\n- Precio por equipo.\\n- Restricciones por min/max players, gender, level.\\n- Poster, prizes, welcome pack, description.\\n- Bloqueo autom\\u00e1tico de canchas al crear torneo.\\n- Pricing custom por categor\\u00eda o membership.\\n- Gesti\\u00f3n m\\u00f3vil completa.\\n- A\\u00f1adir jugador y marcar pago onsite o wallet.\\n- Remover jugadores con refund.\\n- Recurring tournaments / series: sesiones recurrentes; booking por sesi\\u00f3n individual.\\n- Chat p\\u00fablico en torneo.\\n\\n**Use cases**\\n\\n- Torneo social del fin de semana.\\n- Evento premium con premios y welcome pack.\\n- Campa\\u00f1as de adquisici\\u00f3n v\\u00eda evento.\\n- Series peri\\u00f3dicas sin recrear setup cada vez.\\n\\n### 11. Leagues\\n\\n**Features**\\n\\n- Crear ligas con reglas, scoring, restricciones, courts y timeframes.\\n- Enrollment price por equipo; paga el captain una vez.\\n- Sin fee por match individual.\\n- Gestionar teams: add/edit/remove/move between groups.\\n- Reemplazo de jugadores en futuras jornadas.\\n- Start round cuando calendario y grupos est\\u00e1n listos.\\n- Generaci\\u00f3n autom\\u00e1tica de matches basada en duraci\\u00f3n, horarios, canchas y disponibilidad real.\\n- Configurar puntos por resultado.\\n- Copiar liga, export players, copy public link.\\n- Refund autom\\u00e1tico si se cancela la liga.\\n- Pagos al club por modelo/quincena o semanal seg\\u00fan billing model.\\n\\n**Use cases**\\n\\n- Competici\\u00f3n amateur recurrente.\\n- Retenci\\u00f3n de jugadores avanzados.\\n- Venta de temporada por equipos.\\n- Organizaci\\u00f3n de calendario sin spreadsheet manual.\\n\\n### 12. Open Play\\n\\n**Estado**\\n\\n- Documentado como **solo disponible en clubs de Estados Unidos** al 6-9 Mar 2026.\\n- Enfocado especialmente en **pickleball**, pero extensible a otros deportes.\\n\\n**Features**\\n\\n- Programa dedicado distinto de tournament.\\n- Sesiones casuales 1-3 horas.\\n- Filtro espec\\u00edfico en app y reports.\\n- M\\u00e9tricas separadas de revenue, occupancy, participation.\\n- Formato social/drop-in autogestionado en cancha.\\n\\n**Use cases**\\n\\n- Pickleball open play.\\n- Sesiones sociales de alta rotaci\\u00f3n.\\n- Introducci\\u00f3n de nuevos jugadores sin rigidez competitiva.\\n- Monetizar bloques horarios amplios con din\\u00e1mica libre.\\n\\n### 13. Customers / CRM ligero\\n\\n**Features**\\n\\n- Base de clientes enlazada al club al reservar o marcar favorito.\\n- Export CSV de clientes.\\n- Visibilidad de wallets por cliente en export.\\n- Gesti\\u00f3n de customer wallets y balance.\\n- Asociar benefits/categories a usuarios.\\n- Ver marketing opt-in (`accepts_commercial_communications`) en API/export.\\n\\n**Use cases**\\n\\n- Construir base CRM del venue.\\n- Export para campa\\u00f1as o BI externo.\\n- Validar si el usuario tiene perks, wallet o estado especial.\\n\\n### 14. Pricing / schedule / operations engine\\n\\n**Features**\\n\\n- Pricing configurable por franja.\\n- Flexible durations 15-180 min.\\n- Horarios after-midnight.\\n- Calendar / schedule operativo.\\n- Reservas recurrentes.\\n- Bloqueos de canchas por torneos/classes.\\n- Autoselect court para matches.\\n- Reschedule reservations.\\n- Free reservations / price override.\\n\\n**Use cases**\\n\\n- Maximizar yield por franja horaria.\\n- Adaptar duraci\\u00f3n por deporte.\\n- Operar venues nocturnos.\\n- Evitar conflictos entre torneo, academy y open matches.\\n\\n### 15. Reporting / analytics\\n\\n**Features**\\n\\n- Reportes nuevos de **Revenues, Occupancy, Players, Payment Collection**.\\n- Filtros flexibles por fecha, comparaci\\u00f3n, corte por d\\u00eda/semana/mes/trimestre.\\n- Drill-down por court, sport, product.\\n- Local language support.\\n- Occupancy incluye tournaments y blocked hours.\\n- Players report agrega bookings, tournaments, leagues y otras actividades.\\n- Payment Collection basado en fecha de actividad; incluye pending/authorized.\\n- Export de data visible en la vista.\\n- Reports a nivel organizaci\\u00f3n para multi-club.\\n- Open Play filtrable como producto separado.\\n- Para extracciones grandes/custom: recomendaci\\u00f3n oficial usar API.\\n\\n**Use cases**\\n\\n- Medir revenue por producto.\\n- Medir ocupaci\\u00f3n por cancha/deporte.\\n- Entender retenci\\u00f3n/frecuencia de jugadores.\\n- Cobranza operativa y seguimiento de pendientes.\\n- Consolidado multi-sede.\\n\\n### 16. API / integraciones\\n\\n**Features confirmadas en docs p\\u00fablicas**\\n\\n- Credenciales desde `Settings -> Developer tools` en Playtomic Manager.\\n- API para **Bookings** y **Players**.\\n- `Bookings` expone tipos: regular booking, recurring booking, open match, league match, private class, course class, tournament, public class.\\n- `Bookings` expone resource, sport, origin, price, payment status, participants, coaches, course/activity IDs.\\n- `Players` expone datos personales, sports/levels, benefits y wallets opcionales.\\n- Soporte organizaci\\u00f3n/cadena por contacto con customer support.\\n\\n**Use cases**\\n\\n- BI externo / data warehouse.\\n- Sincronizaci\\u00f3n con CRM o marketing stack.\\n- Unificaci\\u00f3n multi-sede.\\n- Reporter\\u00eda custom no cubierta por UI.\\n- Auditor\\u00eda operativa de bookings, pagos, benefits y wallets.\\n\\n## Mapa de casos de uso por persona\\n\\n### Jugador casual\\n\\n- Reservar cancha con amigos.\\n- Dividir pago.\\n- Encontrar open match del mismo nivel.\\n- Chatear con participantes.\\n- Seguir clubes favoritos.\\n- Usar wallet o membership del club.\\n\\n### Jugador competitivo\\n\\n- Jugar matches que afecten nivel.\\n- Cargar resultados fuera de Playtomic.\\n- Unirse a ligas y torneos.\\n- Buscar partidos con nivel/g\\u00e9nero adecuados.\\n- Mantener historial y ranking personal.\\n\\n### Jugador beginner\\n\\n- Encontrar classes/clinics/courses.\\n- Usar Academy como onboarding.\\n- Participar en Open Play social o partidos de nivel inicial.\\n- Ser nivelado por club/coaches certificados.\\n\\n### Club independiente\\n\\n- Vender reservas online.\\n- Llenar horas valle con open matches/classes/torneos.\\n- Cobrar digitalmente y reducir no-shows.\\n- Mantener wallets y memberships.\\n- Medir ocupaci\\u00f3n y revenue.\\n\\n### Cadena multi-sede\\n\\n- Reportes organization-level.\\n- Operaci\\u00f3n homog\\u00e9nea entre venues.\\n- API para consolidaci\\u00f3n externa.\\n- Gesti\\u00f3n de benefits/wallets/jugadores por sede.\\n\\n### Coach / academia\\n\\n- Publicar clases privadas y grupales.\\n- Correr cursos recurrentes.\\n- Gestionar disponibilidad propia.\\n- Cobrar dentro del mismo stack.\\n- Hacer sesiones de leveling certificadas.\\n\\n## Mapa por jobs-to-be-done\\n\\n### JTBD: \\u201cquiero jugar hoy; no tengo grupo\\u201d\\n\\n- Open Matches\\n- Community Match\\n- Chat\\n- Matching por nivel\\n- Club discovery\\n\\n### JTBD: \\u201cquiero monetizar huecos muertos del club\\u201d\\n\\n- Open Matches autom\\u00e1ticos\\n- Public classes / clinics\\n- Open Play\\n- Tournaments\\n- Dynamic schedule/pricing\\n\\n### JTBD: \\u201cquiero fidelizar jugadores recurrentes\\u201d\\n\\n- Wallets\\n- Memberships\\n- Benefits/categories\\n- Academy courses\\n- Leagues\\n- Club updates / favoritos\\n\\n### JTBD: \\u201cquiero profesionalizar escuela/coach business\\u201d\\n\\n- Academy\\n- Recurrence\\n- Coach availability\\n- In-app payments\\n- Course/class visibility en app\\n\\n### JTBD: \\u201cquiero m\\u00e1s control de operaci\\u00f3n\\u201d\\n\\n- Manager schedule\\n- Reschedule\\n- Pricing engine\\n- Payment collection\\n- Reports\\n- API/export\\n\\n### JTBD: \\u201cquiero una capa social + competitiva, no solo reservas\\u201d\\n\\n- Open Matches\\n- Chat\\n- Level graph\\n- Results upload\\n- Tournaments/leagues\\n- Private messaging\\n\\n## Riesgos, l\\u00edmites y lectura cr\\u00edtica\\n\\n- **Cobertura regional desigual**: Open Play aparece oficialmente solo para US a marzo 2026.\\n- **Claims de escala inconsistentes en p\\u00e1ginas oficiales**: homepage dice 4M jugadores / 5500 clubes / 52 pa\\u00edses; Academy page menciona 2M+ jugadores visibles in-app. Probable diferencia de fecha/copy, no necesariamente contradicci\\u00f3n material, pero no conviene usar ambos sin nota.\\n- **Parte del backoffice est\\u00e1 detr\\u00e1s de login**: el mapeo se basa en p\\u00e1ginas p\\u00fablicas, help centers oficiales y API docs p\\u00fablicas; puede haber features internas no visibles p\\u00fablicamente.\\n- **API p\\u00fablica visible es acotada**: confirmadas p\\u00fablicamente sobre todo `Bookings` y `Players`; no asumir cobertura completa de todos los m\\u00f3dulos.\\n\\n## Recomendaci\\u00f3n de siguiente paso\\n\\nArmar un **segundo entregable comparativo** con este mismo mapa pero organizado como:\\n\\n1. **Feature tree** formal.\\n2. **Player journey** end-to-end.\\n3. **Club ops journey** end-to-end.\\n4. **Matriz features x persona x monetizaci\\u00f3n x regi\\u00f3n**.\\n5. **Gaps / oportunidades** frente a competidores o frente a un producto propio.\\n\\n## Fuentes primarias usadas\\n\\n- Playtomic homepage: https://playtomic.com/\\n- Playtomic Academy: https://playtomic.com/academy\\n- Player help, bookings: https://playerhelp.playtomic.com/hc/en-gb/articles/19831715222929-How-to-book-a-court-or-a-spot-in-a-match-in-your-favourite-Club\\n- Player help, reservations: https://playerhelp.playtomic.com/hc/en-gb/articles/19831881490449-How-to-make-a-reservation-in-Playtomic-app\\n- Player help, friendly vs competitive: https://playerhelp.playtomic.com/hc/en-gb/articles/19831437295377-Friendly-or-Competitive-Private-Reservations\\n- Player help, upload results: https://playerhelp.playtomic.com/hc/en-gb/articles/19831532392081-How-to-upload-results-from-matches-played-outside-Playtomic\\n- Player help, chat: https://playerhelp.playtomic.com/hc/en-gb/articles/19832063135249-How-you-can-chat-with-players-in-Matches-or-Tournaments\\n- Player help, private profile: https://playerhelp.playtomic.com/hc/en-gb/articles/19831908541329-How-to-make-your-profile-private\\n- Player help, private chat: https://playerhelp.playtomic.com/hc/en-gb/articles/19832055834769-Private-chat-between-players-in-Playtomic\\n- Player help, club updates: https://playerhelp.playtomic.com/hc/en-gb/articles/44465662231185-How-to-follow-your-favorite-club-activities\\n- Player help, memberships: https://playerhelp.playtomic.com/hc/en-gb/articles/19831425477649-Club-Membership\\n- Player help, third-party membership benefits: https://playerhelp.playtomic.com/hc/en-gb/articles/44586083037201-How-Third-Party-Membership-Benefits-Work-on-Playtomic\\n- Player help, payments: https://playerhelp.playtomic.com/hc/en-gb/articles/19831969439761-Payment-Methods-in-Playtomic\\n- Player help, community match: https://playerhelp.playtomic.com/hc/en-gb/articles/19831629310481-Community-Match-Play-on-Any-Court-Anywhere\\n- Manager help, open matches config: https://helpmanager.playtomic.com/hc/en-gb/articles/20535035123473-How-to-configure-Open-Matches-at-your-Club\\n- Manager help, open matches management: https://helpmanager.playtomic.com/hc/en-gb/articles/20534737902353-How-to-manage-Open-Matches-in-Playtomic-Manager\\n- Manager help, add/remove players in open match: https://helpmanager.playtomic.com/hc/en-gb/articles/20535085001361-How-to-add-remove-players-in-an-Open-Match\\n- Manager help, open match slot rules: https://helpmanager.playtomic.com/hc/en-gb/articles/20535700374929-Understanding-When-Public-Matches-Occupy-Club-Calendar-Slots\\n- Manager help, reservations: https://helpmanager.playtomic.com/hc/en-gb/articles/20535410170769-How-to-add-a-reservation\\n- Manager help, reschedule reservation: https://helpmanager.playtomic.com/hc/en-gb/articles/20535241098257-How-to-reschedule-a-reservation\\n- Manager help, flexible booking duration: https://helpmanager.playtomic.com/hc/en-gb/articles/20534683083793-Flexible-Booking-Duration\\n- Manager help, after-midnight reservations: https://helpmanager.playtomic.com/hc/en-gb/articles/20535206048913-Setting-the-time-reservation-after-midnight\\n- Manager help, Academy: https://helpmanager.playtomic.com/hc/en-gb/articles/20559686617361-Academy\\n- Manager help, public class recurrence: https://helpmanager.playtomic.com/hc/en-gb/articles/43089011499537-Public-Class-Recurrence-Streamline-Your-Class-Scheduling\\n- Manager help, tournaments: https://helpmanager.playtomic.com/hc/en-gb/articles/20563451171985-How-to-Create-a-Single-Tournament-in-Playtomic-Manager\\n- Manager help, recurring tournaments: https://helpmanager.playtomic.com/hc/en-gb/articles/43084071994385-Tournament-Recurrence-Create-Recurring-Tournaments-Efficiently\\n- Manager help, leagues: https://helpmanager.playtomic.com/hc/en-gb/articles/20535741575057-How-to-launch-a-League\\n- Manager help, league teams: https://helpmanager.playtomic.com/hc/en-gb/articles/20535715479057-How-to-manage-teams-in-a-League\\n- Manager help, league rounds: https://helpmanager.playtomic.com/hc/en-gb/articles/20535741310353-How-to-Start-a-Round-in-a-League\\n- Manager help, league timeframes/courts: https://helpmanager.playtomic.com/hc/en-gb/articles/20535055853201-How-to-manage-time-frames-and-courts-in-a-league\\n- Manager help, communication: https://helpmanager.playtomic.com/hc/en-gb/articles/20535292080145-Communication-and-notifications\\n- Manager help, wallets: https://helpmanager.playtomic.com/hc/en-gb/articles/20535667026961-Club-or-Merchant-Wallets\\n- Manager help, reports: https://helpmanager.playtomic.com/hc/en-gb/articles/43127115602961-New-Revenues-Occupancy-Players-Payment-Collection-Reports-for-Clubs\\n- Manager help, new billing model: https://helpmanager.playtomic.com/hc/en-gb/articles/26470554139025-How-to-Check-Payments-in-New-Business-Model\\n- Manager help, Open Play US: https://helpmanager.playtomic.com/hc/en-gb/articles/44504259363089-Introducing-Open-Play-Programs-in-Playtomic-Manager-U-S-Clubs\\n- Player help, Open Play US: https://playerhelp.playtomic.com/hc/en-gb/articles/44583001609105-How-to-Find-and-Join-Open-Play-in-the-Playtomic-App\\n- Playtomic Third Party API home: https://third-party.playtomic.io/\\n- Playtomic Third Party API bookings: https://third-party.playtomic.io/endpoints/bookings/\\n- Playtomic Third Party API players: https://third-party.playtomic.io/endpoints/players/\\n\\n## Fecha de corte\\n\\nInvestigaci\\u00f3n verificada con fuentes p\\u00fablicas oficiales disponibles el **16 de marzo de 2026**.\", \"summary\": \"## Brief ejecutivo\\n\\n**Qu\\u00e9 es Playtomic**\\n\\nPlaytomic es una plataforma de dos caras para deportes de raqueta y, en partes del producto, otros deportes de pista/cancha. Tiene cuatro \", \"confidence\": 1.0, \"freshness\": 1.0, \"created_at\": \"2026-03-16T12:12:37.767831+00:00\", \"updated_at\": \"2026-03-16T12:12:37.767831+00:00\", \"observed_at\": \"2026-03-16T12:12:37.767831+00:00\", \"source_ref\": \"personal-agent\", \"evidence_ref\": \"art_125b83a073844abe9365f9ac3c059702\", \"metadata\": {\"task_id\": \"task_5d0483a646cc44c6871b8d7311ba6179\", \"task_run_id\": \"run_3f9475dd645e4ec4bf1638762b82f139\"}, \"embedding\": [0.5062355017880487, 0.44052524686118527, 0.4038669365802302, 0.3548759368650277, 0.3173353092406721, 0.27192757145292157, 0.22972514771567373, 0.1822024820868766]}, \"score\": 0.47593532526820725, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.5062355017880487, \"confidence\": 1.0, \"freshness\": 1.0}, \"matched_scope\": \"agent\", \"evidence_ref\": \"art_125b83a073844abe9365f9ac3c059702\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.51 confidence=1.00 freshness=1.00\"}, {\"memory\": {\"id\": \"mem_a02e4ce352944fa79e0dec18e93b4479\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": null, \"scope\": \"agent\", \"status\": \"active\", \"project_id\": \"proj_personal_agent\", \"repo_id\": \"repo_personal_agent\", \"agent_id\": null, \"origin_agent\": null, \"run_id\": null, \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Task completed: SMOKE TEST: in personal-agent, change a tiny dashboard header string in this repo and run repo ch...\", \"content\": \"## Findings\\n- `.agents/skills/status/SKILL.md` looked like the closest true dashboard-header source, but this sandbox denied writes under `.agents`.\\n- Writable, minimal fallback in-repo header: [README.md](/Users/sebas/ai-dev-workflow/README.md#L1).\\n\\n## Changes\\n- Updated README H1 from `AI Dev Workflow` to `AI Dev Workflow Dashboard`.\\n- Verified diff scope: one-line string-only change.\\n\\n## Verification\\n- `git diff -- README.md`: passed; only intended line changed.\\n- `python3 -m py_compile scripts/ai_dev_workflow_memory.py`: passed.\\n- JSON parse check for `.agents/*.json`: passed.\\n- `python3 scripts/ai_dev_workflow_memory.py --help`: passed.\\n\\n## Next Actions\\n- If you want the exact `/status` skill header changed instead of the README header, rerun with write access to `.agents/`.\\n- Note: `scripts/__pycache__/` is now untracked from verification.\", \"summary\": \"## Findings\\n- `.agents/skills/status/SKILL.md` looked like the closest true dashboard-header source, but this sandbox denied writes under `.agents`.\\n- Writable, minimal fallback in\", \"confidence\": 1.0, \"freshness\": 1.0, \"created_at\": \"2026-03-16T16:20:31.720542+00:00\", \"updated_at\": \"2026-03-16T16:20:31.720542+00:00\", \"observed_at\": \"2026-03-16T16:20:31.720542+00:00\", \"source_ref\": \"personal-agent\", \"evidence_ref\": \"art_e21422c6e63542fc8354652575b94223\", \"metadata\": {\"task_id\": \"task_2d467b7749624d30b3851ffba716624a\", \"task_run_id\": \"run_961adef4ed324f7d82bb30bb002f8928\"}, \"embedding\": [0.49748484081752287, 0.44957969480884546, 0.4203965147478364, 0.36772971265998317, 0.29745921234002565, 0.2781240028064028, 0.2179539850786363, 0.15839721093682424]}, \"score\": 0.4746227261226284, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.49748484081752287, \"confidence\": 1.0, \"freshness\": 1.0}, \"matched_scope\": \"agent\", \"evidence_ref\": \"art_e21422c6e63542fc8354652575b94223\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.50 confidence=1.00 freshness=1.00\"}, {\"memory\": {\"id\": \"mem_7f28b7d39d064165a80ca6c5fe534ccd\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"project\", \"subtype\": \"file_organization\", \"scope\": \"project\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"pi-session-memory-analyzer\", \"run_id\": null, \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Investigaci\\u00f3n de web china consolidada y gitignored\", \"content\": \"Se cre\\u00f3 `research/china_web/` en `ballbox` y se movieron ah\\u00ed los screenshots, los specs de Playwright `inspect-ourvend*` y `proxy.ts`. Tambi\\u00e9n se agreg\\u00f3 `research/` a `.gitignore` para mantener esa investigaci\\u00f3n aislada del repo.\", \"summary\": \"Se cre\\u00f3 `research/china_web/` en `ballbox` y se movieron ah\\u00ed los screenshots, los specs de Playwright `inspect-ourvend*` y `proxy.ts`. Tambi\\u00e9n se agreg\\u00f3 `research/` a `.gitignore`\\u2026\", \"confidence\": 1.0, \"freshness\": 1.0, \"created_at\": \"2026-04-22T12:42:07.392305+00:00\", \"updated_at\": \"2026-04-22T12:42:07.392305+00:00\", \"observed_at\": \"2026-04-22T12:42:07.392305+00:00\", \"source_ref\": \"session:4c4597d6\", \"evidence_ref\": null, \"metadata\": {\"analysis_reason\": \"Hay un artefacto durable y reutilizable del proyecto: la investigaci\\u00f3n qued\\u00f3 organizada en una carpeta espec\\u00edfica y excluida del control de versiones.\", \"assistant_messages\": 9, \"cwd\": \"/mnt/rpi/repos/ballbox\", \"job_file\": \"/mnt/rpi/pi-config/sessions/session-memory-jobs/20260422T124200568464Z.json\", \"reason\": \"shutdown_fallback\", \"session_file\": \"/mnt/rpi/pi-config/sessions/--mnt-rpi-repos-ballbox--/2026-04-22T12-32-15-820Z_019db52d-43cb-7714-b600-a8e0da2d5b72.jsonl\", \"session_id\": \"4c4597d6\", \"trigger\": \"session-memory-dispatcher\", \"user_messages\": 2}, \"embedding\": null}, \"score\": 0.39999999999999997, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.0, \"confidence\": 1.0, \"freshness\": 1.0}, \"matched_scope\": \"project\", \"evidence_ref\": null, \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.00 confidence=1.00 freshness=1.00\"}, {\"memory\": {\"id\": \"mem_9685c2d1955d4583a42b0603b0b387b1\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"decision\", \"subtype\": null, \"scope\": \"project\", \"status\": \"active\", \"project_id\": \"proj_personal_agent\", \"repo_id\": \"repo_personal_agent\", \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": null, \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Deprecate local personal-agent runtime\", \"content\": \"Local personal-agent/opencode-harness was decommissioned on ballbox-first. Non-personal skills were migrated to the shared ~/.agents/skills directory; personal* skills were intentionally not migrated. The user intends pi agent to replace it. Systemd user service, symlinks, install state, and the repo tree were removed.\", \"summary\": \"Local personal-agent/opencode-harness was decommissioned on ballbox-first. Non-personal skills were migrated to the shared ~/.agents/skills directory; personal* skills were intent\\u2026\", \"confidence\": 1.0, \"freshness\": 1.0, \"created_at\": \"2026-04-22T02:44:41.070210+00:00\", \"updated_at\": \"2026-04-22T02:44:41.070210+00:00\", \"observed_at\": \"2026-04-22T02:44:41.070210+00:00\", \"source_ref\": \"conversation:2026-04-21\", \"evidence_ref\": null, \"metadata\": {}, \"embedding\": null}, \"score\": 0.39999999999999997, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.0, \"confidence\": 1.0, \"freshness\": 1.0}, \"matched_scope\": \"project\", \"evidence_ref\": null, \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.00 confidence=1.00 freshness=1.00\"}]}"}],"isError":false,"timestamp":1776861907223}}
{"type":"message","id":"95d6e19c","parentId":"3a056e84","timestamp":"2026-04-22T12:46:09.239Z","message":{"role":"assistant","content":[{"type":"text","text":"La última memoria creada es del proyecto `ballbox` (ID: `mem_7f28b7d39d064165a80ca6c5fe534ccd`, fecha: 2026-04-22).\n\n### Handoff / Última Memoria: Investigaci\\u00f3n de web china\n- **Contexto**: Se consolid\\u00f3 la investigaci\\u00f3n de una web china (`ourvend*`) en el directorio `research/china_web/`.\n- **Acciones**: \n  - Movimiento de screenshots, specs de Playwright y `proxy.ts` a dicha carpeta.\n  - Actualizaci\\u00f3n de `.gitignore` para incluir `research/`.\n- **Estado**: Investigaci\\u00f3n aislada del repo principal pero persistida localmente.\n\n### Exploraci\\u00f3n de API (`agents-database`)\n- **Endpoint**: `http://100.116.176.16:8091/api/search`\n- **Uso**: Requiere par\\u00e1metro `q`. Para listar las m\\u00e1s recientes, us\\u00e9 `q=*&sort=created_at:desc`.\n- **Hallazgo**: Existe una decisi\\u00f3n reciente (2026-04-22) sobre la depresi\\u00f3n del runtime local de `personal-agent` en favor del agente de la Pi, migrando skills a `~/.agents/skills`.","textSignature":"CiEBjz1rX0Bn24hYIQmvDLiCsZf00dWN33Y4LUvq5sL1qEg="}],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":19638,"output":375,"cacheRead":0,"cacheWrite":0,"totalTokens":20013,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"stop","timestamp":1776861907229,"responseId":"DsPoaam_Cu7XodAPqK682QM"}}
{"type":"message","id":"7807bff1","parentId":"95d6e19c","timestamp":"2026-04-22T12:57:46.444Z","message":{"role":"user","content":[{"type":"text","text":"perdon la ultima no. una reciente de payments"}],"timestamp":1776862666443}}
{"type":"message","id":"5fdc05b1","parentId":"7807bff1","timestamp":"2026-04-22T12:58:18.704Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"bash_1776862698609_4","name":"bash","arguments":{"command":"curl -s \"http://100.116.176.16:8091/api/search?q=payments&limit=5&sort=created_at:desc\""},"thoughtSignature":"CiEBjz1rXybb2tTG9M4oLmQn43lHQlqOmvlgL05Orn6DrB4="}],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":20021,"output":52,"cacheRead":0,"cacheWrite":0,"totalTokens":20073,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"toolUse","timestamp":1776862666445,"responseId":"6cXoacy_G4-b4_UP9t250AI"}}
{"type":"message","id":"f006c5dd","parentId":"5fdc05b1","timestamp":"2026-04-22T12:58:18.785Z","message":{"role":"toolResult","toolCallId":"bash_1776862698609_4","toolName":"bash","content":[{"type":"text","text":"{\"retrieval_id\": \"ret_cbaaefe629e44a2685642b10f364c3b6\", \"results\": [{\"memory\": {\"id\": \"mem_b0ce3e3a54564120b9143265165b91ef\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": null, \"scope\": \"agent\", \"status\": \"active\", \"project_id\": \"proj_personal_agent\", \"repo_id\": \"repo_personal_agent\", \"agent_id\": null, \"origin_agent\": null, \"run_id\": null, \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Task completed: investigar playtomic y armar un mapeo exhaustivo de todas sus features y use cases. Primero un br...\", \"content\": \"## Brief ejecutivo\\n\\n**Qu\\u00e9 es Playtomic**\\n\\nPlaytomic es una plataforma de dos caras para deportes de raqueta y, en partes del producto, otros deportes de pista/cancha. Tiene cuatro capas principales:\\n\\n1. **Marketplace/player app**: descubrir clubes, reservar canchas, encontrar rivales/partidos, pagar, chatear, seguir actividad, competir y entrenar.\\n2. **Club OS / Playtomic Manager**: agenda, pricing, reservas, partidos abiertos, torneos, ligas, academia, clientes, wallets, comunicaci\\u00f3n y reporting.\\n3. **Growth + monetizaci\\u00f3n**: discovery en app, pagos online, wallets, memberships, categor\\u00edas/benefits, programas sociales, academy.\\n4. **Infra/API**: API third-party para bookings y players; reporting/export; soporte para organizaciones multi-sede.\\n\\n**Tesis producto**\\n\\nNo es solo \\u201cbookings software\\u201d. El n\\u00facleo es: **llenar capacidad infrautilizada de clubes** y **reducir fricci\\u00f3n social para jugar**, combinando scheduling + payments + matching + skill graph + community layer.\\n\\n**Qui\\u00e9n usa Playtomic**\\n\\n- **Jugador**: reservar, encontrar partido, competir, seguir nivel, pagar, chatear, entrenar.\\n- **Club/venue**: vender capacidad, automatizar operaci\\u00f3n, lanzar programas, cobrar, comunicar y medir.\\n- **Coach/academy**: publicar clases/cursos/clinics y monetizar agenda.\\n- **Cadena/integrador**: consolidar datos, exportar, usar API, operar varias sedes.\\n\\n**Superficies clave**\\n\\n- **Reservas privadas**\\n- **Open Matches**\\n- **Community Matches**\\n- **Tournaments**\\n- **Leagues**\\n- **Open Play**\\n- **Academy**: courses, public classes/clinics, private classes\\n- **Payments**: card, club wallet, sometimes onsite cash/card\\n- **Memberships / benefits / categories**\\n- **Chat + notifications**\\n- **Player level + stats/history**\\n- **Reports + exports + API**\\n\\n**Hallazgos estrat\\u00e9gicos**\\n\\n- Playtomic monetiza y retiene mejor cuando el club no solo vende canchas, sino tambi\\u00e9n **social play + training + competitions + memberships**.\\n- El asset diferencial parece ser la combinaci\\u00f3n de **distribution demand-side** (jugadores en app) con **club backoffice** y **skill/level graph**.\\n- El producto est\\u00e1 **regionalizado**: por ejemplo **Open Play** est\\u00e1 documentado como **solo US** al 6-9 Mar 2026.\\n- Hay se\\u00f1ales de evoluci\\u00f3n r\\u00e1pida: docs recientes sobre **recurrence**, **new reports**, **new business model**, **memberships**, **Open Play**.\\n\\n## Mapeo exhaustivo de features\\n\\n### 1. Discovery / marketplace jugador\\n\\n**Features**\\n\\n- Buscar clubes por ciudad, direcci\\u00f3n, club, postcode.\\n- Ver clubes top / favoritos / visitados.\\n- Ver actividad pr\\u00f3xima del club en \\u201cClub Updates\\u201d.\\n- Filtrar por deporte, distancia, fecha, tipo de actividad.\\n- Ver clubes, canchas, eventos y disponibilidad desde app.\\n\\n**Use cases**\\n\\n- Encontrar d\\u00f3nde jugar esta noche cerca.\\n- Seguir actividad de clubes favoritos sin abrir uno por uno.\\n- Comparar oferta de distintos clubes por tipo de actividad.\\n- Descubrir torneos, ligas o clases relevantes por zona.\\n\\n### 2. Reservas privadas de cancha\\n\\n**Features**\\n\\n- Reservar cancha por fecha, hora, duraci\\u00f3n y deporte.\\n- Elegir **single payment** o **split payment**.\\n- Ver pol\\u00edtica de cancelaci\\u00f3n del club en checkout.\\n- Reservas privadas pueden ser **competitive** o **friendly**.\\n- Historial de reservas y actividad.\\n- Desde manager: reservas manuales, recurrentes, gratuitas, reprogramaci\\u00f3n, drag-and-drop, cambio de cancha/d\\u00eda.\\n- Soporte para duraciones flexibles en bloques de 15 min.\\n- Soporte para franjas despu\\u00e9s de medianoche con configuraci\\u00f3n espec\\u00edfica.\\n\\n**Use cases jugador**\\n\\n- Reservar partido cerrado con amigos.\\n- Dividir pago entre participantes.\\n- Jugar amistoso sin afectar nivel.\\n- Jugar competitivo y cargar resultado para afectar nivel.\\n\\n**Use cases club**\\n\\n- Operar agenda de canchas con pricing variable.\\n- Crear reservas internas, cortes\\u00edas, bloqueos o series recurrentes.\\n- Mover reservas por clima, mantenimiento o reprogramaci\\u00f3n.\\n\\n### 3. Open Matches\\n\\n**Qu\\u00e9 son**\\n\\nPartidos abiertos publicados en el ecosistema Playtomic para que otros jugadores completen plazas.\\n\\n**Features**\\n\\n- El club activa Open Matches; el sistema los crea autom\\u00e1ticamente sobre slots disponibles.\\n- Jugador puede **crear** o **sumarse** a partidos abiertos.\\n- Matching con referencia al **player level**.\\n- Pago online obligatorio para confirmar plaza en Open Matches.\\n- Chat p\\u00fablico del match.\\n- Compartir enlace del partido.\\n- Manager puede cancelar, a\\u00f1adir/quitar jugadores, bloquear manualmente un match, moverlo a cancha concreta.\\n- Reglas autom\\u00e1ticas de ocupaci\\u00f3n de cancha seg\\u00fan n\\u00famero de jugadores y anticipaci\\u00f3n.\\n- Mensaje espec\\u00edfico de inscripci\\u00f3n a Open Matches configurable por club.\\n\\n**Use cases jugador**\\n\\n- \\u201cNo tengo grupo; quiero jugar hoy\\u201d.\\n- \\u201cQuiero un partido con nivel parecido\\u201d.\\n- \\u201cCreo un match y dejo que la comunidad complete el resto\\u201d.\\n- \\u201cComparto link del match por WhatsApp/externo/chat\\u201d.\\n\\n**Use cases club**\\n\\n- Convertir huecos muertos en demanda pagada.\\n- Generar adquisici\\u00f3n de nuevos jugadores.\\n- Crear social layer sin coordinar manualmente por WhatsApp.\\n- Controlar pagos previos para reducir no-shows.\\n\\n### 4. Community Matches\\n\\n**Qu\\u00e9 son**\\n\\nPartidos creados por usuarios fuera de clubes Playtomic o sin reserva/pago gestionado por la plataforma.\\n\\n**Features**\\n\\n- Crear match en cualquier cancha/instalaci\\u00f3n del mundo.\\n- Puede ser p\\u00fablico o privado.\\n- Sin booking ni cobro procesado por Playtomic.\\n- Chat y coordinaci\\u00f3n entre jugadores.\\n- Posibilidad de a\\u00f1adirlo al calendario del m\\u00f3vil.\\n\\n**Use cases**\\n\\n- Organizar partido en club no integrado.\\n- Mantener stats/historial dentro de Playtomic aunque la reserva ocurra fuera.\\n- Usar la red social/matching sin usar el backoffice del venue.\\n\\n### 5. Nivel, resultados, stats, ranking\\n\\n**Features**\\n\\n- Sistema de **player level estimation**.\\n- En reservas privadas competitivas, cargar resultado cambia nivel.\\n- En reservas friendly, resultado no cambia nivel.\\n- Subida manual de resultados jugados fuera de Playtomic dentro de \\u00faltimos 30 d\\u00edas.\\n- Requiere que jugadores tengan cuenta/nivel para que competitivo impacte en nivel.\\n- Historial de matches y estad\\u00edsticas en perfil.\\n- Clubs niveladores / proceso de **Leveling Club** y certificaci\\u00f3n para coaches/clubes.\\n\\n**Use cases**\\n\\n- Encontrar rivales de nivel similar.\\n- Estandarizar onboarding competitivo de nuevos jugadores.\\n- Consolidar todo el historial de juego en una plataforma.\\n- Permitir que el club certifique nivel y mejore calidad del matching.\\n\\n### 6. Social / communication\\n\\n**Features**\\n\\n- Chat p\\u00fablico en matches y tournaments.\\n- Chat privado entre jugadores con perfil p\\u00fablico.\\n- Mute/block de chats.\\n- Push notifications sobre mensajes.\\n- Manager puede entrar al chat de match/reserva y enviar mensajes.\\n- Booking confirmation email configurable por cancha o global.\\n- Idioma de comunicaciones configurable.\\n- Club updates / notificaciones de actividades pr\\u00f3ximas.\\n- Profile privacy: cuenta privada impide apuntarse a public Playtomic matches.\\n\\n**Use cases**\\n\\n- Coordinar llegadas, sustituciones, dudas o reglas.\\n- Resolver huecos en partidos o torneos.\\n- Enviar instrucciones del club: parking, lockers, alquiler de palas.\\n- Re-engagement en favoritos/clubes frecuentes.\\n\\n### 7. Payments / wallets / checkout\\n\\n**Features jugador**\\n\\n- Pago con tarjeta cr\\u00e9dito/d\\u00e9bito/prepaid.\\n- **Club Wallet / Merchant Wallet** si el club lo activa.\\n- En algunas regiones/casos: cash/card onsite.\\n- Service charge informado antes de completar booking.\\n\\n**Features club**\\n\\n- Recargar wallet por jugador.\\n- Crear wallet offers visibles en app.\\n- Wallet por defecto del club para compensaciones/casos internos.\\n- Ver deudas y estados de pago en matches/bookings.\\n- Mark as paid onsite en algunos productos como tournaments.\\n- Nuevo modelo de negocio/billing con visibilidad en Stripe + payouts + summary table.\\n\\n**Use cases**\\n\\n- Prepaid balance y fidelizaci\\u00f3n por club.\\n- Compensaciones y goodwill credit.\\n- Incentivos comerciales con saldo extra.\\n- Simplificar pagos repetidos de usuarios frecuentes.\\n- Cobranza de outstanding payments.\\n\\n### 8. Memberships / benefits / categories\\n\\n**Features**\\n\\n- **Club Memberships** suscripci\\u00f3n mensual o anual con auto-renovaci\\u00f3n.\\n- Compra solo en app; pago por card v\\u00eda Stripe.\\n- Gesti\\u00f3n/cancelaci\\u00f3n desde app.\\n- Beneficios exclusivos definidos por el club.\\n- Incompatibilidad pr\\u00e1ctica entre membership y benefit category simult\\u00e1nea en el mismo club.\\n- Beneficios de terceros posibles si el club configura categor\\u00eda especial y email coincide.\\n- En API de players aparece entidad `benefits`; docs indican categor\\u00edas y memberships.\\n\\n**Use cases**\\n\\n- Club de socios con descuentos, prioridad de reserva u otros perks.\\n- Integraci\\u00f3n operacional con Wellpass, Wellhub, Hansefit, Gymlib, Urban Sports Club, Virgin Active, etc., cuando el club lo configure.\\n- Segmentar clientes frecuentes vs casuales.\\n- Retenci\\u00f3n y previsibilidad de revenue.\\n\\n### 9. Academy / coaching product\\n\\n**Qu\\u00e9 es**\\n\\nSoluci\\u00f3n built-in de entrenamiento para clubes y coaches.\\n\\n**Subproductos**\\n\\n- **Private Classes**\\n- **Public Classes / Clinics**\\n- **Courses**\\n\\n**Features**\\n\\n- Publicaci\\u00f3n en app; booking y pago in-app.\\n- Gesti\\u00f3n desde Playtomic Manager.\\n- Cursos multi-sesi\\u00f3n con pricing y niveles custom.\\n- Private classes con disponibilidad flexible de coach y pricing por coach/tipo.\\n- Public classes visibles y pagables por jugadores.\\n- Recurrence para public classes: creaci\\u00f3n de series, hasta 365 d\\u00edas, cancelaci\\u00f3n por sesi\\u00f3n/serie, manejo de conflictos de disponibilidad.\\n- Soporte a sesiones de leveling usando public classes dentro de Academy.\\n\\n**Use cases**\\n\\n- Escuela de menores o adultos.\\n- Clinics de fin de semana.\\n- Onboarding de beginners.\\n- Monetizaci\\u00f3n de coaches a agenda completa.\\n- Programas recurrentes de mejora y retenci\\u00f3n.\\n- Sessions de nivelaci\\u00f3n certificada.\\n\\n### 10. Tournaments\\n\\n**Features**\\n\\n- Crear torneos p\\u00fablicos o privados.\\n- Inscripci\\u00f3n individual o por parejas.\\n- Precio por equipo.\\n- Restricciones por min/max players, gender, level.\\n- Poster, prizes, welcome pack, description.\\n- Bloqueo autom\\u00e1tico de canchas al crear torneo.\\n- Pricing custom por categor\\u00eda o membership.\\n- Gesti\\u00f3n m\\u00f3vil completa.\\n- A\\u00f1adir jugador y marcar pago onsite o wallet.\\n- Remover jugadores con refund.\\n- Recurring tournaments / series: sesiones recurrentes; booking por sesi\\u00f3n individual.\\n- Chat p\\u00fablico en torneo.\\n\\n**Use cases**\\n\\n- Torneo social del fin de semana.\\n- Evento premium con premios y welcome pack.\\n- Campa\\u00f1as de adquisici\\u00f3n v\\u00eda evento.\\n- Series peri\\u00f3dicas sin recrear setup cada vez.\\n\\n### 11. Leagues\\n\\n**Features**\\n\\n- Crear ligas con reglas, scoring, restricciones, courts y timeframes.\\n- Enrollment price por equipo; paga el captain una vez.\\n- Sin fee por match individual.\\n- Gestionar teams: add/edit/remove/move between groups.\\n- Reemplazo de jugadores en futuras jornadas.\\n- Start round cuando calendario y grupos est\\u00e1n listos.\\n- Generaci\\u00f3n autom\\u00e1tica de matches basada en duraci\\u00f3n, horarios, canchas y disponibilidad real.\\n- Configurar puntos por resultado.\\n- Copiar liga, export players, copy public link.\\n- Refund autom\\u00e1tico si se cancela la liga.\\n- Pagos al club por modelo/quincena o semanal seg\\u00fan billing model.\\n\\n**Use cases**\\n\\n- Competici\\u00f3n amateur recurrente.\\n- Retenci\\u00f3n de jugadores avanzados.\\n- Venta de temporada por equipos.\\n- Organizaci\\u00f3n de calendario sin spreadsheet manual.\\n\\n### 12. Open Play\\n\\n**Estado**\\n\\n- Documentado como **solo disponible en clubs de Estados Unidos** al 6-9 Mar 2026.\\n- Enfocado especialmente en **pickleball**, pero extensible a otros deportes.\\n\\n**Features**\\n\\n- Programa dedicado distinto de tournament.\\n- Sesiones casuales 1-3 horas.\\n- Filtro espec\\u00edfico en app y reports.\\n- M\\u00e9tricas separadas de revenue, occupancy, participation.\\n- Formato social/drop-in autogestionado en cancha.\\n\\n**Use cases**\\n\\n- Pickleball open play.\\n- Sesiones sociales de alta rotaci\\u00f3n.\\n- Introducci\\u00f3n de nuevos jugadores sin rigidez competitiva.\\n- Monetizar bloques horarios amplios con din\\u00e1mica libre.\\n\\n### 13. Customers / CRM ligero\\n\\n**Features**\\n\\n- Base de clientes enlazada al club al reservar o marcar favorito.\\n- Export CSV de clientes.\\n- Visibilidad de wallets por cliente en export.\\n- Gesti\\u00f3n de customer wallets y balance.\\n- Asociar benefits/categories a usuarios.\\n- Ver marketing opt-in (`accepts_commercial_communications`) en API/export.\\n\\n**Use cases**\\n\\n- Construir base CRM del venue.\\n- Export para campa\\u00f1as o BI externo.\\n- Validar si el usuario tiene perks, wallet o estado especial.\\n\\n### 14. Pricing / schedule / operations engine\\n\\n**Features**\\n\\n- Pricing configurable por franja.\\n- Flexible durations 15-180 min.\\n- Horarios after-midnight.\\n- Calendar / schedule operativo.\\n- Reservas recurrentes.\\n- Bloqueos de canchas por torneos/classes.\\n- Autoselect court para matches.\\n- Reschedule reservations.\\n- Free reservations / price override.\\n\\n**Use cases**\\n\\n- Maximizar yield por franja horaria.\\n- Adaptar duraci\\u00f3n por deporte.\\n- Operar venues nocturnos.\\n- Evitar conflictos entre torneo, academy y open matches.\\n\\n### 15. Reporting / analytics\\n\\n**Features**\\n\\n- Reportes nuevos de **Revenues, Occupancy, Players, Payment Collection**.\\n- Filtros flexibles por fecha, comparaci\\u00f3n, corte por d\\u00eda/semana/mes/trimestre.\\n- Drill-down por court, sport, product.\\n- Local language support.\\n- Occupancy incluye tournaments y blocked hours.\\n- Players report agrega bookings, tournaments, leagues y otras actividades.\\n- Payment Collection basado en fecha de actividad; incluye pending/authorized.\\n- Export de data visible en la vista.\\n- Reports a nivel organizaci\\u00f3n para multi-club.\\n- Open Play filtrable como producto separado.\\n- Para extracciones grandes/custom: recomendaci\\u00f3n oficial usar API.\\n\\n**Use cases**\\n\\n- Medir revenue por producto.\\n- Medir ocupaci\\u00f3n por cancha/deporte.\\n- Entender retenci\\u00f3n/frecuencia de jugadores.\\n- Cobranza operativa y seguimiento de pendientes.\\n- Consolidado multi-sede.\\n\\n### 16. API / integraciones\\n\\n**Features confirmadas en docs p\\u00fablicas**\\n\\n- Credenciales desde `Settings -> Developer tools` en Playtomic Manager.\\n- API para **Bookings** y **Players**.\\n- `Bookings` expone tipos: regular booking, recurring booking, open match, league match, private class, course class, tournament, public class.\\n- `Bookings` expone resource, sport, origin, price, payment status, participants, coaches, course/activity IDs.\\n- `Players` expone datos personales, sports/levels, benefits y wallets opcionales.\\n- Soporte organizaci\\u00f3n/cadena por contacto con customer support.\\n\\n**Use cases**\\n\\n- BI externo / data warehouse.\\n- Sincronizaci\\u00f3n con CRM o marketing stack.\\n- Unificaci\\u00f3n multi-sede.\\n- Reporter\\u00eda custom no cubierta por UI.\\n- Auditor\\u00eda operativa de bookings, pagos, benefits y wallets.\\n\\n## Mapa de casos de uso por persona\\n\\n### Jugador casual\\n\\n- Reservar cancha con amigos.\\n- Dividir pago.\\n- Encontrar open match del mismo nivel.\\n- Chatear con participantes.\\n- Seguir clubes favoritos.\\n- Usar wallet o membership del club.\\n\\n### Jugador competitivo\\n\\n- Jugar matches que afecten nivel.\\n- Cargar resultados fuera de Playtomic.\\n- Unirse a ligas y torneos.\\n- Buscar partidos con nivel/g\\u00e9nero adecuados.\\n- Mantener historial y ranking personal.\\n\\n### Jugador beginner\\n\\n- Encontrar classes/clinics/courses.\\n- Usar Academy como onboarding.\\n- Participar en Open Play social o partidos de nivel inicial.\\n- Ser nivelado por club/coaches certificados.\\n\\n### Club independiente\\n\\n- Vender reservas online.\\n- Llenar horas valle con open matches/classes/torneos.\\n- Cobrar digitalmente y reducir no-shows.\\n- Mantener wallets y memberships.\\n- Medir ocupaci\\u00f3n y revenue.\\n\\n### Cadena multi-sede\\n\\n- Reportes organization-level.\\n- Operaci\\u00f3n homog\\u00e9nea entre venues.\\n- API para consolidaci\\u00f3n externa.\\n- Gesti\\u00f3n de benefits/wallets/jugadores por sede.\\n\\n### Coach / academia\\n\\n- Publicar clases privadas y grupales.\\n- Correr cursos recurrentes.\\n- Gestionar disponibilidad propia.\\n- Cobrar dentro del mismo stack.\\n- Hacer sesiones de leveling certificadas.\\n\\n## Mapa por jobs-to-be-done\\n\\n### JTBD: \\u201cquiero jugar hoy; no tengo grupo\\u201d\\n\\n- Open Matches\\n- Community Match\\n- Chat\\n- Matching por nivel\\n- Club discovery\\n\\n### JTBD: \\u201cquiero monetizar huecos muertos del club\\u201d\\n\\n- Open Matches autom\\u00e1ticos\\n- Public classes / clinics\\n- Open Play\\n- Tournaments\\n- Dynamic schedule/pricing\\n\\n### JTBD: \\u201cquiero fidelizar jugadores recurrentes\\u201d\\n\\n- Wallets\\n- Memberships\\n- Benefits/categories\\n- Academy courses\\n- Leagues\\n- Club updates / favoritos\\n\\n### JTBD: \\u201cquiero profesionalizar escuela/coach business\\u201d\\n\\n- Academy\\n- Recurrence\\n- Coach availability\\n- In-app payments\\n- Course/class visibility en app\\n\\n### JTBD: \\u201cquiero m\\u00e1s control de operaci\\u00f3n\\u201d\\n\\n- Manager schedule\\n- Reschedule\\n- Pricing engine\\n- Payment collection\\n- Reports\\n- API/export\\n\\n### JTBD: \\u201cquiero una capa social + competitiva, no solo reservas\\u201d\\n\\n- Open Matches\\n- Chat\\n- Level graph\\n- Results upload\\n- Tournaments/leagues\\n- Private messaging\\n\\n## Riesgos, l\\u00edmites y lectura cr\\u00edtica\\n\\n- **Cobertura regional desigual**: Open Play aparece oficialmente solo para US a marzo 2026.\\n- **Claims de escala inconsistentes en p\\u00e1ginas oficiales**: homepage dice 4M jugadores / 5500 clubes / 52 pa\\u00edses; Academy page menciona 2M+ jugadores visibles in-app. Probable diferencia de fecha/copy, no necesariamente contradicci\\u00f3n material, pero no conviene usar ambos sin nota.\\n- **Parte del backoffice est\\u00e1 detr\\u00e1s de login**: el mapeo se basa en p\\u00e1ginas p\\u00fablicas, help centers oficiales y API docs p\\u00fablicas; puede haber features internas no visibles p\\u00fablicamente.\\n- **API p\\u00fablica visible es acotada**: confirmadas p\\u00fablicamente sobre todo `Bookings` y `Players`; no asumir cobertura completa de todos los m\\u00f3dulos.\\n\\n## Recomendaci\\u00f3n de siguiente paso\\n\\nArmar un **segundo entregable comparativo** con este mismo mapa pero organizado como:\\n\\n1. **Feature tree** formal.\\n2. **Player journey** end-to-end.\\n3. **Club ops journey** end-to-end.\\n4. **Matriz features x persona x monetizaci\\u00f3n x regi\\u00f3n**.\\n5. **Gaps / oportunidades** frente a competidores o frente a un producto propio.\\n\\n## Fuentes primarias usadas\\n\\n- Playtomic homepage: https://playtomic.com/\\n- Playtomic Academy: https://playtomic.com/academy\\n- Player help, bookings: https://playerhelp.playtomic.com/hc/en-gb/articles/19831715222929-How-to-book-a-court-or-a-spot-in-a-match-in-your-favourite-Club\\n- Player help, reservations: https://playerhelp.playtomic.com/hc/en-gb/articles/19831881490449-How-to-make-a-reservation-in-Playtomic-app\\n- Player help, friendly vs competitive: https://playerhelp.playtomic.com/hc/en-gb/articles/19831437295377-Friendly-or-Competitive-Private-Reservations\\n- Player help, upload results: https://playerhelp.playtomic.com/hc/en-gb/articles/19831532392081-How-to-upload-results-from-matches-played-outside-Playtomic\\n- Player help, chat: https://playerhelp.playtomic.com/hc/en-gb/articles/19832063135249-How-you-can-chat-with-players-in-Matches-or-Tournaments\\n- Player help, private profile: https://playerhelp.playtomic.com/hc/en-gb/articles/19831908541329-How-to-make-your-profile-private\\n- Player help, private chat: https://playerhelp.playtomic.com/hc/en-gb/articles/19832055834769-Private-chat-between-players-in-Playtomic\\n- Player help, club updates: https://playerhelp.playtomic.com/hc/en-gb/articles/44465662231185-How-to-follow-your-favorite-club-activities\\n- Player help, memberships: https://playerhelp.playtomic.com/hc/en-gb/articles/19831425477649-Club-Membership\\n- Player help, third-party membership benefits: https://playerhelp.playtomic.com/hc/en-gb/articles/44586083037201-How-Third-Party-Membership-Benefits-Work-on-Playtomic\\n- Player help, payments: https://playerhelp.playtomic.com/hc/en-gb/articles/19831969439761-Payment-Methods-in-Playtomic\\n- Player help, community match: https://playerhelp.playtomic.com/hc/en-gb/articles/19831629310481-Community-Match-Play-on-Any-Court-Anywhere\\n- Manager help, open matches config: https://helpmanager.playtomic.com/hc/en-gb/articles/20535035123473-How-to-configure-Open-Matches-at-your-Club\\n- Manager help, open matches management: https://helpmanager.playtomic.com/hc/en-gb/articles/20534737902353-How-to-manage-Open-Matches-in-Playtomic-Manager\\n- Manager help, add/remove players in open match: https://helpmanager.playtomic.com/hc/en-gb/articles/20535085001361-How-to-add-remove-players-in-an-Open-Match\\n- Manager help, open match slot rules: https://helpmanager.playtomic.com/hc/en-gb/articles/20535700374929-Understanding-When-Public-Matches-Occupy-Club-Calendar-Slots\\n- Manager help, reservations: https://helpmanager.playtomic.com/hc/en-gb/articles/20535410170769-How-to-add-a-reservation\\n- Manager help, reschedule reservation: https://helpmanager.playtomic.com/hc/en-gb/articles/20535241098257-How-to-reschedule-a-reservation\\n- Manager help, flexible booking duration: https://helpmanager.playtomic.com/hc/en-gb/articles/20534683083793-Flexible-Booking-Duration\\n- Manager help, after-midnight reservations: https://helpmanager.playtomic.com/hc/en-gb/articles/20535206048913-Setting-the-time-reservation-after-midnight\\n- Manager help, Academy: https://helpmanager.playtomic.com/hc/en-gb/articles/20559686617361-Academy\\n- Manager help, public class recurrence: https://helpmanager.playtomic.com/hc/en-gb/articles/43089011499537-Public-Class-Recurrence-Streamline-Your-Class-Scheduling\\n- Manager help, tournaments: https://helpmanager.playtomic.com/hc/en-gb/articles/20563451171985-How-to-Create-a-Single-Tournament-in-Playtomic-Manager\\n- Manager help, recurring tournaments: https://helpmanager.playtomic.com/hc/en-gb/articles/43084071994385-Tournament-Recurrence-Create-Recurring-Tournaments-Efficiently\\n- Manager help, leagues: https://helpmanager.playtomic.com/hc/en-gb/articles/20535741575057-How-to-launch-a-League\\n- Manager help, league teams: https://helpmanager.playtomic.com/hc/en-gb/articles/20535715479057-How-to-manage-teams-in-a-League\\n- Manager help, league rounds: https://helpmanager.playtomic.com/hc/en-gb/articles/20535741310353-How-to-Start-a-Round-in-a-League\\n- Manager help, league timeframes/courts: https://helpmanager.playtomic.com/hc/en-gb/articles/20535055853201-How-to-manage-time-frames-and-courts-in-a-league\\n- Manager help, communication: https://helpmanager.playtomic.com/hc/en-gb/articles/20535292080145-Communication-and-notifications\\n- Manager help, wallets: https://helpmanager.playtomic.com/hc/en-gb/articles/20535667026961-Club-or-Merchant-Wallets\\n- Manager help, reports: https://helpmanager.playtomic.com/hc/en-gb/articles/43127115602961-New-Revenues-Occupancy-Players-Payment-Collection-Reports-for-Clubs\\n- Manager help, new billing model: https://helpmanager.playtomic.com/hc/en-gb/articles/26470554139025-How-to-Check-Payments-in-New-Business-Model\\n- Manager help, Open Play US: https://helpmanager.playtomic.com/hc/en-gb/articles/44504259363089-Introducing-Open-Play-Programs-in-Playtomic-Manager-U-S-Clubs\\n- Player help, Open Play US: https://playerhelp.playtomic.com/hc/en-gb/articles/44583001609105-How-to-Find-and-Join-Open-Play-in-the-Playtomic-App\\n- Playtomic Third Party API home: https://third-party.playtomic.io/\\n- Playtomic Third Party API bookings: https://third-party.playtomic.io/endpoints/bookings/\\n- Playtomic Third Party API players: https://third-party.playtomic.io/endpoints/players/\\n\\n## Fecha de corte\\n\\nInvestigaci\\u00f3n verificada con fuentes p\\u00fablicas oficiales disponibles el **16 de marzo de 2026**.\", \"summary\": \"## Brief ejecutivo\\n\\n**Qu\\u00e9 es Playtomic**\\n\\nPlaytomic es una plataforma de dos caras para deportes de raqueta y, en partes del producto, otros deportes de pista/cancha. Tiene cuatro \", \"confidence\": 1.0, \"freshness\": 1.0, \"created_at\": \"2026-03-16T12:12:37.767831+00:00\", \"updated_at\": \"2026-03-16T12:12:37.767831+00:00\", \"observed_at\": \"2026-03-16T12:12:37.767831+00:00\", \"source_ref\": \"personal-agent\", \"evidence_ref\": \"art_125b83a073844abe9365f9ac3c059702\", \"metadata\": {\"task_id\": \"task_5d0483a646cc44c6871b8d7311ba6179\", \"task_run_id\": \"run_3f9475dd645e4ec4bf1638762b82f139\"}, \"embedding\": [0.5062355017880487, 0.44052524686118527, 0.4038669365802302, 0.3548759368650277, 0.3173353092406721, 0.27192757145292157, 0.22972514771567373, 0.1822024820868766]}, \"score\": 0.5424860743779314, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.9499071625195423, \"confidence\": 1.0, \"freshness\": 1.0}, \"matched_scope\": \"agent\", \"evidence_ref\": \"art_125b83a073844abe9365f9ac3c059702\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.95 confidence=1.00 freshness=1.00\"}, {\"memory\": {\"id\": \"mem_91efc09fc3c24f1187843793c0bc72d5\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"artifact\", \"subtype\": \"research_claim\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"task_id\": null, \"url\": \"https://matchable.io/business/pricing\", \"domain\": \"matchable.io\", \"source_kind\": \"manual\", \"title\": \"Research claim: Existe desalineacion publica entre superficies y madurez: pricing marca courses,\", \"content\": \"Existe desalineacion publica entre superficies y madurez: pricing marca courses, insights, manual payment links e in-person payments como coming soon, pero help center y release notes del client app ya documentan courses y credits como experiencias operativas.\", \"summary\": \"Existe desalineacion publica entre superficies y madurez: pricing marca courses, insights, manual payment links e in-person payments como coming soon, pero help center y release no\", \"confidence\": 0.88, \"freshness\": 0.75, \"created_at\": \"2026-03-24T14:21:45.412408+00:00\", \"updated_at\": \"2026-03-24T14:21:45.412408+00:00\", \"observed_at\": \"2026-03-24T14:21:45.412408+00:00\", \"source_ref\": \"personal-agent:run:a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"evidence_ref\": \"https://matchable.io/business/pricing\", \"metadata\": {\"claim_status\": \"verified\", \"source_url\": \"https://matchable.io/business/pricing\"}, \"embedding\": [0.5095443935042984, 0.45138987033261213, 0.4227003055679136, 0.3848167876160723, 0.3123728673222003, 0.24945521177645216, 0.1951776568162117, 0.1093305035627701]}, \"score\": 0.5212527906689632, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.9230186044597548, \"confidence\": 0.88, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://matchable.io/business/pricing\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.92 confidence=0.88 freshness=0.75\"}, {\"memory\": {\"id\": \"mem_c5daa1cd083c4007a00cc1e949e0dc65\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"artifact\", \"subtype\": \"research_artifact\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"task_id\": null, \"url\": \"https://help.matchable.io/en/articles/41-getting-started-with-courses\", \"domain\": \"help.matchable.io\", \"source_kind\": \"manual\", \"title\": \"Capture: Getting started with courses | Matchable\", \"content\": \"{\\\"content_type\\\": \\\"text/html; charset=utf-8\\\", \\\"text\\\": \\\"Help center Go to Matchable Czech English Spanish All collections Business Manager Services Courses Getting started with courses Getting started with courses Using the courses functionality inside the manager Courses let you run multi-week programs like an 8-week tennis academy, a beginner padel series, or a 12-week fitness transformation. Clients enroll once, pay upfront, and get access to all sessions in the program. Use courses when you're running a structured program with a fixed number of sessions over a set period. For one-off group sessions, use Classes instead. What you can do with Courses: Set up a full program with multiple sessions across weeks Manage enrollment and participant limits Collect payments upfront for the whole program Enable Smart Courses so new clients can join after the course has started (they pay per remaining session) Set cancellation and refund policies How courses work for your clients: They find your course on your profile or through a shared link They see the full schedule, pricing, and details They enroll and pay in one go They get access to all upcoming sessions Ready to set one up? Start with creating a page template. Did this answer your question? \\\\ud83d\\\\ude1e \\\\ud83d\\\\ude10 \\\\ud83d\\\\ude01 Getting started with courses | Matchable\\\", \\\"title\\\": \\\"Getting started with courses | Matchable\\\", \\\"url\\\": \\\"https://help.matchable.io/en/articles/41-getting-started-with-courses\\\"}\", \"summary\": \"Getting started with courses | Matchable\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-24T14:20:37.435410+00:00\", \"updated_at\": \"2026-03-24T14:20:37.435410+00:00\", \"observed_at\": \"2026-03-24T14:20:37.435410+00:00\", \"source_ref\": \"personal-agent:run:a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"evidence_ref\": \"https://help.matchable.io/en/articles/41-getting-started-with-courses\", \"metadata\": {\"artifact_kind\": \"source_capture\"}, \"embedding\": [0.5109475542328783, 0.48371294467937825, 0.44895298248609533, 0.34628567147191447, 0.27919456460400877, 0.23804402516900547, 0.19532072684896817, 0.103523369647807]}, \"score\": 0.5120169464499673, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.9134463096664494, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://help.matchable.io/en/articles/41-getting-started-with-courses\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.91 confidence=0.75 freshness=0.75\"}, {\"memory\": {\"id\": \"mem_3d48d97c66d04808844820d8f1e5e8f8\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"artifact\", \"subtype\": \"research_artifact\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"task_id\": null, \"url\": \"https://matchable.io/business/pricing\", \"domain\": \"matchable.io\", \"source_kind\": \"manual\", \"title\": \"Capture: Pricing | Software automation tool for your business\", \"content\": \"{\\\"content_type\\\": \\\"text/html; charset=utf-8\\\", \\\"text\\\": \\\"Pricing | Software automation tool for your business Integrate your bookings with MATCHi Learn more Pricing Resources For clients Request demo English Spanish French Czech Create account Software that grows with your business Matchable is subscription-free for venues, independent trainers, and organizers. For business For freelancers For venues or academies Matchable takes as low as 1.8% to keep the engines running. Pay only when receiving a payment. No upfront fees, no hidden costs, not for you, not for your client. Accept payments in 36+ countries Keep track through the trainer application Add your availability and holidays Add your certifications, skills and more Instantly receive payments 1.8% / Per transaction Create account Request demo Features Private training service Unlimited services Classes and events Unlimited schedules Courses Coming soon Unlimited seasons Promotion tools Free Automated invoices Free Client CRM Unlimited clients Insights Coming soon Coming soon Recruitment Venue profile Manager Web-only manager to manage your everyday Trainer application Let your trainers manager their profile, bookings, availabilities and more. Free Multi-venue management Manage multiple venues from your manager Unlimited venues Manager seats Add multiple manager to your account Unlimited seats Payments Online payments You only pay when you get paid. Simple as that. We only take a small commission when you receive money through a booking. * Stripe or Mollie will also charge standard processing fees, which depend on the payment method selected. 1.8%* Subscription fee No monthly fee, no hidden costs Free Client fee Matchable doesn't monetise your clients, not now, not ever. Fair and square. Free Manual payment links Coming soon Coming soon In-person payments Coming soon Coming soon Manual bookings Free Matchable Marketplace (optional) No additional fee applied to new clients who discover your business via the marketplace. Free Optional add-ons Matchable Widget Show your services and activities on your own website through our widget. On request Google Calendar View your Matchable bookings in your own Apple or Google calendar. Free Stripe Receive payments Free Mollie Receive payments Free MATCHi Automate court bookings Free Coming soon Google Analytics Automate court bookings Coming soon Coming soon Meta Pixel Automate court bookings Coming soon Support Chat support Available through Manager Panel Email support Response within 24 hours Knowledge base Video Support Dedicated agent For freelancers or organisers Matchable takes as low as 1.8% to keep the engines running. Pay only when receiving a payment. No upfront fees, no hidden costs, not for you, not for your client. Accept payments in 36+ countries Manage your trainers and activities Automate your back-office Unlimited connected trainers Instantly receive payments 1.8% / Per transaction Create account Request demo Features Private training service Unlimited services Classes and events Unlimited schedules Courses Coming soon Unlimited seasons Promotion tools Free Automated invoices Free Client CRM Unlimited clients Insights Coming soon Coming soon Recruitment - Venue profile - Manager Web-only manager to manage your everyday Trainer application Let your trainers manager their profile, bookings, availabilities and more. Free Multi-venue management Manage multiple venues from your manager Unlimited venues Manager seats Add multiple manager to your account - Payments Online payments You only pay when you get paid. Simple as that. We only take a small commission when you receive money through a booking. * Stripe or Mollie will also charge standard processing fees, which depend on the payment method selected. 1.8%* Subscription fee No monthly fee, no hidden costs Free Client fee Matchable doesn't monetise your clients, not now, not ever. Fair and square. Free Manual payment links Coming soon Coming soon In-person payments Coming soon Coming soon Manual bookings Free Matchable Marketplace (optional) No additional fee applied to new clients who discover your business via the marketplace. Free Optional add-ons Matchable Widget Show your services and activities on your own website through our widget. Free Google Calendar View your Matchable bookings in your own Apple or Google calendar. Free Stripe Receive payments Free Mollie Receive payments Free MATCHi Automate court bookings Free Google Analytics Automate court bookings Coming soon Meta Pixel Automate court bookings Coming soon Support Chat support Available through Manager Panel Email support Response within 24 hours Knowledge base Video Support - Dedicated agent - Freelancer Business Pricing? Glad you asked Matchable takes as low as 1.8% to keep the engines running. Pay only when receiving a payment. No upfront fees, no hidden costs, not for you, not for your client. Accept payments in 36+ countries Keep track through the trainer application Add your availability and holidays Add your certifications, skills and more Instantly receive payments 1.8% / Per transaction Create account Request demo Manage your trainers and activities Automate your back-office Unlimited connected trainers Instantly receive payments 1.8% / Per transaction Create account Request demo Features Private training service Unlimited services Classes and events Unlimited schedules Courses Coming soon Unlimited seasons Promotion tools Free Automated invoices Free Client CRM Unlimited clients Insights Coming soon Coming soon Recruitment - Venue profile - Manager Web-only manager to manage your everyday Trainer application Let your trainers manager their profile, bookings, availabilities and more. Free Multi-venue management Manage multiple venues from your manager Unlimited venues Manager seats Add multiple manager to your account - Unlimited seats Payments Online payments You only pay when you get paid. Simple as that. We only take a small commission when you receive money through a booking. * Stripe or Mollie will also charge standard processing fees, which depend on the payment method selected. 1.8%* 1.8%* Subscription fee No monthly fee, no hidden costs Free Client fee Matchable doesn't monetise your clients, not now, not ever. Fair and square. Free Manual payment links Coming soon Coming soon In-person payments Coming soon Coming soon Manual bookings Free Matchable Marketplace (optional) No additional fee applied to new clients who discover your business via the marketplace. Free Optional add-ons Matchable Widget Show your services and activities on your own website through our widget. Free On request Google Calendar View your Matchable bookings in your own Apple or Google calendar. Free Stripe Receive payments Free Mollie Receive payments Free MATCHi Automate court bookings On request Coming soon Google Analytics Automate court bookings Coming soon Coming soon Meta Pixel Automate court bookings Coming soon Support Chat support Available through Manager Panel Email support Response within 24 hours Knowledge base Video Support - Dedicated agent - Frequently asked questions. Answered. What is Matchable? Matchable is an academy automation tool and a global marketplace in one. Trainers and venues can showcase themselves to clients and businesses to get booked instantly. You can automate lessons bookings, trainer schedules and court reservations. Players book and pay in Matchable and courts are auto-assigned in real time through MATCHi. How can I join Matchable as a venue or a trainer? We\\\\u2019d love to have you on the platform! Visit this page to register and we'll reach out to you as soon as possible. Is there a cost for using Matchable? Matchable takes as low as 1.8% to keep the engines running. Pay only when receiving a payment. No upfront fees, no hidden costs, not for you, not for your client. Can I still use MATCHi for my bookings? Yes, for sure! The integration is only visible in the back-office admin of the Matchable Manager. How do I offer private training as a service using Matchable and MATCHi? It\\\\u2019s very easy. The first step is to request your account, and from there, read this article for the step by step guide. How do I integrate with Matchable as a MATCHi club? You only have to register once, and we\\\\u2019ll guide you through the integration process, read the full article here for onboarding . How to contact you if I have any additional questions? We\\\\u2019re happy to hear from you, so you can contact us for an introduction call here or send us an email at info@getmatchable.com . Does Matchable have an App? Yes, we have a Trainer App and Client App that we recently launched. You can download them in the Apple Store or on Google Play . Marketplace Log in Create account List your business Report a bug Support Request demo Talk to sales Help Center Voucher balance Contact us Company Integrations Partnerships Company news Work with us Investor portal Tools Resource overview Talent interviews Press kit \\\\u00a9 2025 Matchable Privacy Policy Terms of Service Cookies Settings Follow-us\\\", \\\"title\\\": \\\"Pricing | Software automation tool for your business\\\", \\\"url\\\": \\\"https://matchable.io/business/pricing\\\"}\", \"summary\": \"Pricing | Software automation tool for your business\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-24T14:20:17.332786+00:00\", \"updated_at\": \"2026-03-24T14:20:17.332786+00:00\", \"observed_at\": \"2026-03-24T14:20:17.332786+00:00\", \"source_ref\": \"personal-agent:run:a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"evidence_ref\": \"https://matchable.io/business/pricing\", \"metadata\": {\"artifact_kind\": \"source_capture\"}, \"embedding\": [0.5292556164037588, 0.48531753305805714, 0.43653241186476366, 0.3554767198589, 0.26573727628063015, 0.22618041156080354, 0.17905398448808205, 0.11660588193349267]}, \"score\": 0.5113723428095701, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.9091489520638013, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://matchable.io/business/pricing\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.91 confidence=0.75 freshness=0.75\"}, {\"memory\": {\"id\": \"mem_df11bce275a34e1682a74337dcb24eb6\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"artifact\", \"subtype\": \"research_artifact\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"task_id\": null, \"url\": \"https://www.matchable.io/\", \"domain\": \"www.matchable.io\", \"source_kind\": \"manual\", \"title\": \"Capture: Matchable | Book trainers, venues & classes\", \"content\": \"{\\\"content_type\\\": \\\"text/html;charset=utf-8\\\", \\\"text\\\": \\\"Matchable | Book trainers, venues & classes Explore Activities List your business Toggle user menu Toggle user menu ONE PLATFORM. BOOK EVERY SPORT. From fitness to yoga to padel and everything in between. Find, book, and start moving with top-rated trainers, classes and events. Or start exploring trainers All the best trainers, classes and events in one place. Find your match. Search top-rated trainers, classes, courses and events in every sport you like. A straightforward calendar. Find a date and time that works for you, based on your trainer availability. Simple. Payments, simplified. Confirm instantly with your preferred payment method. No hidden platform fees or costs. Reviewed trainers. We know it\\\\u2019s important to find the right fit. Write reviews to help others find their perfect match. Matchable for users Find classes, private trainings and courses on Matchable. Find a date and time that works for you and instantly book at your favourite venue or trainer. No memberships, no booking fee, just get moving. Filter and discover trainers and venues Keep track of your booked sessions Start exploring Matchable for business Matchable for venues or trainers Give your business a boost with the easy-to-use reservation platform for your services. From scheduling to invoicing, so you can focus on what you do best. Showcase your services and reach new clients Automate your back-office and improve occupancy More information Frequently asked questions Answered. Explore your next work-out today Start exploring Get started Log in Create account Explore trainers Voucher Balance Platform For trainers For venues Request invite Talk to sales Company Integrations Partnerships Work with us Investor portal Tools Tool overview Company news Talent interviews Support Helpdesk Report a bug Contact us \\\\u00a92025 Matchable All Rights Reserved Privacy Policy Terms of Service Cookies Settings Follow us\\\", \\\"title\\\": \\\"Matchable | Book trainers, venues & classes\\\", \\\"url\\\": \\\"https://www.matchable.io/\\\"}\", \"summary\": \"Matchable | Book trainers, venues & classes\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-24T14:20:17.672712+00:00\", \"updated_at\": \"2026-03-24T14:20:17.672712+00:00\", \"observed_at\": \"2026-03-24T14:20:17.672712+00:00\", \"source_ref\": \"personal-agent:run:a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"evidence_ref\": \"https://www.matchable.io/\", \"metadata\": {\"artifact_kind\": \"source_capture\"}, \"embedding\": [0.5297011932814333, 0.4884848859356427, 0.4284444982069757, 0.36430214669338346, 0.26600954188816983, 0.2184998106531788, 0.1761737254340694, 0.12238461813105914]}, \"score\": 0.5113019745784302, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.9086798305228684, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://www.matchable.io/\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.91 confidence=0.75 freshness=0.75\"}]}"}],"isError":false,"timestamp":1776862698781}}
{"type":"message","id":"3a01ba88","parentId":"f006c5dd","timestamp":"2026-04-22T12:59:20.675Z","message":{"role":"assistant","content":[{"type":"text","text":"La memoria reciente sobre **payments** (24/03/2026) está vinculada a la investigación de **Matchable** y destaca lo siguiente:\n\n### Hallazgos de Payments (Matchable)\n- **Comisión**: Matchable cobra un **1.8% por transacción** (sin fees mensuales ni costos ocultos para el cliente).\n- **Checkout**: Los pagos son online y simplificados, soportando **Stripe y Mollie**.\n- **Desalineación Detectada**: Hay una discrepancia pública; la web de pricing marca *manual payment links* e *in-person payments* como **\"Coming soon\"**, pero el Help Center y las notas de la app ya los documentan como operativos.\n- **Modelo**: \"Pay only when you get paid\". Se enfoca en automatizar el back-office (invoicing) para entrenadores y clubes.\n\n### Contexto adicional (Playtomic - 16/03/2026)\nTambién hay un mapeo exhaustivo de **Playtomic** donde se detalla:\n- **Split Payment**: Permite dividir el pago de una reserva entre varios jugadores.\n- **Club/Merchant Wallets**: Sistema de saldo prepago gestionado por el club para fidelización y compensaciones.\n- **Modelos de Billing**: Visibilidad de payouts y tablas de resumen integradas con Stripe.\n\n¿Querés que profundice en alguno de estos modelos o que explore algo más en la API?","textSignature":"CiEBjz1rX88gnHbUtad0N67gpMyYnDrxHMSfWnUoN2fRzew="}],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":34639,"output":314,"cacheRead":0,"cacheWrite":0,"totalTokens":34953,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"stop","timestamp":1776862698786,"responseId":"JcboacPdGMjEodAP0vr1-As"}}
{"type":"message","id":"c9246757","parentId":"3a01ba88","timestamp":"2026-04-22T13:00:59.368Z","message":{"role":"user","content":[{"type":"text","text":"no. una de hoy de POS"}],"timestamp":1776862859367}}
{"type":"message","id":"99232566","parentId":"c9246757","timestamp":"2026-04-22T13:01:01.796Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"bash_1776862861731_5","name":"bash","arguments":{"command":"curl -s \"http://100.116.176.16:8091/api/search?q=POS&limit=5&sort=created_at:desc\""},"thoughtSignature":"CiEBjz1rX8qdQi4WBGdYpsDDFXuEKGQQ7/mx/iw6T/QMp/0="}],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":15567,"output":52,"cacheRead":19393,"cacheWrite":0,"totalTokens":35012,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"toolUse","timestamp":1776862859368,"responseId":"jMboaZmAEN_w6tkPlIaC-Ag"}}
{"type":"message","id":"c7b2cce5","parentId":"99232566","timestamp":"2026-04-22T13:01:01.868Z","message":{"role":"toolResult","toolCallId":"bash_1776862861731_5","toolName":"bash","content":[{"type":"text","text":"{\"retrieval_id\": \"ret_ffa91415488b4d4987221be18060229d\", \"results\": [{\"memory\": {\"id\": \"7894b496-f046-4f8a-bd07-1ab347f6fdb3\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": \"research_run\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"7894b496-f046-4f8a-bd07-1ab347f6fdb3\", \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"run\", \"title\": \"Research run: Show open tasks in the personal-agent UI and let the operator promote them to draft\", \"content\": \"Goal: Show open tasks in the personal-agent UI and let the operator promote them to draft\\nScope: personal-agent daemon UI, runtime, and task-state transition flow\\nAssumptions: Open is the backlog state; draft is the runtime-ready state; the UI should expose open parent tasks clearly and offer an explicit action to move selected tasks into draft without auto-starting them.\\nSummary: Show open tasks in the personal-agent UI and let the operator promote them to draft\", \"summary\": \"Show open tasks in the personal-agent UI and let the operator promote them to draft\", \"confidence\": 0.9, \"freshness\": 0.85, \"created_at\": \"2026-03-17T01:30:48.383099+00:00\", \"updated_at\": \"2026-03-24T14:18:16.800091+00:00\", \"observed_at\": \"2026-03-17T01:30:48.383254+00:00\", \"source_ref\": \"personal-agent:run:7894b496-f046-4f8a-bd07-1ab347f6fdb3\", \"evidence_ref\": \"personal-agent:run:7894b496-f046-4f8a-bd07-1ab347f6fdb3\", \"metadata\": {\"assumptions\": \"Open is the backlog state; draft is the runtime-ready state; the UI should expose open parent tasks clearly and offer an explicit action to move selected tasks into draft without auto-starting them.\", \"completed_at\": null, \"goal\": \"Show open tasks in the personal-agent UI and let the operator promote them to draft\", \"run_status\": \"active\", \"schema\": \"shared-agent-memory-v2\", \"scope\": \"personal-agent daemon UI, runtime, and task-state transition flow\", \"subtype\": \"research_run\", \"summary\": \"Show open tasks in the personal-agent UI and let the operator promote them to draft\"}, \"embedding\": [0.533405942659711, 0.5310862260692605, 0.4327560172629402, 0.3498261491543333, 0.2639321987357062, 0.1869304952471396, 0.1166946318140537, 0.07448867718224522]}, \"score\": 0.5174732161181264, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.8631547741208427, \"confidence\": 0.9, \"freshness\": 0.85}, \"matched_scope\": \"global\", \"evidence_ref\": \"personal-agent:run:7894b496-f046-4f8a-bd07-1ab347f6fdb3\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.86 confidence=0.90 freshness=0.85\"}, {\"memory\": {\"id\": \"legacy_claim_7e6517b3-759f-4063-8d98-121d9cba45c5_f211af78097e660e\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"artifact\", \"subtype\": \"research_claim\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"7e6517b3-759f-4063-8d98-121d9cba45c5\", \"task_id\": null, \"url\": \"https://api.github.com/orgs/Trading-Mastery\", \"domain\": \"api.github.com\", \"source_kind\": \"manual\", \"title\": \"Research claim: A private repository named Trading Mastery backend is plausible given the org ha\", \"content\": \"A private repository named Trading Mastery backend is plausible given the org has zero public repos, but its existence cannot be confirmed from public sources alone.\", \"summary\": \"A private repository named Trading Mastery backend is plausible given the org has zero public repos, but its existence cannot be confirmed from public sources alone.\", \"confidence\": 0.45, \"freshness\": 0.7, \"created_at\": \"2026-03-13T14:01:39.695024+00:00\", \"updated_at\": \"2026-03-24T14:18:16.798305+00:00\", \"observed_at\": \"2026-03-13T14:01:39.695024+00:00\", \"source_ref\": \"personal-agent:run:7e6517b3-759f-4063-8d98-121d9cba45c5\", \"evidence_ref\": \"https://api.github.com/orgs/Trading-Mastery\", \"metadata\": {\"claim_status\": \"tentative\", \"schema\": \"shared-agent-memory-v2\", \"subtype\": \"research_claim\"}, \"embedding\": [0.5472179118747202, 0.48183247479741553, 0.42586117133071755, 0.3370259832597198, 0.2911534776662181, 0.23620917059340443, 0.16654458187491486, 0.0717185815062583]}, \"score\": 0.48085082384154354, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.8390054922769565, \"confidence\": 0.45, \"freshness\": 0.7}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://api.github.com/orgs/Trading-Mastery\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.84 confidence=0.45 freshness=0.70\"}, {\"memory\": {\"id\": \"legacy_run_fbe3fc0d-b05c-455e-9afe-1b17b4640d97\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": \"research_run\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"fbe3fc0d-b05c-455e-9afe-1b17b4640d97\", \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"run\", \"title\": \"Research run: Responder a Codex sin salir de una pel\\u00edcula en fullscreen, con UI m\\u00ednima y poco intrusiva, y evaluar c\\u00f3mo implementarlo\", \"content\": \"Goal: Responder a Codex sin salir de una pel\\u00edcula en fullscreen, con UI m\\u00ednima y poco intrusiva, y evaluar c\\u00f3mo implementarlo\\nScope: Mac local; tarea doble: investigar enfoques posibles y luego construir/probar un overlay o input transparente que aparezca solo al responder mientras una pel\\u00edcula est\\u00e1 en pantalla completa\\nAssumptions: La prioridad es uso personal en la Mac de Sebas; se acepta prototipo primero; no se decidi\\u00f3 todav\\u00eda si ser\\u00e1 app nativa, helper global, overlay del sistema o integraci\\u00f3n con una app existente\\nSummary: Conclusi\\u00f3n: no conviene app nativa primero. Orden simple: 1) BetterTouchTool para overlay/input sin reinventar, 2) Raycast si basta una UI ya hecha, 3) Hammerspoon si hace falta overlay transparente y m\\u00e1s control. Gaps: falta probar cu\\u00e1l de las tres convive mejor con tu reproductor fullscreen concreto y con el env\\u00edo real a Codex.\", \"summary\": \"Conclusi\\u00f3n: no conviene app nativa primero. Orden simple: 1) BetterTouchTool para overlay/input sin reinventar, 2) Raycast si basta una UI ya hecha, 3) Hammerspoon si hace falta overlay transparente y m\\u00e1s control. Gaps: falta probar cu\\u00e1l de las tres convive mejor con tu reproductor fullscreen concreto y con el env\\u00edo real a Codex.\", \"confidence\": 0.85, \"freshness\": 0.8, \"created_at\": \"2026-03-13T14:01:39.640125+00:00\", \"updated_at\": \"2026-03-24T14:18:16.797523+00:00\", \"observed_at\": \"2026-03-11T03:29:21.466601+00:00\", \"source_ref\": \"personal-agent:run:fbe3fc0d-b05c-455e-9afe-1b17b4640d97\", \"evidence_ref\": \"personal-agent:run:fbe3fc0d-b05c-455e-9afe-1b17b4640d97\", \"metadata\": {\"assumptions\": \"La prioridad es uso personal en la Mac de Sebas; se acepta prototipo primero; no se decidi\\u00f3 todav\\u00eda si ser\\u00e1 app nativa, helper global, overlay del sistema o integraci\\u00f3n con una app existente\", \"goal\": \"Responder a Codex sin salir de una pel\\u00edcula en fullscreen, con UI m\\u00ednima y poco intrusiva, y evaluar c\\u00f3mo implementarlo\", \"run_status\": \"completed\", \"schema\": \"shared-agent-memory-v2\", \"scope\": \"Mac local; tarea doble: investigar enfoques posibles y luego construir/probar un overlay o input transparente que aparezca solo al responder mientras una pel\\u00edcula est\\u00e1 en pantalla completa\", \"subtype\": \"research_run\", \"summary\": \"Conclusi\\u00f3n: no conviene app nativa primero. Orden simple: 1) BetterTouchTool para overlay/input sin reinventar, 2) Raycast si basta una UI ya hecha, 3) Hammerspoon si hace falta overlay transparente y m\\u00e1s control. Gaps: falta probar cu\\u00e1l de las tres convive mejor con tu reproductor fullscreen concreto y con el env\\u00edo real a Codex.\"}, \"embedding\": [0.5501927213592372, 0.5001722806751118, 0.4047254410652616, 0.33459402037582947, 0.2849269675192733, 0.20660337446346225, 0.17698304927992747, 0.127155365592658]}, \"score\": 0.5088033936967906, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.8386892913119379, \"confidence\": 0.85, \"freshness\": 0.8}, \"matched_scope\": \"global\", \"evidence_ref\": \"personal-agent:run:fbe3fc0d-b05c-455e-9afe-1b17b4640d97\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.84 confidence=0.85 freshness=0.80\"}, {\"memory\": {\"id\": \"mem_3d48d97c66d04808844820d8f1e5e8f8\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"artifact\", \"subtype\": \"research_artifact\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"task_id\": null, \"url\": \"https://matchable.io/business/pricing\", \"domain\": \"matchable.io\", \"source_kind\": \"manual\", \"title\": \"Capture: Pricing | Software automation tool for your business\", \"content\": \"{\\\"content_type\\\": \\\"text/html; charset=utf-8\\\", \\\"text\\\": \\\"Pricing | Software automation tool for your business Integrate your bookings with MATCHi Learn more Pricing Resources For clients Request demo English Spanish French Czech Create account Software that grows with your business Matchable is subscription-free for venues, independent trainers, and organizers. For business For freelancers For venues or academies Matchable takes as low as 1.8% to keep the engines running. Pay only when receiving a payment. No upfront fees, no hidden costs, not for you, not for your client. Accept payments in 36+ countries Keep track through the trainer application Add your availability and holidays Add your certifications, skills and more Instantly receive payments 1.8% / Per transaction Create account Request demo Features Private training service Unlimited services Classes and events Unlimited schedules Courses Coming soon Unlimited seasons Promotion tools Free Automated invoices Free Client CRM Unlimited clients Insights Coming soon Coming soon Recruitment Venue profile Manager Web-only manager to manage your everyday Trainer application Let your trainers manager their profile, bookings, availabilities and more. Free Multi-venue management Manage multiple venues from your manager Unlimited venues Manager seats Add multiple manager to your account Unlimited seats Payments Online payments You only pay when you get paid. Simple as that. We only take a small commission when you receive money through a booking. * Stripe or Mollie will also charge standard processing fees, which depend on the payment method selected. 1.8%* Subscription fee No monthly fee, no hidden costs Free Client fee Matchable doesn't monetise your clients, not now, not ever. Fair and square. Free Manual payment links Coming soon Coming soon In-person payments Coming soon Coming soon Manual bookings Free Matchable Marketplace (optional) No additional fee applied to new clients who discover your business via the marketplace. Free Optional add-ons Matchable Widget Show your services and activities on your own website through our widget. On request Google Calendar View your Matchable bookings in your own Apple or Google calendar. Free Stripe Receive payments Free Mollie Receive payments Free MATCHi Automate court bookings Free Coming soon Google Analytics Automate court bookings Coming soon Coming soon Meta Pixel Automate court bookings Coming soon Support Chat support Available through Manager Panel Email support Response within 24 hours Knowledge base Video Support Dedicated agent For freelancers or organisers Matchable takes as low as 1.8% to keep the engines running. Pay only when receiving a payment. No upfront fees, no hidden costs, not for you, not for your client. Accept payments in 36+ countries Manage your trainers and activities Automate your back-office Unlimited connected trainers Instantly receive payments 1.8% / Per transaction Create account Request demo Features Private training service Unlimited services Classes and events Unlimited schedules Courses Coming soon Unlimited seasons Promotion tools Free Automated invoices Free Client CRM Unlimited clients Insights Coming soon Coming soon Recruitment - Venue profile - Manager Web-only manager to manage your everyday Trainer application Let your trainers manager their profile, bookings, availabilities and more. Free Multi-venue management Manage multiple venues from your manager Unlimited venues Manager seats Add multiple manager to your account - Payments Online payments You only pay when you get paid. Simple as that. We only take a small commission when you receive money through a booking. * Stripe or Mollie will also charge standard processing fees, which depend on the payment method selected. 1.8%* Subscription fee No monthly fee, no hidden costs Free Client fee Matchable doesn't monetise your clients, not now, not ever. Fair and square. Free Manual payment links Coming soon Coming soon In-person payments Coming soon Coming soon Manual bookings Free Matchable Marketplace (optional) No additional fee applied to new clients who discover your business via the marketplace. Free Optional add-ons Matchable Widget Show your services and activities on your own website through our widget. Free Google Calendar View your Matchable bookings in your own Apple or Google calendar. Free Stripe Receive payments Free Mollie Receive payments Free MATCHi Automate court bookings Free Google Analytics Automate court bookings Coming soon Meta Pixel Automate court bookings Coming soon Support Chat support Available through Manager Panel Email support Response within 24 hours Knowledge base Video Support - Dedicated agent - Freelancer Business Pricing? Glad you asked Matchable takes as low as 1.8% to keep the engines running. Pay only when receiving a payment. No upfront fees, no hidden costs, not for you, not for your client. Accept payments in 36+ countries Keep track through the trainer application Add your availability and holidays Add your certifications, skills and more Instantly receive payments 1.8% / Per transaction Create account Request demo Manage your trainers and activities Automate your back-office Unlimited connected trainers Instantly receive payments 1.8% / Per transaction Create account Request demo Features Private training service Unlimited services Classes and events Unlimited schedules Courses Coming soon Unlimited seasons Promotion tools Free Automated invoices Free Client CRM Unlimited clients Insights Coming soon Coming soon Recruitment - Venue profile - Manager Web-only manager to manage your everyday Trainer application Let your trainers manager their profile, bookings, availabilities and more. Free Multi-venue management Manage multiple venues from your manager Unlimited venues Manager seats Add multiple manager to your account - Unlimited seats Payments Online payments You only pay when you get paid. Simple as that. We only take a small commission when you receive money through a booking. * Stripe or Mollie will also charge standard processing fees, which depend on the payment method selected. 1.8%* 1.8%* Subscription fee No monthly fee, no hidden costs Free Client fee Matchable doesn't monetise your clients, not now, not ever. Fair and square. Free Manual payment links Coming soon Coming soon In-person payments Coming soon Coming soon Manual bookings Free Matchable Marketplace (optional) No additional fee applied to new clients who discover your business via the marketplace. Free Optional add-ons Matchable Widget Show your services and activities on your own website through our widget. Free On request Google Calendar View your Matchable bookings in your own Apple or Google calendar. Free Stripe Receive payments Free Mollie Receive payments Free MATCHi Automate court bookings On request Coming soon Google Analytics Automate court bookings Coming soon Coming soon Meta Pixel Automate court bookings Coming soon Support Chat support Available through Manager Panel Email support Response within 24 hours Knowledge base Video Support - Dedicated agent - Frequently asked questions. Answered. What is Matchable? Matchable is an academy automation tool and a global marketplace in one. Trainers and venues can showcase themselves to clients and businesses to get booked instantly. You can automate lessons bookings, trainer schedules and court reservations. Players book and pay in Matchable and courts are auto-assigned in real time through MATCHi. How can I join Matchable as a venue or a trainer? We\\\\u2019d love to have you on the platform! Visit this page to register and we'll reach out to you as soon as possible. Is there a cost for using Matchable? Matchable takes as low as 1.8% to keep the engines running. Pay only when receiving a payment. No upfront fees, no hidden costs, not for you, not for your client. Can I still use MATCHi for my bookings? Yes, for sure! The integration is only visible in the back-office admin of the Matchable Manager. How do I offer private training as a service using Matchable and MATCHi? It\\\\u2019s very easy. The first step is to request your account, and from there, read this article for the step by step guide. How do I integrate with Matchable as a MATCHi club? You only have to register once, and we\\\\u2019ll guide you through the integration process, read the full article here for onboarding . How to contact you if I have any additional questions? We\\\\u2019re happy to hear from you, so you can contact us for an introduction call here or send us an email at info@getmatchable.com . Does Matchable have an App? Yes, we have a Trainer App and Client App that we recently launched. You can download them in the Apple Store or on Google Play . Marketplace Log in Create account List your business Report a bug Support Request demo Talk to sales Help Center Voucher balance Contact us Company Integrations Partnerships Company news Work with us Investor portal Tools Resource overview Talent interviews Press kit \\\\u00a9 2025 Matchable Privacy Policy Terms of Service Cookies Settings Follow-us\\\", \\\"title\\\": \\\"Pricing | Software automation tool for your business\\\", \\\"url\\\": \\\"https://matchable.io/business/pricing\\\"}\", \"summary\": \"Pricing | Software automation tool for your business\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-24T14:20:17.332786+00:00\", \"updated_at\": \"2026-03-24T14:20:17.332786+00:00\", \"observed_at\": \"2026-03-24T14:20:17.332786+00:00\", \"source_ref\": \"personal-agent:run:a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"evidence_ref\": \"https://matchable.io/business/pricing\", \"metadata\": {\"artifact_kind\": \"source_capture\"}, \"embedding\": [0.5292556164037588, 0.48531753305805714, 0.43653241186476366, 0.3554767198589, 0.26573727628063015, 0.22618041156080354, 0.17905398448808205, 0.11660588193349267]}, \"score\": 0.500545128881263, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.836967525875087, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://matchable.io/business/pricing\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.84 confidence=0.75 freshness=0.75\"}, {\"memory\": {\"id\": \"legacy_run_1f1a3fd4-eb28-4e99-891f-07c97243a06f\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": \"research_run\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"1f1a3fd4-eb28-4e99-891f-07c97243a06f\", \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"run\", \"title\": \"Research run: Produce a production-readiness plan for ballbox-payment-integration\", \"content\": \"Goal: Produce a production-readiness plan for ballbox-payment-integration\\nScope: Assess the current repository state, identify the minimum work required for a safe production deployment, and sequence the work into an executable plan without changing the application code yet.\\nAssumptions: Plan based on the local repository state on 2026-03-11; no current vendor docs or live infrastructure state were validated; target is first production deployment, not long-term platform redesign.\\nSummary: Produce a production-readiness plan for ballbox-payment-integration\", \"summary\": \"Produce a production-readiness plan for ballbox-payment-integration\", \"confidence\": 0.85, \"freshness\": 0.8, \"created_at\": \"2026-03-13T14:01:39.643717+00:00\", \"updated_at\": \"2026-03-24T14:18:16.797586+00:00\", \"observed_at\": \"2026-03-11T03:29:47.426596+00:00\", \"source_ref\": \"personal-agent:run:1f1a3fd4-eb28-4e99-891f-07c97243a06f\", \"evidence_ref\": \"personal-agent:run:1f1a3fd4-eb28-4e99-891f-07c97243a06f\", \"metadata\": {\"assumptions\": \"Plan based on the local repository state on 2026-03-11; no current vendor docs or live infrastructure state were validated; target is first production deployment, not long-term platform redesign.\", \"goal\": \"Produce a production-readiness plan for ballbox-payment-integration\", \"run_status\": \"active\", \"schema\": \"shared-agent-memory-v2\", \"scope\": \"Assess the current repository state, identify the minimum work required for a safe production deployment, and sequence the work into an executable plan without changing the application code yet.\", \"subtype\": \"research_run\", \"summary\": \"Produce a production-readiness plan for ballbox-payment-integration\"}, \"embedding\": [0.5281687141594598, 0.4982338840724073, 0.4244932293775556, 0.3436640885121753, 0.25324764261039656, 0.22331281252334406, 0.19801864604433547, 0.14590042398476533]}, \"score\": 0.5084893887522126, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.836595925014751, \"confidence\": 0.85, \"freshness\": 0.8}, \"matched_scope\": \"global\", \"evidence_ref\": \"personal-agent:run:1f1a3fd4-eb28-4e99-891f-07c97243a06f\", \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.84 confidence=0.85 freshness=0.80\"}]}"}],"isError":false,"timestamp":1776862861866}}
{"type":"message","id":"851fdb8b","parentId":"c7b2cce5","timestamp":"2026-04-22T13:01:21.419Z","message":{"role":"assistant","content":[{"type":"text","text":"No encontré una memoria específica de **hoy (22/04/2026)** con el término **\"POS\"** en la base de datos de agentes. Las más recientes con keywords similares son de marzo.\n\nSin embargo, dado que estás en el repo de `ballbox`, busqué localmente y encontré actividad reciente. ¿Te referís a la investigación de **\"Point of Sale\" (POS)** que está en `research/china_web/` o algo relacionado con los archivos que moví hoy?\n\nSi no está en la base de datos centralizada, puede que sea información de la **sesión actual** o archivos en el disco que aún no se ingirieron como \"memoria durable\".\n\n¿Querés que busque la palabra \"POS\" dentro de los archivos del repo `ballbox`?"}],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":22500,"output":174,"cacheRead":19555,"cacheWrite":0,"totalTokens":42229,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"stop","timestamp":1776862861869,"responseId":"nsboaazPMLmi4_UP37boyAY"}}
{"type":"message","id":"86ff59e8","parentId":"851fdb8b","timestamp":"2026-04-22T13:02:16.081Z","message":{"role":"user","content":[{"type":"text","text":"busca \"ORDTST01KPPFWZBJD0M1PACY3257J7KH\""}],"timestamp":1776862936080}}
{"type":"message","id":"da6d7d00","parentId":"86ff59e8","timestamp":"2026-04-22T13:02:18.451Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"bash_1776862938349_6","name":"bash","arguments":{"command":"grep -r \"ORDTST01KPPFWZBJD0M1PACY3257J7KH\" /mnt/rpi/repos/ballbox"},"thoughtSignature":"CiEBjz1rX12EjcJRV/5FMLnFAbQqS5FKgD3RRdclZt31sCM="}],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":7052,"output":42,"cacheRead":35201,"cacheWrite":0,"totalTokens":42295,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"toolUse","timestamp":1776862936081,"responseId":"2cboaYG2Bd_w6tkPlIaC-Ag"}}
{"type":"message","id":"5ed56253","parentId":"da6d7d00","timestamp":"2026-04-22T13:02:24.400Z","message":{"role":"toolResult","toolCallId":"bash_1776862938349_6","toolName":"bash","content":[{"type":"text","text":"Command aborted"}],"details":{},"isError":true,"timestamp":1776862944400}}
{"type":"message","id":"f47a233e","parentId":"5ed56253","timestamp":"2026-04-22T13:02:24.403Z","message":{"role":"assistant","content":[],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"aborted","timestamp":1776862944401,"errorMessage":"Operation aborted"}}
{"type":"message","id":"419b0517","parentId":"f47a233e","timestamp":"2026-04-22T13:02:25.345Z","message":{"role":"user","content":[{"type":"text","text":"en memoria."}],"timestamp":1776862945344}}
{"type":"message","id":"f533ffad","parentId":"419b0517","timestamp":"2026-04-22T13:02:27.705Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"bash_1776862947601_7","name":"bash","arguments":{"command":"curl -s \"http://100.116.176.16:8091/api/search?q=ORDTST01KPPFWZBJD0M1PACY3257J7KH\""},"thoughtSignature":"CiEBjz1rX6G0Z8ZADuXTzP9x5BMnX0avqe5D4HdoNcf7xqQ="}],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":7123,"output":60,"cacheRead":35175,"cacheWrite":0,"totalTokens":42358,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"toolUse","timestamp":1776862945345,"responseId":"4sboaa-qFZfF4_UPiPDM2Qg"}}
{"type":"message","id":"e0038fa3","parentId":"f533ffad","timestamp":"2026-04-22T13:02:27.843Z","message":{"role":"toolResult","toolCallId":"bash_1776862947601_7","toolName":"bash","content":[{"type":"text","text":"{\"retrieval_id\": \"ret_c196de39cda84a6cbd4ef179612d31d0\", \"results\": [{\"memory\": {\"id\": \"mem_7e571be6dcee4a0b8d53c3cf27898c50\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"project\", \"subtype\": \"payments_validation_handoff\", \"scope\": \"project\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"pi-session-memory-analyzer\", \"run_id\": null, \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Ballbox payments validation handoff and open blockers\", \"content\": \"PAY-2 native MercadoPago flow is merged and deployed. Legacy approved callback was removed. Canonical external_reference format is `payment-vm_{vendingMachineId}-txn_{machineTxnId}`. Valid test POS is `BALLBOXTESTPOS01`. Approved test order `ORDTST01KPPFWZBJD0M1PACY3257J7KH` reached `processed/accredited`. Open issues: Ballbox did not persist `PaymentSession`; production token still cannot access `/users/me` or `/pos` due to `PA_UNAUTHORIZED_RESULT_FROM_POLICIES`; homologator still fails with `error_code 1006`. Next useful steps: inspect logs for `/notification/mercadopago` around the approved order, reproduce another approved order and tail logs live if needed, and resolve POS/prod account API access.\", \"summary\": \"PAY-2 native MercadoPago flow is merged and deployed. Legacy approved callback was removed. Canonical external_reference format is `payment-vm_{vendingMachineId}-txn_{machineTxnId\\u2026\", \"confidence\": 1.0, \"freshness\": 1.0, \"created_at\": \"2026-04-22T12:35:11.030311+00:00\", \"updated_at\": \"2026-04-22T12:35:11.030311+00:00\", \"observed_at\": \"2026-04-22T12:35:11.030311+00:00\", \"source_ref\": \"session:5b7e0444 /mnt/rpi/pi-config/sessions/--mnt-rpi-repos-ballbox--/2026-04-20T00-40-43-848Z_019da855-1e48-73f6-9fb3-3e7af0384b1a.jsonl\", \"evidence_ref\": null, \"metadata\": {\"analysis_reason\": \"Durable project state with concrete external identifiers, validated payment flow status, and unresolved blockers that matter for future sessions.\", \"assistant_messages\": 185, \"cwd\": \"/mnt/rpi/repos/ballbox\", \"job_file\": \"/mnt/rpi/pi-config/sessions/session-memory-jobs/20260422T123506691388Z.json\", \"reason\": \"before_switch:new\", \"session_file\": \"/mnt/rpi/pi-config/sessions/--mnt-rpi-repos-ballbox--/2026-04-20T00-40-43-848Z_019da855-1e48-73f6-9fb3-3e7af0384b1a.jsonl\", \"session_id\": \"5b7e0444\", \"trigger\": \"session-memory-dispatcher\", \"user_messages\": 48}, \"embedding\": null}, \"score\": 0.39999999999999997, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.0, \"confidence\": 1.0, \"freshness\": 1.0}, \"matched_scope\": \"project\", \"evidence_ref\": null, \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.00 confidence=1.00 freshness=1.00\"}, {\"memory\": {\"id\": \"mem_479a4ccc00f9446b8023d0e1ba17dcb4\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": null, \"scope\": \"project\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"codex\", \"run_id\": null, \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Ballbox PAY-2 native MercadoPago handoff\", \"content\": \"PAY-2 native MercadoPago migration is merged/deployed. Legacy approved callback removed. Canonical external_reference is payment-vm_{vendingMachineId}-txn_{machineTxnId}. Verified test POS BALLBOXTESTPOS01 and approved test order ORDTST01KPPFWZBJD0M1PACY3257J7KH reached processed/accredited, but Ballbox still did not persist a PaymentSession and /api/integrations/payments/sessions returned empty. Real prod token APP_USR-3257bf35-b277-4045-92ba-09fe77a1e787 returns PA_UNAUTHORIZED_RESULT_FROM_POLICIES on /users/me and /pos, so real prod POS remains unresolved. Homologator evaluate-order fails with error_code 1006 / Cannot read properties of null (reading 'blocks'). Next: inspect /notification/mercadopago logs around the approved test order and locate/create a prod POS or account with API access.\", \"summary\": \"PAY-2 native MercadoPago migration is merged/deployed. Legacy approved callback removed. Canonical external_reference is payment-vm_{vendingMachineId}-txn_{machineTxnId}. Verified\\u2026\", \"confidence\": 1.0, \"freshness\": 1.0, \"created_at\": \"2026-04-22T12:33:55.415984+00:00\", \"updated_at\": \"2026-04-22T12:33:55.415984+00:00\", \"observed_at\": \"2026-04-22T12:33:55.415984+00:00\", \"source_ref\": null, \"evidence_ref\": null, \"metadata\": {}, \"embedding\": null}, \"score\": 0.39999999999999997, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 1.0, \"semantic\": 0.0, \"confidence\": 1.0, \"freshness\": 1.0}, \"matched_scope\": \"project\", \"evidence_ref\": null, \"explanation\": \"facets=0.00 lexical=1.00 semantic=0.00 confidence=1.00 freshness=1.00\"}, {\"memory\": {\"id\": \"mem_69fa680cbaa24929af00ec1ce0d5ce6d\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": \"research_step\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Research step: capture https://help.matchable.io/en/articles/13-getting-started-with-the-matchable-trai\", \"content\": \"Captured https://help.matchable.io/en/articles/13-getting-started-with-the-matchable-trainer-app\", \"summary\": \"Captured https://help.matchable.io/en/articles/13-getting-started-with-the-matchable-trainer-app\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-24T14:20:37.617460+00:00\", \"updated_at\": \"2026-03-24T14:20:37.617460+00:00\", \"observed_at\": \"2026-03-24T14:20:37.617460+00:00\", \"source_ref\": \"personal-agent:run:a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"evidence_ref\": \"https://help.matchable.io/en/articles/13-getting-started-with-the-matchable-trainer-app\", \"metadata\": {\"step_kind\": \"capture\", \"step_status\": \"completed\"}, \"embedding\": [0.3291702332392591, 0.35665255102377513, 0.39772163265681587, 0.35974045189843984, 0.37394479592189755, 0.34491852770004916, 0.3378163556883203, 0.3223768513149967]}, \"score\": 0.22404248380772493, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.0, \"semantic\": 0.9936165587181661, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://help.matchable.io/en/articles/13-getting-started-with-the-matchable-trainer-app\", \"explanation\": \"facets=0.00 lexical=0.00 semantic=0.99 confidence=0.75 freshness=0.75\"}, {\"memory\": {\"id\": \"mem_5c96bad891f9449e9013c4410693d7ff\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"artifact\", \"subtype\": \"research_artifact\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"task_id\": null, \"url\": \"https://html.duckduckgo.com/html/?q=site%3Amatchable.io+Matchable+product+features+use+cases\", \"domain\": \"html.duckduckgo.com\", \"source_kind\": \"manual\", \"title\": \"Search results: site:matchable.io Matchable product features use cases\", \"content\": \"{\\\"engine\\\": \\\"duckduckgo_html\\\", \\\"query\\\": \\\"site:matchable.io Matchable product features use cases\\\", \\\"request_url\\\": \\\"https://html.duckduckgo.com/html/?q=site%3Amatchable.io+Matchable+product+features+use+cases\\\", \\\"results\\\": [{\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"Find About Product on eBay - Fantastic Prices on eBay\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fduckduckgo.com%2Fy.js%3Fad_domain%3Debay.com%26ad_provider%3Dbingv7aa%26ad_type%3Dtxad%26click_metadata%3DR9a5sVW%252DKyBtxA_VuO5K8sRMkaQJORYk1eRtwSBAKCEsA5uM7%252DZUCt_FeiAkQqgzbJFwfMSAx5PkZKbioQJq9XTdENQTtut6VOJ3izjWPUJjmLEvsdFaLJdLfL6lutbzGbh2vhiLG9niOXt8BhPosVJWRtYWkY7n3m1lfUZfBcw.y0ETucF1sxStqsI4hSdJ3Q%26rut%3Dd6f3fd36985c5d0de7f85129eab6d27bbcf689bd0dd91bb654e0ad58bee62db3%26u3%3Dhttps%253A%252F%252Fwww.bing.com%252Faclick%253Fld%253De8qwm1iFX2PGiwzB2dVE7rmDVUCUzQQgMHJPFW68Zl7LhzIzqNyF0ewXwWb5u1dpQhKxHirDKWYmf%252DlUvn7nr3u65ESokOGtpONAPpnK_LqxaOjG1PyOaphTtQI4HzabJ1cbutC0Jp1PB2y35jx1qOHdHmjVheOHB1IWzpMvdIwTnaVyeM0bwqb7UN1bMWA8JfgAmPOBf5SokyJOu%252DLwgqTd09ZN8%2526u%253DaHR0cHMlM2ElMmYlMmZ3d3cuZWJheS5jb20lMmZzY2glMmZpLmh0bWwlM2Zfbmt3JTNkYWJvdXQlMjUyMHByb2R1Y3QlMjZub3JvdmVyJTNkMSUyNm1rZXZ0JTNkMSUyNm1rcmlkJTNkNzExLTM0MDAyLTEzMDc4LTAlMjZta2NpZCUzZDIlMjZta3NjaWQlM2QxMDIlMjZrZXl3b3JkJTNkYWJvdXQlMjUyMHByb2R1Y3QlMjZjcmxwJTNkXyUyNk1UX0lEJTNkJTI2Z2VvX2lkJTNkJTI2cmxzYXRhcmdldCUzZGt3ZC03NjYyMjM5OTcxMzMwMyUzYWxvYy04JTI2YWRwb3MlM2QlMjZkZXZpY2UlM2RjJTI2bWt0eXBlJTNkJTI2bG9jJTNkMTQ2MzEzJTI2cG9pJTNkJTI2YWJjSWQlM2QlMjZjbXBnbiUzZDM5NTQ1MDE3OSUyNnNpdGVsbmslM2QlMjZhZGdyb3VwaWQlM2QxMjI1OTU1NjcyMTEzMjMzJTI2bmV0d29yayUzZHMlMjZtYXRjaHR5cGUlM2RwJTI2bXNjbGtpZCUzZDY0YmY2Y2FjZWI5YTE3ZjNmNjg5MDU2ZTc2YjU3NTE4%2526rlid%253D64bf6caceb9a17f3f689056e76b57518%26vqd%3D4%2D26348646463050581580326335113467242843%26iurl%3D%257B1%257DIG%253D6D53E52BC08B4F89877AE02D24305674%2526CID%253D36E7CD8938BC6EF60416DAAF39F66F81%2526ID%253DDevEx%252C5037.1&rut=aa08bdef5f1c1ae282f95a5acb03c03f4b20603b378a60182064c8f0596a16f2\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"Sport marketplace and management software | Matchable\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fbusiness.matchable.io%2F&rut=ce20621c7384fab39f9979dd5c43c7cdea58271be515d30c92e0b58e3cf9f193\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"Matchable | Book trainers, venues & classes\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.matchable.io%2F&rut=674d13b0c7caae5f991c6d2f1088a99d9f022da4f9ce5698756ef50e18a18c27\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"Integrate with Matchable\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fmatchable.io%2Fbusiness%2Fcs%2Fcompany%2Fintegrations&rut=d5d012ff79770a0e99bdaa69ea428a31214191a4275c2696bff996317f82cc88\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"Press kit - matchable.io\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fmatchable.io%2Fbusiness%2Fresources%2Fpress%2Dkit&rut=598cd64069353cbb77cbbb927ddf3a8d2f40f3fda648c5fc85b87d1c34a67590\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"Request a product demo | Matchable\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fmatchable.io%2Fbusiness%2Fcs%2Fform%2Fdemo%2Drequest&rut=e8fb0e6bd31ef9ee20ea3ebef4422d8bee9e4212f439e6fda5c6bf0dd485b197\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"Integrations your tools - matchable.io\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fmatchable.io%2Fbusiness%2Fintegrations&rut=0ce8152055c226de6c7ccddafc7e2fa17ab7b8050a6f7b7aa4b2ccb7562bbc60\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"Matchable is partering up with Matchpoint | NEWS\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fmatchable.io%2Fbusiness%2Fcs%2Fblog%2Fgame%2Dchanger%2Dfor%2Dracquet%2Dclubs%2Dmatchable%2Dpartners%2Dtogether%2Dwith%2Dmatchpoint&rut=c9aa54f73bc69ab7ea5882a296df5ebc52e46020d78caeba7af7d077c2abb552\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"Introducing Matchable\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fmatchable.io%2Fbusiness%2Fguide%2Fintroducing%2Dmatchable&rut=b9dafd82e43084742dc21323fcd3a23b3699a42c7e4a88498eb99dd942e3d9dc\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"Integrations | Matchable x MATCHi\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fmatchable.io%2Fbusiness%2Fcs%2Fintegrations%2Fmatchi&rut=48720ba0ef2477771b6ae97960e4b8251934381ba1f9fcc5bdf44601975c20ee\\\"}]}\", \"summary\": \"site:matchable.io Matchable product features use cases\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-24T14:18:24.351330+00:00\", \"updated_at\": \"2026-03-24T14:18:24.351330+00:00\", \"observed_at\": \"2026-03-24T14:18:24.351330+00:00\", \"source_ref\": \"personal-agent:run:a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"evidence_ref\": \"https://html.duckduckgo.com/html/?q=site%3Amatchable.io+Matchable+product+features+use+cases\", \"metadata\": {\"artifact_kind\": \"search_results\"}, \"embedding\": [0.3770204504341673, 0.37309267083487774, 0.37202567558940147, 0.3545826228807455, 0.35725011099443627, 0.3337298244963284, 0.3365442177525122, 0.3197815678090875]}, \"score\": 0.22381015705846755, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.0, \"semantic\": 0.992067713723117, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://html.duckduckgo.com/html/?q=site%3Amatchable.io+Matchable+product+features+use+cases\", \"explanation\": \"facets=0.00 lexical=0.00 semantic=0.99 confidence=0.75 freshness=0.75\"}, {\"memory\": {\"id\": \"mem_7e0612ee062a46f9a2e7aaa7abc7361a\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": \"research_step\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Research step: capture https://help.matchable.io/en/articles/44-create-and-manage-your-course-schedule\", \"content\": \"Captured https://help.matchable.io/en/articles/44-create-and-manage-your-course-schedule\", \"summary\": \"Captured https://help.matchable.io/en/articles/44-create-and-manage-your-course-schedule\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-24T14:20:37.387701+00:00\", \"updated_at\": \"2026-03-24T14:20:37.387701+00:00\", \"observed_at\": \"2026-03-24T14:20:37.387701+00:00\", \"source_ref\": \"personal-agent:run:a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"evidence_ref\": \"https://help.matchable.io/en/articles/44-create-and-manage-your-course-schedule\", \"metadata\": {\"step_kind\": \"capture\", \"step_status\": \"completed\"}, \"embedding\": [0.360030178378711, 0.368143534511189, 0.37828522967678646, 0.3820038512375056, 0.3708479865553483, 0.360030178378711, 0.3137164371224824, 0.28329135162568997]}, \"score\": 0.22349677902440288, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.0, \"semantic\": 0.9899785268293527, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://help.matchable.io/en/articles/44-create-and-manage-your-course-schedule\", \"explanation\": \"facets=0.00 lexical=0.00 semantic=0.99 confidence=0.75 freshness=0.75\"}, {\"memory\": {\"id\": \"mem_6ff7463ef2fd4179beacb973aa07c291\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": \"research_step\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Research step: capture https://www.matchable.io/\", \"content\": \"Captured https://www.matchable.io/\", \"summary\": \"Captured https://www.matchable.io/\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-24T14:20:17.674123+00:00\", \"updated_at\": \"2026-03-24T14:20:17.674123+00:00\", \"observed_at\": \"2026-03-24T14:20:17.674123+00:00\", \"source_ref\": \"personal-agent:run:a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"evidence_ref\": \"https://www.matchable.io/\", \"metadata\": {\"step_kind\": \"capture\", \"step_status\": \"completed\"}, \"embedding\": [0.41327495356270366, 0.37483077183594055, 0.38881047428203624, 0.33376539590053445, 0.38618928007339326, 0.2752253919075088, 0.32240688766308173, 0.31192211082850996]}, \"score\": 0.2232143436433975, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.0, \"semantic\": 0.988095624289317, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://www.matchable.io/\", \"explanation\": \"facets=0.00 lexical=0.00 semantic=0.99 confidence=0.75 freshness=0.75\"}, {\"memory\": {\"id\": \"mem_70d7fe1e42bf4b988b34cc4f3234a66a\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": null, \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": null, \"run_id\": null, \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Research step: capture https://byaiteam.com/blog/2025/12/20/ai-agent-memory-architectures-retrieval-gov\", \"content\": \"Captured https://byaiteam.com/blog/2025/12/20/ai-agent-memory-architectures-retrieval-governance/\", \"summary\": \"Captured https://byaiteam.com/blog/2025/12/20/ai-agent-memory-architectures-retrieval-governance/\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-26T18:15:49.638107+00:00\", \"updated_at\": \"2026-03-26T18:15:49.638107+00:00\", \"observed_at\": \"2026-03-26T18:15:49.638107+00:00\", \"source_ref\": \"personal-agent:run:9be235c5-e438-4f89-a35e-9c9582574016\", \"evidence_ref\": \"https://byaiteam.com/blog/2025/12/20/ai-agent-memory-architectures-retrieval-governance/\", \"metadata\": {\"record_kind\": \"research_step\", \"run_id\": \"9be235c5-e438-4f89-a35e-9c9582574016\", \"schema\": \"personal-agent-memory-v1\", \"step_kind\": \"capture\", \"step_status\": \"completed\"}, \"embedding\": [0.3517744269148312, 0.37705920153584327, 0.3536707850114071, 0.3757949628047927, 0.3185881602247527, 0.34671747199062875, 0.37010588851506493, 0.33028236848697085]}, \"score\": 0.22314495273413412, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.0, \"semantic\": 0.987633018227561, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://byaiteam.com/blog/2025/12/20/ai-agent-memory-architectures-retrieval-governance/\", \"explanation\": \"facets=0.00 lexical=0.00 semantic=0.99 confidence=0.75 freshness=0.75\"}, {\"memory\": {\"id\": \"mem_46b8191e6b6a47d0864670962cd91a13\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"episode\", \"subtype\": \"research_step\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Research step: capture https://help.matchable.io/en/articles/38-getting-started-with-your-storefront\", \"content\": \"Captured https://help.matchable.io/en/articles/38-getting-started-with-your-storefront\", \"summary\": \"Captured https://help.matchable.io/en/articles/38-getting-started-with-your-storefront\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-24T14:20:37.415947+00:00\", \"updated_at\": \"2026-03-24T14:20:37.415947+00:00\", \"observed_at\": \"2026-03-24T14:20:37.415947+00:00\", \"source_ref\": \"personal-agent:run:a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"evidence_ref\": \"https://help.matchable.io/en/articles/38-getting-started-with-your-storefront\", \"metadata\": {\"step_kind\": \"capture\", \"step_status\": \"completed\"}, \"embedding\": [0.3306886588010445, 0.3825281719122738, 0.37947878878808383, 0.4076008776000579, 0.3774458667052905, 0.30595477346039257, 0.3056159531132604, 0.3235734315112679]}, \"score\": 0.22305115650532728, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.0, \"semantic\": 0.9870077100355152, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://help.matchable.io/en/articles/38-getting-started-with-your-storefront\", \"explanation\": \"facets=0.00 lexical=0.00 semantic=0.99 confidence=0.75 freshness=0.75\"}, {\"memory\": {\"id\": \"mem_d33e0337d9ae4ea7a794a42545447f1e\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"artifact\", \"subtype\": \"research_artifact\", \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": \"personal-agent\", \"run_id\": \"a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"task_id\": null, \"url\": \"https://html.duckduckgo.com/html/?q=site%3Amatchable.crunch.help+OR+site%3Ahelp.matchable.io+Matchable+onboarding+booking+trainer+classes+courses+invoice\", \"domain\": \"html.duckduckgo.com\", \"source_kind\": \"manual\", \"title\": \"Search results: site:matchable.crunch.help OR site:help.matchable.io Matchable onboarding bookin\", \"content\": \"{\\\"engine\\\": \\\"duckduckgo_html\\\", \\\"query\\\": \\\"site:matchable.crunch.help OR site:help.matchable.io Matchable onboarding booking trainer classes courses invoice\\\", \\\"request_url\\\": \\\"https://html.duckduckgo.com/html/?q=site%3Amatchable.crunch.help+OR+site%3Ahelp.matchable.io+Matchable+onboarding+booking+trainer+classes+courses+invoice\\\", \\\"results\\\": []}\", \"summary\": \"site:matchable.crunch.help OR site:help.matchable.io Matchable onboarding booking trainer classes courses invoice\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-24T14:18:48.243844+00:00\", \"updated_at\": \"2026-03-24T14:18:48.243844+00:00\", \"observed_at\": \"2026-03-24T14:18:48.243844+00:00\", \"source_ref\": \"personal-agent:run:a1ad721a-bcbc-473e-806d-0793fbbfaac2\", \"evidence_ref\": \"https://html.duckduckgo.com/html/?q=site%3Amatchable.crunch.help+OR+site%3Ahelp.matchable.io+Matchable+onboarding+booking+trainer+classes+courses+invoice\", \"metadata\": {\"artifact_kind\": \"search_results\"}, \"embedding\": [0.38439072055323115, 0.39975205975749595, 0.3496490871203299, 0.37010110268879876, 0.34053945573175426, 0.3460766826542218, 0.33741360182390967, 0.2891861415314504]}, \"score\": 0.22294531792108077, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.0, \"semantic\": 0.9863021194738719, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://html.duckduckgo.com/html/?q=site%3Amatchable.crunch.help+OR+site%3Ahelp.matchable.io+Matchable+onboarding+booking+trainer+classes+courses+invoice\", \"explanation\": \"facets=0.00 lexical=0.00 semantic=0.99 confidence=0.75 freshness=0.75\"}, {\"memory\": {\"id\": \"mem_d272073bed66483ea27fba683613235b\", \"schema_version\": \"shared-agent-memory-v2\", \"type\": \"artifact\", \"subtype\": null, \"scope\": \"global\", \"status\": \"active\", \"project_id\": null, \"repo_id\": null, \"agent_id\": null, \"origin_agent\": null, \"run_id\": null, \"task_id\": null, \"url\": null, \"domain\": null, \"source_kind\": \"manual\", \"title\": \"Search results: periodic memory consolidation agent memory knowledge base deduplication TTL deca\", \"content\": \"{\\\"engine\\\": \\\"duckduckgo_html\\\", \\\"query\\\": \\\"periodic memory consolidation agent memory knowledge base deduplication TTL decay best practices\\\", \\\"request_url\\\": \\\"https://html.duckduckgo.com/html/?q=periodic+memory+consolidation+agent+memory+knowledge+base+deduplication+TTL+decay+best+practices\\\", \\\"results\\\": [{\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"AI Agent Memory: Architectures, Retrieval, Governance\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fbyaiteam.com%2Fblog%2F2025%2F12%2F20%2Fai%2Dagent%2Dmemory%2Darchitectures%2Dretrieval%2Dgovernance%2F&rut=724037b71343fa3afadcbdfca7555906a962847e03048c4165a39a7fdfc2f8dc\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"How to Build AI Agents with Redis Memory Management\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fredis.io%2Fblog%2Fbuild%2Dsmarter%2Dai%2Dagents%2Dmanage%2Dshort%2Dterm%2Dand%2Dlong%2Dterm%2Dmemory%2Dwith%2Dredis%2F&rut=089810029cfd28237a0d7e4ca410a6246ba28514507fc9965c7399f0d75a42da\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"How to Build Memory Consolidation - oneuptime.com\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Foneuptime.com%2Fblog%2Fpost%2F2026%2D01%2D30%2Dmemory%2Dconsolidation%2Fview&rut=9091d26117389144609f63f06cdc0864586a9633f212d6741b437e1f000ec1ed\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"Agent Memory in Azure Cosmos DB for NoSQL - learn.microsoft.com\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Flearn.microsoft.com%2Fen%2Dus%2Fazure%2Fcosmos%2Ddb%2Fgen%2Dai%2Fagentic%2Dmemories&rut=9ef3d6bb27de9c779f06c7068794bc474cdde80516f38eaf6cfa48263baabf83\\\"}, {\\\"domain\\\": \\\"duckduckgo.com\\\", \\\"title\\\": \\\"Memory Consolidation Guide - AgentDock Documentation\\\", \\\"url\\\": \\\"//duckduckgo.com/l/?uddg=https%3A%2F%2Fhub.agentdock.ai%2Fdocs%2Fmemory%2Fconsolidation%2Dguide&rut=a27129d65f408f0cf61878ecc23e624ef2370fe4b32de4fdf027f546c5ba80a6\\\"}]}\", \"summary\": \"periodic memory consolidation agent memory knowledge base deduplication TTL decay best practices\", \"confidence\": 0.75, \"freshness\": 0.75, \"created_at\": \"2026-03-26T18:15:25.917490+00:00\", \"updated_at\": \"2026-03-26T18:15:25.917490+00:00\", \"observed_at\": \"2026-03-26T18:15:25.917490+00:00\", \"source_ref\": \"personal-agent:run:9be235c5-e438-4f89-a35e-9c9582574016\", \"evidence_ref\": \"https://html.duckduckgo.com/html/?q=periodic+memory+consolidation+agent+memory+knowledge+base+deduplication+TTL+decay+best+practices\", \"metadata\": {\"artifact_kind\": \"search_results\", \"record_kind\": \"research_artifact\", \"run_id\": \"9be235c5-e438-4f89-a35e-9c9582574016\", \"schema\": \"personal-agent-memory-v1\"}, \"embedding\": [0.37430997319867526, 0.3969380524113438, 0.3933535881981266, 0.37390557210795333, 0.3701189073493752, 0.32631491647708505, 0.29297020836028514, 0.28017642839926377]}, \"score\": 0.22287896057243875, \"score_breakdown\": {\"facet\": 0.0, \"lexical\": 0.0, \"semantic\": 0.9858597371495916, \"confidence\": 0.75, \"freshness\": 0.75}, \"matched_scope\": \"global\", \"evidence_ref\": \"https://html.duckduckgo.com/html/?q=periodic+memory+consolidation+agent+memory+knowledge+base+deduplication+TTL+decay+best+practices\", \"explanation\": \"facets=0.00 lexical=0.00 semantic=0.99 confidence=0.75 freshness=0.75\"}]}"}],"isError":false,"timestamp":1776862947840}}
{"type":"message","id":"794e183a","parentId":"e0038fa3","timestamp":"2026-04-22T13:03:20.808Z","message":{"role":"assistant","content":[{"type":"text","text":"Se encontró una memoria de **hoy (22/04/2026)** con el ID de orden `ORDTST01KPPFWZBJD0M1PACY3257J7KH` vinculada al POS.\n\n### Resumen del Handoff: Ballbox Payments Validation\n- **Status**: El flujo nativo de MercadoPago (PAY-2) está mergeado y desplegado.\n- **POS de Test**: `BALLBOXTESTPOS01`.\n- **Orden de Test**: `ORDTST01KPPFWZBJD0M1PACY3257J7KH` llegó correctamente a `processed/accredited`.\n- **Bloqueantes / Issues**:\n  - Ballbox **no persistió** el `PaymentSession` (la API `/api/integrations/payments/sessions` devuelve vacío).\n  - El token de producción (`APP_USR-...`) da error `PA_UNAUTHORIZED_RESULT_FROM_POLICIES` al intentar acceder a `/users/me` o `/pos`.\n  - El homologador falla con `error_code 1006` (Cannot read properties of null).\n- **Próximos Pasos Recomendados**:\n  - Inspeccionar logs de `/notification/mercadopago` alrededor de esa orden aprobada.\n  - Resolver el acceso del token de prod a la API de POS.\n  - Reproducir otra orden y seguir los logs en vivo.\n\nLa memoria fue originada por `pi-session-memory-analyzer` tras cerrar una sesión de trabajo intensa (48 mensajes de usuario)."}],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":55391,"output":344,"cacheRead":0,"cacheWrite":0,"totalTokens":55735,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"stop","timestamp":1776862947843,"responseId":"FcfoadCkFc3AodAP8pykoQQ"}}
{"type":"message","id":"8ce78f1e","parentId":"794e183a","timestamp":"2026-04-22T13:09:42.221Z","message":{"role":"user","content":[{"type":"text","text":"id?"}],"timestamp":1776863382220}}
{"type":"message","id":"90cd05fd","parentId":"8ce78f1e","timestamp":"2026-04-22T13:09:44.849Z","message":{"role":"assistant","content":[{"type":"text","text":"La memoria principal tiene el ID: `mem_7e571be6dcee4a0b8d53c3cf27898c50`.","textSignature":"CiEBjz1rX6OLOaLagca0vGeAZrW4JWthrd++QvJgd6GA/zE="}],"api":"google-gemini-cli","provider":"google-gemini-cli","model":"gemini-3-flash-preview","usage":{"input":15212,"output":39,"cacheRead":39468,"cacheWrite":0,"totalTokens":54719,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"stop","timestamp":1776863382221,"responseId":"l8joab3fG8XAodAP_uqX4AQ"}}
