I de to forrige artiklene i denne serien så vi først hvorfor det er verdt å samle inn kundefeedback, og deretter hvordan du lager et nyttig feedbackskjema for å forstå hva som skjer på et nettsted eller i en app rett etter en konvertering.
I denne tredje artikkelen går vi ett nivå dypere. Nå handler det ikke bare om å samle inn svar, men om å behandle dem.
Det tar tid å analysere svarene fra åpne felt i et hvilket som helst skjema hvis det ikke automatiseres. Særlig hvis de kommer på flere språk.
Hele serien om hvordan du samler inn og bruker kundefeedback har fire deler:
- Hvorfor det er helt nødvendig å samle inn kundefeedback.
- Hvordan lage et nyttig feedbackskjema.
- Hvordan bruke KI til å oversette og klassifisere åpne svar.
- Hvordan gjøre feedbacken om til dashboards og en månedlig oppfølgingsrutine.
Her skal vi konsentrere oss om det tredje punktet: å sette opp en workflow med n8n, Google Sheets og Gemini for å oversette, klassifisere og berike åpne skjemasvar.
Índice de Contenidos del Artículo
- Hvilket problem løser vi med denne workflowen
- Hva vi skal bygge
- Verktøyene vi skal bruke
- Før du begynner: hvordan svararket bør være klargjort
- Workflow i n8n steg for steg
- Hva vi oppnår til slutt i prosessen
- Vanlige feil når man automatiserer feedback med KI
- Neste steg: gjøre disse dataene om til et dashboard
- Ofte stilte spørsmål
- Hva brukes automatisering av skjemasvar med n8n og KI til?
- Hvilket problem løser denne workflowen?
- Hvilke verktøy brukes i workflowen?
- Må man bruke akkurat Gemini?
- Hvordan bør svararket være klargjort?
- Hvorfor er det viktig å unngå duplikater?
- Hvorfor må KI-en få lukkede kategorier?
- Hva returnerer KI-en i denne flyten?
- Hvorfor må JSON-en KI-en returnerer valideres?
- Erstatter KI menneskelig analyse?
Hvilket problem løser vi med denne workflowen
Lukkede spørsmål i skjemaet er enkle å analysere.
Hvis du ber noen vurdere prosessens enkelhet fra én til ti (eller noe annet), hovedårsaken til valget, alder, land eller om brukeren hadde problemer, klassifiseres hvert svar med en verdi innenfor et begrenset sett med variabler.
Problemet dukker opp med de åpne svarene.
Det er her brukeren forklarer med egne ord hva som har skjedd: at de ikke fant en opplysning, at betalingen skapte tvil, at de sammenlignet med en annen plattform der det var billigere, at de hadde et problem med en kupong i checkouten, at de ville snakke med et menneske, eller at prosessen var klar og rask.
Denne typen kommentar er svært verdifull, men den har tre vanskeligheter:
- Den må leses.
- Du må forstå og tolke konteksten.
- Og hvis det er flere språk, må den oversettes eller normaliseres før den kan sammenlignes.
Hvis du har få svar, kan du gjøre det manuelt. Hvis du begynner å få volum, ulike markeder eller kommentarer på fem språk, er det ikke lenger gjennomførbart.
I eksempelet vi bruker, var skjemaet satt opp på spansk, nederlandsk, fransk, engelsk og tysk. Derfor ga det mening å legge til et KI-lag.
Poenget er ikke at KI-en skal bestemme for virksomheten, men at den skal klargjøre dataene:
- Oversette kommentarer.
- Klassifisere hendelser.
- Oppdage omtaler av konkurrenter.
- Legge igjen et Google Sheets-ark klart til analyse i neste steg.
Hva vi skal bygge
Vi skal bygge en n8n-workflow som gjør følgende:
- Leser et Google Sheets-ark med skjemasvar.
- Oppdager hvilke svar som er nye, slik at duplikater ikke behandles.
- Legger til en kategorikontekst slik at KI-en klassifiserer konsekvent.
- Sender de åpne feltene til en LLM (Gemini, i vårt tilfelle).
- Mottar et svar i JSON.
- Gjør denne JSON-en om til kolonner med riktig format.
- Skriver sluttresultatet i et annet Google Sheets-ark med KI-resultatene.
Dette er ikke en universell oppskrift du kan kopiere uten å endre noe.
Den er tilpasset et konkret skjema for kundefeedback på et reservasjonsnettsted, men logikken kan overføres til en ecommerce, et kurs, et tjenestenettsted eller et hvilket som helst feedbackskjema om en digital ressurs der du vil klassifisere åpne svar.
Verktøyene vi skal bruke
Til denne flyten bruker vi flere konkrete verktøy:
- n8n, som automatiseringsverktøy.
- Google Sheets, som inn- og utdataark.
- Gemini, som KI-modell for å oversette og klassifisere.
- Data Studio, som blir det naturlige målet for å visualisere dataene i neste artikkel.
I dette tilfellet bruker vi Gemini Flash Lite fordi oppgaven er relativt lett: analysere korte kommentarer, velge en kategori, oppdage om en konkurrent nevnes og returnere en JSON. Vi trenger ikke den kraftigste modellen til det, men en rask, billig og stabil modell.
I vårt tilfelle var den forventede kostnaden bare noen få øre om dagen. Vi valgte også latest-versjonen av Flash Lite fordi faste tidligere versjoner, som 2.0 eller 2.5, ga tilgjengelighetsproblemer.
Og i en automatisert flyt er stabilitet like viktig som kvalitet, om ikke viktigere.
Modellens temperatur er satt til 0.1.
Dette er også bevisst: her er vi ikke ute etter kreativitet, men konsistens.
Vi vil at lignende svar skal klassifiseres på lignende måte og at modellen respekterer JSON-formatet vi ber om.
Før du begynner: hvordan svararket bør være klargjort
Som jeg forklarte i forrige innlegg, trenger vi, før vi setter opp workflowen, et Google Sheets-ark med de opprinnelige svarene fra skjemaet.
Det kan komme direkte fra Google Forms, eller det kan være et ark der vi har samlet svar som kommer fra et annet system, som et CRM eller flere skjemaer på ulike språk.
Det viktige er at arket har en stabil struktur: én rad per svar og én kolonne per spørsmål.
I dette eksempelet jobber vi med felt knyttet til svarene:
- Record ID (som vi bruker for å unngå duplikater).
- Dato.
- Marked (det er fem ulike domener).
Og selve svarfeltene:
- Hvor enkel reservasjonen var (skala 1-10).
- Beslutningsgrunn (5 muligheter).
- Om det oppsto problemer, og detaljer om problemet.
- Vurdering av nettstedet.
- Frikommentar.
- Land (det er ikke det samme som marked, siden en finne kan reservere på det engelske nettstedet).
- Kjønn.
- Alder.
- Og om brukeren forventer svar.
Arket ditt trenger ikke ha nøyaktig de samme kolonnene. Det viktige er at det finnes en unik identifikator per svar. I denne workflowen bruker vi Record ID for å vite hvilke rader som allerede er behandlet og hvilke som er nye.

Hvis du jobber på flere språk, bør du beholde samme struktur for spørsmål og svar i alle, og bare variere oversettelsen.
Slik kan du analysere aggregerte data og samtidig segmentere etter språk, land eller marked. Alt dette så vi i forrige innlegg om hvordan man lager skjemaet.
Workflow i n8n steg for steg
Hele workflowen er organisert i ni hovednoder:
Hver time:
→ Les kilde-Sheets.
→ Pakk kilden.
→ Filtrer nye ID-er.
→ Bygg kategorikontekst.
→ Klassifiser med Gemini Flash.
→ Parse KI-svar.
→ Klargjør resultatene for det nye Google Sheets-arket.
→ Skriv til det nye Google Sheets-arket.

Først forklarer jeg flyten på et overordnet nivå, og deretter går vi gjennom hver del i detalj.
I denne flyten kjøres n8n med en definert frekvens, leser svararket, normaliserer dataene, forkaster poster som allerede er behandlet, legger til kategoriene KI-en skal bruke, sender de åpne feltene til Gemini, tolker svaret og skriver en beriket rad i sluttarket.
Nå går vi node for node.
Steg 1: Hver time
Denne noden er triggeren for workflowen.
I eksempelet er den konfigurert til å kjøre hver time, men frekvensen kan tilpasses svarvolumet.
Hvis du får mange svar, kan det gi mening å kjøre den hver time. Hvis du får få, holder det kanskje med én gang om dagen.
Du må også kjøre den manuelt i en testfase.
Grunnleggende konfigurasjon:
Node type: Schedule Trigger
Rule: every hour
Nøkkelen er å justere frekvensen. For skjemafeedback er det vanligvis ikke nødvendig å behandle hvert minutt.
Steg 2: Les Google Sheets-kilden
Denne noden leser Google Sheets-arket der de opprinnelige skjemasvarene ligger.
I dette tilfellet bruker vi kildefanen som skrivebeskyttet.
Viktig: vi markerer ikke rader, skriver ikke statuser og bruker ikke dette arket som en operativ database.
Vi kunne gjort det, men siden klienten opprettet dette arket, er det best å ikke røre det. Hvis det er din egen virksomhet, gir det sannsynligvis mening å legge til et andre ark, i stedet for å opprette et annet Google Sheets-ark slik vi gjør her.
Grunnleggende konfigurasjon:
Node type: Google Sheets
Operation: Read
Document ID: [ID_DEL_SPREADSHEET_ORIGEN]
Sheet name: [NOMBRE_HOJA_ORIGEN]
Credential: [CREDENCIAL_GOOGLE_SHEETS]
Kildearket bør være så rent som mulig.
Hvis det kommer fra Google Forms, har du allerede en ganske praktisk struktur. Hvis det kommer fra et CRM eller flere skjemaer, bør svarene først samles i et ark med konsistente kolonner.
Steg 3: Pakk kilden
Denne kodenoden (JS) normaliserer radene som kommer fra kildearket og gjør dem klare for resten av workflowen.
I praksis kopierer den hvert item som det er.
Nodekode:
// Normaliza las filas del Sheets origen para usarlas despues desde otros nodos.
// El origen es solo lectura, asi que no marcamos nada aqui.
return $input.all().map(item => ({
json: { ...item.json }
}));
Steg 4: Filtrer nye Record ID-er
Denne noden unngår duplikater.
Det er et av de viktigste punktene i workflowen. Hvis vi hver gang flyten kjøres sendte alle svarene til Gemini, ville vi behandlet de samme kommentarene igjen og igjen, brukt flere tokens og fylt sluttarket med duplikater.
For å unngå det bruker vi n8n-noden Remove Duplicates med operasjonen Remove Items Processed in Previous Executions. Konfigurasjonen er basert på feltet Record ID, som må være unikt for hvert svar.
Grunnleggende konfigurasjon:
Node type: Remove Duplicates
Operation: Remove Items Processed in Previous Executions
Value to Dedupe On: {{ $json["Record ID"] }}
Dette er viktig:
Hvis workflowen settes opp før det finnes svar, trenger du ikke initialisere noe. Det første svaret som kommer inn vil være nytt og behandles.
Hvis arket allerede har gamle svar når du aktiverer workflowen (det vanlige tilfellet), bør du kjøre hele flyten frem til denne noden (inkludert) før du kobler den til resten av flyten.
Slik lærer n8n disse Record ID-ene som allerede sett, og sender ikke hele historikken til KI-en ved første kjøring.
Det er også lurt å teste flyten før du publiserer den: kjør én gang, sjekk hvilke poster som slipper gjennom, kjør igjen og verifiser at de ikke dupliseres.
Ikke trykk på Clear Deduplication Historymed mindre du vil behandle alt på nytt.
Steg 5: Bygg kategorikontekst
Her definerer vi kategoriene som KI-en kan bruke til å klassifisere svarene.
Dette punktet er avgjørende, fordi vi ikke vil at Gemini skal finne opp en ny kategori for hver kommentar. Vi vil at den skal klassifisere innenfor en lukket ramme.
I dette eksempelet har vi to kategorigrupper: én for problemer i reservasjonsprosessen og én for åpne kommentarer.
Kategorier for Q3, problemer i prosessen:
- Betaling / betalingsløsning.
- Rabattkode.
- Navigasjon / UX.
- Feil tilgjengelighet.
- Problemer med reservasjonen.
- Annet.
Kategorier for Q5, åpne kommentarer:
- Tilfredshet / ros.
- Kampanjer / rabatter.
- Kundeservice / menneskelig støtte.
- Betalingsmåte / bankoverføring.
- Pris.
- Sammenligning med konkurrent.
- Informasjon i listing.
- Kanselleringspolicy.
- Svartid.
- Ingen relevant kommentar.
- Annet.
I dette tilfellet bestemte vi oss for å hardkode kategoriene inne i selve kodenoden for å unngå et ekstra kall til Google Sheets.
Dette er ikke bare en teknisk preferanse: det bidrar til å redusere kall til Google Sheets-API-et.
Det kan virke praktisk å bruke Google Sheets som en liten database: ett ark for svar, ett for kategorier, ett for å sjekke behandlede rader, ett for å skrive resultater.
Men hvis flyten vokser, kan du støte på kvotegrenser, slik vi gjorde her.
Derfor bruker vi i dette tilfellet Google Sheets som inn- og utdata, ikke som generell database for systemet (som vil bruke den du har i n8n-installasjonen din, som standard SQLite).
Nodekode:
// Categorías hardcodeadas para eliminar una lectura adicional a Google Sheets.
// Si cambias Categorias_Config, actualiza estas listas aquí.
const categoriasQ3 = [
[
'Pago / pasarela',
'Tarjeta rechazada, fallo con Bancontact, Paypal u otro metodo de pago'
],
[
'Codigo descuento',
'Cupon o codigo de descuento invalido que bloquea o impide completar el pago'
],
[
'Navegacion / UX',
'Problemas de usabilidad en la web, ej. volver al listado, botones confusos'
],
[
'Disponibilidad incorrecta',
'Fechas que desaparecen, alojamiento mostrado como disponible pero no lo esta'
],
[
'Problemas con la reserva',
'Reserva equivocada, duplicada o cancelada por error del sistema, demora o ausencia de confirmacion de reserva, email de confirmacion o validacion del propietario'
],
[
'Otro',
'Incidencia que no encaja en ninguna categoria anterior'
],
];
const categoriasQ5 = [
[
'Satisfaccion / elogio',
'Comentarios positivos, felicitaciones, recomendacion del servicio o buena experiencia'
],
[
'Promociones / descuentos',
'Peticiones de codigos promocionales, descuentos para clientes habituales o promociones'
],
[
'Atencion / soporte humano',
'Peticiones de hablar con una persona, chat humano, soporte no automatizado o ayuda comercial'
],
[
'Forma de pago / transferencia',
'Comentarios sobre transferencia, tarjeta, medios de pago disponibles o preferencia de pago'
],
[
'Precio',
'Comentarios sobre subida de precios, coste percibido como alto o comparacion de precio'
],
[
'Comparacion con competencia',
'Menciona explicitamente otra plataforma como Booking.com, Airbnb, Vrbo, etc.'
],
[
'Informacion del listing',
'Falta de fotos, ubicacion/coordenadas poco claras, info de mascotas, descripcion del alojamiento'
],
[
'Politica de cancelacion',
'Plazo de cancelacion gratuita considerado corto o poco flexible'
],
[
'Tiempo de respuesta',
'Quejas sobre lentitud en la respuesta a consultas o soporte'
],
[
'Sin comentario relevante',
"Respuestas vacias de contenido: 'No', 'nada que destacar', 'all good', etc."
],
[
'Otro',
'Comentario con contenido pero que no encaja en ninguna categoria anterior'
],
];
const catsQ3 = categoriasQ3
.map(([cat, desc]) => `- ${cat}: ${desc}`)
.join('
');
const catsQ5 = categoriasQ5
.map(([cat, desc]) => `- ${cat}: ${desc}`)
.join('
');
return $input.all().map(item => ({
json: {
...item.json,
categorias_q3_texto: catsQ3,
categorias_q5_texto: catsQ5,
}
}));
Disse kategoriene er åpenbart ikke universelle. For andre digitale virksomheter må de tilpasses.
Steg 6: Klassifiser med Gemini Flash
Dette er noden som sender de åpne feltene til Gemini. Konkret analyserer vi to felt: detaljen om hendelsen under reservasjonen og den avsluttende frikommentaren.
Modellen må bare returnere en gyldig JSON, uten forklaringer, uten markdown og uten ekstra tekst. Dette er grunnleggende fordi neste node forventer å parse dette svaret og gjøre det om til kolonner.
Grunnleggende konfigurasjon:
Node type: Google Gemini
Model: models/gemini-flash-lite-latest
Temperature: 0.1
Credential: [CREDENCIAL_GEMINI]
Prompt brukt:
Du er en klassifiserer av brukerfeedback fra et nettsted for reservasjon av landlige overnattingssteder. Du skal analysere to tekstfelt og returnere BARE en gyldig JSON, uten ekstra tekst, uten markdown, uten backticks.
Felt Q3 - Issue Detail (hendelse under reservasjonen): "{{ $json['Q3 - Issue Detail'] }}"
Tillatte kategorier for Q3 (velg én, eller bruk nøyaktig teksten "Sin incidencia" hvis feltet er tomt):
{{ $json.categorias_q3_texto }}
Felt Q5 - Comments (frikommentar): "{{ $json['Q5 - Comments'] }}"
Tillatte kategorier for Q5 (velg én, eller bruk nøyaktig teksten "Sin comentario relevante" hvis det er tomt eller ikke tilfører innhold som 'No', 'nada', 'all good'):
{{ $json.categorias_q5_texto }}
I tillegg:
- Hvis Q5 uttrykkelig nevner en konkurrerende plattform (Booking.com, Airbnb, Vrbo, Expedia, HomeAway eller en annen), sett menciona_competidor til true og oppgi navnet som er oppdaget. Hvis ikke, false og tom streng.
- Oversett innholdet i Q5 trofast og naturlig til spansk i comentario_traducido_es. Hvis det er tomt, returner tom streng.
- For Q3, i tillegg til kategorien, oppgi i causa_raiz_resumen en kort setning (maks 8 ord) på spansk som oppsummerer den tekniske årsaken, nyttig for å gruppere lignende hendelser selv om de er formulert ulikt. Hvis det ikke er noen hendelse, tom streng.
Returner nøyaktig dette JSON-formatet:
{
"q3_categoria": "",
"q3_causa_raiz_resumen": "",
"q5_categoria": "",
"q5_menciona_competidor": false,
"q5_competidor_detectado": "",
"q5_comentario_traducido_es": ""
}
Prompten gjør flere ting samtidig:
- Klassifiserer og oversetter Q3.
- Oppsummerer en kort rotårsak for hendelser.
- Klassifiserer og oversetter Q5.
- Oppdager om en konkurrent nevnes og oversetter frikommentaren til spansk.
Alt dette kommer tilbake i en JSON med faste felt.
Den viktige delen er at modellen ikke fritt bestemmer hva den skal gjøre. Vi gir den tillatte kategorier, det nøyaktige utdataformatet og ber den om ikke å legge til tekst utenfor JSON.
Steg 7: Parse KI-svar
Denne noden gjør Geminis svar om til nyttige kolonner.
Først henter den ut teksten modellen returnerer, renser mulige backticks eller markdown-blokker og prøver deretter å gjøre den om til JSON.
Den inkluderer også et sikkerhetslag: hvis KI-en returnerer noe som ikke kan parses, markerer den raden som Klassifiseringsfeil. Slik stopper ikke flyten på grunn av ett enkelt feilformatert svar.
I tillegg tvinger den gjennom en viktig regel for eksempelet vårt: hvis Q3 ikke har noen detaljer eller brukeren oppga at de ikke hadde problemer, settes Q3-kategorien til Sin incidencia.
Dette hindrer KI-en i å tolke en Q5-kommentar som om den var en hendelse i prosessen.
Nodekode:
function extractModelText(json) {
// Caso Gemini n8n actual:
// item.json.content.parts[0].text
if (json?.content?.parts?.[0]?.text) {
return json.content.parts[0].text;
}
// Otros formatos posibles según nodo/modelo
if (typeof json?.text === 'string') return json.text;
if (typeof json?.message === 'string') return json.message;
if (typeof json?.output === 'string') return json.output;
if (typeof json?.content === 'string') return json.content;
// OpenAI/LangChain style fallback
if (json?.message?.content) return json.message.content;
if (json?.choices?.[0]?.message?.content) return json.choices[0].message.content;
return '';
}
function cleanJsonText(raw) {
return String(raw || '')
.replace(/```json/gi, '')
.replace(/```/g, '')
.trim();
}
const items = $input.all();
const originales = $('Construir contexto de categorias').all();
return items.map((item, index) => {
const raw = cleanJsonText(extractModelText(item.json));
let parsed;
try {
parsed = JSON.parse(raw);
} catch (e) {
parsed = {
q3_categoria: 'Error de clasificacion',
q3_causa_raiz_resumen: '',
q5_categoria: 'Error de clasificacion',
q5_menciona_competidor: false,
q5_competidor_detectado: '',
q5_comentario_traducido_es: ''
};
}
const original = originales[index] ? originales[index].json : {};
const q3HadIssues = String(original['Q3 - Had Issues'] || '').trim().toLowerCase();
const q3Detail = String(original['Q3 - Issue Detail'] || '').trim();
if (!q3Detail || q3HadIssues === 'no') {
parsed.q3_categoria = 'Sin incidencia';
parsed.q3_causa_raiz_resumen = '';
}
return {
json: {
'Record ID': original['Record ID'],
'Timestamp': original['Timestamp'],
'Market': original['Market'],
'Q1 - Ease of Booking': original['Q1 - Ease of Booking'],
'Q2 - Decision Driver': original['Q2 - Decision Driver'],
'Q2 - Other (Specify)': original['Q2 - Other (Specify)'],
'Q3 - Had Issues': original['Q3 - Had Issues'],
'Q3 - Issue Detail': original['Q3 - Issue Detail'],
'Q3 - Cluster Causa Raiz': parsed.q3_categoria || '',
'Q3 - Causa Raiz Resumen': parsed.q3_causa_raiz_resumen || '',
'Q4 - NPS Score': original['Q4 - NPS Score'],
'Q5 - Comments': original['Q5 - Comments'],
'Q5 - Cluster Tema': parsed.q5_categoria || '',
'Q5 - Menciona Competidor': parsed.q5_menciona_competidor ? 'Si' : 'No',
'Q5 - Competidor Detectado': parsed.q5_competidor_detectado || '',
'Q5 - Comentario Traducido ES': parsed.q5_comentario_traducido_es || '',
'Country': original['Country'],
'Gender': original['Gender'],
'Age': original['Age'],
'Reply Requested': original['Reply Requested'],
'Fecha Procesado IA': new Date().toISOString()
}
};
});
Hvis du endrer navnet på den forrige noden, må du justere denne linjen:
const originales = $('Construir contexto de categorias').all();
I n8n må referanser etter nodenavn stemme helt nøyaktig. Derfor bør du bruke tydelige navn og ikke endre dem senere uten å gå gjennom koden.
Steg 8: Klargjør Resultados_IA
Denne noden gjør en sluttrensing før dataene skrives i resultatarket. Den fjerner interne felt som bare brukes under prosessen, som kategoriene i tekstform som vi hadde lagt til for prompten.
Nodekode:
// Limpia campos internos antes de escribir en Resultados_IA.
return $input.all().map(item => {
const row = { ...item.json };
delete row['_timestamp_unix'];
delete row['_clasificacion_error'];
delete row['_error_message'];
delete row['categorias_q3_texto'];
delete row['categorias_q5_texto'];
return { json: row };
});
Dette steget endrer ikke analysen, men gjør utdataene renere.
Sluttarket trenger ikke å lagre alt som ble brukt internt til klassifisering, men dataene vi senere skal analysere.
Steg 9: Skriv Resultados_IA
Den siste noden skriver den berikede raden i et nytt Google Sheets-ark.
I dette tilfellet bruker vi et ark som heter Resultados_IA og operasjonen append, for å legge til én ny rad for hvert behandlede svar.
Grunnleggende konfigurasjon:
Node type: Google Sheets
Authentication: Service Account
Operation: Append
Document ID: [ID_DEL_SPREADSHEET_RESULTADOS]
Sheet name: [NOMBRE_HOJA_RESULTADOS]
Mapping mode: Auto-map input data
Credential: [CREDENCIAL_GOOGLE_SHEETS]
Sluttarket inneholder både opprinnelige data og felt generert av KI. For eksempel:
- Record ID
- Timestamp
- Market
- Q1 – Ease of Booking
- Q2 – Decision Driver
- Q3 – Had Issues
- Q3 – Issue Detail
- Q3 – Cluster Causa Raiz
- Q3 – Causa Raiz Resumen
- Q4 – NPS Score
- Q5 – Comments
- Q5 – Cluster Tema
- Q5 – Menciona Competidor
- Q5 – Competidor Detectado
- Q5 – Comentario Traducido ES
- Country
- Gender
- Age
- Reply Requested
- Fecha Procesado IA

Herfra har vi ikke lenger bare løse svar. Vi har en beriket tabell, med oversatte kommentarer, grupperte hendelser, klassifiserte temaer og felt klare til bruk i grafer.
Hva vi oppnår til slutt i prosessen
Når workflowen er ferdig, blir hvert nye svar gjort om til en mer nyttig rad for analyse.
Vi beholder fortsatt originaldataene, men legger til lag som tidligere krevde manuell gjennomgang.
I praksis får vi:
- Åpne kommentarer oversatt til spansk.
- Hendelser klassifisert etter rotårsak.
- Kommentarer gruppert etter tema.
- Oppdagelse av omtaler av konkurrenter.
- En KI-behandlingsdato.
- En tabell klar til å kobles til Looker Studio.
Dette erstatter ikke menneskelig gjennomgang. Det fjerner mekanisk arbeid.
I stedet for å starte med å lese hundre kommentarer på fem språk, begynner du med å se temaer, kategorier, frekvenser og oversatte kommentarer. Deretter kan du gå gjennom utvalg og avgjøre hvilke tiltak som gir mening, slik vi skal se i neste og siste innlegg i serien.
Vanlige feil når man automatiserer feedback med KI
La oss ta de vanligste.
Å la KI-en finne opp kategorier
Hvis hver kjøring lager nye etiketter, kan du ikke sammenligne noe etterpå.
For at systemet skal fungere, må KI-en klassifisere innenfor en lukket, eller i det minste svært kontrollert, liste.
Å ikke validere JSON-en modellen returnerer
Selv om du ber om et konkret format, kan den noen ganger svare feil. Derfor må parse-noden rense, prøve å konvertere til JSON og håndtere feil uten å ødelegge hele flyten.
Å ikke sjekke duplikater
Før du publiserer workflowen, bør du kjøre den i test og verifisere at samme svar ikke havner flere ganger i det andre arket.
Noden for nye Record ID-er er det som hindrer deg i å betale to ganger for samme klassifisering og rote til sluttarket.
Å bruke Google Sheets som operativ database
Google Sheets fungerer veldig godt som inn- og utdata, men det er ikke lurt å gjøre konstante lesinger for alt: kategorier, statuser, kontroller, resultater og kontroll av behandlede rader.
Hvis du overdriver, kan du møte kvoteproblemer eller få en mer skjør flyt enn nødvendig.
Å publisere flyten uten å teste den
Først må den kjøres manuelt, og du må sjekke hvilke data som kommer inn, hvilke som går ut, om JSON-en parses riktig, om det ikke finnes duplikater og om kategoriene er de ønskede.
Å tro at KI-en gjør hele jobben
KI-en klassifiserer og oversetter, men virksomheten må fortsatt tolke.
En hyppig kategori betyr ikke alltid at du bør gjøre noe umiddelbart. Du må vurdere volum, effekt, hvor lett det er å implementere og kontekst.
Neste steg: gjøre disse dataene om til et dashboard
Etter denne workflowen har vi allerede et resultatark som kompletterer det opprinnelige skjemaarket.
Vi vet ikke bare hva hver bruker har svart, vi har også felt klare for analyse: kategorier, oversettelser, konkurrenter, hendelser og behandlingsdato.
Det neste og siste steget er:
Å ta disse dataene inn i et dashboard og lage governance for oppfølging.
I neste artikkel ser vi hvordan du kobler Google Sheets-arkene til Data Studio, hvilke metrikker det gir mening å vise, og hvordan du gjør feedback til en månedlig oppfølgingsrutine.
For det nytter ikke å automatisere analysen hvis ingen ser på dataene etterpå, noe som ofte skjer.

Legg igjen en kommentar