Construimos rápido y a la vista. Acá publicamos cambios, features nuevas y fixes — y los podés usar apenas salen, sin lista de espera.
2026-06-11Launch
Envíos: de Shopify a Andreani o Correo Argentino sin tipeo
Nueva sección Envíos en el dashboard: KANDIMA trae tus pedidos pagos sin despachar, los valida contra el catálogo oficial de localidades de Andreani (29.918 combinaciones de provincia/localidad/CP) y los convierte en envíos listos — por planilla de envío masivo o directo por API. Cuando el correo devuelve los números de seguimiento, los fulfillments de Shopify se crean en lote con tracking y aviso al cliente.
- Planilla de envío masivo de Andreani con el formato oficial exacto — la subís al portal y listo · 2 créditos por pedido
- Andreani API: creación automática de envíos + etiquetas PDF consolidadas + fulfillment automático · 3 créditos por pedido
- Correo Argentino (MiCorreo): tus pedidos se cargan solos en tu cuenta — sin formularios
- Datos faltantes (DNI, CP fuera de catálogo, teléfono) detectados y corregibles inline antes de exportar
- Importá la respuesta del correo (Excel/CSV o pegado) y los fulfillments se crean solos · 1 crédito por pedido
- Costos a la vista antes de confirmar; si una generación falla, los créditos se devuelven solos
2026-06-11Launch
Integración Klaviyo: revenue real de email en tu dashboard
KANDIMA ahora se conecta a Klaviyo y trae el revenue real atribuido a tus emails — flows y campañas — directo del Reporting API, sin estimaciones. Se sincroniza solo cada 6 horas y los números aparecen donde mirás todos los días: un widget nuevo en el dashboard, el detalle completo en Integraciones y el Daily Brief, que ahora cita al email como canal cuando es relevante.
- Conexión en un minuto con tu Private API Key (guardada encriptada AES-256-GCM)
- Revenue por flow y por campaña · últimos 30 días, atribución real de Klaviyo — si falta la métrica de pedido o el reporte falla, te lo decimos en vez de inventar un número
- LTV por segmento: promedio del CLV predictivo de Klaviyo sobre tus segmentos más grandes, con el tamaño de muestra a la vista
- Widget 'Email · Impacto 30 días' en el dashboard: total, split flows vs campañas y top 5 fuentes
- Sync automático cada 6 horas + botón Sync now — mismos datos, cero configuración extra
2026-06-11Feature
Aviso proactivo cuando una integración se cae
El miedo número uno: un token vence, el canal deja de sincronizar y nadie se entera hasta que los números mienten. Ahora el guardián de integraciones, además de auto-reparar los syncs atrasados, te deja un aviso en tu feed de riesgos cuando una conexión muere de verdad (token revocado) — con el canal afectado y el paso exacto para reconectar. Y el sync de ads dejó de martillar las cuentas con token muerto: reintenta una vez por día y se reactiva solo cuando reconectás.
- Nueva categoría de riesgo 'integración caída' en el dashboard y la API pública (/v1/risks)
- Cooldown de 3 días por canal: un aviso útil, no spam diario
- ads-sync saltea cuentas Meta con auth muerta (re-check diario) — menos errores repetidos y menos llamadas inútiles a la Graph API
2026-06-11Improvement
Sitio más rápido: landing y blog estáticos desde el edge
La landing y el índice del blog ahora se sirven pre-renderizados desde el edge de Vercel en lugar de renderizarse en cada visita. Mismo contenido, misma personalización por fuente de tráfico (la decide el proxy), pero el primer byte llega en una fracción del tiempo y sin cold starts. Las imágenes para compartir en redes (1.000+ artículos) también quedaron cacheadas 30 días — antes se regeneraban en cada fetch de cada bot.
- Home y /blog: de render dinámico por visita a estático con edge cache (x-vercel-cache: HIT)
- Filtros y búsqueda del blog viven en /blog/explorar; los links viejos redirigen solos
- Fix del forecast estadístico: el MAPE ya no explota con días sin venta (los inserts del cron volvieron a entrar tras una semana fallando)
2026-05-15Improvement
Scoping multi-tenant en analytics + atribución de costo OpenAI + refund-fairness
Cuarta pasada del barrido de precisión y seguridad. Se cerraron fugas cross-tenant en las tablas de analytics: el dashboard home y el daily-brief mezclaban insights y métricas de otros negocios porque las queries no filtraban por store_key (la columna real con la que se particionan events, events_daily e insights). En paralelo, toda llamada a OpenAI en modo JSON ahora registra user_id y feature en openai_usage, así el guard de cuota por usuario y el panel de márgenes dejan de tener puntos ciegos. Y se completó el contrato de reembolsos en el webhook de WhatsApp y el cron del brief diario.
- Dashboard home: el widget de insights y las barras de revenue/eventos se scopean por tenant — ya no agregaban tráfico ni ventas de otros stores
- events / events_daily / insights: queries corregidas para indexar por store_key en dashboard, v1/health, admin/users, daily-brief y alert-metrics (varias filtraban por un user_id inexistente → devolvían 0)
- cron/daily-brief: el contexto del LLM se scopea por tenant + refund de los 10 créditos si el modelo falla
- whatsapp/webhook: refund de whatsapp_reply si no hay assistant configurado, falta la API key o el LLM no devuelve respuesta
- /api/track (pixel público): cap de 8 KB en campos jsonb, truncado de strings y client_ts a prueba de timestamps malformados (antes un ts inválido tiraba 500)
- Atribución de costo OpenAI: las 17 llamadas JSON-mode (ai/*, brief, forecast, insights, whatsapp, daily-brief) registran user_id + feature en openai_usage
2026-05-15Improvement
Guard SSRF en todos los fetch de URLs del usuario + refund-fairness en herramientas IA
Tercera pasada del barrido de seguridad. Todo endpoint que fetchea server-side una URL provista por el usuario (webhooks salientes, scan de competidores, ad-analyzer) pasa por un guard SSRF compartido que rechaza hosts privados, loopback y metadata cloud — incluido al registrar un webhook, no solo al despacharlo. En paralelo, se cerró una fuga cross-tenant en 'Ask KANDIMA' y se completó el contrato de reembolsos: ninguna herramienta IA cobra créditos por trabajo que no entregó.
- lib/url-safety.ts: guard SSRF compartido (isSafeFetchUrl) reutilizado por outbound-webhooks, competitor-scan y ad-analyzer
- ad-analyzer + competitor-scan: la URL del competidor se valida contra hosts privados/reservados antes de debitar créditos
- webhooks-mgmt + v1/webhooks: la URL se valida al registrar — 400 inmediato en vez de un webhook que falla silencioso
- ai/ask: el contexto del LLM (insights + métricas) se scopea por tenant — ya no recibe datos de otros stores
- insights table: dismiss, regenerate y el feed de notifications scopean por store_key (la columna real), no por user_id
- ai/image, insights/compute, assistant/chat, competitor-scan: refund del crédito en todo camino de fallo (sin imagen, parse error, resultado vacío, scrape fallido)
2026-05-15Improvement
Hardening de webhooks salientes + anti mass-assignment en endpoints de configuración
Segunda pasada del barrido de seguridad multi-tenant. El dispatcher de webhooks salientes ahora bloquea URLs que apunten a hosts privados, loopback o metadata cloud — un webhook configurado por un usuario ya no puede usarse para sondear la red interna. Y los endpoints de configuración (canales de notificación, presupuestos de ads, ajustes de WhatsApp, preferencias del brief) pasaron de aceptar el body crudo del cliente a una whitelist explícita de campos editables: ya no se puede reasignar una fila a otro tenant ni pisar columnas que computa el sistema.
- outbound-webhooks: guard SSRF — rechaza http(s) a localhost/.internal/.local, loopback IPv6 y rangos IPv4 privados/reservados (incl. 169.254.169.254 metadata)
- channels POST: whitelist kind/label/url/bot_token/chat_id/email_to/enabled + validación de kind contra el enum del schema
- ad-budgets POST: whitelist de campos — cierra la reasignación de un presupuesto a otro tenant vía user_id en el body
- whatsapp/settings + brief/preferences: upsert con whitelist en vez del spread crudo del body
- insights PATCH: status validado contra el enum (400 limpio en vez de 500 que filtraba el constraint), roi_usd casteado, resolved_action acotado
- assistant/chat: refund del crédito si el loop de tools agota 4 iteraciones sin respuesta del modelo
2026-05-15Improvement
Observabilidad de crons end-to-end + endurecimiento multi-tenant
Los 33 crons ahora escriben un heartbeat fiable en cron_runs en cada corrida (ok y error), así el panel admin cron-status refleja el estado real de todos —no solo los que dejan un artefacto chequeable— y muestra el mensaje de error concreto cuando uno falla. En paralelo, barrido de scoping multi-tenant: cada endpoint de insights y customers verifica la pertenencia por user_id antes de leer o escribir, y los PATCH/POST de customers solo aceptan campos de contacto editables — las métricas (revenue, LTV, churn score) las computa el sistema.
- cron-status: heartbeat por-cron sin el cap de 1000 filas que marcaba crons stale en falso, + mensaje de error real de cron_runs
- 11 crons con try/catch propio ahora registran corrida exitosa, no solo fallos; runCron/reportCronError escriben el heartbeat con await para no perderlo al suspender la función
- Probe daily-actions removido de cron-status — es un endpoint user-triggered, no un cron
- insights/regenerate, insights/dismiss y customers scopean por user_id en select y update
- customers POST/PATCH con whitelist de campos de contacto editables
- ai/daily-actions: rate-limit en POST + refund si la IA devuelve 0 acciones
- automations/webhook: rate-limit por token en el trigger público
2026-05-15Fix
Refund-fairness audit — todos los endpoints con créditos reembolsan si el servicio falla
Auditoría completa de los 18+ endpoints que debitan créditos. Antes, varios casos de fallo (modelo OpenAI que devuelve vacío, JSON inválido, excepción de red, embedding fallido, mensaje WhatsApp no enviado) cobraban al usuario sin reembolsar — JSON.parse('{}') no lanza excepción, así que un resultado vacío pasaba como éxito. Ahora cada endpoint detecta el caso de fallo y llama autoRefundLastDebit antes de responder, devolviendo refunded:true + balance actualizado. Cero cobros por trabajo no entregado.
- ad-pack / ad-scale-advice / ad-analyzer — refund si la IA devuelve variants/result vacío
- copy / generate / mini / competitor-scan / creative-refresh — refund ante output_text vacío
- brief/today / forecast/compute / whatsapp/suggest — refund ante vacío, parse fallido o excepción
- kb embed — refund si falla el insert del documento, el embedding o los chunks
- whatsapp/send — refund si no se crea el thread o el mensaje saliente falla en Meta
- assistant/chat + chat/stream — refund si el loop de IA o el stream SSE lanzan, con guard anti-doble-refund
- publish-ig-batch — refund de los 500-580 créditos del launch batch si la generación de copies falla
2026-05-15Feature
AI emergency-pause — admin instant kill switch + auto-pause + webhooks + user banner
Capa defensiva sobre el cost-control stack. Admin puede pausar AI per-user instantly (POST /api/admin/ai-pause-user) o el cron quota guard auto-pausa cuando cruza el critical threshold (opt-in via OPENAI_AUTO_PAUSE_ENABLED=1). debitCredits respeta el flag (return null → 402 payment_required). User ve banner rojo en su dashboard + email semanal con notice + subject prefix. Webhooks ai.paused / ai.resumed firmados HMAC para que devs puedan reaccionar programáticamente. AdminPaused Users panel con resume button per-row.
- Migration 0029 — credits.ai_paused_at + ai_paused_reason + ai_paused_by + index parcial
- POST /api/admin/ai-pause-user pause|resume con audit_log automático
- GET /api/admin/ai-paused-users — list cross-user con email enrichment + paused_by_system flag
- AdminPausedUsersPanel — tabla con SYSTEM/ADMIN badge + resume button confirm dialog
- Cron openai-user-quota-guard auto-pause (opt-in via env) — idempotent only-if-not-paused
- AiPausedBanner user-facing con copy contextual (by_system vs admin) + CTAs Contactar / Ver billing
- Outbound webhooks ai.paused + ai.resumed (firmados HMAC) con by_kind:admin|system
- Weekly-summary email — bloque rojo prepend + subject prefix '🛑 IA pausada'
2026-05-15Feature
OpenAI cost-control stack — panel admin, 3 crons defensivos, /v1/usage público, drift detector
Stack completa de observabilidad y control de costo OpenAI. Panel admin con 4 charts SVG (cost diario, tokens, requests, dual input/output), forecast + budget warning, live log tail (50 últimas requests), feature margin (credits debiteados vs cost real), CSV export. 3 crons defensivos detectan picos anómalos (z-score 30d), abuso per-user mensual ($20 warn / $50 critical), y drift de modelos hardcoded vs OpenAI /v1/models. Endpoint /v1/usage público (Bearer) para self-billing dashboards. Outbound webhook usage.threshold_crossed para reactividad. AiUsageWidget user-facing con proyección lineal mes. Defense para evitar repeat del bug 'gpt-5.4-mini' que rompió 25 endpoints.
- Panel /dashboard/admin/openai con 4 SVG charts + forecast (avg7d×30, burn rate Δ, budget %) + live log tail + feature margin breakdown
- cron openai-cost-anomaly daily 22 UTC — z-score sobre baseline 30d, critical alert si z>3σ o ratio>2× avg AND >$5
- cron openai-user-quota-guard daily 23 UTC — per-user mensual con warn/critical thresholds, allow-list KANDIMA_INTERNAL_USER_IDS
- cron openai-pricing-drift weekly lunes 6 UTC — valida modelos hardcoded vs OpenAI /v1/models, alerta si deprecated
- GET /v1/usage Bearer-auth público — self-billing breakdown (credits + tokens + cost USD) por feature + daily series + 3 períodos
- Outbound webhook usage.threshold_crossed firmado HMAC fire-and-forget al cron quota guard
- AiUsageWidget user-facing en /dashboard — cost mes + proyección lineal + progress bar día/mes + top feature
- weekly-summary email user-facing incluye AI usage 7d block (credits + cost + top feature)
- lib/openai-pricing.ts dedup — single source of truth de PRICING + estimateOpenAiCostUsd para 5 endpoints
- CSV export ?format=csv en analytics endpoint — dump completo (50k rows max) sanitizado
2026-05-17Feature
Risk + Opportunity engine — concentration, revenue velocity, segmentation
Suite completa de detection: el cron suite ahora vigila churn (existing), concentration (Pareto roto en clientes), revenue velocity (MoM crash o spike) y segmentation RFM cross-user. Riesgos se ven en widget rojo, oportunidades en widget verde separado para que la UI lea sin ambigüedad.
- cron customer-concentration daily 11:30 UTC — flag si top customer ≥70% revenue (critical) o top-3 ≥90% (warning)
- cron revenue-velocity daily 12:30 UTC — detecta MoM crash >40% (critical) y spike >100% (info, oportunidad para escalar ads)
- AdminCustomerSegmentationPanel — RFM cross-user con stacked bar y alerts (churn>30%, at_risk>25%, whale<1%)
- GET /api/v1/customers/segments público — partners pueden consumir RFM breakdown via Bearer auth
- GET /api/admin/risk-overview consolidado — admin endpoint que agrega ambas categorías risk-related
- /api/insights/risks user endpoint y ChurnRiskWidget rebrand a 'Riesgos del negocio' (churn + concentration + revenue crash)
- /api/insights/opportunities + OpportunitiesWidget verde — separa los upsides (revenue spikes) de los riesgos
2026-05-16Feature
Churn risk detection — cron + admin overview + user widget + API + alerts
End-to-end churn risk detection: cron diario detecta clientes con revenue ↓>30% vs 30d previos, inserta ai_insights category=churn_risk, dispara critical alert si ≥3 flagged en 24h. Admin ve overview cross-user con CSV export + paying flag. User ve widget en su dashboard solo si tiene clientes en riesgo. Partners pueden filtrar via /v1/insights?category=churn_risk.
- cron churn-risk-detect daily 10:30 UTC — compara revenue 30d vs 30d previos por user_id, flag si decline >30% y prev >= $10
- AdminChurnRiskPanel — overview cross-user con 5 stats (flagged, lost USD, avg decline, paying at risk, credits at risk), severity chips, tabla 100 con CSV
- ChurnRiskWidget user-facing en /dashboard — solo se muestra si hay churn_risks, máximo 5 con suggested_action
- /v1/insights filtro ?category=churn_risk + retorna metadata para que partners armen UIs propios
- Critical alert dispatch via Slack/Discord/Telegram si ≥3 clientes flagged en una corrida (TTL 12h)
- admin-digest email diario muestra count flagged 7d + 🚨 al subject si crítico
- Cleanup cron preserva customer_events 730d (2y) para soportar revenue ranking 3y
2026-05-15Feature
Real probes Stripe/Resend + inline critical dispatch + /v1/incidents + atom feed
Tras detectar bug crítico (Resend key revocada en silencio) hicimos pasada de hardening de observability + feedback loops. Detección de outages cae de 24h a ~6h y notificación de segundos. /status público y /api/v1/incidents listan incidencias activas para users finales y partners.
- launch-readiness probes reales (HTTP request) a Stripe + Resend — detecta keys revocadas, no solo absence
- cron system-health corre cada 6h (era 1x/día) y dispara critical alerts inline si servicio down
- +2 detectors críticos (resend_down, openai_down) via Slack/Discord/Telegram (no email — porque si Resend cae el email tampoco llega)
- AdminCriticalAlertsHistoryPanel — timeline 7d con channel breakdown + top alert keys
- AdminTestChannelsPanel — botones Test on-demand para Slack/Discord/Telegram/Resend (probe key)
- GET /api/v1/incidents público — incidencias activas inferidas con severity minor/major/critical (cache 60s)
- /status público lista incidencias activas en banner amarillo arriba de UptimeBars
- /changelog/atom feed Atom 1.0 (RFC 4287) además del RSS existente para Feedly/Inoreader/NetNewsWire
- Audit Resend tolerance: 7/7 callers ya tienen try/catch — sistema sigue operativo aún con Resend down
2026-05-14Feature
Admin observability stack: HealthPulse + SecurityPulse + AiEndpointsAudit + TtfbPulse
4 paneles admin nuevos para visibilidad runtime de toda la plataforma. LaunchReadiness extendido con 3 health probes en tiempo real, cron system-health trackea 7 nuevos métricas (env config, paying users, CSP). Compliance score 100% en 12/12 endpoints AI verificado runtime.
- HealthPulsePanel — uptime % + p95 latency 24h por servicio (OpenAI, Stripe, Resend, landing, DB) desde system_health
- SecurityPulsePanel — sparkline horario 24h de webhook_signature, auth, rate_limit, csp violations
- AiEndpointsAuditPanel — runtime audit de guards (debit + rate limit + refund + 402 + JSON helper) en cada AI endpoint. 12/12 PASS
- TtfbPulsePanel — probe on-demand TTFB+status de 8 páginas críticas (landing, pricing, blog, sitemap, robots, status, /v1/status)
- /api/admin/launch-readiness +3 health probes con latencia exacta (Supabase, OpenAI, Stripe webhook)
- Cron system-health +7 metrics: stripe_live, stripe_webhook, resend, openai_key, launch_critical_env_count, csp_violations_per_hour, paying_users_total
2026-05-14Feature
GET /api/v1/uptime público + CSP-Report-Only + extensión OpenAPI
Endpoint público sin auth con uptime % per service derivado de system_health (1-168h). Útil para monitoring scripts de partners. Agrega Content-Security-Policy-Report-Only a vercel.json con endpoint propio para descubrir violations sin bloquear nada.
- GET /api/v1/uptime?hours=24 — uptime + avg latency por servicio
- Cache 60s + JSON estable para integraciones
- OpenAPI updated con full schema del endpoint
- llms.txt incluye /v1/uptime para LLM discovery
- POST /api/security/csp-report — recibe report-uri (legacy) + report-to (modern), filtra noise extensiones
- vercel.json: Reporting-Endpoints + CSP-Report-Only política base permisiva
- Violaciones se loggean en kandima_errors category=csp y aparecen en SecurityPulse 24h
2026-05-14Launch
3 Reports industria + /press + /sitio + /api/v1/llm-system-prompt
Mega batch de SEO+GEO discoverability. 3 reports industria citables (Ecommerce LATAM 2026, Marketing Digital LATAM 2026, WhatsApp Commerce LATAM 2026), press kit oficial con boilerplate y founder bio, mapa del sitio human-readable, system prompt público para que developers integren contexto KANDIMA en GPTs/Claude Projects.
- /reporte/whatsapp-commerce-latam-2026 — único Report del mercado con benchmarks WhatsApp por país LATAM
- /reporte/marketing-digital-latam-2026 — 7 plataformas × 6 países con CPM/CTR/CPC/conv rate
- /press kit oficial: quick facts, boilerplate corta+larga, founder bio, 7 talking points, brand assets download
- /sitio mapa del sitio human-readable con 100+ URLs organizados por tema
- GET /api/v1/llm-system-prompt (?format=text) — pegalo en GPTs/Claude/RAG
- GET /api/v1/reports — listado citable con metadata sections/topics/dataset URLs
- OG dinámicos para los 3 reports + /press + /sitio (Satori Vercel)
- llms.txt + Footer + sitemap actualizados con todos los nuevos URLs
2026-05-14Launch
Report Estado del Ecommerce LATAM 2026
Lanzamos el primer Report industria de KANDIMA. Benchmarks reales por vertical, atribución post-iOS 18, stack de herramientas y 10 predicciones para 2027. Datos crudos de operadores LATAM conectados a KANDIMA. CC BY 4.0.
- /reporte/ecommerce-latam-2026 — 8 secciones, 12 min lectura
- 8 verticales con True ROAS · MER · CAC · AOV · LTV 12m · Frequency
- 10 predicciones 2027 con confidence (high/medium/low) y horizon
- Schema.org Report + Dataset + Article JSON-LD para crawl Google + LLMs
- GET /api/v1/benchmarks + /api/v1/predictions públicos (CC BY 4.0)
- OG dinámico /reporte/ecommerce-latam-2026/opengraph-image
- Footer link permanente · /reporte index con CollectionPage JSON-LD
2026-05-14Feature
Glosario expandido a 26 KPIs + 13 calculadoras + 3 alternativas + 3 verticales
Más profundidad SEO/GEO: 6 términos nuevos al glosario (Incrementality, MMM, RFM, Contribution Margin, Ad Fatigue), 8 calculadoras nuevas (CAC payback ML, Frequency 12m, ROAS objetivo según margen, AOV bundles, Cohort M3 healthcheck, Ad Fatigue, Profit per Order), 3 comparativas (Hyros, Lifetimely, Wicked Reports) y 3 verticales (gastronomía, joyería, cosmética natural).
- Glosario: 26 términos (era 20) — cada uno SSG con DefinedTerm + Article JSON-LD
- Calculadoras: 13 (era 5) — fórmulas + body explicativo + URL canónico
- Alternativas: 8 (era 5) — TechArticle JSON-LD + tabla resumen side-by-side nueva
- Casos de uso: 11 verticales (era 8)
- GET /api/v1/index master discovery endpoint — 16 públicos + 14 auth listed
- OG dinámico /glosario/opengraph-image
- Sitemap.xml auto-incluye los slugs nuevos vía .map sobre data.ts
2026-05-14Fix
Defense-in-depth AdminLivePanels c.signups.length crash
Fix root cause del único crash log que quedaba en kandima_errors. Doble defensa: optional chain en componente + endpoint siempre devuelve {signups: []} aún en error path.
- AdminLivePanels: optional chain signups?.signups?.length ?? 0 en 3 callsites
- /api/admin/recent-signups: en error retorna 200 con {signups: [], error} en lugar de 500
- 0 errors actuales en kandima_errors
2026-05-14Feature
SEO + GEO masivo: 989 posts, schema.org, /alternativas, /integraciones
Empuje masivo de SEO + Generative Engine Optimization. 989 blog posts en producción, schema.org JSON-LD masivo (Article, FAQ, Breadcrumb, Organization, Product, AggregateOffer), páginas /integraciones y /alternativas, llms.txt v2 + llms-full.txt corpus completo para LLMs.
- 989+ blog posts (curated + generated) en /blog con búsqueda + filtros + tag pages crawlables
- Schema.org JSON-LD: BlogPosting + FAQPage + BreadcrumbList por post; Organization + WebSite + SoftwareApplication global
- Pricing con Product + AggregateOffer schema → Rich Results en SERP
- /integraciones (18 integraciones, 6 categorías) + /alternativas (5 comparativas honestas)
- GET /api/v1/blog público (CORS, sin auth) para RAG/Zapier/n8n ingestion
- GET /api/v1/integraciones + /api/v1/feature-costs + /api/v1/changelog públicos
- llms.txt v2 + llms-full.txt corpus completo (CC BY 4.0)
- robots.ts allow GPTBot/ClaudeBot/PerplexityBot/Google-Extended/etc
2026-05-14Feature
REST API v1 pública + Webhooks outbound
KANDIMA ahora expone API REST completa con 16+ endpoints v1, OpenAPI 3.0 spec importable a Postman/Insomnia, webhooks salientes firmados con HMAC SHA256, y panel UI para gestionarlos.
- 16+ endpoints: /v1/me, /credits, /customers, /integrations, /webhooks, /insights, /profit, /anomalies, /track, /ads, /creatives, /inventory, /reorder, /conversations, /health, /status
- Bearer auth con API keys ka_live_xxx generadas desde el dashboard
- Rate limit 60 req/min por key + headers X-RateLimit-Remaining/Reset
- Webhooks: 9+ eventos (purchase.created, credit.consumed/refunded, integration.connected/disconnected/broken, alert.fired, anomaly.detected, creative.winner.detected, inventory.low_stock)
- OpenAPI spec en /api/v1/openapi.json — auto-generate SDKs
- Postman collection en /api/v1/postman
- TypeScript SDK en /api/v1/sdk/typescript + Python en /api/v1/sdk/python
- API Playground interactivo en /docs/api/playground
- CSV exports con ?format=csv en /v1/customers y /v1/profit
- Docs en /docs/api con curl examples y signature verify code
2026-05-14Improvement
Hardening seguridad + observabilidad admin
Defense-in-depth HTTP, RLS audit, panel admin con 30+ widgets, diagnostics live, manual cron trigger, version refresh banner, outbound webhook visibility.
- HSTS preload + X-Frame-Options + COOP headers (security score 100%)
- Rate limit IP en /api/contact + /api/ref/[code]
- Idempotency + bad-signature logging en 7 webhooks (Stripe/Clerk/Shopify/TN/ML/IG/WhatsApp)
- Admin panels nuevos: BuildInfo, Diagnostics, EnvVars, RLS, SlowQueries, AuditLog, ManualCronTrigger, SecurityHeaders, OutboundWebhooks
- VersionRefreshBanner — avisa al user cuando hay nueva versión disponible
- /dashboard/help con shortcuts + FAQs + contact
- Compliance score 100/100 (HSTS, CSP, GDPR data export/delete, audit log)
2026-05-11Feature
Pay-as-you-go IA con sistema de créditos
Plataforma 100% gratis. La IA se cobra por uso. Cargás packs de $10, $50, $100 (+15% bonus) o $500 (+25% bonus). Cada feature tiene costo transparente en créditos.
- Stripe live ya configurado con 4 packs + webhook signed
- Balance live en sidebar + history de tx en /dashboard/credits
- AI Insight 5 créditos · Creative analysis 50 · Forecast 20
- Bonus automático en packs ≥$50
- Auto-recarga opcional cuando balance < threshold
- Refund automático en cada fallo IA
2026-05-11Feature
Creative Intelligence + Forecasting live
Subís una imagen, KANDIMA analiza hook, retention, CTA, fatiga, devuelve ADN + 3-5 recommendations. Forecasting con exp-smoothing sobre eventos del pixel.
- Vision + GPT-4o-mini analiza creativos · 50 créditos por análisis
- Forecast 30D de pageviews + purchases + revenue
- Modelo: exp-smoothing α=0.3; Holt-Winters cuando data >90d
2026-05-11Feature
OAuth scaffolded para 6 plataformas
Shopify, Tienda Nube, Mercado Libre, Meta Ads, TikTok Ads y Google Ads — cada uno con su flow OAuth completo, callback HMAC-verified y persistencia en DB.
- Multi-site para Mercado Libre (AR/MX/BR/CL/CO/UY)
- Long-lived tokens para Meta
- Refresh tokens para Google y ML
- Progress dial dinámico en /dashboard/integrations
2026-05-11Feature
Referral program 20% bonus
Cada usuario tiene un link único /api/ref/<code>. Cuando un referido compra créditos, el referrer recibe automáticamente 20% en créditos.
2026-05-11Launch
Hola mundo. KANDIMA está vivo.
Salimos a beta cerrada con landing pública, waitlist y Track IA pixel funcionando.
- Landing world-class con 10 secciones
- Pixel first-party Track IA (3-step install)
- Dashboard con métricas reales de Supabase
- Auth Clerk con sign-in / sign-up brandeados
- 12 rutas de dashboard mapeadas, sidebar funcional
2026-05-11Feature
AI Ops Engine corre cada día
Engine deterministic-rules detecta caídas de tráfico, fatiga de engagement, gaps de conversión y anuncia cuándo subir budget. LLM root-cause analysis viene en breve.
- 5 reglas de detección activas
- Insights se persisten con dedup por fingerprint
- Severity: info / good / warn / urgent
- Cron diario 9am Argentina (Vercel)
2026-05-11Feature
Track IA pixel disponible para instalar
First-party pixel que recupera 30-50% de conversiones que iOS14 le sacó a Meta y TikTok.
- Auto-events: pageview, scroll_depth, time_on_page
- API window.kandima('event', name, props)
- Visitor cookie 90d + session_id
- Sticky first-touch attribution
- Geo enrichment server-side (Vercel headers)
Todo esto ya está en producción. Creá tu cuenta gratis y empezá a usarlo hoy mismo.
Crear cuenta gratis · 100 créditos→Sin tarjeta · cancelás en 1 click.