Custom Software for Media & Entertainment
Secure, flexible, and compliant architecture tailored for the unique challenges of the Media & Entertainment sector.
Vivek Mishra — Founder & Lead Architect, ERPStack
Quick Answer
In short: a media ERP is a rights ledger. ERPStack builds custom media and entertainment software for windowing, avails, residuals and royalties: DDEX ERN 4.3.2 and DSR ingestion, EIDR and ISRC identifiers on every asset, VAST 4.3 and ads.txt reconciliation, and C2PA Content Credentials carried through the pipeline.
Why Custom ERP for Media & Entertainment?
Operating in the Media & Entertainment sector requires a systems architecture designed for high scalability, operational flexibility, and strict regulatory compliance. Standard off-the-shelf software forces your teams to reshape their workflows to fit rigid software packages. A custom ERP for the Media & Entertainment industry maps directly to your exact business logic. Deployed to your secure cloud infrastructure (AWS or Azure), the system isolates database schemas, automates redundant reporting tasks, and scales without user seat licensing fees. This ensures your corporate data remains under your absolute control, eliminates vendor lock-in, and lowers long-term operational technology costs by up to 70% over a 3-year period.
Industry Pain Points
- Avails built in a spreadsheet of territory, platform, language and term, with no ERP row to reconcile the contract against
- Residuals computed from a revenue report that never itemised SVOD, download-to-rent and Pay Television
- DDEX ERN 4.3.2 deliveries accepted by one DSP and rejected by the next on the same release
- Three impression counts — buyer, SSP and publisher ad server — and no PostgreSQL ledger that reconciles them
- No EIDR or ISRC on the asset, so a royalty statement can never be matched back to the media title in PostgreSQL
- One VAT code for every country, when EU place of supply follows the consumer's Member State
Engineering Blueprint
A media ERP is a rights ledger with a general ledger bolted to it. ERPStack makes the grant — territory, platform, language, term, exclusivity — the atomic row in PostgreSQL, because avails, residuals and royalty statements are all queries over that one table.
Rights as time-bounded grants, not flags
Windowing is a range problem, so ERPStack stores it as one. Every media asset carries an identifier spine — EIDR for the title and edit, ISRC for the recording, ISWC for the composition — because an unmatched royalty statement cannot be paid. Clearance is then one indexed PostgreSQL query behind a Next.js REST API, and an overlapping exclusive licence fails at write time, not in a quarterly audit. Playback entitlement reads the same table: a short-lived JWT carries the grant id, Redis enforces concurrency, and a Payload CMS editorial surface never gets a vote on rights. Drizzle ORM holds the migrations; Zod validates the contract feed before it reaches Postgres.
// Drizzle ORM on PostgreSQL — a rights grant is a row, never a boolean
export const rightsGrants = pgTable('rights_grants', {
titleEidr: text('title_eidr').notNull(), // EIDR, not a title string
territory: text('territory').notNull(), // ISO 3166-1 alpha-2
platform: text('platform').notNull(), // svod | avod | est | linear
language: text('language').notNull(), // BCP 47 tag
termStart: timestamp('term_start', { withTimezone: true }).notNull(),
termEnd: timestamp('term_end', { withTimezone: true }), // null = perpetuity
exclusive: boolean('exclusive').notNull(),
}, t => [index('grant_lookup').on(t.titleEidr, t.territory, t.termStart)]);Residuals are a reporting schema
The 2026 WGA Minimum Basic Agreement runs 2 May 2026 to 1 May 2030 and, in ERP terms, is a reporting specification: foreign and domestic grosses reported separately for gross-based residuals, with subscription video-on-demand, download-to-rent and Pay Television itemised. High-budget SVOD residuals rise 2.5% on 2 May 2027 and again on 2 May 2029, and the viewership bonus moved from 50% to 75% once a title reaches 20% of a service’s domestic subscribers. Music is the same shape: a DDEX ERN 4.3.2 NewReleaseMessage out to each DSP, a DSR sales report back, mechanicals settling through the Mechanical Licensing Collective blanket licence live since 1 January 2021. ERPStack ingests both as Event-Driven Architecture messages on Apache Kafka, applying Idempotency in API Design per message id so a redelivered DSR cannot double-post.
The reconciliation gap nobody owns
Advertising is where a media ERP earns its keep. Buyer ad server, SSP and publisher server each count a different event; the gap becomes a make-good. ERPStack lands VAST 4.3 events, OpenRTB v2.6-202309 bid logs and ads.txt 1.1 records — including the OWNERDOMAIN and MANAGERDOMAIN entries tying back to sellers.json — in a ClickHouse Analytics Database, diffs them nightly and writes the variance to a signed ledger; server-side ad insertion drops beacons by design, so counts are reconciled, never trusted. Edge Caching / CDN egress is the other unowned line, so ERPStack tags bytes to a title and a territory. SAP S/4HANA, Oracle NetSuite and Microsoft Dynamics 365 hold the general ledger well; none holds the rights graph, so ERPStack applies the Strangler Fig Migration Pattern — rights first, ledger last — with Next.js, React and TypeScript shipped to AWS or Vercel by Terraform.
Our Solutions
- Rights grants as PostgreSQL rows — territory, platform, language, term, exclusivity — with avails by query and JWT plus Redis entitlement at playback
- Residual and participation engine keyed to the 2026 WGA reporting split, posted through an Immutable Audit Trail
- DDEX ERN 4.3.2 NewReleaseMessage out and DSR sales reports in, idempotent per message, in Drizzle ORM
- EIDR, ISRC and ISWC as indexed identifier columns for royalty matching, exposed over a REST or GraphQL API
- VAST 4.3, OpenRTB v2.6-202309 and ads.txt 1.1 counts diffed nightly in a ClickHouse Analytics Database
- C2PA 2.4 Content Credentials signed at transcode by a Node.js worker on AWS for EU AI Act Article 50 marking
Compliance & Security
In media the regulator is never one body: four regimes each demand a different artefact out of the same asset, and each lands in the schema before any policy document.
EU AI Act Article 50, live from 2 August 2026
Article 50 of Regulation (EU) 2024/1689 requires synthetic audio, image, video and text to be marked in a machine-readable format, and a deployer to disclose a deep fake — a lighter duty where the work is evidently artistic, satirical or fictional. The AI Omnibus in force from 27 July 2026 moved the high-risk dates to 2 December 2027 and 2 August 2028. ERPStack implements the marking as C2PA 2.4 Content Credentials signed at transcode by a Node.js worker whose key never leaves AWS, so provenance travels with the media file, not the database.A digital replica is now a column, not a clause
California Labor Code §927, added by AB 2602 and effective 1 January 2025, makes a term licensing a performer’s digital replica unenforceable without a reasonably specific description of the intended uses and either counsel or a union agreement covering digital replicas — the Los Angeles reality. Civil Code §3344.1, amended by AB 1836, prices an unauthorised digital replica of a deceased personality at the greater of $10,000 or actual damages. ERPStack stores consent scope per performer, per use, in PostgreSQL behind an Immutable Audit Trail.Captioning, and the 28 June 2025 line
Directive (EU) 2019/882 required transposition by 28 June 2022 and application from 28 June 2025, covering services providing access to audiovisual media services, e-books and dedicated software, and e-commerce, with a transitional period to 28 June 2030. Pre-recorded time-based media published before 28 June 2025 is expressly out of scope. In the US, 47 CFR 79.4 makes distributors pass captions through in a quality-preserving format such as SMPTE ST 2052-1:2010 — live clips within 12 hours, near-live within 8. ERPStack tracks that per asset in PostgreSQL, not per library.Where the money crosses a border
A digital subscription is taxed where the consumer is, not where the media company is. The One Stop Shop replaced the Mini One Stop Shop on 1 July 2021, with a EUR 10,000 cross-border threshold and a EUR 150 consignment limit on the Import scheme, so a media ERP needs a place-of-supply rule and a per-Member-State rate table, not one VAT code. The Digital Services Act adds ad-labelling and repository duties past 45 million monthly EU users. ERPStack posts the tax line at invoice time in PostgreSQL, reconciles it against PCI DSS-scoped payment data, and implements what a SOC 2 or ISO 27001 assessment asks for — key custody, least-privilege RBAC, an Immutable Audit Trail — at schema level.
Standards we engineer to
- EU AI Act Art. 50 (Reg. 2024/1689)
- European Accessibility Act (Dir. 2019/882)
- FCC 47 CFR 79.4 captioning
- C2PA 2.4 Content Credentials
- EU VAT One Stop Shop
- Digital Services Act (Reg. 2022/2065)
- GDPR
- PCI DSS
- SOC 2
- ISO 27001
Get the Blueprint
Download our comprehensive Systems Architecture Blueprint to see how we architect compliant solutions.
Download BlueprintMetrics & Integrations
Illustrative engineering targets for this sector — the SLAs and capacities we design and build toward, not a live service dashboard.
Avails run, 40k titles across 190 territories
Rights clearance decision from PostgreSQL
DDEX ERN 4.3.2 acknowledgement from a Node.js worker
Impression variance closed on Apache Kafka feeds
Integration: DDEX ERN 4.3.2
Integration: DDEX DSR
Integration: EIDR
Integration: IMF (SMPTE ST 2067)
Integration: IAB VAST 4.3
Integration: C2PA 2.4 Content Credentials
Implementation Process
Rights model
Territory, platform, language and term grants as PostgreSQL rows with exclusivity constraints.
Identifier spine
EIDR, ISRC and ISWC attached to every media asset in PostgreSQL before the first royalty run.
Avails engine
Avails generated by query in Drizzle ORM; window conflicts raised as blocking write errors.
Residuals ledger
Foreign and domestic gross plus SVOD, download-to-rent and Pay Television itemised per the 2026 WGA agreement.
Ad reconciliation
VAST 4.3, OpenRTB and ads.txt counts diffed nightly over Apache Kafka into a make-good ledger.
Provenance and disclosure
C2PA 2.4 signing at transcode by a Node.js worker for EU AI Act Article 50 marking.
Proven in Media & Entertainment
Meta Ads Performance Analytics Pipeline
Unified paid and organic Meta Graph API analytics for a D2C handcraft brand
Read Case StudyFrequently Asked Questions
As one row per grant, with the term as a bounded range. ERPStack gives every media rights grant a territory, a platform, a language, a term and an exclusivity flag enforced by a PostgreSQL constraint, so avails generate as a query and an overlapping exclusive licence fails at write time instead of surfacing in a quarterly audit.
A revenue split most media ERP installations do not hold. The 2026 WGA Minimum Basic Agreement runs 2 May 2026 to 1 May 2030 and requires foreign and domestic grosses reported separately for gross-based residuals, plus itemised subscription video-on-demand, download-to-rent and Pay Television revenue. High-budget SVOD residuals rise 2.5% on 2 May 2027 and again on 2 May 2029.
Because three systems count independently and none of them is simply wrong. The buyer's ad server, the SSP and the publisher's own server measure different events, and server-side ad insertion drops beacons by design. ERPStack lands VAST 4.3 events, OpenRTB v2.6-202309 logs and ads.txt 1.1 seller records in a ClickHouse Analytics Database, diffs them nightly, and turns the media variance into a make-good ledger.
Yes, it moved the work back in-house. On 17 October 2025 Google confirmed it would keep third-party cookie choice in Chrome and retire Topics, Protected Audience, the Attribution Reporting API, Private Aggregation and Related Website Sets, keeping CHIPS, FedCM and Private State Tokens. For a media business that means first-party identity, consented profiles and measurement joins you own — a PostgreSQL problem, not a browser one.
From 2 August 2026, under Article 50 of the EU AI Act (Regulation (EU) 2024/1689). Providers must mark synthetic audio, image, video and text in a machine-readable format, and deployers must disclose deep fakes, with a lighter duty for evidently artistic, satirical or fictional work. The AI Omnibus in force from 27 July 2026 moved the high-risk dates to 2 December 2027 and 2 August 2028, not the media transparency ones.
It is implementable now. The C2PA specification is at version 2.4, and Content Credentials attach a signed manifest to the asset itself. For media and entertainment the practical build is to sign at transcode, keep the signing key out of the application tier, and store the manifest hash beside the asset row so a downstream partner verifies provenance without trusting your media ERP.
All three, because they identify different things. EIDR identifies audiovisual titles, edits and manifestations; ISRC is the 12-character code identifying a specific sound or music-video recording, issued through the International ISRC Agency; ISWC identifies the underlying composition. A media ERP holding only a title string cannot match a royalty statement to a payment, which is the most expensive routine failure in entertainment accounting.
Buy the ledger, build the rights. SAP S/4HANA, Oracle NetSuite and Microsoft Dynamics 365 handle general ledger, payables and consolidation better than anything you would write, and replacing them is rarely the win. What none of them model is a windowing graph, an avails engine or a residuals split, so ERPStack builds those beside the ERP and reconciles, using the Strangler Fig Migration Pattern across the media catalogue.
Yes, from 28 June 2025. Directive (EU) 2019/882 covers services providing access to audiovisual media services, e-books and dedicated software, and e-commerce services, with transposition due 28 June 2022 and a transitional period running to 28 June 2030. Pre-recorded time-based media published before 28 June 2025 is expressly out of scope, which is exactly why the deadline has to be tracked per asset rather than per library.
The tax follows the consumer, not the seller. The One Stop Shop replaced the Mini One Stop Shop on 1 July 2021, with a EUR 10,000 cross-border threshold below which a micro-business keeps charging its home rate, and a EUR 150 consignment limit on the Import scheme. A media ERP therefore needs a place-of-supply rule and a per-Member-State rate table resolved at invoice time in PostgreSQL.
It is the visible one, not the expensive one. Takedown workflows and territory blocking are routing rules any media platform implements at the edge. The costly failures sit upstream in entertainment accounting: an avail generated against a lapsed window, a residual computed on an un-itemised revenue line, or a royalty statement that cannot be matched to an ISRC. ERPStack builds the ledger first and the edge rules second.