Aplicación iOS
Interfaz SwiftUI con mecánicas de juego de PokerKit y captura de decisiones.
Caso de estudio
Una mesa de entrenamiento nativa 6-max, 100BB en la que cinco oponentes GTO juegan cada mano mediante la misma Pokerai API disponible para los desarrolladores. Counterplay registra cada decisión del Hero, la califica frente a las frecuencias devueltas, agrupa las desviaciones recurrentes en informes de fugas y mantiene las manos subyacentes listas para su revisión o coaching fundamentado opcional.


01 / arquitectura
Counterplay separa la mecánica del juego, el estado de sesión y la verdad estratégica. PokerKit hace avanzar la mesa de seis jugadores; el servicio del entrenador conserva la línea de acción ordenada, los stacks efectivos, los rangos y el contexto de revisión; Pokerai API proporciona consultas pre-resueltas o resultados del solver en tiempo real. La misma respuesta puede impulsar el juego de los oponentes, la calificación de Hero, la visualización de rangos y el coaching posterior sin integrar gráficos privados en la aplicación.
Interfaz SwiftUI con mecánicas de juego de PokerKit y captura de decisiones.
FastAPI mantiene la mano actual, la línea de acción, los rangos y el contexto de revisión.
Estrategia preflop y flop precalculada, además de resolución en cola para turn y river.
02 / ciclo de producto
El producto hace más que exponer una respuesta del solucionador. Convierte las decisiones individuales en un informe de análisis y luego mantiene disponibles las manos subyacentes para su revisión y estudio posterior.
Agrupa decisiones similares, muestra el número de muestras y la desviación media, y luego clasifica los patrones repetidos de preflop y postflop por gravedad.

Busca por mano, posición o cartas; inspecciona el resultado y las BB netas; luego vuelve a abrir la secuencia exacta de decisiones detrás de un informe.

Elige una consulta rápida de soluciones precomputadas o una resolución exacta en directo, define el bote y las posiciones, y lleva el resultado a una conversación centrada.

Mantén la interfaz de entrenamiento centrada y permite al jugador elegir la configuración regional, la identidad de la mesa y el modelo opcional utilizado para las explicaciones.

03 / registro de endpoints
Rastreado desde el cliente real (método → endpoint → dónde se usa):
/v1/gto/preflopAcciones preflop del Villano + evaluación de la decisión preflop de Hero
/v1/gto/preflop/rangeLa cuadrícula de rangos de 13×13 mostrada en la revisión
/v1/gto/flop/treeÁrbol de decisiones postflop para la situación del flop
/v1/gto/flop/nodeEstrategia en el nodo actual del flop (+ evaluación)
/v1/gto/flop/projected-rangeActualizar los rangos a lo largo de la línea de acción del flop
/v1/gto/rangeEnsamblar solver_results para una línea de acción
/v1/gto/turn/projected-rangeTransferencia de rango del flop al turn
/v1/gto/solverEnviar una situación de turn/river para resolverla en tiempo real
/v1/gto/solver/treeÁrbol de decisiones de la situación resuelta en turn/river
/v1/gto/solver/nodeEstrategia en un nodo de cuarta/quinta calle (+ evaluación)
04 / prueba de implementación
El cliente no incorpora gráficos ni resultados del solucionador. Da forma a la situación actual, envía una solicitud autenticada y devuelve frecuencias de estrategia normalizadas al entrenador.
class GtoClient:
def __init__(self, settings):
self._headers = {"Authorization": f"Bearer {settings.gto_api_key}"}
async def preflop(self, hole_cards, hero_pos, preflop_actions):
body = {"hole_cards": hole_cards,
"positions": {"hero": hero_pos},
"preflop_actions": preflop_actions}
return _strategy_from(await self._post("/v1/gto/preflop", body))
async def flop_node(self, node_token, hole_cards=None):
body = {"node": node_token}
if hole_cards: body["hole_cards"] = hole_cards
return _strategy_from(await self._post("/v1/gto/flop/node", body))
# … + solver_schedule / solver_tree / solver_node, all one-liners over _post()05 / ciclo de decisiones
Envía las cartas, la posición y las acciones ordenadas; usa las frecuencias devueltas para jugar y evaluar.
Carga el árbol prerresuelto, localiza el nodo activo y proyecta los rangos después de cada acción.
Envía los rangos de manos al solver en tiempo real, sondea periódicamente el estado del trabajo y luego lee el nodo de estrategia resultante.
Mide la acción elegida según su propia frecuencia GTO y transmite contexto estructurado al coach opcional.
Counterplay es una integración de producto de Pokerai API mantenida por Pokerai API. No se presenta como una implementación de cliente de terceros. Este registro técnico documenta el flujo de trabajo del entrenador de iOS y los endpoints de la API pública que utiliza ese flujo de trabajo. El producto actual está dirigido al entrenamiento de cash game de 100BB con seis jugadores, aleatoriza el asiento de Hero, utiliza cinco oponentes guiados por estrategias y reduce las situaciones postflop multiway a una aproximación heads-up. El coaching es opcional. Counterplay no permite asistencia en tiempo real en mesas con dinero real. Esta página no afirma nada sobre adopción por clientes, descargas, rendimiento en benchmarks, asociaciones comerciales ni respaldos externos.
Desarrolla sobre la misma API
Comienza con una clave gratuita, realiza un call preflop y luego sigue los mismos endpoints públicos que se usan aquí.