2026-05-21 · DATA ROOM
Taskweaver Ai
Ship Spring Boot APIs at the speed of thought
ELEVATOR PITCH
AI-powered code generation platform that transforms natural language into production-ready Spring Boot microservices in seconds.
VALUE PROPOSITION
10x faster backend development by eliminating boilerplate and automating architecture decisions.
EXPLAINER.md
TaskWeaver AI — EXPLAINER
Concepto
TaskWeaver AI es un motor de flujos de trabajo autónomos para equipos de operaciones, marketing y ventas en pymes (10-250 empleados) que quieren automatizar procesos multi-SaaS sin escribir código. El usuario describe el proceso en lenguaje natural; la IA genera un plan estructurado de ejecución, lo persiste y lo lanza en hilos virtuales de Java 25.
Arquitectura
┌──────────────────────────────────────────────────────────────────┐
│ REST API (Spring Boot 4 / SB4) │
│ AuthController WorkflowController ConnectorController Dash │
└──────────┬───────────────┬──────────────────┬────────────────────┘
│ │ │
AuthService WorkflowService ConnectorService DashboardService
│ │ │
│ WorkflowPlannerService ←→ OpenAI/GPT-4o (RestClient)
│ WorkflowExecutionService
│ └─ ExecutorService (VirtualThread per task)
│ │
│ ┌──────────────┴─────────────────────┐
│ │ Feign Clients (Spring Cloud OpenFeign)│
│ │ HubSpotClient SlackClient │
│ │ SalesforceClient │
│ └─────────────────────────────────────┘
│
EncryptionService (AES-256-GCM)
│
Spring Data JPA ──► H2 (dev) / PostgreSQL (prod)
User Workflow ExecutionLog AppConnection
Capas
| Capa | Responsabilidad |
|---|---|
controller | REST endpoints, binding HTTP ↔ DTO |
service | Lógica de negocio, orquestación |
repository | Spring Data JPA, queries JPQL |
model | Entidades Jakarta Persistence |
dto | Records Java 25 — contratos API inmutables |
security | JWT filter, UserDetailsService, token provider |
config | SecurityConfig, FeignConfig, VirtualThreadConfig, RestClientConfig |
feign | Interfaces Feign para HubSpot, Salesforce, Slack |
exception | GlobalExceptionHandler, WorkflowException |
Endpoints
Auth (público)
POST /api/v1/auth/register
Body: { "email": "...", "password": "...", "name": "..." }
→ 201 { token, email, name, plan }
POST /api/v1/auth/login
Body: { "email": "...", "password": "..." }
→ 200 { token, email, name, plan }
Workflows (JWT requerido — Authorization: Bearer <token>)
POST /api/v1/workflows
Body: { "name": "Lead a Slack", "description": "Al recibir lead de HubSpot notificar #ventas en Slack" }
→ 201 { id, name, description, status, planJson, createdAt, updatedAt }
GET /api/v1/workflows
→ 200 [ WorkflowResponse... ]
GET /api/v1/workflows/{id}
→ 200 WorkflowResponse
POST /api/v1/workflows/{id}/execute
→ 202 (ejecución asíncrona iniciada; poll /executions)
GET /api/v1/workflows/{id}/executions
→ 200 [ ExecutionLogResponse... ] ← historial con stepLogsJson
DELETE /api/v1/workflows/{id}
→ 204
Conectores
POST /api/v1/connectors
Body: { "appType": "SLACK", "connectorName": "Slack Ventas", "accessToken": "xoxb-...", "refreshToken": null }
→ 201 ConnectorResponse (tokens nunca devueltos)
GET /api/v1/connectors
→ 200 [ ConnectorResponse... ]
DELETE /api/v1/connectors/{id}
→ 204
Dashboard
GET /api/v1/dashboard
→ 200 { totalWorkflows, activeWorkflows, totalExecutions,
successfulExecutions, failedExecutions, connectedApps }
Motor de Ejecución Autónomo
WorkflowService.triggerExecution()
└─► WorkflowExecutionService.executeAsync()
└─► CompletableFuture.supplyAsync(task, virtualThreadExecutor)
├─ Resuelve plan JSON (cache o re-planifica)
├─ Por cada WorkflowPlanStep:
│ └─ dispatchStep() → switch(connector) → Feign client call
└─ Persiste ExecutionLog con stepLogsJson + status
Executors.newVirtualThreadPerTaskExecutor()— un hilo virtual por tarea,
- Cada paso registra timestamp + resultado en el log para trazabilidad completa.
- Planner con fallback offline: si no hay
openai.api-key, el planner basado
Seguridad
| Aspecto | Implementación |
|---|---|
| Autenticación API | JWT HMAC-SHA256 (JJWT 0.12.6), exp 24h |
| Contraseñas | BCrypt (factor 10) |
| Tokens OAuth2 en BD | AES-256-GCM con IV aleatorio por cifrado |
| Sesión | STATELESS (sin HttpSession) |
| CSRF | Desactivado (API sin estado) |
Análisis de Negocio
Problema atacado
Equipos RevOps / MarketingOps dedican ~30 % de su tiempo a tareas de integración manual entre HubSpot ↔ Salesforce ↔ Slack ↔ Gmail. Herramientas como Zapier son frágiles, no manejan ambigüedad y requieren configuración técnica. ROI claro: 10 h/semana ahorradas × €40/h = €400/semana por equipo.Modelo de monetización (Freemium B2B SaaS)
| Plan | Precio | Límites |
|---|---|---|
| Free | €0 | 50 ejecuciones/mes, 2 conectores |
| Pro | €49/mes | 5 000 ejecuciones, 10 conectores, lógica condicional |
| Enterprise | €199/mes | Ilimitado, SLA, SSO, audit log |
Ventaja competitiva
- Agente autónomo vs. reglas rígidas → maneja variaciones reales
- Especialización vertical (RevOps) antes de expandir horizontalmente
- Planner LLM intercambiable (OpenAI → Anthropic Claude → local Llama)
Conectores Soportados
| App | Feign Client | Operaciones MVP |
|---|---|---|
| HubSpot | %%INLINE12%% | %%INLINE13%%, %%INLINE14%%, %%INLINE15%% |
| Salesforce | %%INLINE16%% | %%INLINE17%%, QUERY |
| Slack | %%INLINE19%% | %%INLINE20%% |
| Gmail | (próximo) | SEND_EMAIL |
| Google Sheets | (próximo) | APPEND_ROW |
Cómo ejecutar
Requisitos
- Java 25+
- Maven 3.9+
- (Opcional)
OPENAI_API_KEYpara planner LLM real
Desarrollo con H2 (sin configuración extra)
cd solutions/2026-05-21-taskweaver-ai
mvn spring-boot:run
# Servidor en http://localhost:8080
Con OpenAI
mvn spring-boot:run \
-Dspring-boot.run.jvmArguments="-Dopenai.api-key=sk-..."
Con PostgreSQL
# src/main/resources/application-prod.yml
spring:
datasource:
url: jdbc:postgresql://localhost:5432/taskweaver
username: tw_user
password: tw_pass
jpa:
hibernate:
ddl-auto: update
mvn spring-boot:run -Dspring.profiles.active=prod
Flujo rápido de prueba
# 1. Registro
curl -X POST http://localhost:8080/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{"email":"ops@acme.com","password":"secret123","name":"Ana Ops"}'
# 2. Login → guardar token
TOKEN=$(curl -s -X POST http://localhost:8080/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"ops@acme.com","password":"secret123"}' \
| jq -r '.data.token')
# 3. Crear flujo de trabajo con lenguaje natural
curl -X POST http://localhost:8080/api/v1/workflows \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Lead enrichment pipeline",
"description": "Al recibir nuevo lead de HubSpot, si la empresa tiene más de 50 empleados crear oportunidad en Salesforce y notificar el canal #ventas en Slack"
}'
# 4. Ejecutar el flujo (id=1)
curl -X POST http://localhost:8080/api/v1/workflows/1/execute \
-H "Authorization: Bearer $TOKEN"
# 5. Ver historial de ejecuciones
curl http://localhost:8080/api/v1/workflows/1/executions \
-H "Authorization: Bearer $TOKEN"
# 6. Dashboard de métricas
curl http://localhost:8080/api/v1/dashboard \
-H "Authorization: Bearer $TOKEN"
Referencias
- AI SaaS 2026 — Building Products That Think
- Spring Boot 4.0.4 — https://spring.io/projects/spring-boot
- JJWT 0.12.x — https://github.com/jwtk/jjwt
- Spring Cloud OpenFeign 4.2.1 — https://spring.io/projects/spring-cloud-openfeign
- OpenAI Chat Completions API — https://platform.openai.com/docs/api-reference/chat
Generado por Forge-AI — 2026-05-21
MVP FEATURES
- 01Natural language to REST endpoint generator
- 02JPA entity scaffolding
- 03OpenAPI spec auto-generation
- 04Docker Compose export
“The AI that speaks fluent Java”
Start Building Free
Flowforge Ai
82AI-powered code generation platform that transforms natural language into production-ready Spring Boot microservices in seconds.
Insight Pilot Api
82AI-powered code generation platform that transforms natural language into production-ready Spring Boot microservices in seconds.
Finshield Ai Api
82AI-powered code generation platform that transforms natural language into production-ready Spring Boot microservices in seconds.