Friendly forms, not spreadsheets
Server-rendered forms with validation for every catalog — create, edit, delete — so editors never hand-write YAML or touch a request ticket.
Telops · Group IT · Product Pilot App · 2025
The authoring app behind the marketplace. It is where product owners and service owners manage their catalogs — products, applications, services, SLAs, assignment groups, and their translations — in friendly, validated forms. Everything they save becomes a Git-versioned artifact; from there the pipeline does the rest: review, release, publish, and sync.
This deck is the app we are building. For where it sits in the wider system see Platform; for the content-as-code method it implements see Content.
What owners do here
The back-office workspace for catalog owners; the pipeline handles release and sync.
01 · What it is
Product Pilot is the provider-facing authoring tool of the Service Engineering Platform. Its customers are the product owners and service owners who own catalog content: they create and curate it here, everything they save becomes a versioned artifact of record, and the pipeline carries it through review, release, and delivery — translated — through one API.
Server-rendered forms with validation for every catalog — create, edit, delete — so editors never hand-write YAML or touch a request ticket.
A product manager edits what they own; a catalog owner approves governed changes. Every change is checked, approved, released, then published.
A language-aware read API serves pinned catalog versions to the IT Hub Portal and other consumers — no direct coupling to JSM, Assets, or Confluence.
reindex --all.
02 · The app in use
A look at the back office product owners and service owners work in day to day. Click any screen to enlarge; use the arrows or your keyboard to move between them.
03 · Domains
Product Pilot owns five catalogs plus a shared terminology foundation. Each is a bounded context with its own schema, Git-backed directory, and release history. Colour shows the upstream system of record each catalog is aligned to.
catalog app · aligned to CMDB / JSM Assets
operations app · aligned to JSM Ops
translations · cross-cutting (dual role)
common.*) and managed domain copy (<catalog>.*) behind one abstractionProduct Pilot masters catalog content — what IT offers, how it is structured, priced, displayed, and supported. It is not the source of truth for operational or identity data other systems own; it imports and layers on top.
Product Pilot shows their relationships but never masters them.
04 · App layout
Apps are divided by their upstream system of record rather than one-app-per-catalog, with a shared engine underneath and a dedicated app for the publish/sync workflow. Domain apps never import each other's models — cross-domain links are artifact keys resolved through service interfaces.
Shared engine
Authoring (own the create / edit / validate workflow)
Workflow & delivery
catalog_core — no internal deps.translations → catalog_core.catalog, operations → catalog_core, translations.change_management → catalog_core; reads catalog + operations via service interfaces.delivery → all of the above through services; API adapter for catalog reads, search/filtering, translations, and edits.ai_assist → catalog_core, read-only (deferred).
Business logic lives in <app>/services.py. Views, CLI commands, and API endpoints are adapters only: parse input → call a service → render output. No validation or persistence logic in the edges.
05 · Tech stack
A pragmatic Django stack with a light, modern front end. No SPA, no bespoke infrastructure — server-rendered pages enhanced just enough to feel fast.
services.py.DATABASE_URL.reindex --all).@theme tokens).uv for dependency management.06 · Key concepts
A handful of decisions shape every module. They keep the system simple to reason about, cheap to rebuild, and safe to integrate later.
Git-versioned files are authoritative; the DB only mirrors them and can be dropped and rebuilt at will.
All behaviour lives in services.py; views, CLI, and API just translate to and from it — and stay in parity.
Cross-domain links (a product's service_key) are artifact keys resolved through a service interface, never a direct import.
The core data model and forms work with zero external dependencies; JSM/CMDB and Weblate are designed up front but wired later.
Artifacts store keys, not localized text. A pluggable provider serves a local store now and Weblate later — no catalog-code change.
Product manager edits owned records; catalog owner approves. Roles resolve from an allowlist now, from CMDB/Entra groups later.
07 · Connections
Product Pilot exposes the same catalog capabilities through the back-office UI and an API. The API fetches catalogs and content, supports search/filtering and translations, and accepts edits through the same services. It does not write directly to JSM, CMDB, or Confluence — approved changes move through Git, PRs, tests, and the deployment pipeline.
Interfaces to Product Pilot
Systems of record & services
08 · Build order
We ship a working, self-contained back office first, then layer on versioning/release, then external system sync, then the translation service and enrichment. Each phase's shape is designed up front so the core never paints us into a corner.
This deck focuses on the Product Pilot app. Two companions cover the wider picture.