Available immediately Agentic process automation · AI engineering

I turn manual workflows into AI agents that do the work.

Business Informatics graduate who designs, builds and ships agentic systems, from a rule-based automation to a Claude-driven agent that runs it end to end. Based in Luxembourg.

Email me LinkedIn
Portrait of Mark Schommarz
Based in Luxembourg · Schrassig
B.Sc. Business Informatics · 2026
Location
Luxembourg · Greater Region
Education
B.Sc. Business Informatics, 2026
Open to
Permanent · Freelance
Work mode
On-site · Remote (EU)
Languages
DE · LB · EN · FR
The path so far

Thirteen years on three tracks. Scroll to sweep through them.

2026 · Bachelor thesis, Design Science Research
From Robotic to Agentic Process Automation
University of Cologne · Luxembourg marketing agency as industry partner

Rebuilt the agency's live client-onboarding workflow (Make.com, ClickUp, PandaDoc, Google Drive) as a Claude-based agentic system and derived design principles for the migration.

Next
And next up: your company?

Available immediately. Permanent or freelance, on-site or remote in the EU.

Download my CV
01 · Selected work

Real processes, rebuilt as agents.

Bachelor thesis · Design Science Research2026

From Robotic to Agentic Process Automation

Universität zu Köln · Luxembourg agency as industry partner

Took a live client-onboarding workflow on Make.com (webhooks routing contracts and folders across ClickUp, PandaDoc and Google Drive) and rebuilt it as a Claude-based agentic system. Derived design principles for the migration; verification is built into every automated write step so the agent confirms the real end state.

Claude Agent SkillsMCPMake.comClickUp / PandaDoc / GDrivePythonDSR
Self-directed build · In daily use2025 – now

A working library of agent skills

Personal agent stack automating real recurring work

Composable Claude Agent Skills and MCP integrations: one orchestrator reads a lead from ClickUp, generates the contract in PandaDoc, reads back every field, then links the document to the CRM. Others reconcile Drive folder structures and sync research notes into Obsidian. Part of it runs on a home server (Ubuntu, Docker, Ollama, FastMCP).

Claude Agent SkillsMCP / FastMCPPythonOllamaDocker
Role as project · Data analyst2023

Data pipelines to feed an AI system

KIResult, Bonn · hybrid

Python scripts to structure and clean documents and datasets for the company's internal AI system. The half of applied AI that decides whether a model is useful: getting messy real-world data into a shape it can learn from.

PythonData cleaningDocument structuring
Internship · Database developer2022

Automated KYC onboarding platform

AIQUnited, Wecker · Luxembourg

Designed and built an automated KYC database for client onboarding in a regulated setting, and automated the recurring Microsoft Office reporting around it in VBA. A manual, error-prone compliance routine became a repeatable process.

VBAMS Office automationKYC / onboarding
02 · Projects & process

What I'm building now, and how I get there.

Not just the result: the research, the decisions and the dead ends behind it. A thesis, two websites shipped on Cloudflare, an iPhone app, a tool for managing coding agents and a bit of hardware.

Side project · Web, Mac, iPhone & CarPlay · In progressSep 2026 – now

Bubbleate

From a rough idea to a requirements baseline, and on to a demo app · still in deployment, not final yet · bubbleate.markschommarz.lu

A calm, conversational tool: the AI asks one focused question at a time, each answer sharpens a live requirement sheet, and Create turns the finished baseline into a working demo app. It runs as a website and as a native Mac and iPhone app on one account, and in the car you can answer by voice through CarPlay. Guests can connect an AI and start refining right away; an account is only needed to save. Below is the whole of it: what it does, how the pieces talk to each other, what got better over the audit rounds, and how it is kept safe.

How it works
How Bubbleate worksThe person gives an idea or an answer to the canvas, which runs in the browser or in the Mac and iPhone app. The canvas asks Jev for a quick guess at the likely pick, sends a prompt through the AI gateway or the local bridge to the model provider, and gets a streamed reply back that becomes the next question and operations on the baseline. Baselines sync live with the account server; guests keep them in local storage. Person idea, answers Canvas UI Web · Mac · iPhoneCarPlay (voice) AI gateway / bridge Edge Functionor local bridge Model provider Claude · OpenAIOllama · plans Jev fast decisions (off until key) Account server (Supabase) Auth · baselines + RLSVault for keys Local storage guest fallbackon this device idea, answer likely pick? prompt keys (Vault) prompt + key streamed reply question, ops question baselines guest: saved here live sync
One loop, about ten seconds: the idea or answer goes to the canvas, Jev guesses the likely pick, the prompt travels through the gateway (the key is added on the server) to the model, and the reply comes back as the next question and operations on the baseline, which then sync to the account.
The real app
Bubbleate start screen: a large soap bubble asks What's your next idea, with a typed sample idea about a habit tracker and four mode bubbles around it.
Start: one idea field, four mode bubbles.
Bubbleate canvas with the question 'How should the app nudge you when a streak is at risk?', four answer bubbles around the idea bubble and the requirement sheet on the right.
One question at a time, answered with bubbles.
The requirement sheet with a meter showing 55 percent decided and 9 percent assumed, and Vision, Users and Core features sections with their items.
The sheet: decided versus assumed.
The iPhone layout of the same question with four answer bubbles, an answer field and Bubbles and Sheet tabs at the bottom.
The same canvas at iPhone width.
Screenshots of the web app with a made-up sample idea (a habit tracker), no account and a stand-in AI, so the questions shown are scripted.
What it does
  • Starts from a rough idea, typed or spoken, in one of four modes: new software, new feature, AI skill or physical project.
  • One question at a time with answer bubbles: click to fuse one into the idea, pop one to exclude it for good, write your own, or press Let AI decide to get flagged assumptions.
  • Copy the baseline as text, or press Create: your own AI builds a working demo app as one HTML file, checked in a hidden frame with up to two automatic repairs.
The requirement sheet fills inLines appear on the sheet one after another as questions are answered, and the meter grows. The solid part of the meter is what you decided, the striped part is what is only assumed. Requirement sheet decidedassumed
Platforms, accounts and sync
  • The website and the Mac and iPhone apps (SwiftUI, one codebase) show the same canvas page, bundled into the apps.
  • CarPlay is a voice-only conversation: questions and options are read aloud. It works in the Simulator; a real car still waits for Apple's entitlement.
  • Signing up to the one Supabase account takes an emailed 6-digit code.
  • Without an account, baselines stay on the device and the app shows Not saved; they move into the account on sign-in.
One account, two devicesA Mac and an iPhone share one account. A change on one device reaches the other live. When both devices edit the same baseline at once, both versions are kept. Mac iPhone Oneaccount both versions kept live sync
Bubble feel

Soap, not rainbow: a bubble is mostly clear, with thin-film colour in marbled streaks that gather at the rim. The scene is made of the same ingredients as the app, including its soap-film texture.

Thin-film colour, turning slowlyTouch: squash, stretch, settleMerges into the logoMenu grows out with a jelly wobbleDrift and rise60 fps on iPhone and iPadReduced-motion rulesLight and dark mode
AI connections
  • Several connections sit side by side, one per provider, and one tap switches between them. Requests, tokens and cost are tracked per session and month.
  • A connection follows the account only if you opt in; its key is then stored encrypted (Supabase Vault). Subscriptions and Ollama belong to one computer and are never synced.
  • The local bridge queues requests per CLI, caches their status and starts the next Claude Code process ahead.
How Bubbleate reaches a modelThe canvas sends each request to the connection that is selected. Six connections sit side by side: a Claude API key, an OpenAI-compatible endpoint, Ollama on this computer, a Claude subscription and a ChatGPT subscription through the local bridge with its queue and warm start, and the account gateway that adds the key on the server. A tap switches the selected connection and the request follows it. Keys synced to the account are encrypted and only on opt-in; subscriptions and Ollama stay on one computer. local bridge Claude API keyClaude Opus, Sonnet, Haiku OpenAI-compatibleOpenAI, LM Studio, OpenRouter Ollamalocal model on this computer Claude subscriptionClaude Code CLI ChatGPT subscriptionCodex CLI Account gatewayai-proxy adds the key queue warm CanvasUI tap
Thinking ahead and Jev
  • Think ahead prepares the next question for each option while you are still deciding; it uses more of your AI usage and can be switched off.
  • Jev (TypeSafe) ranks which answer you will most likely pick, so that one is prepared first and answers it rates under 3 % are not prepared. Thinking ahead waits at most 1.2 s for it, then starts in the old order.
  • Jev is built but off until a TypeSafe key is set: on the account server for the website and apps, or on the bridge with TYPESAFE_API_KEY. The key never reaches the page, and a daily allowance per person (300 calls by default) limits its use.
Jev, the fast decision modelA typed question goes to Jev, which answers in well under a second with calibrated probabilities. The answer that the person will most likely pick moves to the front of the list, and thinking ahead prepares it first. An answer rated very unlikely is not prepared at all. If Jev is slow or unsure, the language model decides, as without Jev. typed questionwho will you pick? Jev70 – 500 msTypeSafe probabilities answer A answer B answer C D · under 3 % think aheadlikely pick first Language modeldecides as before slow or unsure
Improvements
  • Written audit rounds on architecture, bubble feel and security, each ending in decisions and open items.
  • The page ships minified (605 to 446 KB), and the account list loads small summaries instead of whole baselines.
  • Starting the next Claude Code process ahead cut the first event from about 0.8 s to 0.07 s in a Linux measurement.
  • A demo build that goes silent is stopped and retried; an account holds at most 1000 baselines.
Security and testing
  • For account users the API keys stay on the server: an AI gateway adds the key, and synced keys are stored encrypted in Supabase Vault (Keychain in the apps).
  • Row-level security in the account database; the Edge Functions check the sign-in token themselves.
  • CSP by script hash, Trusted Types and HSTS; generated demos run in a sandboxed frame with no network access; the bridge answers only its own page.
  • Browser, bridge, Edge Function and pgTAP database tests run in GitHub Actions on every push. Open: a demo build still fetches a synced key for its request.
Commits
178
Platforms
3
Subscriptions supported
2
Edge Functions
2
LLM UXClaude / OpenAI / OllamaPrompt designStreamingNode bridgeCanvasSwiftUICarPlaySupabaseRow-level securityTrusted TypesPlaywrightpgTAPGitHub Actions
Client website · Research, design, build, hostingSep – Oct 2026

Institut de beauté by Billie

Beauty salon, Luxembourg · live at institutbybillie.lu

A calm, premium website for a local salon, built from research first and shipped on Cloudflare. Static pages from a small Node generator, booking handed straight to Salonkee through deep links, and nothing on the page the salon owner has to maintain by hand.

Home page of the Institut de beauté by Billie website: a glass navigation bar with a booking button, a French headline about the beauty institute in Bertrange and a photo of a head spa treatment.
The home page at desktop width.
The services page: a headline, a row of category pills such as body, permanent make-up and head spa, and the first service cards.
The services page, with booking handed to Salonkee.
The home page at phone width with the glass navigation, the headline and a booking button bar at the bottom.
The same site on a phone.
The process
  1. 1ResearchUX and SEO requirements, services and opening data, brand and image sources, open questions for the client.
  2. 2DesignDesign and photo brief from the original logo: a quiet tour through the treatments, motion that feels like a visit.
  3. 3BuildStatic generator with shared partials; scripts sync the Salonkee catalogue and exceptional Sunday openings.
  4. 4AuditCSP and security headers, legal pages, local SEO, iOS Safari toolbar quirks, tablets and foldables.
  5. 5ShipClient feedback round, a go-live build that refuses to run while client data is missing, then deploy.
What I learned hosting on Cloudflare
  • Served as Workers static assets: a wrangler.jsonc points at the generated folder, so there is no build step on Cloudflare's side.
  • The domain resolves only once the registrar hands DNS to Cloudflare's nameservers; until then only the workers.dev preview works.
  • _redirects fails the deploy on a domain rule, so www → root is a 301 Redirect Rule instead.
  • _headers carries the CSP, HSTS and immutable caching for fonts, CSS and JS.
  • A git push does not publish. Every change ends with wrangler deploy and a curl check that the live files match.
Commits
47
Days to go-live
5
Trackers & cookies
0
Pages
5
Cloudflare WorkersWranglerDNS · Redirect RulesNodeLocal SEOCSP
Bachelor thesis · Design Science ResearchJun – Aug 2026

From Robotic to Agentic Process Automation

University of Cologne · Luxembourg marketing agency as industry partner

How do you turn a rule-based Make.com workflow into an agent that does the same job, and what should guide that move? I rebuilt two live agency workflows (client onboarding and contract generation across ClickUp, PandaDoc and Google Drive) as Claude Agent Skills, kept a research diary through every decision, and condensed the findings into six design principles.

Diagram from the thesis: a three-layer architecture with a reasoning layer, a skill layer of Agent Skills and a tool layer of MCP connectors.
Figure from the thesis: the three-layer architecture of the prototype.
Diagram from the thesis comparing the rule-based Make.com workflow with the Claude Agent Skills workflow, step by step from trigger to output.
Figure from the thesis: the rule-based workflow next to the agent version.
The process · DSR after Peffers et al.
  1. 1ProblemRule-based automations break silently when an interface changes and grow hard to maintain.
  2. 2ObjectivesSame business outcome as the Make.com scenarios, with less wiring and verified writes.
  3. 3DesignModules grouped by responsibility into an orchestrator and sub-skills, routed in natural language.
  4. 4DemonstrationBoth workflows run against the agency's real ClickUp, PandaDoc and Drive data.
  5. 5EvaluationFailure behaviour compared side by side: invalid task IDs, missing or empty fields.
  6. 6CommunicationThesis, research diary and progress documentation, submitted 2026.
The artefact · six design principles
  • DP1Functional unit decomposition
  • DP2Natural language routing
  • DP3Idempotent batch execution
  • DP4Resilient fallback handling
  • DP5Tool boundary separation
  • DP6Explicit trigger allocation
From the research diary · 17 Jun 2026
The agent provides the reasoning and execution layer, not the event-ingestion layer. Platforms like Make.com hide that by bundling trigger, logic and action in one place, so a migration forces an explicit decision on where the trigger lives.
This observation became DP6.
Live workflows rebuilt
2
Agent skills built
6
Diary entries
18
Design principles
6
Claude Agent SkillsMCPMake.comClickUp / PandaDoc / GDriveResearch diaryAPA 7 · Zotero

More projects

Coder ViewA calm way to manage many Claude Code agents at onceOct 2026 – now
Side project · Agent dashboard · In developmentOct 2026 – now

When several coding agents run in parallel, the hard part is knowing which one needs you. Coder View turns them into a live map: each project is a soap puddle, each chat a bubble, big while it works, amber when it waits for an answer, small and clear once it is done. Still under active development.

Coder View: a map of soap puddles for three sample projects, each holding bubbles grouped by topic, with a limits panel at the top left showing 5-hour and weekly usage.
The live map, shown here with made-up sample projects and agents.
  • A token HUD shows the 5-hour and weekly plan limits with reset countdowns, read from a snapshot the Claude Code status line writes.
  • Chats are grouped by topic (UI, backend, login, deploy, docs, ops) from keywords in their name and prompt.
  • Pan, pinch and zoom like a map, with a minimap and edge markers pointing to agents off-screen that need you.
  • Agents on Remote Control get an Open session button, so I can answer from the iPhone over Tailscale as a home-screen app.
  • Projects pool into organic puddles that pull and push each other like a graph view, so busy areas stay readable.
  • One small Python server using only the standard library, refreshing every 5 seconds, started and stopped with a single coderview command.
Commits in 2 days
10
Lines of code
1.4k
Python dependencies
0
Refresh
5 s
Claude CodeMulti-agent workflowsPythonCanvas UIPWATailscale
Liquid Glass on the open webTranslating Apple's 2025 design language to plain HTML and CSSSep – Oct 2026
Design research · This page · Live on CloudflareSep – Oct 2026

Apple's rule is that glass belongs to navigation and controls, floating above content. So this page uses three glass thicknesses: clear for the nav, thick for anything you read. Real refraction (an SVG displacement filter) runs where Chromium supports it; every other browser gets blur, saturation and specular edges.

The top of this page on desktop: a translucent glass navigation bar floating above the hero with its headline, portrait and glass pills.
This page on desktop: clear glass for the nav, thicker glass for content.
The same page at phone width: glass nav with the Download CV button, the headline and the contact pills.
The same page at phone width.
  • The glass steps aside for reduced transparency, higher contrast and reduced motion.
  • No framework, no cookies, no third-party requests; a strict CSP allows only this site.
  • Designed, built and put online on Cloudflare within a few days, using the same research-first workflow as the salon site.
Code (HTML, CSS, JS)
100 KB
Frameworks
0
Third-party requests
0
Glass thicknesses
3
HTML / CSS / JSbackdrop-filterSVG filtersAccessibilityCloudflare
CarFuelTrackerNative iPhone app for fill-ups, fuel prices and consumption2026
iOS app · In development2026

Log a fill-up in seconds: date filled in, fuel price fetched automatically and still editable. The dashboard shows total distance, spend, latest price and average consumption, with trend charts per car and a home-screen widget.

CarFuelTracker app icon: a white fuel pump with a drop on a blue background.
The app icon.
  • Several cars, switched from one top-level menu; all data stays on the device.
  • Price lookup behind a small provider interface, with a regional average as fallback; unit tests for the consumption maths.
Swift files
16
Lines of Swift
3.5k
Targets
3
Cloud accounts
0
SwiftSwiftUISwiftDataSwift ChartsWidgetKit
A plant that asks for waterESP8266 soil-moisture sensor driving a smart lamp2026
IoT · Hardware2026

A small microcontroller reads soil moisture every few seconds, maps it to a percentage, and switches a WiZ smart lamp on over the local network (UDP) when the plant gets too dry, and off again once it has been watered.

  • Calibrated between dry air and water readings, with a single threshold to tune.
  • Remembers the lamp state, so it only sends a command when something changes.
Lines of C++
67
Reading every
5 s
Dry below
30%
Cloud services
0
ESP8266Arduino C++Wi-Fi / UDPWiZ
Where it started The smaller builds that taught the basics.
AVL tree visualiserJava · Swing GUI · Maven · 2022
Learning PythonPong, calculator, CSV high scores · 2022 – 2023
GitHub
03 · Profile

Build the system. Lead the people around it.

Half of automation is engineering; the other half is understanding the people whose work changes. The record, in one board.

StackTechnical
Agents
Claude Agent SkillsMCP / FastMCPAgent orchestrationOllama
Orchestration
Make.comn8nClickUp APIPandaDoc APIGoogle Drive API
Code
PythonSQLJavaC++VBA
Infrastructure
DockerUbuntuHome serverVerification-first design
Working with peoplePeople
Communication
Client-facing in regulated and agency settings; explains agent behaviour to non-technical teams.
Leadership & coaching
Leads a run club and coaches HYROX groups: set the plan, read the room, keep people moving.
Fast adaptation
Robotics to ETH to business informatics to a moving AI stack; ships with new tools quickly.
Independent work
Completed the second year of the degree fully remotely, self-organised and without supervision; ships self-directed builds that are in daily use.
Languages4
German
Native
Luxembourgish
Native
English
Fluent
French
Professional
Education & awards2013 – 2026
2022 – 2026
B.Sc. Business Informatics
University of Cologne · second year completed remotely, self-managed
2020 – 2022
B.Sc. Computer Science
ETH Zürich, 1.5 years
2017 – 2020
Lycée des Arts et Métiers
Information & communication
2019
1st place, Luxembourg Robotics Competition
LYRC
2019
1st place, Innovation Camp
Jonk Entrepreneuren
Beyond work HYROX athlete & group coach, Elysium Gym Specialty barista Filmmaking & content production
04 · Contact

Let's find the workflows worth automating.

Let's connect and solve your problems, together!