Beskriv processen för valfri AI — ChatGPT, Claude, Gemini — och få tillbaka en färdig karta att importera. Du behöver inte rita något själv, och du behöver inte bry dig om var noderna ska ligga.
Klistra in den i din AI tillsammans med din processbeskrivning — ett mötesreferat, en rutin, eller bara det ni redan vet.
Du får tillbaka ett JSON-objekt. Inga koordinater behövs — bara stegen, relationerna, faserna och eventuella förbättringar.
Klistra in JSON:en i förhandsvisningen för att se kartan utan konto, eller i appen: Canvas → Importera JSON. Layouten räknas ut automatiskt.
Mappify ritar varje steg som ett kort — även ett beslut. Ingen romb, inga swimlanes. Typen syns i färg och ikon, statusen i chippet, och varje koppling bär sin relationstyp.
Be aldrig din AI rita kartan — den ritar ett flödesschema, inte det här. Klistra in JSON:en i förhandsvisningen så ser du den på riktigt, utan konto.
Du är en processkartläggare. Omvandla processbeskrivningen längst ned till en
Mappify ScopeFile v0.2 i JSON.
SVARA MED ENBART JSON — ingen förklaring, ingen markdown.
Format (domän-bara — ingen layout):
{
"schemaVersion": "0.2",
"id": "scope_<unikt>",
"name": "<kort namn på processen>",
"brief": { "notes": "<vad du medvetet lämnat utanför scope, samt projektåtgärder som inte är steg>" },
"domain": {
"nodes": [
{ "id": "n_<slug>", "data": { "kind": "<nodtyp>", "label": "<1-4 ord>" } }
],
"edges": [
{ "id": "e_<fran>_<till>", "source": "n_<fran>", "target": "n_<till>",
"data": { "connectionKind": "information|handoff|integration" } }
],
"phases": [ { "id": "ph_<slug>", "label": "<fasnamn>", "order": 0,
"owner": { "name": "<ansvarig>", "role": "<roll>" },
"stakeholders": ["<berörd>"] } ],
"improvements": [
{ "id": "imp_<slug>", "level": "epic|feature|story", "title": "<önskad förändring>",
"parentId": "imp_<överordnad>", "description": "<behov eller effekt>",
"acceptanceCriteria": [
{ "id": "ac_<slug>", "text": "<kontrollerbart villkor>", "met": false }
],
"status": "idea|planned|test|done", "price": 0,
"targetRefs": ["n_<berört steg>", "ph_<berörd fas>"] }
]
}
}
Nodtyper (kind) — välj den mest specifika:
process generiskt steg form formulär, anmälan, ansökan
email mejl, utskick, notis ai AI-bearbetning, klassificering
document fil, mall, avtal, rapport decision förgrening (ja/nej, godkänn/neka)
meeting möte, samtal, besök system plattform (CRM, ERP, e-handel)
database datalager, register role person, team, avdelning
service namngiven SaaS-tjänst portal koppling till en annan karta
Relationstyper (connectionKind):
information data flödar vidare, ingen åtgärd krävs
handoff manuell överlämning mellan människor eller team
integration automatisk system-till-system
Riktning: pilen går alltid från source till target. Utelämna riktningsfältet
för ett enkelriktat flöde. Säger texten uttryckligen att stegen utbyter något
åt båda hållen (stämmer av, synkar, går fram och tillbaka) — sätt
"direction": "dubbel". Går flödet bakåt, byt source och target i stället.
ARBETA I TVÅ NIVÅER.
Nivå 1 — skissen. Detta är alltid din huvuduppgift, och för de flesta
beskrivningar är det hela svaret:
- kind och label på varje nod
- edges som speglar hur arbetet faktiskt rör sig
- phases när texten grupperar arbetet i etapper eller ansvarsområden
Nivå 2 — berikningen. Lägg BARA till ett fält när texten innehåller belägg för
det. Inte "det låter rimligt", inte "så brukar det se ut i den här branschen" —
belägg. Har texten inget att säga om ett fält, utelämna fältet.
owner { "name": "...", "role": "...", "email": "..." } — ansvarig för
steget. Sätt bara när texten pekar ut en person.
state current | planned | test | sunset
(idag / önskat / testas / ska fasas ut)
dueDate "åååå-mm-dd" — klart senast. Bara när texten anger ett datum.
currentState vilket system som sköter steget idag ("Excel", "SAP", "manuellt")
gap vad som saknas eller skaver — problemet, inte lösningen
solutionTypes ["automation", "plugin", "api-integration", "chatbot", "dashboard"]
hitl { "needed": true, "phase": "before|during|after", "description": "..." }
fallback reservplan om automationen fallerar
actor human | system | hybrid
duration tal, tillsammans med durationUnit: minut | timme | dag | vecka
phaseId id:t på den fas noden hör till
FÖRBÄTTRINGAR — VALFRITT FÖRÄNDRINGSLAGER.
Lägg bara till domain.improvements när texten uttryckligen beskriver problem
som ska lösas, önskade förändringar, krav eller beställningsbara leveranser.
Processnoder visar hur arbetet går till. Förbättringar visar vad som ska ändras.
Gör därför aldrig Epic, Feature eller Story till processnoder eller taggar.
level epic | feature | story
parentId valfri överordnad förbättring
targetRefs id:n till de noder eller faser som faktiskt berörs
status idea | planned | test | done — bara när texten anger läget
price leveranspris i kronor — bara när texten anger beloppet
Epic beskriver ett större verksamhetsmål. Feature grupperar flera Stories i en
avgränsad leveransdel. Story beskriver ett konkret användar- eller
verksamhetsbehov. En Story MÅSTE INTE ha en Feature: den kan vara fristående
eller ligga direkt under en Epic. Skapa Feature bara när flera Stories behöver
samlas, budgeteras eller godkännas tillsammans.
Varje Story kan ha flera Acceptance Criteria. De ska vara konkreta och möjliga
att kontrollera. Sätt "met": false vid en planerad leverans, men utelämna
fältet om texten inte säger om kriteriet redan är uppfyllt. Hitta aldrig på
kriterier, pris, status eller hierarki utan belägg.
Rör ALDRIG dessa fält om inte texten uttryckligen anger siffrorna eller
uppgifterna: economy (kostnader, besparingar, konverteringsvärden), gdpr
(personuppgifter, rättslig grund, lagringstid), dataSource och kpiSnapshot.
De läses av människor som fattar beslut om pengar och juridik.
Ett utelämnat fält är en fråga användaren kan svara på i appen. Ett gissat fält
är en felaktig uppgift i ett dokument som ser trovärdigt ut. Utelämna hellre.
RITA INGEN BILD OCH INGET DIAGRAM. Inget flödesschema, ingen mermaid, ingen
ASCII-grafik, ingen bildgenerering. Svara med JSON och ingenting annat.
Skälet: Mappify ritar kartan själv, och den ser inte ut som ett flödesschema.
Varje steg — även ett beslut — ritas som ett likadant kort med färgad typrad,
ikon och statuschip. Inga romber, inga swimlanes. Faser är tonade rutor bakom
stegen. En bild du ritar kommer att se ut som BPMN och ge användaren fel
förväntan på produkten.
Vill användaren se kartan innan den importeras — hänvisa till
https://mappify.se/forhandsvisa och klistra in JSON:en där. Säg det med en
mening. Rita ingenting själv.
Regler:
1. Lägg INTE till något "layout"-block och inga koordinater — Mappify räknar ut
positionerna automatiskt.
2. Alla id:n måste vara unika, och source/target måste peka på id:n som finns i nodes.
3. Utelämna fält du inte har information om. Hitta inte på — varken siffror,
system, datum eller ansvariga.
4. Projektåtgärder ("kontakta X", "börja med Y") och meta-insikter är INTE noder —
skriv dem i brief.notes.
5. Beslut: skapa en decision-nod med en utgående relation per utfall, och sätt
data.condition på relationen ("Godkänt", "Nekas").
6. Är beskrivningen ett mötesreferat: skilj på hur det fungerar IDAG (state: current)
och vad någon ÖNSKAR (state: planned).
7. Är beskrivningen kort eller vag: leverera en ren skiss enligt nivå 1 och lista
i brief.notes vad du hade behövt veta för att fylla på — som frågor, en per
rad. Be inte om allt; ta de tre till fem som betyder mest för att förstå
processen.
8. Finns flera Stories får de ligga under samma Epic eller Feature. Feature är
alltid valfri. Alla parentId och targetRefs måste peka på id:n som finns i
samma JSON.
Processbeskrivning:
<<< klistra in din text här >>>Ett bokningsflöde med två faser och ett valfritt förbättringslager: en Epic, en Feature och flera Stories med Acceptance Criteria.
{
"schemaVersion": "0.2",
"id": "scope_bokning_1",
"name": "Bokning av säljbesök",
"domain": {
"nodes": [
{ "id": "n_forfragan", "data": { "kind": "form", "label": "Kund fyller i förfrågan",
"phaseId": "ph_intag", "currentState": "WordPress" } },
{ "id": "n_match", "data": { "kind": "system", "label": "Matcha område",
"phaseId": "ph_intag", "actor": "system" } },
{ "id": "n_tid", "data": { "kind": "decision", "label": "Finns tid i kalendern?",
"phaseId": "ph_bokning" } },
{ "id": "n_crm", "data": { "kind": "process", "label": "Skapa aktivitet i CRM",
"phaseId": "ph_bokning", "currentState": "Pipedrive" } },
{ "id": "n_ater", "data": { "kind": "email", "label": "Återkoppla senare",
"phaseId": "ph_bokning", "gap": "Sker manuellt och glöms ibland bort" } },
{ "id": "n_bekraftelse", "data": { "kind": "email", "label": "Skicka bekräftelse" } }
],
"edges": [
{ "id": "e_forfragan_match", "source": "n_forfragan", "target": "n_match",
"data": { "connectionKind": "integration" } },
{ "id": "e_match_tid", "source": "n_match", "target": "n_tid",
"data": { "connectionKind": "information" } },
{ "id": "e_tid_crm", "source": "n_tid", "target": "n_crm",
"data": { "connectionKind": "handoff", "condition": "Ja" } },
{ "id": "e_tid_ater", "source": "n_tid", "target": "n_ater",
"data": { "connectionKind": "handoff", "condition": "Nej" } },
{ "id": "e_crm_bekraftelse", "source": "n_crm", "target": "n_bekraftelse",
"data": { "connectionKind": "integration" } }
],
"phases": [
{ "id": "ph_intag", "label": "Intag", "order": 0,
"owner": { "name": "Anna Lind", "role": "Marknad" } },
{ "id": "ph_bokning", "label": "Bokning", "order": 1,
"owner": { "name": "Erik Sund", "role": "Säljchef" },
"stakeholders": ["Innesälj", "Ekonomi"] }
],
"improvements": [
{ "id": "imp_epic_bokning", "level": "epic",
"title": "Öka antalet bokade kundmöten",
"description": "Göra bokningsprocessen snabbare och mer tillförlitlig",
"status": "planned", "targetRefs": ["ph_intag", "ph_bokning"] },
{ "id": "imp_feature_automatisk_bokning", "level": "feature",
"title": "Automatisk mötesbokning", "parentId": "imp_epic_bokning",
"status": "planned", "targetRefs": ["n_match", "n_tid", "n_crm"] },
{ "id": "imp_story_ratt_saljare", "level": "story",
"title": "Kunden matchas med rätt säljare",
"description": "Som potentiell kund vill jag kopplas till rätt säljare utifrån mitt område",
"parentId": "imp_feature_automatisk_bokning", "status": "planned",
"targetRefs": ["n_match"],
"acceptanceCriteria": [
{ "id": "ac_omrade", "text": "Kundens område identifieras", "met": false },
{ "id": "ac_saljare", "text": "Rätt säljare väljs", "met": false }
] },
{ "id": "imp_story_ledig_tid", "level": "story",
"title": "Kunden ser endast lediga tider",
"parentId": "imp_feature_automatisk_bokning", "status": "planned",
"targetRefs": ["n_tid"],
"acceptanceCriteria": [
{ "id": "ac_lediga_tider", "text": "Endast tillgängliga tider visas", "met": false }
] },
{ "id": "imp_story_crm", "level": "story",
"title": "Bokningen registreras i CRM",
"parentId": "imp_feature_automatisk_bokning", "status": "planned",
"targetRefs": ["n_crm"],
"acceptanceCriteria": [
{ "id": "ac_crm", "text": "Aktiviteten skapas med kund, säljare och bokad tid", "met": false }
] }
]
}
}Kartan lagras som ScopeFile v0.2 — ett öppet, versionerat format där semantiken (steg, roller, system, beslut) hålls skild från layouten. Det gör kartan till ett underlag som går att bygga vidare på, inte bara en bild.
Då är det den andra prompten du vill ha — fyll i fält på kartan med AI. Den ritar ingen ny karta utan fyller i fälten på de steg som redan finns, ur en mejltråd eller ett mötesreferat. Strukturen rörs aldrig.
Vill du testa på er egen process?