Du tar ett foto av ett rum, skickar iväg det och sedan… försvinner det i chatthistoriken. En vecka senare scrollar du i all oändlighet för att hitta den där idén med ”varmt minimalistiskt vardagsrum med valnöt” som du älskade. Det är här automatiseringen Telegram Supabase-katalog verkligen gör nytta.
Inredningsdesigners känner igen det när klientalternativen blir fler och fler. En marknadsansvarig som bygger visuella kampanjer hamnar i samma röra. Och har du ett litet showroom vet du redan hur snabbt ”inspiration” blir till oreda. Det här arbetsflödet ger dig ett sökbart bibliotek med rum, möbler och AI-mockups, utan att lägga till ännu en app i din dag.
Du får se hur automatiseringen fångar upp foton och önskemål i Telegram, analyserar dem med AI, sparar strukturerad data i Supabase och sedan skickar tillbaka polerade resultat till dig på beställning.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: Telegram + Supabase: sökbara designidéer, snabbt
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Trigger"]
n1@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Create Catalogue Row", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Get Many Catalogue Rows", pos: "b", h: 48 }
n5@{ icon: "mdi:message-outline", form: "rounded", label: "Send a text message in Teleg..", pos: "b", h: 48 }
n6@{ icon: "mdi:message-outline", form: "rounded", label: "Send a photo message in Tele..", pos: "b", h: 48 }
n7@{ icon: "mdi:wrench", form: "rounded", label: "AI Agent Tool", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Request1"]
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code in JavaScript"]
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n11@{ icon: "mdi:robot", form: "rounded", label: "Analyze image", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields1", pos: "b", h: 48 }
n14@{ icon: "mdi:wrench", form: "rounded", label: "Room Organiser", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "Create Room Row", pos: "b", h: 48 }
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Get Many Room Rows", pos: "b", h: 48 }
n17@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat", pos: "b", h: 48 }
n18@{ icon: "mdi:brain", form: "rounded", label: "OpenAI chat", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If1", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n21["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Binary Decoder"]
n22["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Nanobanana Caller"]
n23["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Gen AI Image"]
n24["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Gen Image Save"]
n25["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send a photo message"]
n26@{ icon: "mdi:swap-vertical", form: "rounded", label: "Get AI Generated Images", pos: "b", h: 48 }
n27["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Binary Downloader"]
n28["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/supabase.svg' width='40' height='40' /></div><br/>Create AI Image row"]
n29@{ icon: "mdi:robot", form: "rounded", label: "Output Organiser", pos: "b", h: 48 }
n10 --> n13
n10 --> n8
n19 --> n29
n1 --> n19
n20 --> n27
n12 --> n1
n17 -.-> n14
n18 -.-> n7
n13 --> n1
n23 --> n25
n23 --> n24
n7 -.-> n1
n11 --> n12
n8 --> n9
n21 --> n22
n24 --> n28
n14 -.-> n1
n15 -.-> n14
n29 --> n20
n0 --> n10
n27 --> n21
n22 --> n23
n2 -.-> n1
n9 --> n11
n16 -.-> n14
n3 -.-> n7
n26 -.-> n1
n4 -.-> n7
n5 -.-> n1
n6 -.-> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n1,n11,n29 ai
class n2,n17,n18 aiModel
class n7,n14 ai
class n10,n19 decision
class n8,n22,n24,n27 api
class n9,n21,n23 code
classDef customIcon fill:none,stroke:none
class n0,n8,n9,n21,n22,n23,n24,n25,n27,n28 customIcon
Problemet: Bra idéer försvinner (och du gör om arbetet)
Telegram är snabbt, vilket är exakt varför det blir ett svart hål. Du skickar ett rumsfoto, skriver några anteckningar, kanske genererar ett koncept och sedan begravs det av nästa tråd. Senare behöver du samma stil igen för en ny kund eller en ny annons. Så du förklarar sammanhanget på nytt, laddar upp referensbilder igen och genererar variationer som du i princip redan hade. Det handlar inte bara om tid. Det handlar om den mentala belastningen att komma ihåg vad du testade, vad som fungerade och vad du lovade.
Det blir mycket snabbt. Så här fallerar det i verkligheten.
- Att söka i chatthistoriken efter ”rätt” inspiration kan lätt sluka 20 minuter per förfrågan.
- När foton inte är taggade med stil, material och rumstyp kan du inte återanvända vinnande idéer på ett tillförlitligt sätt.
- Kundfeedback-loopar blir röriga eftersom ”senaste versionen” ligger i flera meddelanden och flera nedladdningar.
- Utan en portföljdatabas fortsätter du betala (i tid och API-kostnad) för att återskapa sådant du redan godkänt.
Lösningen: Gör Telegram till en sökbar designstudio
Det här arbetsflödet börjar där du redan jobbar: i en Telegram-chatt. När du skickar ett foto (ett rum eller en möbel) eller skriver en designförfrågan, skickar n8n meddelandet till rätt ”spår”. Om det finns en bild laddar den upp den, skapar en publik URL och låter AI analysera vad som finns i scenen (stil, material, ljus, nyckelobjekt). Sedan mappar den resultaten till korrekt formaterade fält och sparar dem i Supabase-tabeller för katalogobjekt, rum och genererade designer. Om ditt meddelande är en prompt för en ny mockup samlar arbetsflödet in rätt kontext, anropar Gemini för att generera en fotorealistisk konceptbild, lagrar resultatet och skickar tillbaka det till dig i Telegram.
Arbetsflödet startar med ett Telegram-meddelande. AI avgör om du katalogiserar möbler, dokumenterar ett rum eller ber om ett nytt koncept. Till sist blir Supabase ditt långtidsminne, medan Telegram fortsätter vara ditt enkla gränssnitt.
Vad du får: Automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: Så här ser det ut
Säg att du hanterar 10 designförfrågningar i veckan. Manuellt kanske du lägger cirka 15 minuter på att ladda upp foton, ytterligare 10 minuter på att skriva kontext och 10 minuter på att arkivera resultatet någonstans där du kan hitta det senare, vilket är ungefär 35 minuter per förfrågan (nästan 6 timmar i veckan). Med det här arbetsflödet skickar du fotot och en kort notis i Telegram (cirka 2 minuter) och väntar sedan på analys och generering (ofta 5–15 minuter i bakgrunden). Din ”arbetstid” sjunker till långt under en timme i veckan, och allt hamnar i Supabase redan uppmärkt.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Telegram för att skicka foton och förfrågningar.
- Supabase för att lagra en sökbar designdatabas.
- OpenAI API-nyckel (hämta den från din OpenAI-dashboard).
Kunskapsnivå: Medel. Du kopplar konton, klistrar in API-nycklar och mappar några fält, men du behöver inte skriva kod utöver lätt konfiguration.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett Telegram-meddelande triggar allt. Du skickar ett rumsfoto, en möbelbild, en textförfrågan eller en kombination. Arbetsflödet kollar först om det finns en bifogad bild, så att det vet vilken väg det ska ta.
Bilden laddas upp och analyseras. n8n skickar filen via en uppladdningsförfrågan, bygger en publik URL och använder sedan AI-vision för att identifiera vad den tittar på (rumsdetaljer, möbeltyper, material och stilmarkörer).
Assistenten avgör vad du menade. Ett agentsteg använder ditt meddelande plus de extraherade bilddetaljerna för att routa uppgiften: katalogisera en produkt, dokumentera ett rum, hämta tidigare poster eller generera en ny konceptbild med Gemini.
Supabase blir ditt minne, Telegram förblir ditt gränssnitt. Poster läggs in och hämtas från Supabase-tabeller, genererade bilder lagras och loggas, och arbetsflödet skickar tillbaka slutlig text och bilder i Telegram så att du kan hålla konversationen igång.
Du kan enkelt justera de sparade fälten (som stil-taggar eller rumstyper) så att de matchar hur ni namnger saker internt. Se den fullständiga implementationsguiden nedan för anpassningsmöjligheter.
Steg-för-steg-guide för implementering
Steg 1: konfigurera Telegram-triggern
Konfigurera Telegram som ingångspunkt så att meddelanden och bilder kan initiera arbetsflödet.
- Lägg till noden Telegram Incoming Trigger som din trigger.
- Ställ in Updates på
message. - Aktivera Additional Fields → Download och sätt den till
trueså att bildbinarier inkluderas. - Autentisering krävs: anslut era
telegramApi-credentials.
Steg 2: routa enbart text kontra bildmeddelanden
Använd en binärkontroll för att dela upp enbart textmeddelanden från bilduppladdningar och mappa fält korrekt.
- I Binary Presence Check behåller ni villkoret som utvärderar
{{ Object.keys($binary).length > 0 }}och routar false till hantering av enbart text. - Anslut false-grenen till Map Text Fields för att mappa meddelandetext till AI:ns indatafält.
- I Map Text Fields sätter ni ai_agent_input till
{{ $('Telegram Incoming Trigger').first().json.message.text }}och image_analysis tillnull. - Anslut true-grenen till Upload Image Request för att hantera bilduppladdningar när binärer finns.
Steg 3: ladda upp och analysera bilder
Ladda upp bilden till Supabase, skapa en publik URL och analysera den med AI innan resultaten skickas vidare till huvudagenten.
- I Upload Image Request sätter ni URL till
https://raeojxaquatmtzgxqqdx.supabase.co/storage/v1/object/catalog-images/{{$now}}-{{$binary.data.fileName}}, Method tillPOSToch Content Type tillbinaryData. - Lägg till headers: Content-Type =
{{ $binary.data.mimeType }}och x-upsert =true. - Autentisering krävs: anslut era
supabaseApi-credentials i Upload Image Request. - I Build Public Image URL behåller ni koden som bygger
publicUrloch skickar medoriginalMessageför AI-kontext. - I Image Content Analyzer sätter ni Image URLs till
{{ $json.publicUrl }}och behåller Resource somimagemed Operation =analyze. - Autentisering krävs: anslut era
openAiApi-credentials i Image Content Analyzer. - I Map Analysis Fields sätter ni ai_agent_input till
{{ $('Build Public Image URL').first().json }}och image_analysis till{{ $json.content }}.
Steg 4: konfigurera huvudagenten för AI och verktyg
Konfigurera den centrala AI-orkestreringen och anslut alla AI-verktyg och modeller som används för katalog- och rumsoperationer.
- I Design Assistant Core sätter ni Text till
{{ $json.ai_agent_input }} {{ $json.image_analysis }}och behåller den definierade systemprompten. - Anslut Primary LLM Chat Model som språkmodell; Autentisering krävs: anslut era
openAiApi-credentials i Primary LLM Chat Model. - Anslut Catalog LLM Chat Model till Catalog Agent Tool och Room LLM Chat Model till Room Data Agent; båda kräver
openAiApi-credentials på modellnoderna. - För AI-verktygens undernoder (Catalog Agent Tool, Room Data Agent, Insert Catalog Record, Retrieve Catalog Records, Insert Room Record, Retrieve Room Records, Fetch Generated Images, Telegram Text Dispatch, Telegram Photo Dispatch) lägger ni till credentials på deras anslutna tjänstenoder (Supabase eller Telegram), inte på undernoderna i sig.
Autentisering krävs: anslut era supabaseApi-credentials till alla Supabase-verktyg (5+ noder hanterar katalog, rum och poster för genererade bilder).
Autentisering krävs: anslut era telegramApi-credentials till Telegram Text Dispatch och Telegram Photo Dispatch.
Steg 5: konfigurera tolkning av AI-utdata och routning av prompts
Detektera AI-genereringsförfrågningar och formatera AI-utdata till strukturerad JSON för bildgenerering.
- I Prompt Presence Check behåller ni villkoret som kontrollerar att
{{ $json.output }}innehållerGEMINI_PROMPT:. - Anslut true-grenen till Format AI Output för att extrahera strukturerade fält.
- I Format AI Output behåller ni JSON Output aktiverat och lämnar extraktionspromptens innehåll intakt.
- Autentisering krävs: anslut era
openAiApi-credentials i Format AI Output. - I Split Image URLs sätter ni Field to Split Out till
message.content.image_urls_arrayoch Include tillallOtherFields. - I Download Image Binary sätter ni URL till
{{ $json["message.content.image_urls_array"] }}.
Steg 6: bygg pipelinen för bildgenerering
Sätt ihop Gemini-bildpayloaden, anropa API:et och extrahera den genererade bilden för skick och lagring.
- Behåll aggregeringslogiken i Assemble Image Payload för att skapa
nano_banana_payloadfrån splittade URL:er och binärer. - I Gemini Image API Call sätter ni URL till
https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image-preview:generateContentoch JSON Body till{{ $json.nano_banana_payload }}. - Autentisering krävs: anslut era
googlePalmApi-credentials i Gemini Image API Call. - Säkerställ att Extract Generated Image parsar svaret och returnerar binär utdata till efterföljande noder.
Extract Generated Image skickar utdata parallellt till både Telegram Image Send och Store Generated Image.
Steg 7: leverera och lagra genererade bilder
Skicka den genererade bilden till Telegram och spara den i Supabase med metadata.
- I Telegram Image Send sätter ni Chat ID till
{{ $('Telegram Incoming Trigger').first().json.message.chat.id }}och aktiverar Binary Data. - Autentisering krävs: anslut era
telegramApi-credentials i Telegram Image Send. - I Store Generated Image sätter ni URL till
https://raeojxaquatmtzgxqqdx.supabase.co/storage/v1/object/catalog-images/{{ $('gfd').first().json.image_name }}och använder binär indata data. - Autentisering krävs: anslut era
supabaseApi-credentials i Store Generated Image och Log Generated Image. - I Log Generated Image behåller ni image_url satt till
https://raeojxaquatmtzgxqqdx.supabase.co/storage/v1/object/public/{{ $('Store Generated Image').first().json.Key }}för att logga den publika asset-URL:en.
⚠️ Vanlig fallgrop: Noden Store Generated Image refererar till {{ $('gfd').first().json.image_name }}. Säkerställ att den refererade noden finns, eller byt namn så att den matchar den faktiska noden som tillhandahåller image_name, för att undvika körningsfel.
Steg 8: konfigurera databasoperationer för katalog och rum
Anslut Supabase-verktyg som infogar och hämtar poster för katalog, rum och genererade bilder.
- I Insert Catalog Record sätter ni Table till
catalog_productsoch behåller alla fältmappningar från AI med$fromAI()-uttryck. - I Retrieve Catalog Records sätter ni Table till
catalog_products, Operation tillgetAll, Filter Type tillnoneoch Limit till{{ $fromAI('Limit', ``, 'number') }}. - I Insert Room Record sätter ni Table till
roomsoch behåller $fromAI-mappningarna för rumsfält som room_name, room_type och image_url. - I Retrieve Room Records sätter ni Table till
rooms, Operation tillgetAlloch Limit till{{ $fromAI('Limit', ``, 'number') }}. - I Fetch Generated Images sätter ni Table till
ai_generated_imagesoch Operation tillgetAll. - Autentisering krävs: anslut era
supabaseApi-credentials till alla Supabase-verktygsnoder och Log Generated Image.
Steg 9: konfigurera Telegram-svar
Säkerställ att AI-verktygen kan skicka text- och bildmeddelanden tillbaka till användaren via Telegram.
- I Telegram Text Dispatch sätter ni Text till
{{ $fromAI('Text', ``, 'string') }}och Chat ID till{{ $('Telegram Incoming Trigger').first().json.message.chat.id }}. - I Telegram Photo Dispatch sätter ni File till
{{ $fromAI('Photo', ``, 'string') }}och Chat ID till{{ $('Telegram Incoming Trigger').first().json.message.chat.id }}med Operation =sendPhoto. - Autentisering krävs: anslut era
telegramApi-credentials för båda noderna.
Steg 10: testa och aktivera ert arbetsflöde
Validera hela pipelinen med både scenarier för enbart text och text + bild innan ni aktiverar användning i produktion.
- Klicka på Execute Workflow och skicka ett Telegram-meddelande med endast text för att verifiera routningen Map Text Fields → Design Assistant Core.
- Skicka ett meddelande med en bild för att bekräfta flödet Upload Image Request → Build Public Image URL → Image Content Analyzer → Map Analysis Fields → Design Assistant Core.
- Trigga en AI-genereringsförfrågan för att verifiera Prompt Presence Check → Format AI Output → Split Image URLs → Gemini Image API Call.
- Bekräfta parallella utfall: den genererade bilden ska skickas av Telegram Image Send samtidigt som lagring sker via Store Generated Image och loggning via Log Generated Image.
- När allt fungerar växlar ni arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Supabase-inloggningar kan gå ut eller kräva specifika behörigheter. Om något skapar fel, börja med att kontrollera API-inställningar för ditt Supabase-projekt och tabellpolicys (RLS).
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströms noder misslyckas på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din varumärkeston tidigt, annars kommer du redigera utdata i all evighet.
Vanliga frågor
Cirka 45 minuter om din Telegram-bot och ditt Supabase-projekt är klara.
Nej. Du kopplar konton och klistrar in API-nycklar. Den ”svåra delen” är att bestämma vilka fält du vill lagra och hur du vill namnge dem.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in API-användning för OpenAI och Gemini, vilket beror på hur många bilder du analyserar och genererar.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, men planera strukturen först. De flesta lägger till ett ”projekt”-fält i rumsposterna och kopplar sedan genererade designer till samma projekt-ID. Du kan också justera mappningsstegen (noderna Set/Edit Fields) så att stil-taggar och rumstyper matchar era namnkonventioner. Vanliga justeringar är att lägga till kundnamn, ett ”revisionsnummer” och en shortlist-flagga för koncept som är redo att presenteras.
Oftast är det en ogiltig API-nyckel eller att RLS blockerar inserts. Skapa en ny Supabase service key (eller använd rätt anon key plus policys) och uppdatera inloggningarna i n8n. Bekräfta också att tabellerna finns med förväntade kolumner, eftersom ett omdöpt fält kan göra att inserts slutar fungera utan tydliga fel. Om det bara misslyckas ibland kan du slå i gränser för radstorlek när du sparar för mycket text i ett och samma fält.
På en typisk n8n Cloud-plan räcker det oftast gott för ett litet team som kör dagliga förfrågningar. Om du kör egen drift finns ingen körningsgräns, så den verkliga begränsningen blir din serverstorlek och API-rate limits från OpenAI/Gemini. Praktiskt sett, om du processar dussintals bilder per dag, vill du hålla koll på timeouts i HTTP-anrop och följa lagringstillväxten i Supabase.
För den här typen av arbetsflöde passar n8n oftast bättre eftersom det klarar grenlogik, AI-bearbetning i flera steg och databasskrivningar utan att förvandlas till en dyr hög av uppgifter. Du får också möjligheten att köra egen drift, vilket spelar roll när du hanterar mycket bilder. Zapier eller Make kan vara snabbare för enkla ”skicka data från A till B”, men de blir klumpiga när du behöver routing, minne (Supabase) och flera AI-anrop. Om du vill ha hjälp att välja rätt stack för din volym och budget kan du prata med en automationsexpert.
När det här väl rullar slutar dina bästa designidéer att försvinna i chattscrolling. Du behåller farten i Telegram och får en sökbar katalog som du kan bygga vidare på i månader.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.