Partner
Agilico GmbH
Case Study03
Durchgängige Plattform für Medienpreislisten, Offerten, Publikationsplanung und druckfertige Anzeigenaufträge

Partner
Agilico GmbH
Branche
Medien & Werbung
Kerntechnologien
Next.js · Express · PostgreSQL
Auf einen Blick
Für die Agilico GmbH hat DuoByte eine Plattform entwickelt, die den Weg von der Verlagspreisliste bis zur bezahlten, druckfertigen Anzeige in einem System abbildet. Preislisten werden automatisch von Verlagsseiten geholt und per KI ausgelesen, Offerten landen als Angebot in Bexio, und über öffentliche Kampagnen-Shops gestalten und bezahlen Kundinnen und Kunden ihre Inserate selbst.
Unsere Rolle: DuoByte hat die Plattform aufgesetzt und entwickelt sie weiter, von Architektur, Backend und Frontend über die Anbindungen an Bexio, Stripe, OpenAI und Microsoft bis zu Deployment und Betrieb.
Projektarbeit
Wie das Projekt entstanden ist: vom Kontext und den Anforderungen über die Umsetzung bis zum heutigen Stand.
Ausgangslage
Die Plattform ist für Teams gebaut, die für Unternehmen und Agenturen Werbung in Zeitungen und digitalen Kanälen planen, anbieten und buchen. Grundlage jedes Angebots sind die Tarife der Verlage: Millimeterpreise je Spalte, Festformate, Auflagen, Erscheinungstage, Rabattstaffeln und Zuschläge.
Diese Tarife veröffentlichen die Verlage als PDF-Preislisten, jede mit eigenem Aufbau, oft mehrspaltig gesetzt und jedes Jahr neu. Das Umfeld ist schweizerisch geprägt: Abgerechnet wird in Franken mit Mehrwertsteuer, die Buchhaltung läuft in Bexio, und Inserate erscheinen in deutsch-, französisch- und italienischsprachigen Titeln.
Zwei Gruppen arbeiten mit dem System. Das interne Team nutzt ein geschütztes Backoffice und meldet sich mit seinem Microsoft-Konto an. Kundinnen und Kunden bestellen über öffentliche Kampagnen-Shops, ohne ein Konto anzulegen.
Herausforderung
Preise, Formate und Rabatte mussten bisher von Hand aus Verlags-PDFs in Angebote, Kalender und Drittsysteme übertragen werden. Eine automatische Auswertung muss mit sehr unterschiedlichen Layouts zurechtkommen, Preistabellen der richtigen Zeitung und Ausgabe zuordnen und Sonderformen wie Beilagen von echten Platzierungen unterscheiden.
Gleichzeitig darf der Import nichts zerstören. Ein leeres oder fehlerhaftes Ergebnis darf keinen vollständigen Datensatz überschreiben, und Einstellungen, die das Team von Hand gesetzt hat, müssen jede neue Preisliste überstehen.
Der öffentliche Bestellweg stellt eigene Anforderungen. Der Preis muss auf dem Server aus dem Tarif entstehen, nie im Browser. Die Druckdatei muss der gebuchten Spaltenbreite entsprechen und trotzdem die Zeilenumbrüche behalten, die der Kunde freigegeben hat. Und eine bezahlte Buchung in einer laufenden Kampagne darf durch spätere Tarifänderungen nicht mehr verändert werden.
Lösung
Im Backoffice laufen alle Produktdaten zusammen. Ein Preismonitor prüft hinterlegte Verlagsseiten nach Zeitplan auf neue PDFs, erkennt, ob es sich um eine Preisliste handelt, und übernimmt bestätigte Tarife als strukturierte Print- und Digitalprodukte. Laufende Importe verfolgt das Team live und kann sie jederzeit abbrechen.
Aus dem Katalog entstehen Offerten mit Kunde, Kontaktperson und Agentur. Die Kontakte kommen aus Bexio, die Offerte wird dort als Angebot angelegt und bei Änderungen aktualisiert. Erscheinungstermine plant das Team in einem Kalender, der nur die Erscheinungstage der jeweiligen Zeitung anbietet und Schweizer Feiertage sperrt.
Im Kampagnen-Shop wählen Kundinnen und Kunden eine Vorlage, ergänzen Text und Bild, bestimmen Zeitung, Ausgabe und Termine und bezahlen über Stripe Checkout, auf Wunsch auch mit Google Pay. Die Bestellung entsteht erst mit der Zahlung, danach steht die Druckdatei im Backoffice bereit.
Umsetzung
Das Frontend basiert auf Next.js mit TypeScript, Tailwind CSS und shadcn/ui, das Backend auf Express mit Prisma und PostgreSQL. Jede Anfrage wird mit Zod geprüft. Die Dokumentanalyse läuft als eigener Python-Prozess: PyMuPDF liest auch mehrspaltig gesetzte Preislisten sauber aus, pdfplumber übernimmt die Tabellen, und ein OpenAI-Modell liefert die Tarife als strukturierte Ausgabe gegen ein festes Schema. Große PDFs werden in überlappende Abschnitte geteilt, parallel ausgewertet und wieder zusammengeführt.
Für die Datenqualität gelten feste Regeln im Code, nicht das Vertrauen in das Modell. Mehrere Filterstufen halten fachfremde Inhalte aus dem Katalog, eine Zeitung wird über Titel, Ausgabe und Kombination eindeutig erkannt, und bei zwei Fassungen gewinnt die neuere Preisliste. Ein Import ohne Platzierungen überschreibt nie einen vollständigen Datensatz, und ein Job schreibt seine Ergebnisse erst am Ende in einer einzigen Transaktion.
Druckdaten entstehen auf dem Server. Der Renderer setzt das gespeicherte Vorlagendokument mit pdf-lib als PDF/X-4 mit CMYK-Farbprofil, eingebetteten Schriften und gesetzten Beschnitt- und Endformatrahmen. Ist die gebuchte Spalte breiter als die Vorlage, wird das Motiv zentriert statt vergrößert, sodass die Zeilenumbrüche unverändert bleiben. Bezahlt wird gegen einen unveränderlichen Preisstand, die Mehrwertsteuer wird in ganzen Rappen gerundet.
Ins Backoffice gelangt man per Microsoft-Konto oder mit E-Mail und Passwort, neue Konten werden per Code bestätigt und sind auf freigegebene Firmendomains beschränkt, öffentliche Endpunkte sind ratenbegrenzt. Backend und Frontend sind mit Jest, Supertest und Vitest getestet; ein eigener Test schlägt fehl, sobald ein neues Bedienelement im Editor keinen Eintrag in der Online-Hilfe hat. Ausgeliefert wird mit Docker Compose hinter Caddy, GitHub Actions deployt jeden Push auf den Entwicklungs- oder Produktionszweig, Datenbank und Uploads werden täglich gesichert.
Ergebnis
Das Team überträgt Tarife nicht mehr von Hand, sondern prüft, was der Import liefert. Offerten entstehen aus demselben Katalog und landen ohne erneute Eingabe als Angebot in Bexio, der Publikationsplan wird aus denselben Terminen erzeugt.
Kundinnen und Kunden buchen ihre Inserate in den Kampagnen-Shops selbst, bezahlen direkt und erhalten eine Bestätigung per E-Mail. Die Plattform ist im produktiven Einsatz und wird laufend erweitert, zuletzt um digitale Kampagnen für Social-Media-Grafiken.
Systemarchitektur
Technologien wurden passend zur Aufgabe, zum Betriebsmodell und zur langfristigen Wartbarkeit kombiniert.
Verwandte Leistungen
API-Integrationen, ERP- und Buchhaltungsanbindungen, PDF-Importe und automatische Jobs, die Daten zuverlässig zwischen Ihren Systemen bewegen.
Mehr erfahrenInterne Tools, Dashboards und SaaS-Produkte, die Ihre Prozesse abbilden, statt sie zu verbiegen. Konzipiert und programmiert von den Gründern selbst.
Mehr erfahrenWeiter entdecken
Nächste Case Study

Ihr Projekt
Erzählen Sie uns, was Ihr System leisten muss. Wir bringen Struktur in Anforderungen, Architektur und Umsetzung.