← All work

IT Made Simple · Software for the recycling industry

For an IT agency in the waste management industry, I build and run the AI and integration layer, from the ERP adapter to the event app.

Orders from email and WhatsApp, documents straight to DATEV, weighbridge tickets by phone photo, a phone agent and an event app in two days. Plus faster pipelines and an agent setup that lets the team work safely in production.

Client
IT Made Simple
Period
since 2018
Stack
Rails 8, Java, Angular, DATEV, ElevenLabs, LlamaExtract, n8n, GitLab CI, Ansible

Starting point

IT Made Simple is a small IT agency. Its main product is Mein Recycling: customer portal, app, recycler admin and backend for waste management companies. Behind it sit the recyclers’ ERP systems, often Windows servers with SQL databases on the customer’s network, and processes that run on phone, Outlook and paper.

Mein Recycling was originally part of Resourcify. I’ve worked on the platform since 2018, and when IT Made Simple took it over, I stayed on.

I’m an external developer and today I’m responsible for a large share of the AI projects, the integrations and the infrastructure.

What I build here

The All-in-Box: orders from every channel

Recyclers get orders by email, WhatsApp and voice message, things like “Can you swap the container tomorrow?”. Dispatch types that into the ERP. In 2025 I built the foundation for a shared inbox: messages are parsed, voice messages transcribed, and sender and location matched to the ERP customer with a confidence score. If details are missing, a bot asks on WhatsApp. A confirmed order goes straight into the ERP through the ERP adapter, and the order number comes back to the inbox. The agency’s lead developer took over the 2026 rebuild.

DATEV integration for recyclers

Recyclers used to export posting batches and receipt PDFs by hand and email them to their tax advisor, with no link between them in DATEV, the accounting system German tax advisors use. I built the DATEV integration: master data import, receipts to “Belege online”, and posting batches only once every referenced receipt has been uploaded. That way posting and receipt are linked in DATEV.

Sandbox acceptance came in November 2025, production approval in February 2026. The first customer stopped emailing CSV files after that, and more recyclers followed on the same pattern. Since September 2026 the system retries temporary DATEV errors itself. In the recycler admin, the team sees status in plain domain language instead of cryptic API responses.

ERP adapter

The industry ERPs have poor or expensive interfaces. The ERP adapter is a small Rails app, one container per customer on a lean Linux VM. It reads business partners, documents, posting batches and drop shipments and, where needed, writes back orders and customer activations, idempotently and with an audit log. The adapters are deliberately disposable. The logic lives centrally. Every adapter has an honest health endpoint, so only real outages raise alarms.

Weighbridge ticket tool for drop shipments

In a drop shipment, a truck drives straight from seller to buyer. Weighbridge tickets and delivery notes come back on paper, late or not at all. Since the kickoff in June 2026, drivers scan a QR code on the transport papers and photograph the documents step by step on their phone. No password, no app download, the phone remembers the profile. Every document is extracted automatically and shown in the recycler admin next to the expected ERP data.

Since September 18, 2026 the pilot has been in production at a recycling company. In October came automatic drop-shipment sync from the ERP and self-service QR printing, after a dry run against the ERP database.

A story from October 10: the customer reported the wrong number on a weighbridge ticket. Instead of asking her for a screenshot, we checked the original and the stored fields read-only in production. The cause was partly in extraction, partly in a misleading label. After the correction, an eval with the real originals scored 7 out of 7 fields, and the fix went through dev to production.

A phone agent for recyclers

At recyclers the phone rings all day: opening hours, “Do you take cable scrap?”, container orders. In May 2026 I launched a voice agent with ElevenLabs for a recycling company. Prompt and configuration live in Git, a small CLI shows differences from the live version, and an eval suite checks knowledge questions, callbacks and guardrails such as hazardous materials or no binding prices. Since September, calls land in the All-in-Box as conversations, with signed webhooks and a tool that searches the recycler’s materials catalog.

The event app for Digital Waste Day

The organizer of Digital Waste Day had a prototype quickly built with AI, and said on stage that “someone should really do it properly”. I turned it into a Rails app: schedule, live voting, feedback, a bookmark list for solution providers, QR codes for swapping contacts and, after the event, an email with all bookmarked contacts. SQLite, continuous backups with tested restores.

On September 17, 2026, 85 percent of ratings found the app good or very good. The contact emails went out without a single error. On event day an agent ran read-only checks every 30 minutes and would only have stepped in on instruction. Afterwards I built a demo edition with a made-up event that the agency now shows in sales.

Reporting and forecasts

For the agency itself I automatically categorized invoice line items from accounting: one-off or recurring, product or consulting, new or existing customer. First as a Python pipeline, then as a Rails app, and finally as an n8n workflow that applies fixed rules first and only asks a language model about unclear cases. Once it was clear the simplest tool was enough, I cleanly took the app down again. A second workflow keeps the cash flow forecast from the sales pipeline in Notion up to date, and can be re-triggered from Slack.

Faster pipelines

Developers waited 20 to 30 minutes for every pipeline, and some test runs were permanently red. Repo by repo, I measured first and then made the smallest change that worked: dependency images keyed by lockfile, separate caches, one pipeline per commit, permanently red suites as a scheduled diagnostic job. In one project the wait dropped from 32 to 9 minutes. In the recycler admin a merge request now takes about 3 minutes.

Infrastructure and monitoring

Servers are now configured from Git with Ansible, internal tools are only reachable over VPN, and backups go offsite. Uptime monitors live as YAML in the repo. An agent’s first draft for this was far too complicated, so I threw it out and cut it down to what was needed. I traced the monitoring channel alarm by alarm back to the query behind each one, with one goal: quieter through accuracy, not through muting.

Support with agents

In my support weeks, agents analyze tickets read-only against the database and logs. Every fix goes through a red test that turns green, a merge request and a draft reply for the customer. One example: search by document name got about four times faster, measured on the same production state before and after the change. I rehearsed a re-tagging of a little over 4,400 documents several times on copies of production data before it ran live once.

An agent setup for the team

Cloud agents can’t reach production. They hand clearly scoped tasks to a local runner that has the access. Reading is allowed, every write needs explicit approval and gets verified, and deploys only run through a reviewed script with an exact commit. On top of that come searchable docs, a review agent in the style of DHH as a gate before every merge request, and runbooks per customer. In November 2025 I introduced the team to Claude Code, and since October 2026 two colleagues have used their own agent tooling environment.

How I work

The agency owns the customer relationship, and I deliver. Tasks arrive as a Notion page with a goal and open questions, and I make the plan myself. I work a lot in parallel with agents, but nothing goes live without proof: dry run against real data, merge request, dev, then production. When an agent goes down a rabbit hole, I stop it and do it myself.

Results

Recyclers get orders from every channel into one inbox, documents go to DATEV automatically, drivers send weighbridge tickets from their phones, and a phone agent answers standard questions. The agency has an event app as a sales argument, pipelines without half-hour waits and a setup that lets agents work safely in production.

And it has seen where the difference lies. In the retro, the takeaway was: you build the first version in an hour. The version that holds up on event day is easily ten times that.

Got a similar problem? Get in touch.