{
  "schemaVersion": "1.0",
  "canonicalSite": "https://www.emilingemarkarlsson.com",
  "author": "Emil Ingemar Karlsson",
  "profile": "https://www.emilingemarkarlsson.com/api/profile.json",
  "feeds": {
    "rss": "https://www.emilingemarkarlsson.com/rss.xml",
    "sitemap": "https://www.emilingemarkarlsson.com/sitemap.xml",
    "llms": "https://www.emilingemarkarlsson.com/llms.txt",
    "llmsFull": "https://www.emilingemarkarlsson.com/llms-full.txt"
  },
  "articles": [
    {
      "type": "field-note",
      "title": "Company OS: The Architecture, Vision, and Plan",
      "url": "https://www.emilingemarkarlsson.com/blog/company-os-architecture-vision-plan",
      "description": "Company OS is my working thesis for connecting human intent, shared context, autonomous execution, and accountable outcomes. This is the architectural view—not a finished product announcement.",
      "language": "en",
      "published": "2026-07-20T00:00:00.000Z",
      "updated": "2026-07-20T00:00:00.000Z",
      "topics": [
        "company-os",
        "agentic-systems",
        "autonomous-organizations",
        "data-architecture",
        "ai-agents"
      ]
    },
    {
      "type": "analysis",
      "title": "Your AI Agent Stack Is Your Competitive Edge — If You Treat It as Infrastructure",
      "url": "https://www.emilingemarkarlsson.com/blog/ai-agent-stack-competitive-edge",
      "description": "Most developers use AI in chat. I built a 24/7 agent stack on my own server. Here's what actually created leverage — and what was just noise.",
      "language": "en",
      "published": "2026-06-23T00:00:00.000Z",
      "updated": "2026-06-23T00:00:00.000Z",
      "topics": [
        "ai-agents",
        "agents",
        "devops",
        "automation",
        "langgraph",
        "paperclip",
        "litellm",
        "self-hosted"
      ]
    },
    {
      "type": "case-study",
      "title": "Beyond the Spin: Building a Creative Loading Bar in Streamlit for Better UX",
      "url": "https://www.emilingemarkarlsson.com/blog/creative-loading-bar-streamlit",
      "description": "When Databricks queries take 5–20 seconds, a static orange banner feels like an error. Swap in a branded Automower animation with the same Streamlit context-manager API.",
      "language": "en",
      "published": "2026-06-16T00:00:00.000Z",
      "updated": "2026-06-16T00:00:00.000Z",
      "topics": [
        "Streamlit",
        "UX",
        "Databricks",
        "Python"
      ]
    },
    {
      "type": "field-note",
      "title": "LINHAC 2026 — Conference Report",
      "url": "https://www.emilingemarkarlsson.com/blog/linhac-2026-conference-report",
      "description": "LINHAC 2026 confirmed a clear shift: hockey analytics is becoming core infrastructure, not a side project. This report summarizes the strongest research signals, practical club examples, and what organizations should prioritize next.",
      "language": "en",
      "published": "2026-06-05T00:00:00.000Z",
      "updated": "2026-06-05T00:00:00.000Z",
      "topics": [
        "Hockey Analytics",
        "Sports Data",
        "Data Engineering",
        "AI",
        "Conference"
      ]
    },
    {
      "type": "tutorial",
      "title": "n8n Switch node vs. chained IF nodes: how branching logic affects execution at scale",
      "url": "https://www.emilingemarkarlsson.com/blog/n8n-switch-node-vs-chained-if-nodes",
      "description": "If your workflow routes items into more than three paths using chained IF nodes, the Switch node does the same with one evaluation per item instead of N. Here is the mechanical difference, when each wins, and the practical rule for choosing between them.",
      "language": "en",
      "published": "2026-05-28T00:00:00.000Z",
      "updated": "2026-05-28T00:00:00.000Z",
      "topics": [
        "n8n",
        "automation",
        "workflow-design",
        "optimering"
      ]
    },
    {
      "type": "analysis",
      "title": "What is Agentic Engineering? A Practitioner's Definition",
      "url": "https://www.emilingemarkarlsson.com/blog/what-is-agentic-engineering",
      "description": "Agentic engineering is the discipline of designing and building systems where multiple AI agents coordinate autonomously to accomplish goals — without a human triggering each step. Here's what that actually means when you build it in production.",
      "language": "en",
      "published": "2026-05-25T00:00:00.000Z",
      "updated": "2026-05-25T00:00:00.000Z",
      "topics": [
        "agentic-engineering",
        "multi-agent-systems",
        "ai-agents",
        "autonomous-organizations"
      ]
    },
    {
      "type": "case-study",
      "title": "22 Articles in 26 Days: Session Data, Keywords, and What the Automation Actually Produces",
      "url": "https://www.emilingemarkarlsson.com/blog/22-artiklar-26-dagar-sessionsdata-sokord-automation-resultaten",
      "description": "Four weeks of build in public: 22 n8n tutorials published, 951 sessions, 38 ranked keywords, and 2 top-10 rankings — without a single external backlink. Here are the numbers, without spin.",
      "language": "en",
      "published": "2026-05-23T00:00:00.000Z",
      "updated": "2026-05-23T00:00:00.000Z",
      "topics": [
        "build-in-public",
        "n8n",
        "SEO",
        "Automation",
        "Content Automation",
        "AI Agents",
        "Data Engineering"
      ]
    },
    {
      "type": "tutorial",
      "title": "n8n IF Node: Adding Conditional Logic to Your Workflows",
      "url": "https://www.emilingemarkarlsson.com/blog/n8n-if-node-conditional-logic-branching",
      "description": "The IF node is how you branch in n8n. It evaluates a condition against each incoming item and routes it down one of two paths — true or false. Here is how to use it correctly across simple and complex scenarios.",
      "language": "en",
      "published": "2026-05-12T00:00:00.000Z",
      "updated": "2026-05-28T00:00:00.000Z",
      "topics": [
        "n8n",
        "Workflow Automation",
        "Conditional Logic",
        "Data Processing"
      ]
    },
    {
      "type": "tutorial",
      "title": "n8n HTTP Request Node: Calling External APIs from Your Workflows",
      "url": "https://www.emilingemarkarlsson.com/blog/n8n-http-request-node-calling-external-apis",
      "description": "The HTTP Request node is the workhorse of n8n — it connects your workflows to any API that accepts HTTP calls. Here is how to configure it correctly, handle authentication, and deal with real-world API quirks.",
      "language": "en",
      "published": "2026-05-11T00:00:00.000Z",
      "updated": "2026-05-28T00:00:00.000Z",
      "topics": [
        "n8n",
        "Workflow Automation",
        "API Integration",
        "HTTP"
      ]
    },
    {
      "type": "tutorial",
      "title": "n8n Webhook Node: Receive Data from External Services and Trigger Workflows",
      "url": "https://www.emilingemarkarlsson.com/blog/n8n-webhook-node-receive-data-external-services",
      "description": "The Webhook node turns n8n into a receiver — any external service that can send an HTTP request can now trigger your workflows instantly. Here is how to set it up, secure it, and use it in production.",
      "language": "en",
      "published": "2026-05-10T00:00:00.000Z",
      "updated": "2026-05-28T00:00:00.000Z",
      "topics": [
        "n8n",
        "Workflow Automation",
        "Webhooks",
        "API Integration"
      ]
    },
    {
      "type": "tutorial",
      "title": "n8n Split in Batches Node: Processing Large Datasets Without Hitting Rate Limits",
      "url": "https://www.emilingemarkarlsson.com/blog/n8n-split-in-batches-processing-large-datasets",
      "description": "When you need to process thousands of records in n8n, feeding them all at once into an API or database crashes the workflow or triggers rate limits. The Split in Batches node is how you process large datasets reliably — here is how it actually works.",
      "language": "en",
      "published": "2026-05-09T00:00:00.000Z",
      "updated": "2026-05-28T00:00:00.000Z",
      "topics": [
        "n8n",
        "Workflow Automation",
        "Data Engineering",
        "Rate Limiting"
      ]
    },
    {
      "type": "case-study",
      "title": "Agentic Data Organisation: How I Set Up an AI-Driven Data Organisation with Claude",
      "url": "https://www.emilingemarkarlsson.com/blog/agentic-data-organisation-med-claude",
      "description": "A practical walkthrough of my agentic data organisation: roles, ownership, agent coordination, and how Claude drives decision flow across analytics, platform, and governance.",
      "language": "en",
      "published": "2026-05-06T00:00:00.000Z",
      "updated": "2026-05-06T00:00:00.000Z",
      "topics": [
        "Agentic Data Organisation",
        "Claude",
        "AI Agents",
        "Data Engineering",
        "Data Governance",
        "Analytics"
      ]
    },
    {
      "type": "tutorial",
      "title": "n8n Merge Node Modes Explained: Combine, Multiplex, and Pass-Through Under Partial Input",
      "url": "https://www.emilingemarkarlsson.com/blog/n8n-merge-node-modes-explained",
      "description": "The n8n Merge node has four modes with subtle behavior differences that only surface with partial input, mismatched item counts, or timing gaps between branches. Here is what each mode actually does.",
      "language": "en",
      "published": "2026-05-06T00:00:00.000Z",
      "updated": "2026-05-28T00:00:00.000Z",
      "topics": [
        "n8n",
        "Workflow Automation",
        "Data Engineering"
      ]
    },
    {
      "type": "tutorial",
      "title": "n8n Error Trigger: Workflow-Level Error Catching and When It Actually Fires",
      "url": "https://www.emilingemarkarlsson.com/blog/n8n-error-trigger-workflow-error-catching",
      "description": "The n8n Error Trigger node is a workflow that runs when another workflow fails — but the when and why are full of edge cases. Here is how it actually works, what it misses, and how to build reliable error handling in production n8n.",
      "language": "en",
      "published": "2026-04-30T00:00:00.000Z",
      "updated": "2026-05-28T00:00:00.000Z",
      "topics": [
        "n8n",
        "Workflow Automation",
        "Error Handling",
        "Data Engineering"
      ]
    },
    {
      "type": "tutorial",
      "title": "Claude JSON Fences Break n8n Code Nodes Silently — and How to Fix It",
      "url": "https://www.emilingemarkarlsson.com/blog/claude-json-fences-break-n8n-code-nodes-silently",
      "description": "When Claude generates code for an n8n workflow, it sometimes wraps JSON in markdown code fences. Pasting that output directly into an n8n Code node causes silent failures that are difficult to diagnose. Here is what happens and how to prevent it.",
      "language": "en",
      "published": "2026-04-26T00:00:00.000Z",
      "updated": "2026-05-28T00:00:00.000Z",
      "topics": [
        "n8n",
        "Claude",
        "AI Coding",
        "Debugging",
        "Code Node"
      ]
    },
    {
      "type": "tutorial",
      "title": "n8n getWorkflowStaticData: 64KB of Cross-Execution State Without External Dependencies",
      "url": "https://www.emilingemarkarlsson.com/blog/n8n-getworkflowstaticdata-cross-execution-state",
      "description": "Most n8n state persistence requires Redis, a database, or a file. getWorkflowStaticData lets you store up to 64KB of data that survives between workflow executions with zero infrastructure — built right into the workflow engine.",
      "language": "en",
      "published": "2026-04-26T00:00:00.000Z",
      "updated": "2026-05-28T00:00:00.000Z",
      "topics": [
        "n8n",
        "Workflow Automation",
        "State Management",
        "Data Persistence"
      ]
    },
    {
      "type": "case-study",
      "title": "From Raw Data to Revenue Decisions: Building an End-to-End Analytics Platform",
      "url": "https://www.emilingemarkarlsson.com/blog/from-raw-data-to-revenue-decisions-end-to-end-analytics-platform",
      "description": "How I designed and shipped a full-stack data intelligence system for a global manufacturing company — from Databricks pipelines to AI-powered dashboards.",
      "language": "en",
      "published": "2026-04-10T00:00:00.000Z",
      "updated": "2026-04-10T00:00:00.000Z",
      "topics": [
        "databricks",
        "streamlit",
        "data-engineering",
        "analytics",
        "llm",
        "azure-openai",
        "python",
        "delta-lake"
      ]
    },
    {
      "type": "field-note",
      "title": "Building With AI Agents as Co-Workers: My Stack, My Costs, and What I Actually Learned",
      "url": "https://www.emilingemarkarlsson.com/blog/building-with-ai-agents-as-co-workers-my-stack-and-costs",
      "description": "How I run a 10+ project publishing studio with AI agents as co-workers — the real stack behind it: OpenClaw, n8n, LiteLLM, Coolify, and a €26/month server bill.",
      "language": "en",
      "published": "2026-03-30T00:00:00.000Z",
      "updated": "2026-03-30T00:00:00.000Z",
      "topics": [
        "ai-agents",
        "automation",
        "n8n",
        "coolify",
        "litellm",
        "self-hosted",
        "build-in-public"
      ]
    },
    {
      "type": "analysis",
      "title": "Beyond Dashboards: Building Proactive Data Agents That Find and Share Insights Automatically",
      "url": "https://www.emilingemarkarlsson.com/blog/proactive-data-agents-for-business-intelligence",
      "description": "Discover how proactive data agents leverage AI and automation to automatically find and share critical business insights, transforming reactive BI into intelligent, interactive analytics.",
      "language": "en",
      "published": "2026-02-27T00:00:00.000Z",
      "updated": "2026-02-27T00:00:00.000Z",
      "topics": [
        "AI",
        "business intelligence",
        "data agents",
        "automation",
        "LLM",
        "data analytics"
      ]
    },
    {
      "type": "analysis",
      "title": "From BI Reporting to Data-Driven Automation: A 10-Year Evolution of Data Strategy",
      "url": "https://www.emilingemarkarlsson.com/blog/bi-reporting-to-data-driven-automation-10-year-journey-2025",
      "description": "How data strategy evolved from static BI reports to AI-powered automation. Learn from 10 years of data engineering experience: from centralized reporting to data mesh, and why making AI investments pay for themselves requires collapsing legacy and modern stacks.",
      "language": "en",
      "published": "2026-01-26T00:00:00.000Z",
      "updated": "2026-01-26T00:00:00.000Z",
      "topics": [
        "Data Engineering",
        "Modern Data Stack",
        "Data Strategy",
        "Business Intelligence",
        "Data Mesh",
        "AI Automation",
        "Databricks",
        "Data Architecture",
        "Business Value"
      ]
    },
    {
      "type": "tutorial",
      "title": "How to Build an AI Agent for Your Website: Complete Guide with n8n, Knowledge Base, and Frontend (2025)",
      "url": "https://www.emilingemarkarlsson.com/blog/build-ai-agent-website-n8n-knowledge-base-frontend-guide-2025",
      "description": "Step-by-step guide to building a production-ready AI agent for your website using n8n, vector database knowledge base, and custom frontend. Includes code examples, architecture patterns, and deployment strategies.",
      "language": "en",
      "published": "2025-12-18T00:00:00.000Z",
      "updated": "2026-03-02T00:00:00.000Z",
      "topics": [
        "AI Agents",
        "n8n",
        "LLM Integration",
        "Knowledge Base",
        "Vector Database",
        "Qdrant",
        "Frontend Development",
        "Web Development",
        "ChatGPT",
        "Claude"
      ]
    },
    {
      "type": "analysis",
      "title": "Beyond Dashboards: How to Build Living Data Experiences with Conversational Analytics",
      "url": "https://www.emilingemarkarlsson.com/blog/beyond-dashboards-conversational-analytics",
      "description": "Dashboards fail because they require users to go somewhere else. Data prototyping expertise: learn how proactive insights and conversational analytics replace traditional dashboards with living data experiences.",
      "language": "en",
      "published": "2025-11-23T00:00:00.000Z",
      "updated": "2025-11-23T00:00:00.000Z",
      "topics": [
        "Analytics",
        "Conversational AI",
        "Data Engineering",
        "Business Intelligence",
        "Databricks",
        "Modern Data Stack",
        "Product Thinking",
        "Data Strategy",
        "Prototyping",
        "Data Prototyping"
      ]
    },
    {
      "type": "case-study",
      "title": "From SaaS Dependence to Speed: How I Built an AI Feedback Agent in a Weekend",
      "url": "https://www.emilingemarkarlsson.com/blog/from-saas-dependence-to-speed-building-ai-feedback-agent-weekend",
      "description": "I built a fully-automated AI feedback agent using n8n, LangChain and Azure OpenAI in a weekend. This experience revealed a bigger shift in how enterprises should think about tooling – build first, buy only when it makes sense.",
      "language": "en",
      "published": "2025-11-23T00:00:00.000Z",
      "updated": "2025-11-23T00:00:00.000Z",
      "topics": [
        "Build vs Buy",
        "Enterprise Architecture",
        "AI",
        "N8N",
        "Low-Code",
        "Cost Optimization",
        "Digital Transformation",
        "SaaS",
        "Automation"
      ]
    },
    {
      "type": "tutorial",
      "title": "Integrating APIs with n8n: A Simplified Approach to Workflow Automation",
      "url": "https://www.emilingemarkarlsson.com/blog/integrate-apis-with-n8n-explained",
      "description": "As an agentic engineer, I've worked on numerous projects that involve integrating multiple APIs to create seamless workflows. ...",
      "language": "en",
      "published": "2025-11-19T00:00:00.000Z",
      "updated": "2025-11-19T00:00:00.000Z",
      "topics": [
        "n8n",
        "Data Engineering",
        "Modern Data Stack",
        "Python",
        "Databricks"
      ]
    },
    {
      "type": "case-study",
      "title": "How I Reduced Website Translation Time from 2 Weeks to 2 Hours with Python and AI",
      "url": "https://www.emilingemarkarlsson.com/blog/how-i-reduced-website-translation-time-from-2-weeks-to-2-hours-with-python-and-ai-2025-09-19T09-48-09",
      "description": "Manual website translation workflows are expensive and time-consuming. I recently automated the entire process for translating 52 pages across mult...",
      "language": "en",
      "published": "2025-09-19T00:00:00.000Z",
      "updated": "2025-09-19T00:00:00.000Z",
      "topics": [
        "Python",
        "AI",
        "Translation",
        "Automation",
        "WebDevelopment",
        "Localization",
        "SEO",
        "CostOptimization"
      ]
    }
  ],
  "projects": [
    {
      "type": "production",
      "title": "Enterprise ML & Data Platform — 100 Jobs, 631 Tables, NLP at Scale",
      "url": "https://www.emilingemarkarlsson.com/projects/enterprise-ml-data-platform",
      "description": "End-to-end data and ML platform for a global manufacturing company. 100 Databricks jobs, 631 Unity Catalog tables, support intelligence across 1.46M cases, production churn models, demand forecasting, and a 17-page Streamlit dashboard — built and operated solo over three years.",
      "published": "2026-05-25T00:00:00.000Z",
      "topics": [
        "Databricks",
        "Delta Lake",
        "Unity Catalog",
        "MLflow",
        "BERTopic",
        "XGBoost",
        "Prophet",
        "Streamlit",
        "Python",
        "PySpark",
        "Azure",
        "Machine Learning",
        "NLP",
        "Data Engineering"
      ]
    },
    {
      "type": "production",
      "title": "The Unnamed Roads: Production-Grade Agentic Platform on ~€35/month",
      "url": "https://www.emilingemarkarlsson.com/projects/the-unnamed-roads-agentic-platform",
      "description": "A self-funded, solo-operated agentic engineering platform — LangGraph 24/7 orchestration, 5 specialized agents, LiteLLM routing across 8 models, MCPJungle gateway, pgvector memory, Langfuse observability, and a scraper fleet powering 10+ live projects. All running on ~€35/month.",
      "published": "2026-05-24T00:00:00.000Z",
      "topics": [
        "LangGraph",
        "LiteLLM",
        "MCP",
        "Langfuse",
        "pgvector",
        "Agentic Systems",
        "Python",
        "TypeScript",
        "Docker",
        "Coolify",
        "Hetzner",
        "DuckDB",
        "n8n",
        "Crawlab",
        "Self-hosted"
      ]
    },
    {
      "type": "production",
      "title": "Agentic Data Organisation with Claude",
      "url": "https://www.emilingemarkarlsson.com/projects/agentic-data-organisation-med-claude-case",
      "description": "Design and implementation of an agentic data organisation with Claude coordinating analytics, data platform, pipelines, governance, and data quality.",
      "published": "2026-05-06T00:00:00.000Z",
      "topics": [
        "Agentic Data Organisation",
        "Claude",
        "Data Platform",
        "Data Governance",
        "Analytics Engineering"
      ]
    },
    {
      "type": "production",
      "title": "End-to-End Analytics Platform — Databricks, Streamlit & GPT-4o",
      "url": "https://www.emilingemarkarlsson.com/projects/end-to-end-analytics-platform-databricks-streamlit",
      "description": "Full-stack data intelligence system for a global manufacturer. Medallion architecture on Databricks, AI-powered natural language querying, z-score anomaly detection, and 10 production dashboards covering 14 markets — shipped in 12 weeks.",
      "published": "2026-04-10T00:00:00.000Z",
      "topics": [
        "Databricks",
        "Delta Lake",
        "Streamlit",
        "Azure OpenAI",
        "GPT-4o",
        "LiteLLM",
        "Python",
        "Data Engineering",
        "Analytics",
        "Machine Learning",
        "Anomaly Detection",
        "Multi-touch Attribution"
      ]
    },
    {
      "type": "prototype",
      "title": "Conversational Analytics Prototype - Beyond Dashboards",
      "url": "https://www.emilingemarkarlsson.com/projects/conversational-analytics-prototype",
      "description": "Interactive prototype demonstrating the future of data analytics: natural language queries, proactive insights, and zero-training data exploration. Built to show what comes after traditional dashboards.",
      "published": "2025-11-24T00:00:00.000Z",
      "topics": [
        "Conversational AI",
        "Analytics",
        "Data Visualization",
        "Natural Language",
        "Prototype",
        "Modern Data Stack",
        "User Experience",
        "Business Intelligence"
      ]
    },
    {
      "type": "prototype",
      "title": "How I Built an AI Feedback Agent That Replaces Traditional Surveys – Using n8n and GPT-4",
      "url": "https://www.emilingemarkarlsson.com/projects/build-ai-feedback-chatbot-n8n-save-thousands",
      "description": "Transform feedback collection from tedious surveys into intelligent conversations. Learn how I built an AI-powered feedback agent with n8n that asks follow-up questions, detects language automatically, and extracts structured insights – all while saving thousands on survey platforms.",
      "published": "2025-11-23T00:00:00.000Z",
      "topics": [
        "AI",
        "Automation",
        "N8N",
        "GPT-4",
        "Azure OpenAI",
        "Chatbot",
        "Feedback Collection",
        "LangChain",
        "Customer Experience",
        "UX Research"
      ]
    },
    {
      "type": "community",
      "title": "Building a Simple Website for Finnboda Hamnplan Housing Association",
      "url": "https://www.emilingemarkarlsson.com/projects/finnboda-hamnplan-website-project",
      "description": "A quick look at creating a straightforward website solution for our local housing association using modern web technologies.",
      "published": "2025-09-25T00:00:00.000Z",
      "topics": [
        "Web Development",
        "Community Project",
        "Simple Solutions"
      ]
    },
    {
      "type": "production",
      "title": "Slack-to-Site Publishing Pipeline in Under 30 Seconds",
      "url": "https://www.emilingemarkarlsson.com/projects/building-an-automated-content-pipeline-from-slack-to-live-website-in-30-seconds",
      "description": "A production workflow connecting Slack, n8n, GitHub, and Netlify to turn a structured message into a deployed article in under 30 seconds.",
      "published": "2025-09-19T00:00:00.000Z",
      "topics": [
        "Automation",
        "n8n",
        "Slack",
        "GitHub",
        "Content Management",
        "Workflow"
      ]
    },
    {
      "type": "prototype",
      "title": "MCP-Connected Development Workflow for Data-Informed Prototyping",
      "url": "https://www.emilingemarkarlsson.com/projects/project-19",
      "description": "Connected Claude to analytics, research, strategy, and design context through MCP to build React prototypes inside the development environment.",
      "published": "2025-09-10T00:00:00.000Z",
      "topics": [
        "AI",
        "Claude",
        "MCP",
        "React",
        "Azure",
        "Databricks",
        "Prototype Development",
        "Workflow Automation",
        "Product Analytics"
      ]
    },
    {
      "type": "historical",
      "title": "From SLA Reporting to Proactive IT Operations",
      "url": "https://www.emilingemarkarlsson.com/projects/project-5",
      "description": "A Power BI and SQL analytics layer for finding patterns in ServiceNow data and turning SLA reporting into operational improvement.",
      "published": "2024-05-25T00:00:00.000Z",
      "topics": [
        "Outsourced IT",
        "Customer Support Management",
        "IT Operations",
        "SLA Management",
        "Data Analytics",
        "Business Intelligence",
        "Power BI",
        "SQL",
        "ServiceNow",
        "Proactive Resolution",
        "Continuous Improvement",
        "ITSM Tools",
        "Operational Efficiency",
        "Infrastructure Management",
        "Project Management",
        "Data Engineering",
        "Performance Analytics"
      ]
    },
    {
      "type": "historical",
      "title": "Food-Waste Marketplace MVP with Django",
      "url": "https://www.emilingemarkarlsson.com/projects/project-4",
      "description": "An early full-stack marketplace connecting consumers with surplus food from local restaurants and grocery stores, built as a focused Django and Bootstrap MVP.",
      "published": "2024-04-15T00:00:00.000Z",
      "topics": [
        "Django",
        "Python",
        "Bootstrap",
        "Project Management",
        "Full-Stack Development",
        "Sustainable Technology",
        "Data Engineering",
        "Web Development"
      ]
    },
    {
      "type": "historical",
      "title": "Early Digital Ticketing Platform with Django",
      "url": "https://www.emilingemarkarlsson.com/projects/project-2",
      "description": "An early Django product for creating events and selling digital tickets, designed to keep administration and purchasing simple for small organisers.",
      "published": "2024-02-10T00:00:00.000Z",
      "topics": [
        "Django",
        "Python",
        "Bootstrap",
        "Sketch",
        "Prototyping",
        "UX Design",
        "Project Management"
      ]
    },
    {
      "type": "historical",
      "title": "Data-Informed B2B Platform Strategy Across 35 Markets",
      "url": "https://www.emilingemarkarlsson.com/projects/data-informed-b2b-platform-strategy",
      "description": "Combined product analytics, survey evidence, and direct customer research to guide investment decisions for an enterprise B2B platform used across 35 markets.",
      "published": "2023-06-30T00:00:00.000Z",
      "topics": [
        "Product Analytics",
        "Data Analytics",
        "Power BI",
        "Customer Research",
        "B2B Commerce",
        "Product Strategy",
        "Decision Support"
      ]
    },
    {
      "type": "venture",
      "title": "TUVA — From Swift Prototype to 10,000 Users",
      "url": "https://www.emilingemarkarlsson.com/projects/project-1",
      "description": "Founded and built a neighborhood-safety product with native Swift and Java apps, real-time reporting, maps, notifications, and product analytics. Reached 10,000 users within three weeks.",
      "published": "2016-01-15T00:00:00.000Z",
      "topics": [
        "Prototyping",
        "Swift",
        "Java",
        "Parse",
        "MongoDB",
        "Heroku",
        "Twilio",
        "Mixpanel",
        "Google Analytics",
        "Project Management"
      ]
    }
  ]
}