Arkitektur
Hur det är byggt
Det här är inte teori. Det är systemet jag faktiskt kör. När du anställer mig får du samma arkitektur — webbplatsen, AI-verktygen, och en stab på nitton agenter som driver din site i bakgrunden. En person, hela kedjan.
De nitton agenterna
En orkestrerare, sexton specialister, två vakthundar. Varje agent har en tydlig roll, ett internt budgettak, och en schemavaliderad output. Klicka på en agent för att läsa mer.
19
agenter i drift
11
kundvända
100%
godkännande-gate
2
modeller (Haiku · Sonnet)
Klicka på en agent för att läsa mer
Visat live på startsidan
AI Business Advisor — RAG per företag
Orben på startsidan är ingen kuliss. Den är kopplad till en riktig multi-tenant RAG-motor: en AI som kan ett specifikt företag och svarar med källor. Samma motor driver både AI Business Advisor och Offert-agenten — och bygger jag in i mina kunders egna sajter.
- 01
Kurerad kunskap
Varje företag får ett eget, isolerat kunskapsvalv — siffror, lokal marknad, konkurrensbild. Hur valvet kureras är min metod; resultatet är en AI som faktiskt kan företaget.
- 02
Voyage-embeddings
Dokumenten chunkas sektionsmedvetet, bäddas in med voyage-3-large (1024-dim) och lagras i pgvector på Neon (EU).
- 03
Isolerad retrieval
Cosine-sökning (<=>) med ett OBLIGATORISKT company_id-filter. En frisörsalongs fråga kan aldrig nå ett kafés data — saknas company_id vägrar funktionen att köra.
- 04
Grundat svar med källor
Claude Haiku 4.5 svarar enbart från hämtad kontext, streamar token för token, och bifogar källkort så besökaren ser exakt vilket dokument varje påstående bygger på.
Isoleringskontraktet
Multi-tenancy är inte en inställning man hoppas håller — det är en invariant. retrieveSimilarAdvisor kräver ett company_id och kastar fel utan det. Två personas (Business som kan bolaget, Build som kan vad jag bygger) delar en motor men aldrig data.
Skyddsräcken för en publik demo
- All besökartext slås in i UNTRUSTED-block — modellen följer aldrig direktiv inifrån. Samma försvar som agentplattformen.
- Rådgivar-framing: aldrig riktiga priser eller löften som fakta. Demobolagen är fiktiva, så exfiltreringsytan är noll.
- Synlig "AI-assistent · demo"-märkning (EU AI Act art. 50), 2000-teckens tak och rate-limit per IP.
Säkerhet & kontroll
Jag är ansvarig för dina kunders data, dina mejl, din publicerade text. De här sex pelarna är inbyggda i plattformen — inte en fas-2-leverans.
Magisk länk-inloggning
Inga lösenord. NextAuth v5 med Resend, vitlistad e-post. En läckt länk kan inte logga in en främling.
Prompt-injection-skydd
All användartext från webhooks slås in i UNTRUSTED-block. Modellen instrueras att aldrig följa direktiv inifrån blocket. Schema-validerade URL-allowlists stoppar exfiltrering.
Budgettak per agent + per klient
Varje agent har en daglig budget-tröskel. Varje klient har en månatlig token-envelope. Når någondera taket vägrar runnern att starta — ingen agent kan lura plattformen att blöda en kunds budget. Postgres advisory-lock säkrar mot race conditions.
Schemavaliderad output
Alla strukturerade agenter använder generateObject + Zod. Modellen kan inte skicka skräp som kraschar pipelinen. Externa agenter (Scout/Liaison) har dessutom ett safety_classification-fält.
Per-klient webhook-tokens
Varje klient har sin egen bearer-token i clients.webhook_token-kolumnen. En läckt token kompromitterar bara en klients dataflöde — inte hela plattformen.
Append-only audit log
Varje agent-körning, varje godkännande, varje blockerad refusal loggas. Kan aldrig ändras i efterhand. Felsöker varför Auditor sa X på 30 sekunder.
Stacken
Modern, beprövad, och driftsäker. Allt körs på EU-baserade leverantörer med transparent versionspolicy — inga svarta lådor.
Frontend
- Next.js 15 (App Router)
- React 19
- TypeScript strict
- Tailwind v4
- next-intl (sv/en)
Backend
- Vercel serverless + edge
- Postgres (Neon EU)
- Drizzle ORM
- NextAuth v5 + Resend magic-link
AI-lager
- Vercel AI SDK v4
- Claude Haiku 4.5 (specialister)
- Claude Sonnet 4-6 (Captain + Surgeon)
- Prompt caching
- generateObject + Zod-scheman
Drift
- GitHub Actions cron
- Postgres rate-limit buckets
- Resend för transaktionella mejl
- Audit log + intern eventbus
En dag på plattformen
Vad agenterna gör utan att jag behöver lyfta ett finger — och var jag faktiskt klickar för att godkänna.
- 02:00 UTCSentinel kör säkerhetsskanning på sajten + GitHub-repot. Hittar något kritiskt? Det blir ett pending_approval-utkast åt mig.
- 06:00 UTCCaptain sammanställer en morgonbriefing baserat på senaste 24h. Captain-daily mejlar varje Standard/Pro-kund med deras gårdagssiffror.
- 09:18Jag öppnar /inbox, läser, redigerar två rader, klickar Godkänn. Resend skickar mejlet i mitt namn.
- 14:32En kund mejlar en supportfråga. Liaison drar utkast i min röst. Jag godkänner.
- var 6:e timmeWatchman pollar din site, hämtar sitemap + canonical rooten, loggar 4xx/5xx i client_errors. Återkommande fel eskaleras till Surgeon.
- vid tröskelSurgeon läser den brutna URL:en, hämtar relevant kod från ditt repo, drar en supervised PR med fix. Du läser, mergar eller stänger.
- var 30:e minutGuardian kollar alla agenters hälsa. En har missat sin cron — eskalerar bara om det är två cykler i rad.
- måndag 07:00Auditor fan-outar en run per aktiv kund. Veckorapport landar i /inbox för granskning, sedan mejlas till kunden.
Det är samma system jag bygger åt dig
Du behöver inte bygga någonting själv. Du behöver bara veta att den som bygger för dig kör samma stack själv, varje dag, och ser problemen innan du gör det.
Boka 15 min samtal