Du får en lead med bostadsdetaljer i ett meddelande. Sedan kör du samma irriterande rutin: kopiera siffrorna, städa upp dem, göra en snabb uppskattning, klistra in resultatet någonstans och hoppas att du inte blandade ihop ”rum” och ”ålder” igen.
Den här Telegram Sheets-automationen är en stor lättnad för fastighetsmäklare som behöver snabba svar. Den hjälper också investerare att gallra affärer och ops-team att bygga enkla värderingsköer. Utfallet är enkelt: konsekventa prisuppskattningar loggas automatiskt, så uppföljningar kan ske snabbare.
Nedan ser du hur flödet gör om ett Telegram-meddelande (eller en webhook-förfrågan) till en prognos och en korrekt formaterad rad i Google Sheets, plus vad du behöver se upp med när du anpassar det.
Så fungerar automationen
Hela n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: Telegram till Google Sheets: snabba bostadspriser
flowchart LR
subgraph sg0["Flow 1"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Inbound Webhook Trigger"]
n1["<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/>Room Count Extractor"]
n2["<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/>City Distance Parser"]
n3["<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/>Property Age Parser"]
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/>Square Footage Parser"]
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/merge.svg' width='40' height='40' /></div><br/>Combine Output Signals"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Return Webhook Reply"]
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/merge.svg' width='40' height='40' /></div><br/>Aggregate Hidden 1"]
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/merge.svg' width='40' height='40' /></div><br/>Aggregate Hidden 2"]
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden1 Input1 Weighting", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden1 Input2 Weighting", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden1 Input3 Weighting", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden1 Input4 Weighting", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden1 Input1 Value", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden1 Input2 Value", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden1 Input3 Value", pos: "b", h: 48 }
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden1 Input4 Value", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden2 Input1 Value", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden2 Input2 Value", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden2 Input3 Value", pos: "b", h: 48 }
n20["<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/>Hidden1 Weighted Total"]
n21@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden1 Bias Add", pos: "b", h: 48 }
n22@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden2 Input1 Weighting", pos: "b", h: 48 }
n23@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden2 Input4 Weighting", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Hidden2 Weighted Total"]
n25@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden2 Bias Add", pos: "b", h: 48 }
n26@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden1 Activation", pos: "b", h: 48 }
n27@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden2 Activation", pos: "b", h: 48 }
n28@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden2 Input4 Value", pos: "b", h: 48 }
n29@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden2 Input3 Weighting", pos: "b", h: 48 }
n30@{ icon: "mdi:swap-vertical", form: "rounded", label: "Hidden2 Input2 Weighting", pos: "b", h: 48 }
n31@{ icon: "mdi:swap-vertical", form: "rounded", label: "Output1 Value", pos: "b", h: 48 }
n32@{ icon: "mdi:swap-vertical", form: "rounded", label: "Output2 Value", pos: "b", h: 48 }
n33@{ icon: "mdi:swap-vertical", form: "rounded", label: "Output1 Weighting", pos: "b", h: 48 }
n34@{ icon: "mdi:swap-vertical", form: "rounded", label: "Output2 Weighting", pos: "b", h: 48 }
n35["<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/>Output Weighted Total"]
n36@{ icon: "mdi:swap-vertical", form: "rounded", label: "Output Bias Add", pos: "b", h: 48 }
n3 --> n15
n3 --> n19
n7 --> n20
n8 --> n24
n0 --> n2
n0 --> n3
n0 --> n1
n0 --> n4
n4 --> n13
n4 --> n17
n5 --> n35
n36 --> n6
n21 --> n26
n26 --> n31
n25 --> n27
n27 --> n32
n1 --> n14
n1 --> n18
n2 --> n16
n2 --> n28
n28 --> n23
n31 --> n33
n32 --> n34
n13 --> n9
n14 --> n10
n15 --> n11
n16 --> n12
n17 --> n22
n18 --> n30
n19 --> n29
n35 --> n36
n20 --> n21
n24 --> n25
n10 --> n7
n30 --> n8
n29 --> n8
n33 --> n5
n34 --> n5
n9 --> n7
n11 --> n7
n12 --> n7
n22 --> n8
n23 --> n8
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,n6 api
class n1,n2,n3,n4,n20,n24,n35 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n3,n4,n5,n6,n7,n8,n20,n24,n35 customIcon
Problemet: prisuppskattningar är långsamma, röriga och inkonsekventa
När en lead frågar ”vad tror du den här är värd?” spelar snabbhet roll. Men processen är oftast spretig: du plockar detaljer ur en chatt, omformaterar dem, hoppar in i ett kalkylark och antingen höftar jämförelser eller kör en snabb modell du inte helt litar på. Det handlar inte bara om tiden. Det är den mentala belastningen av att översätta ”3br, 1500 sqft, 10yo, 5km” till strukturerade fält, och sedan göra om det igen 20 minuter senare för nästa meddelande. En enda felskrivning och du följer upp med en siffra du inte kan försvara.
Det adderar snabbt upp. Här är var det brukar falla i verkligheten.
- Du tappar tempo eftersom varje uppskattning kräver manuell återinmatning innan du ens kan börja tänka.
- Två personer uppskattar samma bostad och får olika siffror eftersom ”indata” tolkades olika.
- Leads svalnar medan du letar efter senaste versionen av arket eller fixar en trasig formel.
- Du kan inte enkelt granska i efterhand vad som hände eftersom originalmeddelandet och den slutliga uppskattningen inte sparas tillsammans.
Lösningen: skicka detaljer i Telegram, logga en korrekt formaterad uppskattning automatiskt
Det här flödet gör ”bostadsdetaljer” till en repeterbar pipeline. Det startar med en inkommande förfrågan (antingen direkt mot en webhook-endpoint, eller via Telegram om du skickar meddelanden vidare till webhooken). n8n plockar ut de fyra indata som modellen förväntar sig: kvadratfot, antal rum, ålder i år och avstånd till citykärnan. Sedan kör den värdena genom en enkel neuralt nätverk-liknande beräkning (en liten multi-layer perceptron med ett dolt lager och en slututgång). Till sist returnerar flödet en prisprognos direkt och kan även skriva samma indata + utdata till Google Sheets, så du får en prydlig och sökbar logg för uppföljning och rapportering.
Flödet börjar när du skickar bostadsdata till webhook-URL:en. Därefter tolkar och normaliserar n8n varje fält så att ”1500”, ”1,500” eller ”1500 sqft” inte spårar ur uppskattningen. Sedan kombinerar modellogiken de viktade indata, kör aktiveringssteget och producerar ett tal som förutspått pris. Därefter svarar du på förfrågan och sparar resultatet i Sheets så att du kan använda det senare.
Det du får: automation vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du hanterar 15 inkommande ”snabb uppskattning”-förfrågningar en intensiv dag. Manuellt tar även ett noggrant flöde kanske 10 minuter per ärende (läsa meddelande, skriva in fält, fixa formatering, köra beräkningen, logga det), så du lägger cirka 2,5 timmar på att bara flytta siffror. Med den här automationslösningen: du skickar de fyra detaljerna en gång, flödet räknar på sekunder och raden hamnar i Google Sheets automatiskt. Realistiskt är du nere på cirka 1 minut per förfrågan, vilket är ungefär 2 timmar tillbaka en sådan dag.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Telegram för att skicka in bostadsdetaljer via chatten
- Google Sheets för att lagra indata och förutspådda priser
- OpenAI API-nyckel (valfritt) om du använder AI Agent för att tolka meddelanden till fält (hämta den i OpenAI Dashboard)
Svårighetsgrad: Mellan. Du kopplar konton och justerar ett par tolknings-/mappningssteg så att det matchar hur du samlar in bostadsdetaljer.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Inkommande förfrågan triggar flödet. En GET-förfrågan träffar n8n:s webhook-endpoint (till exempel: /webhook/regression/house/price) med fyra query-parametrar som boyta och antal rum. Om du föredrar Telegram först kan du skicka meddelanden in i samma flöde genom att låta en Telegram-trigger anropa webhooken med extraherade fält.
Indatatolkning och rensning sker direkt. Flödet innehåller dedikerade tolkningssteg för boyta, rum, ålder och avstånd till city, så rörig indata inte blir röriga prognoser. Här standardiserar du enheter och tar bort ovidkommande tecken.
Prognosen beräknas med inbyggd modellogik. n8n kombinerar de rensade värdena, applicerar vikter och bias över två dolda ”neuroner” och producerar sedan en slutlig viktad utdata. Det är inte magi. Det är konsekvent matematik som körs på samma sätt varje gång, vilket är precis vad de flesta team behöver.
Du får ett svar (och en logg). Flödet returnerar det förutspådda priset direkt via webhook-svaret, och du kan lägga till ett Google Sheets-steg för att lägga till en rad med indata, förutspått pris, tidsstämpel och källa (Telegram vs. webhook).
Du kan enkelt justera indataformatet så att det matchar hur dina leads faktiskt skriver meddelanden. Se hela implementationsguiden nedan för alternativ för anpassning.
Steg-för-steg-implementeringsguide
Steg 1: konfigurera webhook-triggern
Konfigurera den inkommande webhooken så att externa anrop kan skicka bostadsdetaljer för prediktion.
- Lägg till noden Inbound Webhook Trigger och ställ in Path till
regression/house/price. - Ställ in Response Mode till
responseNodeså att arbetsflödet kan skicka det beräknade resultatet från en response-nod. - Koppla Inbound Webhook Trigger till de fyra parsernoderna; den här noden skickar utdata till City Distance Parser, Property Age Parser, Room Count Extractor och Square Footage Parser parallellt.
Steg 2: konfigurera indata-parsers
Parsa varje inkommande query-parameter till rena JSON-fält för modellens indata.
- I Square Footage Parser, ställ in JavaScript Code till
return { sqaure_feet: $input.first().json.query.sqaure_feet };. - I Room Count Extractor, ställ in JavaScript Code till
return { number_rooms: $input.first().json.query.number_rooms };. - I Property Age Parser, ställ in JavaScript Code till
return { age_in_years: $input.first().json.query.age_in_years };. - I City Distance Parser, ställ in JavaScript Code till
return { distance_to_city_in_miles: $input.first().json.query.distance_to_city_in_miles };. - Koppla varje parsers utdata till dess matchande value-noder; till exempel skickar Square Footage Parser utdata till Hidden1 Input1 Value och Hidden2 Input1 Value parallellt.
distance_to_city_in_km medan City Distance Parser skickar ut miles. Justera enheter och fältnamn innan ni testar.Steg 3: konfigurera hidden layer 1-indata och viktning
Ställ in den första dolda lagrets indata, vikter och viktade summor.
- I Hidden1 Input1 Value, mappa value till
{{ $json.sqaure_feet }}och ställ in weight till3.5124223. - I Hidden1 Input2 Value, mappa value till
{{ $json.number_rooms }}och ställ in weight till395.781. - I Hidden1 Input3 Value, mappa value till
{{ $json.age_in_years }}och ställ in weight till-23.359684. - I Hidden1 Input4 Value, mappa value till
{{ $json.distance_to_city_in_km }}och ställ in weight till-106.583916. - I var och en av Hidden1 Input1 Weighting till Hidden1 Input4 Weighting, ställ in weighted_value till
{{ $json.value * $json.weight }}. - Koppla de fyra viktning-noderna till Aggregate Hidden 1 och ställ in Number Inputs till
4.
Steg 4: konfigurera hidden layer 2-indata och viktning
Spegla konfigurationen för det andra dolda lagret med dess egna vikter.
- I Hidden2 Input1 Value, mappa value till
{{ $json.sqaure_feet }}och ställ in weight till2.7669308. - I Hidden2 Input2 Value, mappa value till
{{ $json.number_rooms }}och ställ in weight till425.43658. - I Hidden2 Input3 Value, mappa value till
{{ $json.age_in_years }}och ställ in weight till-18.90951. - I Hidden2 Input4 Value, mappa value till
{{ $json.distance_to_city_in_km }}och ställ in weight till-105.73043. - I var och en av Hidden2 Input1 Weighting till Hidden2 Input4 Weighting, ställ in weighted_value till
{{ $json.value * $json.weight }}. - Koppla de fyra viktning-noderna till Aggregate Hidden 2 och ställ in Number Inputs till
4.
Steg 5: beräkna hidden-aktiveringar och utsignal(er)
Summera viktade indata, applicera bias och aktivera varje hidden layer-utdata innan ni genererar utsignaler.
- I Hidden1 Weighted Total och Hidden2 Weighted Total, behåll JavaScript-logiken för summering som den är angiven:
var weighted_sum = 0; ... return { weighted_sum };. - I Hidden1 Bias Add, ställ in logit till
{{ $json.weighted_sum + 84.52918 }}; i Hidden2 Bias Add, ställ in logit till{{ $json.weighted_sum + 94.53608 }}. - I Hidden1 Activation och Hidden2 Activation, ställ in output till
{{ $json.logit > 0 ? $json.logit : 0 }}. - I Output1 Value, mappa value till
{{ $json.output }}och ställ in weight till23.246952. I Output2 Value, mappa value till{{ $json.output }}och ställ in weight till24.472496. - I Output1 Weighting och Output2 Weighting, ställ in weighted_value till
{{ $json.value * $json.weight }}och koppla sedan båda till Combine Output Signals (parallella indata).
Steg 6: beräkna slutligt utdata och svara
Aggregera utsignalerna, lägg till den slutliga biasen och returnera prediktionen i webhook-svaret.
- I Output Weighted Total, behåll JavaScript-logiken för summering:
var weighted_sum = 0; ... return { weighted_sum };. - I Output Bias Add, ställ in output till
{{ $json.weighted_sum + 38.705364 }}. - I Return Webhook Reply, ställ in Respond With till
jsonoch Response Body till={ "price": {{ $json.output }} }.
Steg 7: testa och aktivera ert arbetsflöde
Verifiera prediktions-endpointen och sätt arbetsflödet i produktion.
- Klicka Execute Workflow och anropa webhook-URL:en med query-parametrar som
?sqaure_feet=1200&number_rooms=3&age_in_years=10&distance_to_city_in_miles=5. - Bekräfta att Return Webhook Reply returnerar JSON med ett numeriskt
price-värde som härleds från Output Bias Add. - Åtgärda eventuella enhetsavvikelser eller saknade fält i request-payloaden om ni får ett null- eller nollresultat.
- Växla arbetsflödet till Active för att aktivera prisprognoser i realtid via webhook-endpointen.
Vanliga fallgropar
- Telegram-inloggningar kan gå ut eller kräva särskilda behörigheter. Om det strular, kontrollera först din Telegram bot token och chattbehörigheter i n8n:s Credentials.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder misslyckas på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera utdata för alltid.
Vanliga frågor
Cirka 30 minuter om dina Telegram- och Google-konton är redo.
Nej. Du kopplar mest konton och mappar fält. Den enda ”tekniska” delen är att bestämma hur du vill formatera indata så att tolkningen förblir pålitlig.
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 volymer. Du behöver också räkna in OpenAI API-kostnader om du använder AI Agent för tolkningen.
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 dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är en vanlig uppgradering. Behåll webhooken som ”ingång”, och byt sedan tolkningen så att Telegram-text omvandlas till de fyra fält som krävs (kvadratfot, rum, ålder, avstånd). Många team använder steget AI Agent / OpenAI Chat Model för att extrahera fälten ur röriga meddelanden och skickar sedan strukturerade siffror in i de befintliga noderna för viktning och utdata. Du kan också lägga till en Google Sheets-nod för ”append row” efter prognosen så att varje chattförfrågan loggas automatiskt.
Oftast beror det på en utgången eller felaktig bot token som sparats i n8n Credentials. Uppdatera Telegram-uppgiften och bekräfta sedan att boten har rätt att läsa meddelanden i chatten du testar. Om du skickar Telegram vidare till en webhook, verifiera även att chattmeddelandet faktiskt når noden som bygger webhook-förfrågan, eftersom ett tomt fält kan få tolkarna att bete sig märkligt.
Väldigt många för normal daglig användning. På n8n Cloud beror det på din plans månadsvisa körningar; vid egen drift beror det främst på din server. Själva beräkningen är lättviktig, så den praktiska gränsen är oftast hur många inkommande förfrågningar du skickar och om du även skriver varje enskild till Google Sheets.
Ibland, ja. Det här flödet innehåller anpassad tolkning och flerleds beräkningslogik, och n8n hanterar den typen av förgreningar och databehandling tydligt utan att varje liten justering blir ett nytt betalt steg. Zapier eller Make kan fortfarande fungera om din process bara är ”meddelande in, rad i Sheets”, men så fort du vill ha pålitlig extrahering och en repeterbar modell brukar n8n vara enklare att styra. Om du väljer mellan dem för en utrullning i team, fundera på var fel uppstår: i din indata. Det är där n8n:s flexibilitet lönar sig. Prata med en automationsexpert om du vill ha en snabb rekommendation.
När detta väl är på plats slutar ”snabb uppskattning” att vara ett miniprojekt. Flödet tar hand om det repetitiva så att du kan fokusera på dialogen och nästa steg.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.