# Andreas Ahoniemi > Head of Digital at Gullström & Co in Karlstad, Sweden. Builds AI automation, AI integrations and fast digital platforms for Swedish companies. Available in Swedish at https://ahoniemi.se/ and English at https://ahoniemi.se/en/. Andreas Ahoniemi works on four things: AI automation of repetitive business processes, AI features inside products and websites, digital development of sites and e-commerce, and AI visibility so a company is cited by assistants rather than only ranked by search engines. Work is delivered through Gullström & Co, a concept and communications agency at Herrgårdsgatan 6, 652 24 Karlstad, Sweden. ## Services - [AI automation](https://ahoniemi.se/en/services/ai-automation/): AI automation means a workflow is executed by software instead of a person, with language models handling the steps that require interpretation: reading an email, understanding an invoice, routing a ticket, drafting a reply. I build these flows in n8n and Python, connect them to the systems you already run, and leave logs behind so every execution can be audited afterwards. - [n8n development](https://ahoniemi.se/en/services/ai-automation/n8n/): n8n is an open source workflow automation platform that connects systems through prebuilt nodes and custom JavaScript or Python. I build, deploy and maintain n8n workflows, either self-hosted in your environment or on n8n Cloud, and use it as the engine for AI automations that need to talk to more than one system. - [Document and invoice flows](https://ahoniemi.se/en/services/ai-automation/document-and-invoice-flows/): Automated document flows read incoming invoices, orders, delivery notes and contracts, extract the fields that matter and pass them into the business system. What separates this from classic OCR is that a language model can interpret a document whose layout it has never seen, which is what makes the flow useful when you have a hundred suppliers using a hundred different templates. - [Customer support and ticketing](https://ahoniemi.se/en/services/ai-automation/customer-support-and-ticketing/): Automated ticket handling reads incoming email and form submissions, works out what the ticket is about, places it in the right queue and drafts a reply based on your own guidelines and previous answers. The agent reviews and sends rather than starting from an empty field, which is where the time saving sits. Fully automatic replies are used only on ticket types where a wrong answer is cheap to correct. - [Reporting and data flows](https://ahoniemi.se/en/services/ai-automation/reporting-and-data-flows/): Automated reporting flows pull figures from the systems you already run, assemble them by the same rules every time and deliver the result as an email, a document or a message in Teams or Slack. The language model handles the summary and the commentary, not the calculation, because numbers should be computed by code that returns an identical answer on every run. - [AI in product and site](https://ahoniemi.se/en/services/ai-in-product/): AI in the product means embedding language models into a site, a storefront or an internal system: search that understands questions rather than keywords, an assistant that answers from your own documents, or content generated from structured data. The pattern underneath is usually RAG, where the model retrieves your sources before it answers, and that retrieval step is what keeps answers tied to reality. - [AI search and vector search](https://ahoniemi.se/en/services/ai-in-product/ai-search-and-vector-search/): Vector search, or semantic search, compares the meaning of a query against the meaning of your content instead of matching character strings. Each document becomes a vector, the query is converted the same way, and the results are those closest in meaning. That lets a visitor find the right page even when they use entirely different words than you do. - [RAG assistants](https://ahoniemi.se/en/services/ai-in-product/rag-assistants/): RAG stands for retrieval augmented generation and means the model retrieves relevant passages from your own documents before composing an answer, rather than answering from memory. It is the single most important technique for making an assistant usable in production, because every claim can then be traced to a document that actually exists. - [Product content at scale](https://ahoniemi.se/en/services/ai-in-product/product-content-at-scale/): Content generation at scale means product descriptions, category copy, metadata and alt text are created from the data you already hold in the business system, rather than written by hand or invented by a model. The benefit is largest in e-commerce with thousands of items where half lack a description, which is both a conversion problem and a search problem. - [Digital development](https://ahoniemi.se/en/services/digital-development/): Digital development here means building and rebuilding websites, e-commerce and integrations with load time, measurability and maintainability as the constraints. I work with statically generated sites in Astro, with WordPress and WooCommerce where editorial control matters most, and connect them to the business systems you already run rather than replacing them. - [API integrations](https://ahoniemi.se/en/services/digital-development/api-integrations/): An API integration connects two systems so data moves automatically rather than being exported and imported by hand. I build integrations between ERP, e-commerce, CRM, warehouse and messaging tools, usually as a small service layer with a queue and retries, so a temporarily unavailable receiver does not mean the data is gone. - [WordPress development and plugins](https://ahoniemi.se/en/services/digital-development/wordpress-development/): WordPress development here means custom plugins, custom Gutenberg blocks, theme work and doing something about installations that have accumulated thirty add-ons. I write functionality as a plugin rather than in the theme, so it survives a change of design, and keep the code in a Git repository rather than in an FTP folder. - [E-commerce and WooCommerce](https://ahoniemi.se/en/services/digital-development/ecommerce-and-woocommerce/): E-commerce work comes down to three things: the store loading fast enough for the customer to stay, stock levels and prices matching the business system, and a checkout with as few steps as possible. I work mainly in WooCommerce, with integrations to ERP, carriers and payment providers, and measure conversion before and after rather than guessing what helped. - [Performance and Core Web Vitals](https://ahoniemi.se/en/services/digital-development/performance-and-core-web-vitals/): Performance work means measuring and improving how quickly a page becomes usable for real visitors, expressed in Google’s Core Web Vitals: LCP for when the main content appears, INP for how quickly the page responds to input, and CLS for how much the layout shifts. The work always starts with field data, because lab numbers from a fast machine rarely resemble a phone on a commuter train. - [AI visibility and search](https://ahoniemi.se/en/services/ai-visibility/): AI visibility is about being cited by ChatGPT, Perplexity, Google AI Overviews and Copilot, not only ranked in a list of links. It takes three things: content present in the HTML without requiring JavaScript, structure via schema.org so a machine can tell what is what, and answers written as self-contained passages that survive being lifted out of the page. - [Technical SEO](https://ahoniemi.se/en/services/ai-visibility/technical-seo/): Technical SEO is about a crawler being able to find, fetch and index your pages without obstruction: a correct robots.txt, canonical addresses without conflicts, a sitemap that reflects reality, and content present in the server response. It is the groundwork, and until it is done, content and links rarely produce the effect they should. - [Structured data and schema](https://ahoniemi.se/en/services/ai-visibility/structured-data/): Structured data is machine-readable markup describing what a page contains: that this is a service, that it is provided by a particular person, that it is delivered in a particular area, that the page answers these questions. The format is JSON-LD following schema.org, and it is the same data that powers rich results and that language models use when deciding what a source is about. - [GEO and llms.txt](https://ahoniemi.se/en/services/ai-visibility/geo-and-llms-txt/): GEO, generative engine optimization, is the work of getting cited in answers from ChatGPT, Perplexity, Google AI Overviews and Copilot. It differs from classic SEO in that the goal is not a position but a sentence inside somebody else’s answer, which rewards content that is self-contained, factual and liftable out of the page without losing meaning. ## Pages - [Start page, Swedish](https://ahoniemi.se/): Overview of services, process and common questions. - [Start page, English](https://ahoniemi.se/en/): The same overview in English. - [Services, English](https://ahoniemi.se/en/services/): All four service areas. - [About](https://ahoniemi.se/en/about/): Background, working method and tools. - [Contact](https://ahoniemi.se/en/contact/): andreas@gullstrom.se ## Writing Guides and walkthroughs, grouped by the service area they belong to. Each opens with a self-contained summary. - [AI automation 101: what it is and when it pays off](https://ahoniemi.se/en/knowledge/ai-automation-101/), published 2026-09-16: AI automation is a workflow executed by software instead of a person, where a language model handles the steps that require interpretation. What separates it from ordinary automation is that the input is allowed to vary: an email phrased three ways, an invoice in five layouts, a ticket with no clear category. If the input is already structured you do not need AI, and it will be both cheaper and more reliable without it. - [Seven processes that are almost always worth automating](https://ahoniemi.se/en/knowledge/processes-worth-automating/), published 2026-09-16: Processes worth automating with AI share three traits: they run often, the input varies in format but not in meaning, and the decision is rule-driven even when the text is not. Below are seven flows where that combination almost always holds, drawn from client work rather than a vendor brochure. - [How to cost an automation before you build it](https://ahoniemi.se/en/knowledge/costing-an-automation/), published 2026-09-16: To cost an automation you need four numbers: how often the process runs, how long it takes, what that time costs, and what building plus maintaining it costs. The first three you can measure in an afternoon by asking whoever does the work. The fourth is where most business cases fall apart, because maintenance is almost always left out. - [RAG explained: making AI answer from your own documents](https://ahoniemi.se/en/knowledge/rag-explained/), published 2026-09-16: RAG stands for retrieval augmented generation and means the model retrieves relevant passages from your own documents before composing an answer, rather than answering from memory. It is the single most important technique for making an assistant usable in production, because every claim can then be traced to a document that actually exists. - [Before you build an AI assistant: seven questions to answer](https://ahoniemi.se/en/knowledge/before-you-build-an-ai-assistant/), published 2026-09-16: Most AI assistants that get built never get used, and it is rarely the technology. It is that nobody decided who it is for, what it is allowed to say, and how anyone would tell whether it works. Seven questions to answer before anyone writes code, in this order. - [How to measure whether AI search actually got better](https://ahoniemi.se/en/knowledge/measuring-ai-search/), published 2026-09-16: To know whether a search improvement actually helped you need an evaluation set: real queries from your own search logs, each with the result that should rank first. Run the set before and after every change. Without it, every discussion about search quality becomes a discussion about how it feels, and whoever speaks loudest wins. - [Core Web Vitals 101: what actually affects load time](https://ahoniemi.se/en/knowledge/core-web-vitals-101/), published 2026-09-16: Core Web Vitals are Google’s three measures of how a page is experienced: LCP for when the main content appears, INP for how quickly the page responds to input, and CLS for how much the layout shifts. They are measured on real visitors rather than in a test tool, and it is the 75th percentile that decides whether you clear the threshold. A score of 95 in a lab test therefore says almost nothing about what your visitors experience. - [Replatforming without losing traffic: a checklist](https://ahoniemi.se/en/knowledge/replatforming-without-losing-traffic/), published 2026-09-16: Traffic loss during a replatform is almost never caused by the new platform. It is caused by addresses changing without redirects, content disappearing along the way, or the new site not being indexable. All three are predictable and therefore avoidable, but only if the work happens before launch rather than after. - [API integrations: six mistakes that cost money](https://ahoniemi.se/en/knowledge/api-integration-mistakes/), published 2026-09-16: An integration that works in testing and misbehaves in production almost always has one of six faults. None of them are about which API you use; they are about how the system behaves when something goes wrong: when the receiver is down, when the same message arrives twice, or when a field means different things in the two systems. - [How to get cited by ChatGPT and Perplexity](https://ahoniemi.se/en/knowledge/getting-cited-by-chatgpt-and-perplexity/), published 2026-09-16: To be cited by a language model, three things have to hold: the content must be in the server response without requiring JavaScript, the crawler must be admitted in robots.txt, and the passage must survive being lifted out of the page. The third is what separates most sites, because a model rarely cites a whole page, it cites a single paragraph. - [GEO vs SEO: what is the same and what actually differs](https://ahoniemi.se/en/knowledge/geo-vs-seo/), published 2026-09-16: GEO, generative engine optimization, is the work of getting cited in answers from language models. SEO is the work of ranking in a list of links. They share roughly eighty percent of their foundation: content has to be fetchable, readable and understandable. The difference is the goal. SEO wants a position, GEO wants a sentence inside somebody else’s answer, and that rewards different things in how the text is written. - [A technical checklist for AI visibility](https://ahoniemi.se/en/knowledge/technical-checklist-ai-visibility/), published 2026-09-16: A technical review for AI visibility comes down to three questions: can the crawler fetch the page, can it read the content without executing JavaScript, and does it understand what the page is about. Below are the checks for each, in the order worth doing them, and most take under a minute. ## Common questions ### What does an AI automation project cost? It depends on how many systems have to be connected, not on how advanced the model is. Most engagements start with a bounded pilot lasting a few weeks, and the price is set after the process has been mapped, never before. If the saving does not cover the build, I say so and there is no project. ### How long before an automation is live? A bounded automation is usually live within four to eight weeks of the first meeting. What stretches the timeline is almost never the build, but system access, deciding who is allowed to approve what, and finding enough real data to test against. ### Which tools and models do you work in? Automations are usually built in n8n, or in Python when the flow needs more control. For language models I use Claude and OpenAI, chosen per task rather than by default. On the web side I work in Astro, WordPress and WooCommerce. The choice follows what you already maintain, because a tool nobody on your side can operate is a cost rather than a solution. ### How is AI automation different from ordinary automation? Ordinary automation requires the input to look the same every time. AI automation copes with input that varies: an email phrased three different ways, an invoice in five different layouts, a ticket with no clear category. The language model handles the interpretation step and the rest of the flow is ordinary integration. Where the input is already structured, no AI is needed and we build it cheaper without. ### How do you stop the AI from making things up? By constraining what the model is allowed to answer from. Instead of answering from memory it retrieves your documents and answers only from those, with a citation. On top of that, the flow includes an approval step before anything hard to undo happens, and logs both prompt and response so deviations are found in review rather than by a customer. ### Do you work with companies outside Värmland? Yes. Gullström & Co is based in Karlstad and some work happens on site in Värmland, but automation work runs just as well remotely and a large share of clients sit elsewhere in Sweden. What benefits from being in the room is the mapping at the start, and that fits in a day. ### Can n8n run on our own server? Yes. n8n is open source and runs in Docker on your own server or with any cloud provider. Self-hosting means no data passes through a third party, which is usually the deciding argument when a workflow handles personal data, contracts or customer records. ### What happens to our workflows if we stop working with you? Nothing. n8n runs in your environment, the workflow definitions live in your Git repository and the documentation describes each one. Anyone who knows n8n can take over. That is built into how I work rather than sold as an add-on. ### What does running n8n cost? Self-hosted n8n has no licence cost, only the server, and most workflows fit comfortably on a small virtual machine. n8n Cloud is priced per execution. In an AI workflow the variable cost is usually the language model calls rather than n8n itself. ### Does it work on scanned paper invoices? Yes, though with lower accuracy than on digital PDFs. Scanned documents go through OCR first, and the quality of that read sets the ceiling on what can be extracted. A skewed or faint scan shows up immediately in the accuracy measurement, and those suppliers are usually better handled by asking for e-invoices instead. ### How do we know nothing is posted incorrectly? Arithmetic and lookups run in ordinary code that gives the same answer every time, not in the model. Documents that fail the checks are not posted; they go to a review queue. On top of that, every extracted field is logged with its source text, so an incorrect value can be traced back to the line it came from. ### Will customers notice the reply was written by AI? Not if an agent reviews before sending, which is the default setup. The draft is built from your previous answers, so the tone is yours. For ticket types answered fully automatically I recommend saying so in the reply, both because it is honest and because the customer then knows they can ask for a person. ### Does it work with our current helpdesk? Usually yes. The flow connects by API or webhook to the system you already run, and writes classification and drafts back as fields or internal notes. Where no API exists it can work against the mailbox instead, which is slower but perfectly usable. ### Can the report land straight in Teams or Slack? Yes. Delivery is the last step in the flow and can go to email, Teams, Slack, a shared document, or several at once. The common pattern is a short summary in chat with a link to the full detail, because that is the format people actually read. ### Can the AI get the numbers wrong? Not in this setup, because the model never calculates. Sums, comparisons and percentages are computed in code and handed to the model finished; it only writes the explanatory text. That is also why the same run against the same data produces the same figures every time. ### Do we have to replace our current search? Rarely straight away. Vector search is usually placed alongside the existing search and the results blended, so exact matches on part numbers keep working as before. It also means the change can be rolled back if the evaluation does not show an improvement. ### What does keeping the index current cost? Less than most people expect. The cost is in creating vectors, and that only has to happen for content that actually changed. For a site with a few thousand pages the ongoing cost is a handful of euros a month, while the search itself runs against the index without model calls. ### Can the assistant still make things up? The risk drops sharply but does not vanish. With retrieval from your documents, a citation in the answer and a rule to decline when the evidence is missing, the remaining errors usually sit in the phrasing rather than the facts. That is why the prompt, the retrieved passages and the answer are all logged, so deviations are found in review rather than by a customer. ### Do we have to send our documents to OpenAI or Anthropic? The retrieved passages go along with the call, yes. Where that is unacceptable there are two routes: vendor agreements where data is not used for training and is processed inside the EU, or a model running in your own environment. The second costs more to operate and gives weaker answers, and that trade-off should be made deliberately rather than assumed. ### Does Google penalise AI-generated content? Google judges whether content is useful, not how it was produced. Thin copy repeating the same template with no real information ranks poorly whether a person or a model wrote it. Generated product content grounded in real specifications that answers a buyer’s questions therefore normally performs perfectly well. ### Can you rewrite our existing catalogue? Yes, and it is the most common version of this work. Existing copy is used as input alongside the structured fields, which preserves the information that only exists in the old text. The result goes through a review step before being written back, so nothing is replaced unseen. ### Our ERP has no API. Is it still possible? Often yes, but at a lower level. Without an API you can work against the database directly, against file or SFTP exports, or against an import routine in the system. It is slower and more brittle than a real API, and that brittleness should be stated up front so expectations match. ### How often does data synchronise? It depends on the source. If the system supports webhooks, synchronisation happens within seconds of a change. If not it becomes scheduled polling, typically every five to sixty minutes. True real time in both directions is rarely worth the complexity, and is usually specified when "same day" would have been enough. ### Can you take over a WordPress site somebody else built? Yes, and it always begins with a review: which plugins are installed, what has been edited directly in core or the theme, and what has stopped receiving updates. That review is also the basis for judging whether the site should be maintained or rebuilt, and that is a verdict better received early. ### Do you build with Bricks, Elementor or custom code? All three come up, and the choice follows who will maintain the site. If editors need to build new pages themselves, a builder is right. If the design has to stay strict and load time low, custom code with Gutenberg blocks is better. What rarely works is a builder plus twenty plugins doing the same job. ### Can WooCommerce handle a large catalogue? Yes, but not out of the box. Stores with tens of thousands of items need work on database queries, indexing and caching anything computed per visitor. It is a known and solvable problem, but one to plan for up front rather than discover after the import. ### Should we move to Shopify instead? Sometimes. Shopify removes the operational burden and is often right when the requirements are standard and the team is small. WooCommerce is stronger when pricing logic, customer-specific terms or the ERP integration is where the complexity sits. The answer follows from your requirements, and asking before the migration is cheaper than after. ### Do Core Web Vitals really affect rankings? They are part of Google’s page experience signals, but the effect is small next to content and relevance. The bigger win is commercial: faster pages lose fewer visitors before they have seen anything, and that shows up in bounce rate and conversion far more clearly than in positions. ### We already have a caching plugin. Is that not enough? Caching helps server response time, which is rarely what fails Core Web Vitals. LCP is usually decided by images and fonts, INP by JavaScript blocking the main thread, and CLS by space that was not reserved. None of those is solved by a cache in front of the page. ### How do we know whether our site has a rendering problem? Fetch the page without executing JavaScript, with curl for instance, and read what comes back. If the body copy and links are there, the foundation is sound. If the response is an empty element filled in by a script, several AI crawlers see nothing at all, and that is the first thing to fix. ### How long before technical SEO shows an effect? Indexing changes usually appear within weeks, because they affect what can be shown at all. Ranking changes take longer and depend as much on content and relevance. Technical SEO removes obstacles; it does not create demand. ### Does structured data improve rankings? Not directly. It affects how a result is displayed and how well a machine understands the page, which in turn affects the appearance in search and the likelihood of being cited in an AI answer. Click-through rate changes more often than position, and that is the difference worth measuring. ### Is an SEO plugin enough? A plugin sets an acceptable baseline for articles and products. What is usually missing is the connection between pages, meaning person, organisation and services referencing the same entities, plus the types no plugin ships. That is where most of the value sits. ### Does llms.txt work at all? It is a proposal rather than an established standard, and support varies between vendors. It is also a text file that takes half an hour to generate from data you already have, so the trade-off is easy. The larger effect comes from content being present in the HTML and written in self-contained passages, not from the file itself. ### Should we block AI crawlers instead? It depends on what you sell. A publisher whose business is its content has a real reason to block. A services company that wants to be recommended does not, because a blocked site cannot be cited. For most B2B companies, AI answers are a channel rather than a leak. ## Contact - Email: andreas@gullstrom.se - LinkedIn: https://www.linkedin.com/in/andreasahoniemi