---
title: "Changemkr: fyra system blev en plattform"
description: "Fyra ärvda system slogs ihop till en AI-plattform för förändringsledning, kring en schemaauktoritet med grindar som håller gränserna. Mätt till juni 2026."
url: https://torn.studio/sv/arbete/changemkr-fyra-system-en-plattform
locale: sv
published: 2026-09-01
updated: 2026-06-30
---

# Changemkr: fyra system blev en plattform

> **Kort svar:** Torn Studio hade produktrollen i Changemkr och äger en del av plattformen. Fyra ärvda system slogs ihop till fem driftsatta tjänster kring en schemaauktoritet på 63 tabeller, och åtta AI-miljöer delar en LangGraph-tjänst med versionerade prompter. Sidan beskriver arbetet fram till juni 2026, då studions period tog slut.

**Kund:** Changemkr · **Levererat:** 2026-06-30

**Studions relation till kunden:** Changemkr är en plattform Torn Studio äger en del av. Studion hade produktrollen från januari 2025 till juni 2026 — först som CPO, därefter på deltid — och byggde i kodbasen parallellt med rollen. Arbete efter juni 2026 ligger hos andra och står inte här.

## Uppdraget

Changemkr behövde en plattform där enkät, analys, planering och uppföljning hängde ihop, med AI genom hela kedjan. Produkten fanns då i fyra kodbaser som hade växt var för sig och beskrev samma begrepp olika.

## Det som gjorde det svårt

- Planeringshierarkin fanns som sju separata modeller i ett Django-API, och samma begrepp betydde olika saker i de fyra systemen — en ändring krävde fyra ingrepp av fyra personer som läste modellen olika.
- AI-lagret talade sin egen vokabulär, vilket gjorde att assistenten föreslog objekt som duken inte kunde ta emot. Det var en av två blockerare före lansering.
- Python-tjänstens databasmodeller underhölls för hand vid sidan av det TypeScript-definierade schemat, så de två beskrivningarna av samma tabeller kunde glida isär tyst.

## Siffror som går att räkna efter

| Siffror som går att räkna efter | | |
| --- | --- | --- |
| 4 | ärvda system som slogs ihop | Migrationsrapporten i repot listar dem en och en med vad de ägde och vad som ersatte dem. Ett skript i bygget håller antalet importer från dem på noll. |
| 63 | tabeller under en auktoritet | Räknebara i schemakatalogen vid junigränsen. Python-modellerna genereras ur samma definition, och en grind fäller bygget när de har glidit isär. |
| 5 | tjänster i drift | Webb, affärs-API, AI-tjänst, administratörskonsol och en jobbkörare. Samtliga finns i repots compose-fil och i infrastrukturkoden för Azure. |
| 8 | AI-miljöer på en tjänst | Räknebara i promptregistret. Varje miljö bär egen modell, egna verktyg och egen promptversionering med återställning i ett klick. |
| 80 | specfiler för end-to-end-test | Räknebara i testkatalogen vid junigränsen. Sidan citerar antalet filer, eftersom repot självt har dragit tillbaka sin dåvarande siffra för andel godkända test. |

## Så gjordes det

### En schemaauktoritet, resten härlett

Drizzle fick definiera alla 63 tabeller, och Python-tjänstens modeller genereras ur samma definition av ett skript. En grind i bygget jämför det genererade med det incheckade och fäller vid avvikelse, så två system som beskriver samma tabell olika går inte att checka in.

### Hårda domängränser

NestJS äger affärsdata — konton, organisationer, enkäter, planer. Python-tjänsten äger AI-domänen — trådar, inbäddningar, minne, supervisorn. Webben anropar båda direkt, och gränsen står i klartext i repots instruktionsfil, vilket gör den till ett beslut andra kan följa.

### Sju modeller blev en

Planeringshierarkin lades om till en tabell med en typdiskriminator, plus en tabell för nyckelresultat och en för relationer. Vokabulären stängdes, och AI-lagret fick tala exakt samma ord som duken. Blockeraren som gällde den saken stängdes den tionde juni 2026.

### Grindar bär gränserna

Ett skript håller antalet importer från de ärvda systemen på noll och fäller bygget vid första återfall. Ett annat fäller schemat när de genererade modellerna har glidit. Konsolideringen håller för att den kontrolleras vid varje ändring.

### Organisationens data hamnade i prompten

Enkätresultat, svaga motorer och organisationsprofil injiceras numera i systemprompten för de miljöer som behöver dem. Tidigare låg informationen bakom verktyg som modellen själv måste välja att anropa, vilket den ibland lät bli.

**Teknik:** NestJS, FastAPI, Next.js, Drizzle ORM, SQLAlchemy, LangGraph, PostgreSQL, pgvector, BullMQ, Azure Container Apps

## Vad beviset räcker till

Det här visar att fyra system går att slå ihop till ett och hållas ihop av grindar. Det visar ingenting om en marknad: plattformen hade inte lanserats vid junigränsen, verdiktet i repots beredskapslogg var driftsättningsbar med kvarstående punkter, och en av dem var en manuell säkerhetsåtgärd som ingen kod stänger.

## Vanliga frågor

### Är Changemkr en kund till Torn Studio?

Studion äger en del av plattformen och hade produktrollen där, vilket står överst på sidan. Skillnaden spelar roll: ett uppdrag åt någon annan och en produkt studion är med och äger är olika påståenden, och läsaren ska få veta vilket det är innan resultaten.

### Varför slutar caset i juni 2026?

Studions produktroll löpte till dess. Plattformen har utvecklats vidare efteråt av andra, och att räkna in det arbetet vore att ta åt sig äran för någon annans. Varje siffra på sidan är mätt vid den gränsen och går att kontrollera där.

### Varför står det ingen siffra på hur många test som gick igenom?

Repot mätte om sin testsvit i augusti 2026 och drog tillbaka den tidigare siffran som ogiltig. En siffra som källan själv har återkallat hör inte hemma här, så sidan citerar sådant som var stabilt vid gränsen: tabeller, tjänster, AI-miljöer och testfiler.

### Vad betyder en schemaauktoritet i praktiken?

Att en enda definition håller alla 63 tabeller och att allt annat härleds ur den. Python-tjänstens modeller genereras av ett skript, och en grind fäller bygget när det genererade och det incheckade har glidit isär. Två system som beskriver samma tabell olika blir omöjligt att checka in.

### Hur stor del av koden skrev studion?

Studion byggde stora delar av produkten under perioden och formulerade merparten av idéerna och funktionerna, samtidigt som andra också arbetade i kodbasen. Sidan påstår därför en roll och en period, och siffrorna beskriver det levererade systemet vid gränsen.

### Går ett sådant här arbete att köpa av studion?

Ja, i två former. Konsolidering och AI-integration ligger under AI och automation, och produktrollen — beslutsunderlag, prioritering, arkitekturval — ligger under Product Management. Ett uppdrag börjar med en genomgång på fast pris innan något byggs.
