Pyttesmå ingredienslistor. Konstiga tillsatser. Etiketter i dåligt ljus. Om du gör kontrollerna manuellt vet du redan hur det slutar: kisande, dubbelkollande och ändå utan att känna dig helt trygg.
Den här Telegram Airtable safety-automationen träffar näringscoacher och meal prep-företag först, men föräldrar som hanterar allergier känner av den också. Du skickar en bild på etiketten och får ett enkelt “Säker” eller “Osäker”-besked baserat på dina egna Airtable-regler. Inget rörigt fram och tillbaka.
Nedan ser du hur flödet körs, vad det ersätter och hur du anpassar det så att dina ingredienskontroller förblir konsekventa (och sökbara) för varje klient eller familjemedlem.
Så fungerar automationen
Se hur den löser problemet:
n8n Workflow Template: Telegram + Airtable: snabba ingredienskontroller
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/code.svg' width='40' height='40' /></div><br/>Data Aggregation"]
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:robot", form: "rounded", label: "AI OCR Agent", pos: "b", h: 48 }
n4["<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/>JSON Parse & Routing"]
n5["<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 text message"]
n6["<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/airtable.svg' width='40' height='40' /></div><br/>Create a record"]
n7["<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/>Get a file"]
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/airtable.svg' width='40' height='40' /></div><br/>Watchlist"]
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/airtable.svg' width='40' height='40' /></div><br/>Preferences"]
n10["<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"]
n11@{ icon: "mdi:cog", form: "rounded", label: "Done!", pos: "b", h: 48 }
n12@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n1 --> n4
n8 --> n9
n7 --> n3
n9 --> n0
n3 --> n1
n6 --> n11
n0 --> n7
n10 --> n8
n2 -.-> n3
n5 --> n6
n4 --> n5
n12 -.-> 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 n10 trigger
class n1,n3 ai
class n2,n12 aiModel
class n6,n8,n9 database
class n0,n4 code
classDef customIcon fill:none,stroke:none
class n0,n4,n5,n6,n7,n8,n9,n10 customIcon
Utmaningen: ingredienskontroller som inte glider iväg
Att kontrollera ingredienser är den typen av “snabb uppgift” som i smyg äter upp din dag. En klient skickar en suddig etikettbild i chatten, du zoomar in, googlar några tillsatser och försöker sedan minnas om den där emulgeringsmedlet stod på “undvik”-listan eller bara “håll koll på”. Nästa vecka dyker samma ingrediens upp igen och du gör samma resa en gång till. Det värsta är inkonsekvensen: två personer kan titta på samma etikett och ge två olika svar, särskilt när kostreglerna är strikta (vegan, halal, kosher) eller när konsekvenserna är allvarliga (allergier).
Här är hur det fallerar i praktiken.
- En enda etikett kan ta cirka 10 minuter att läsa, tolka och bekräfta, särskilt när bilden är sned eller ingrediensnamnen är obekanta.
- Dina “regler” hamnar utspridda i anteckningar, DM:ar och minnet, så besluten glider när du blir trött eller stressad.
- Klienter ställer samma följdfrågor eftersom du inte enkelt kan visa vad som utlöste bedömningen.
- Det finns ingen pålitlig logg över vad som kontrollerats, vilket gör coaching, efterlevnad och kundsupport krångligare än nödvändigt.
Lösningen: Telegram-bild in, Airtable-reglerat besked ut
Det här flödet gör Telegram till din kanal för ingrediensunderlag och Airtable till “hjärnan” som håller besluten konsekventa. En användare skickar en bild på produktens etikett till din Telegram-bot. Automationen laddar ner bilden, kör OCR (textextraktion) och skickar den extraherade ingredienslistan till en AI-agent som tillämpar strikt logik utifrån din Airtable-watchlist. Om någon “dålig” ingrediens förekommer blir beskedet Osäker. Om ingen förekommer blir det Säker. Därefter skickas ett korrekt formaterat svar tillbaka i Telegram, markerar vad som hittades och loggar hela resultatet i Airtable så att du kan söka, filtrera och granska kontroller i efterhand.
Flödet startar med ett Telegram-fotomeddelande. Airtable bidrar med två saker: din aktiva watchlist (bra vs dåliga ingredienser) och dina preferenser/persona (ton, språk, strikthet). OCR och AI gör grovjobbet, och Telegram får slutbeskedet på sekunder.
Vad som förändras: före vs efter
| Det här elimineras | Effekten du märker |
|---|---|
|
|
Effekt i verkligheten
Säg att du gör ingredienskontroller för 15 klienter och får 3 etikettbilder per dag. Manuellt, om varje tar cirka 10 minuter att läsa, tolka och registrera, blir det ungefär 30 minuter per dag (och det sticker snabbt iväg under intensiva dagar). Med det här flödet är “jobbet” att skicka bilden i Telegram och kasta en blick på svaret Säker/Osäker, vilket oftast är under en minut per kontroll. Det är cirka 20 minuter tillbaka varje dag, plus en strukturerad Airtable-logg som du inte behövde underhålla.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Telegram för att ta emot etikettbilder och svara.
- Airtable för watchlists, preferenser och loggning.
- Google Gemini API-nyckel (hämta den via Google AI Studio/Google Cloud-uppgifter).
Kunskapsnivå: Medel. Du kopplar konton, klistrar in API-nycklar och matchar dina Airtable-fält mot flödet en gång.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Flödet i arbetsflödet
Ett Telegram-foto triggar körningen. Någon skickar en etikettbild till din bot och n8n startar direkt processen från det meddelandet.
Dina regler laddas från Airtable. Flödet hämtar aktiva watchlist-poster (bra saker vs dåliga saker) och preferensposter som persona, utdata-språk och hur strikt du vill att beslutslogiken ska vara.
OCR extraherar ingredienserna, sedan tillämpar AI din logik. Bilden laddas ner från Telegram, text extraheras och en AI-agent jämför det som hittats mot din Airtable-watchlist. Gemini-chatmodellen hanterar analysen, medan agenten håller svaret strukturerat så att det kan tolkas pålitligt.
Telegram får beskedet och Airtable får posten. Svaret går tillbaka till den ursprungliga chatten (Säker/Osäker plus markeringar), därefter sparar flödet kontrollen i Airtable så att du kan söka på klient, ingrediens, datum eller utfall.
Du kan enkelt justera watchlist-logiken för att stödja “varning”-kategorier eller klientunika begränsningar utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Telegram-triggern
Det här arbetsflödet startar när en användare skickar ett Telegram-meddelande med en bild som ska analyseras.
- Lägg till noden Telegram Intake Trigger som din trigger.
- I Telegram Intake Trigger, ställ in Updates så att
messageinkluderas. - Aktivera Additional Fields → Download och sätt det till
true. - Inloggningsuppgift krävs: Anslut era telegramApi-inloggningsuppgifter.
Steg 2: Anslut Airtable-datakällor
Dessa noder laddar användarens bevakningslista för ingredienser och preferenser från Airtable.
- Konfigurera Retrieve Watchlist Items med Operation satt till
searchoch Filter By Formula tillStatus = "Active". - Ställ in Base och Table i Retrieve Watchlist Items till er Airtable-bas och tabellen
Watchlist. - Konfigurera Load Preference Records med Operation satt till
search, och peka den mot er tabellPreferences. - Inloggningsuppgift krävs: Anslut era airtableTokenApi-inloggningsuppgifter för både Retrieve Watchlist Items och Load Preference Records.
Steg 3: Bygg ingredienslistor och ladda ned Telegram-bilden
Det här steget förbereder listorna som driver AI-analysen och hämtar bildfilen som skickats via Telegram.
- I Compile Ingredient Lists, behåll den medföljande JavaScript Code som refererar till Retrieve Watchlist Items och Load Preference Records.
- Säkerställ att noden använder befintlig logik för persona, target_language, bad_list och good_list exakt som det står i skriptet.
- Konfigurera Download Telegram File med Resource satt till
file. - Ställ in File ID i Download Telegram File till
={{ $('Telegram Intake Trigger').last().json.message.photo[$('Telegram Intake Trigger').last().json.message.photo.length - 1].file_id }}. - Inloggningsuppgift krävs: Anslut era telegramApi-inloggningsuppgifter i Download Telegram File.
Steg 4: Konfigurera OCR-extrahering
OCR gör om bilden av produktetiketten till text för vidare analys.
- I OCR Extraction Agent, behåll prompttexten
Extract the full text as output from the document as if you were reading it.. - Säkerställ att OCR Extraction Agent har Needs Fallback aktiverat för att förbättra tillförlitligheten vid otydliga bilder.
- Öppna Local OCR Chat Model och bekräfta att den är ansluten som språkmodell för OCR Extraction Agent.
- Inloggningsuppgift krävs: Anslut era openAiApi-inloggningsuppgifter i Local OCR Chat Model (inloggningsuppgifter sätts på modellnoden, inte agenten).
Steg 5: Analysera ingredienser och tolka resultat
Det här steget använder en Gemini-modell för att jämföra OCR-texten mot bevakningslistan och preferenslistorna, och tolkar sedan den strukturerade JSON-utdata.
- I Ingredient Analysis Agent, behåll hela prompttexten inklusive uttrycken för persona, språk, listor och OCR-text.
- Verifiera att promptuttrycken i Ingredient Analysis Agent är bevarade, inklusive
{{ $('Compile Ingredient Lists').item.json.bad_list }}och{{ $json.output }}. - Öppna Gemini Analysis Model och bekräfta att Model Name är satt till
models/gemini-2.0-flash-lite-001. - Inloggningsuppgift krävs: Anslut era googlePalmApi-inloggningsuppgifter i Gemini Analysis Model (inloggningsuppgifter sätts på modellnoden, inte agenten).
- I Parse Result JSON, behåll nuvarande JavaScript för att extrahera JSON-objektet från AI-utdata.
Steg 6: Skicka svar och logga resultat
Arbetsflödet svarar användaren i Telegram och loggar analysen till Airtable.
- I Send Telegram Reply, sätt Text till
={{ $json.summary_msg }} Detected Bad Items: {{ $('Parse Result JSON').item.json.detected_bad.join(", ") }} Detected Good Items: {{ $('Parse Result JSON').item.json.detected_good.join(", ") }}. - Ställ in Chat ID i Send Telegram Reply till
={{ $('Telegram Intake Trigger').last().json.message.chat.id }}. - I Log Analysis Record, ställ in Operation till
createoch mappa kolumnerna till de angivna uttrycken. - Säkerställ att kolumnvärdena i Log Analysis Record använder
={{ $json.result.message_id.toString() }},={{ $('Parse Result JSON').item.json.summary_msg }}och={{ $('Parse Result JSON').item.json.detected_bad.join(", ") }}. - Inloggningsuppgift krävs: Anslut era telegramApi-inloggningsuppgifter i Send Telegram Reply.
- Inloggningsuppgift krävs: Anslut era airtableTokenApi-inloggningsuppgifter i Log Analysis Record.
- Lämna Completion Marker som den är; den markerar bara slutet på arbetsflödet.
Steg 7: Testa och aktivera ert arbetsflöde
Kör ett fullständigt test med en riktig Telegram-bild för att bekräfta att OCR, analys, svar och loggning fungerar.
- Klicka på Execute Workflow och skicka ett Telegram-fotomeddelande till er bot.
- Verifiera att Send Telegram Reply returnerar en formaterad sammanfattning med upptäckta dåliga och bra ingredienser.
- Kontrollera Airtable för att bekräfta att Log Analysis Record skapade en ny rad med meddelande-ID, AI-svar och upptäckta ingredienser.
- När allt ser korrekt ut, växla arbetsflödet till Active för produktionsanvändning.
Se upp med
- Airtable-behörigheter spelar större roll än många tror. Om flödet plötsligt inte kan hämta watchlist-poster, kontrollera först scopes för Airtable-token och åtkomst till bas/tabell.
- Om OCR körs via en lokal OpenAI-kompatibel modell ser driftstopp ut som “tomma ingredienser” längre fram. Testa med en etikettbild du vet är tydlig och bekräfta extraherad text innan du skyller på analyssteget.
- Telegram-bilder komprimeras ibland, vilket kan göra liten text oläslig. Be användare skicka bilden som fil (eller ta en närmare bild) när du ser återkommande “okända” ingredienser i svaret.
Vanliga frågor
Vanligtvis ungefär en timme när din Airtable-bas är redo.
Ja. Du kommer främst att koppla konton och matcha några Airtable-fält, inte skriva kod.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna med kostnader för Gemini API-användning, plus OCR-/modellkostnader om du byter bort från en lokal OCR-setup.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och klarar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Det kan du. De flesta ändringar sker i Airtable (tabellerna Watchlist och Preferences), plus prompten i noden “Ingredient Analysis Agent” om du vill gå från strikt veto-läge till något i stil med “Säker / Varning / Osäker”. Om du inte vill ha en lokal OCR-modell kan du byta noden “Local OCR Chat Model” till en hostad vision-kapabel modell och låta resten av flödet vara oförändrat. Vissa team justerar också formateringen av Telegram-svaret i noden “Send Telegram Reply” för att matcha en kundvänlig ton.
Oftast beror det på utgångna inloggningsuppgifter eller ett behörighetsproblem för bas/tabell. Skapa en ny Airtable-token (eller återanslut kontot) och bekräfta att flödet har åtkomst till rätt bas. Kontrollera också att dina Watchlist-poster är markerade som “Active”, eftersom ett tomt resultat kan se ut som ett anslutningsproblem när det i själva verket är ett filtreringsproblem. Ändrade fältnamn är ärligt talat en annan vanlig bov om du duplicerade basen och döpte om kolumner.
Det beror på din hosting och modellens hastighet, men de flesta upplägg hanterar dussintals kontroller per dag utan någon finjustering.
För det här användningsfallet är n8n oftast ett bättre val eftersom du hanterar OCR, AI-promptning, strukturerad tolkning och en databassökning i ett och samma flöde. Zapier och Make kan lösa delar av det, men AI + grenad logik tenderar att bli dyrt och pilligt när du lägger till “veto-regler”, loggning och formatering. n8n ger dig också möjligheten att köra egen hosting, vilket blir viktigt när du börjar göra många fotobaserade kontroller. Om du bara behöver en enkel “skicka meddelande när en post ändras” är Zapier okej. Men för ingrediensbedömningar kommer du uppskatta kontrollen. Prata med en automationsexpert om du vill ha hjälp att välja.
När detta väl rullar slutar ingredienskontroller vara en daglig distraktion och blir ett snabbt, konsekvent beslut du kan lita på. Flödet tar hand om de repetitiva delarna så att du kan fokusera på människorna som ställer frågorna.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.