1from anthropic import Anthropic
2from openai import OpenAI
3import { Workflow, trigger } from "@n8n/sdk";
4
5client = Anthropic()
6openai_client = OpenAI()
7
8# Pipeline de clasificación automática de documentos
9def clasificar_documento(texto: str) -> dict:
10 respuesta = client.messages.create(
11 model="claude-sonnet-4-20250514",
12 max_tokens=1024,
13 messages=[{
14 "role": "user",
15 "content": f"Clasifica este documento: {texto}"
16 }]
17 )
18 return procesar(respuesta.content)
19
20// Automatización de scoring de leads
21const pipeline = workflow("lead-scoring");
22
23pipeline.on(trigger.webhook("/nuevo-lead"),
24 async (lead) => {
25 const score = await analyzeLead(lead.data);
26 const enriched = await enrichProfile(lead.email);
27
28 if (score > 0.85) {
29 await crm.updateStatus(lead.id, "hot");
30 await slack.send("#ventas", {
31 text: `Lead caliente: ${lead.name}`,
32 score: Math.round(score * 100),
33 });
34 }
35 }
36);
37
38# Generación de embeddings para búsqueda semántica
39async def generar_embeddings(documentos: list[str]):
40 embeddings = await openai_client.embeddings.create(
41 model="text-embedding-3-large",
42 input=documentos
43 )
44 await vector_db.upsert(
45 vectors=embeddings.data,
46 namespace="documentos"
47 )
48 return { "indexed": len(documentos) }
49
50export function MetricsPanel({ data }: Props) {
51 const trend = useMemo(
52 () => calcularTendencia(data.ingresos),
53 [data]
54 );
55
56 return (
57 <Card className="p-6 space-y-4">
58 <KPI label="MRR" value={data.mrr} trend={trend} />
59 <AreaChart data={data.timeline} color="blue" />
60 <Table rows={data.clientes} sortBy="revenue" />
61 </Card>
62 );
63}
64
65# Sincronización automática con CRM
66class CRMSync:
67 def __init__(self, api_key: str):
68 self.client = HubSpot(api_key=api_key)
69 self.cache = Redis(host="cache.internal")
70
71 async def sync_contacts(self):
72 contacts = await self.client.get_modified(
73 since=self.cache.get("last_sync")
74 )
75 for contact in contacts:
76 await db.upsert("contacts", contact)
77 await self.trigger_workflows(contact)
78 self.cache.set("last_sync", now())
79
80// Dashboard de métricas en tiempo real
81const useRealtimeMetrics = (interval = 5000) => {
82 const [metrics, setMetrics] = useState<Metrics>(null);
83 useEffect(() => {
84 const ws = new WebSocket("wss://api.internal/metrics");
85 ws.onmessage = (e) => setMetrics(JSON.parse(e.data));
86 return () => ws.close();
87 }, [interval]);
88 return metrics;
89};
1
2from anthropic import Anthropic
3from openai import OpenAI
4import { Workflow, trigger } from "@n8n/sdk";
5
6client = Anthropic()
7openai_client = OpenAI()
8
9# Pipeline de clasificación automática de documentos
10def clasificar_documento(texto: str) -> dict:
11 respuesta = client.messages.create(
12 model="claude-sonnet-4-20250514",
13 max_tokens=1024,
14 messages=[{
15 "role": "user",
16 "content": f"Clasifica este documento: {texto}"
17 }]
18 )
19 return procesar(respuesta.content)
20
21// Automatización de scoring de leads
22const pipeline = workflow("lead-scoring");
23
24pipeline.on(trigger.webhook("/nuevo-lead"),
25 async (lead) => {
26 const score = await analyzeLead(lead.data);
27 const enriched = await enrichProfile(lead.email);
28
29 if (score > 0.85) {
30 await crm.updateStatus(lead.id, "hot");
31 await slack.send("#ventas", {
32 text: `Lead caliente: ${lead.name}`,
33 score: Math.round(score * 100),
34 });
35 }
36 }
37);
38
39# Generación de embeddings para búsqueda semántica
40async def generar_embeddings(documentos: list[str]):
41 embeddings = await openai_client.embeddings.create(
42 model="text-embedding-3-large",
43 input=documentos
44 )
45 await vector_db.upsert(
46 vectors=embeddings.data,
47 namespace="documentos"
48 )
49 return { "indexed": len(documentos) }
50
51export function MetricsPanel({ data }: Props) {
52 const trend = useMemo(
53 () => calcularTendencia(data.ingresos),
54 [data]
55 );
56
57 return (
58 <Card className="p-6 space-y-4">
59 <KPI label="MRR" value={data.mrr} trend={trend} />
60 <AreaChart data={data.timeline} color="blue" />
61 <Table rows={data.clientes} sortBy="revenue" />
62 </Card>
63 );
64}
65
66# Sincronización automática con CRM
67class CRMSync:
68 def __init__(self, api_key: str):
69 self.client = HubSpot(api_key=api_key)
70 self.cache = Redis(host="cache.internal")
71
72 async def sync_contacts(self):
73 contacts = await self.client.get_modified(
74 since=self.cache.get("last_sync")
75 )
76 for contact in contacts:
77 await db.upsert("contacts", contact)
78 await self.trigger_workflows(contact)
79 self.cache.set("last_sync", now())
80
81// Dashboard de métricas en tiempo real
82const useRealtimeMetrics = (interval = 5000) => {
83 const [metrics, setMetrics] = useState<Metrics>(null);
84 useEffect(() => {
85 const ws = new WebSocket("wss://api.internal/metrics");
86 ws.onmessage = (e) => setMetrics(JSON.parse(e.data));
87 return () => ws.close();
88 }, [interval]);
89 return metrics;
1};