Independent research project

Every screen.
One measurable system.

Create content that adapts to every screen, sell its airtime with a promise you can check, and prove, play by play, what actually ran.

Non-commercial · not sold, licensed or monetised

The film 1:13 · further down
Built to be studied, not sold.

AdPrecision is a working, non-commercial research platform developed in the course of research on recommender systems for public displays. The capabilities shown here are shipped unless explicitly marked as vision or research direction.

Why it exists

The platform

From an idea to a measured second.

AdPrecision connects content, scheduling, commercial inventory, physical screens and delivery evidence in one model. Each step feeds the next instead of ending at a system boundary.

  1. 01Create

    Media, AI Studio, scenes, dynamic creative and live data.

  2. 02Program

    Playlists, channels, events and airtime rules.

  3. 03Sell

    Products, rates, bookings and guarantees.

  4. 04Operate

    Players, stores, zones and remote control.

  5. 05Prove

    Play events, delivery, comparison and settlement.

Content & creative

Build once. Publish as structured content.

Organise images and video in the Media Library or build responsive scenes in the Composer. Releases, approval and data-bound conditions keep creative changes deliberate and traceable.

  • Media Library
  • Composer
  • Dynamic creative
  • Widget SDK
  • Approval
  • Data Sources

Programming

More than a playlist loop.

Order, weight and time content through playlists and channels. Blend owned, direct and programmatic demand with explicit fallback.

  • Dayparting and date windows
  • Triggered channel events
  • Mix policies by airtime
  • A fallback that is never conditional

Physical network

Model where every screen lives.

Stores and zones hold the fleet. A store's opening hours and holiday calendar apply to every screen in it, on the store's own time zone.

Governance

Control without breaking the workflow.

Tenant isolation, Spaces, role permissions, advertiser memberships and content approval shape what each person or machine can see and change. An administrator can view the console as one user, never seeing more than that user may. A platform operator can operate as a user for at most 30 minutes, with a reason, under that user's rights and the operator's own name; approvals and answers to a quote stay the person's own. Sign-in supports two-factor authentication.

DraftIn reviewApprovedPublished
  • Spaces
  • Role permissions
  • Advertiser memberships
  • View as user
  • Operate as user
  • Audit trail
  • Two-factor sign-in
  • Notifications

Targeting on every level

Seven levels. Combine any of them.

Geography, stores, zones, screen areas, categories, time and live data are each a place to set a rule, and they stack: a screen plays only what passes every level that is switched on. Category rules use one algebra wherever they appear: playlist items, sales products and booking spots. Switch any level off or on to see what it removes.

SpaceRegion East › Retail. Decides who may see, book and approve this booking. Not where it plays.

Where it plays 2 of 24 screens

A data condition reads the screen’s latest snapshot; stale data falls back to safe content.

The film

From a file to a measured second.

Create, AI Studio, program, sell, operate and prove: the whole path as one concept film, with music. Nothing plays, and nothing but the poster loads, until you press play.

What sets it apart

Seven ideas. One model, not seven tools.

Booking fit, AI Studio, scenario switching, data conditions, synchronised takeover, why-this-played and the proof chain are built into the same domain model as everything else. Each one is shipped and documented; pick a chapter to jump straight to it.

AI Studio

Retail creative, made for the screen it plays on.

An image studio built into the platform and tailored to retail media, running on FLUX by Black Forest Labs through its EU endpoint. Every result lands in the Media Library as an ordinary asset: marked as AI, traceable to its prompt and sources, and released through the same approval as everything else.

  1. GenerateA new image from a guided prompt, in the format of the screen it is made for.
  2. EditChange a picture in words. With several references, put a product into any scene.
  3. BoxesDraw and name regions so each element lands where the layout needs it.
  4. FillPaint an area and describe what belongs inside it.
  5. EraseRemove old prices, logos or stickers. No prompt needed.
  6. ExpandGrow the canvas, for example a 16:9 campaign onto a 9:16 portrait screen.
  7. EnhanceSharpen a soft or blurred picture in one click.
  8. Try-onDress a model in a garment from the catalogue, for fashion retail.

Guided prompts

A prompt builder for subject, product, setting and style, and a checker that flags what the model is known to get wrong before anything is sent.

Marked and traceable

Results carry the IPTC "trained algorithmic media" mark in the file, keep prompt, model and sources as provenance, and pass the normal content approval.

Inside the Composer

Generate, or edit with AI, straight from a scene in the Composer; the result comes back into the scene it was made for.

Limits per tenant

Each tenant runs under its own credit limit per week or month, set by the platform operator, with a usage view down to the single request.

Variants

One source, several stand-alone images by daypart, weather, screen format or language; each becomes an ordinary playlist item. For one composition that changes itself per screen, see Dynamic creative.

  • Dayparts
  • Weather and live data
  • Landscape and portrait
  • Languages

Media Studio

One source. Four derivations.

Cut an image or a video into 2 to 32 wall panels, reframe it for another format, trim a video or pull a still from it. One server-side job runs them all; nothing is encoded in the browser, and every output is a new asset in the library.

  • WallOne asset per panel
  • ReframeFor example 16:9 to 9:16
  • TrimKeep a time range
  • StillOne frame as an image

Dynamic creative

One composition. The scene that fits, on every screen.

A composition reads live data, such as the weather or each branch's own stock, and carries states: rules on time, live data, place, scenario or language. At the start of every play, each screen decides which states apply and draws that version, in its own language where the composition has one. Every play records the version it showed.

Live data in

Feeds are fetched on the server and mapped to named fields. One ERP file can be split into one value per branch, and lists can be filtered, sorted and counted.

States as rules

Each element says what it shows per state, in one priority order. A tolerance band keeps a state from flickering around its threshold.

Languages, reviewed

Text is machine-translated on first entry. By default, while content approval is on, every declared language is reviewed before release.

Proven per play

Each play records its states, its language and what every element drew. Reporting reads the same figures per state, language and element.

Translation

Every screen in its own language.

Composition texts are translated through DeepL on first entry. A glossary keeps brand names as they are, a run shows its characters and cost before anything is sent, and release can wait until every declared language is reviewed. A screen takes the first of its own languages that the composition declares, and otherwise English.

  • DeepL
  • Glossary
  • Formality
  • Review before release
  • Languages per store, zone or screen

Widgets on live data

Departures, menus, wait times and popular hours, bound to a feed.

Metric, Board, Chart, Weather and Ticker widgets bind to a Data Source and draw in the screen's language. An unbound Chart, Board or Weather widget shows "Unavailable", never the editor's sample. The sample feeds below are published on this site for trying every recipe.

Departures · Board
06:45Salzburg Hbf4On time
08:20München Hbf7Delayed
10:05Graz Hbf2On time
14:50Praha hl.n.5Cancelled
Menu · Board
  • Classic burger8.90
  • Cheeseburger9.50
  • Chicken wrap7.80
  • Fries3.90
Sold-out dishes hidden by rule
Wait time · Metric
~8min
3 min shorter
Free spaces · Metric
42of 120
Popular times · Chart
Current hour highlighted
Pick-up · Board
A14A16A17
Filter: Ready
Energy per day · Chart
MonSun

Retail media

Airtime that can be sold, and defended afterwards.

The commercial engine sits on the same scheduling and playback facts as the operator workflow. Capacity, delivery and settlement therefore describe the screen network that actually ran.

Direct · insertion order

Offer. Accept. Confirm.

  1. ReserveThe seller holds the airtime
  2. Send offerPriced from the rate card
  3. AcceptThe buyer, in the portal
  4. ConfirmPrice frozen. Now it plays

Or the buyer requests first, and the seller confirms, sends an offer or sends it back.

  • Half-hour gridA window that touches a half-hour counts it: 07:00–19:30 is 12.5 hours.
  • Open hours onlyOnly the hours a screen is really open are counted.
  • Completed playsPer thousand plays bills plays that ran to completion, never more than planned.

Programmatic · VAST

A weighted draw, then the waterfall.

  1. Source ATimeout
  2. Source BBelow its floor
  3. Source CHeld by its QPS cap
  4. Source DFilled

No fill anywhere, and the channel's own content plays. It all runs on the server: a hop is capped at 800 ms, and the endpoint and its key never reach the screen.

Both fill one airtime budget, measured in seconds.

01

Know whether a booking fits

Availability returns an explainable verdict per screen before commitment; when a request conflicts, ranked repairs show what would work.

02

Allocate a real currency

Direct bookings, SSP demand and playlist content share one airtime budget measured in seconds, not unequal spot counts.

03

Close the evidence loop

Append-only play events feed pacing, proof of play, delivery reports and settlement instead of planned schedules.

04

Let buyers serve themselves

A customer portal for advertisers and agency teams: a join link, requests that confirm, hold capacity or wait, and a buyer agent on the same rules.

05

Price the hours that are open

Hours are counted on a half-hour grid of the hours a screen is really open. Confirmation freezes every price input, so a re-snapshot reproduces the quote.

06

Bill plays that completed

Price per thousand plays bills plays that ran to completion inside sealed proof-of-play spans, never more than planned; the rest shows as bonus.

07

Keep competitors apart

An ordering promise on top of the airtime promise: competing advertisers do not play back to back, and every exception is counted.

08

Proof of Trust, not a promise

Plays are sealed hourly, anchored daily and signed by the screen where it holds a key. No blockchain: an offline script checks any export.The trust ladder →

AdvertisersSales productsRate cardsAgreementsBookingsCompetitive separationSSP / VASTCustomer portalSettlement

Delivery quality

Know what will deliver. Before the month ends.

Reach says how many screens could have shown a campaign. These readings say whether its promise is being kept, and what actually ran. They come from the same play facts, and the server explains every shortfall in words, the same in the console, the customer portal and the API.

Pacing

On track, at risk or behind, per booking and per day, against the airtime owed so far. A booking that falls behind shows it mid-flight, while there is still time to repair it.

How pacing is computed →

Shortfall, with its cause

How much is missing, and why. A share gap can be repaired; a volume gap is airtime that never existed, because the screens ran less than planned. The split says whether to fix the schedule or the screens.

Share and volume gaps →

Coverage

Where a saved booking is planned to land: eligible, cut out, crowded or closed, as a day strip or an hour grid. Read before the flight, a hole in the plan is fixed before it becomes a shortfall.

Read the coverage view →

Fit verdict

A verdict per screen before anything is sold, and ranked repairs that make a booking fit, such as moving to free hours or cutting out the clashing screens. Nothing is promised that the screens cannot carry.

Capacity and availability →

Settlement

Planned against measured seconds, per screen, as a post-flight export for finance. Price per thousand plays bills only plays that ran to completion, so the invoice follows what ran.

Settlement and billing →

Proof of play

Every finished play is sealed hourly, anchored daily and, where the screen holds a key, signed by the device. A small offline script checks any export.

How the trust ladder works →

Separation breaches, per day

When no other paid spot is due and no local content can take the turn, a booking still plays right after its competitor: the airtime promise outranks the adjacency preference, and the exception is recorded. The booking's delivery report lists those cases per local day with the seconds they took, so a separation clause is checked, not trusted.

Competitive separation →

Plays per state, language and element

One composition plays different versions, so reporting says which ran: plays grouped by state, language or element, network-wide or per booking. A language reached through English is marked fallback, which shows where a translation is still missing.

Versions in reporting →

CO₂e per finished play

A model of play-time energy, not a meter reading: measured seconds times the screen's datasheet draw and its country's grid factor. Only finished plays are charged, and the grams roll up per booking, with the formula and its inputs documented.

Carbon methodology →

Screen operations

See the estate. Then act with evidence.

Presence, telemetry and play events explain the fleet at a glance. Live Preview verifies the visible output, while bounded remote commands leave a correlated audit trail.

Live, not polled

Change a schedule and every affected player is told over its open connection; operator views update as events arrive.

Current playback

Infer what each screen area is playing from fresh presence and proof-of-play facts, with stream and source provenance.

Auditable commands

Identify, repair, restart, collect diagnostics and run safe cache maintenance with explicit lifecycle receipts.

Resilient playback

Profiles, schedules, media and data are held at the edge so playback can continue through a network interruption.

Scenario switching

A scenario tree gates playlists, items and events. One switch on a channel, by hand, by API or by rules, changes what plays; the schedule stays as it is.

Synchronised takeover

A shared start instant on an absolute UTC grid: the same motif in the same second on many screens, or one creative split across a wall.

Kiosk mode

A player profile locks an Android player into kiosk mode, with a PIN as the way back out.

Simulate and follow

Draw one screen's programme at a chosen moment without a device, or follow what a device reports as it plays.

Player platforms One player engine, installed as an app or opened in a browser. Samsung Tizen panels open the web build through their URL Launcher; browsers play video muted.
  • WindowsNative app
  • LinuxNative app
  • macOSNative app
  • AndroidNative app
  • WebBrowser
  • TizenBrowser (URL Launcher)

Integrations & automation

Four front doors. One domain model.

Browsers, players, customer systems and AI clients each receive a purpose-built surface. None of them reimplements scheduling or advertising rules.

01

Operator BFF

REST and server-sent events for the Angular console, including the complete operator workflow.

Browser-facing · JWT
02

Player API

SignalR control and read-only content delivery for paired Flutter players at the edge.

Device-facing · Player token
03

Integration API

Versioned REST for products, availability, bookings, media, delivery and settlement, with signed webhooks and a Scalar reference.

Customer-facing · scoped API key
04

MCP for operators and buyers

Typed tools on two paths: the operator's Program, Advertising, Media Library and Player Operations workflows, and a buyer agent's own order book.

Agent-facing · Service User API key

A focused agent surface

Ask a question. Receive domain evidence.

MCP exposes workflows and resources, not a REST catalogue with different names. Tenant, permission, lifecycle and concurrency rules remain enforced by the same application handlers. A buyer's key opens only its own path and sees only its own advertisers.

Operator

Show me players in Vienna that are offline or in maintenance, then explain what the affected screens last played.

Searching fleet health and playback evidence…
Operator path · key audience Mcp
Buyer's agent

Does the Spring launch product fit two weeks in March? Check fit and price, save the draft and request it.

Checking availability for the key's own advertiser…
Buyer path · key audience McpBuyer · own order book only

Counted in rules

Numbers that are rules, not reach.

A research project has no reach, customers or screens under contract to show. The figures below are how the platform behaves, each one stated in the documentation.

  • 48half-hours in a day. Hours are counted on this grid, and only the hours a screen is really open.
  • 17public-holiday calendars: Austria and each of the sixteen German Länder, computed from rules so no year expires.
  • 14local days of closed periods every screen is told in advance, as exact instants.
  • 800msthe most one programmatic hop may take on the call path before the waterfall moves on.
  • 32wall panels Media Studio can cut from one image or video, each a new asset.
  • 30minis the longest an operator may operate as a user. One session, a stated reason, no renewal.

Capabilities

What ships, step by step.

Every line below names a shipped capability, grouped by the five steps of the platform. Four of them are marked as flagships.

01

Create

  • Media LibraryUpload, organise, prepare, archive and remove images and video.
  • AI StudioFLUX image generation and editing for retail screens; every result is marked as AI, keeps its provenance and passes approval.
  • ComposerA WYSIWYG scene editor whose scenes are released as versioned player bundles.
  • Dynamic creativeFlagshipOne composition, many versions: rules on time, live data, place and language decide per screen and per play; one ERP file gives each branch its own stock; translations are reviewed before release.
  • Data SourcesLive external data reaches scenes and gates playback without changing schedules.
  • Media StudioDerives wall parts, reframed assets, trims and still images in one server-side job flow.
  • Content ApprovalReview gates release media and composition versions before any screen may play them.
  • Widget SDKA shared widget model, SDK and runtime; scenes bind data and ship as offline bundles.
02

Program

  • Playlists & ChannelsPlaylists loop ordered content; a channel binds playlists and paid demand to one screen area.
  • Scenario switchingFlagshipA scenario tree gates playlists, items and events; a channel switches by hand, by API or by rules.
  • Synchronised takeoverFlagshipThe same motif at the same second on many screens, or one creative split across a video wall.
  • Content MixA mix policy splits airtime among booked ads, programmatic demand, playlists and fallback.
  • Scheduling & DaypartingValidity periods, dayparts, date scopes, exclusions and operating windows decide eligibility.
  • Channel EventsInterval, scheduled and external triggers insert playlist content into a channel.
03

Sell

  • Capacity & AvailabilityA fit verdict and ranked repairs show what can be sold before a booking commits.
  • Rate Cards & QuotesVersioned rate cards, weighted modifiers and agreement conditions produce a frozen quote.
  • Opening-hours ratesHours are counted on a half-hour grid of the hours a screen is really open; confirmation freezes every price input.
  • Price per thousand playsSells plays, not time; the settlement bills only plays that ran to completion, up to the planned number.
  • Competitive separationCompeting advertisers do not play back to back where another booking can serve; every exception is counted.
  • Customer PortalA buyer login sees its own bookings and creatives, answers offers and invites its own team.
  • Self-service requestsCompanies can apply through a join link; clean requests can confirm automatically or hold capacity.
  • Tiering & GuaranteesExclusive, Guaranteed and Best effort products change capacity, pacing and goals.
  • SSP & ProgrammaticVAST sources with weighted first requests, ordered fallback, time budgets and creative reuse.
  • Buyer agentsA buyer's own AI agent checks fit and price, drafts and requests bookings and reads delivery and proof, on its own order book only.
04

Operate

  • Player platformsOne player engine. Native app: Windows, Linux, macOS, Android (kiosk mode) · Browser: Web · Browser (URL Launcher): Tizen (Samsung Smart Signage panels).
  • Monitor PlayersFleet presence, player health and playback, with auditable remote commands.
  • Simulate & FollowDraw one screen's programme at a chosen moment without a device, or follow what a device reports.
  • Player Live PreviewA short-lived, permission-gated live picture from one online player.
  • Stores & ZonesBranches and zones organise the fleet and pass categories down to their screens; a store's opening hours and holiday calendar apply to every screen, on the store's time zone.
  • Player ProfilesEnforced device settings: rotation, volume, operating hours, Android kiosk mode, cache, diagnostics.
05

Prove

  • Why this playedFlagshipEach play records why the spot won its slot, what the same decision denied and how rotation drew it.
  • Play Events & Proof-of-PlayThe append-only fact stream of what actually played, where and for how long.
  • ReportingUp to three bookings, players, channels or SSP sources side by side, plus demand, freed-airtime and per-version views (state, language, element).
  • Booking HealthCan it be sold, can it play, is it keeping pace, did it keep its separation clause?
  • MeasurementMeasured plays become delivery plans, gap diagnoses and delivery verdicts.
  • Settlement & BillingA finished booking becomes a post-flight settlement export for finance.
  • Carbon FootprintGrams of CO2e per finished play, modelled from measured seconds, the screen's draw and its country's grid, rolled up per booking.

Each capability has its own page in the documentation.

Research

A real system for a question that cannot be studied in isolation.

AdPrecision is developed in the course of research on recommender systems for public and digital-out-of-home displays: anonymous, momentary audiences and recommendations that must respect hard commercial and operational constraints.

Bookings and guarantees define promises. Capacity and delivery gaps define constraints. Proof of play and yield provide measurable outcomes. Together they turn “pick a good ad” into a problem that can be explained, evaluated and repaired.

ObjectiveRelevant delivery
PromisesBookings & guarantees
ConstraintsCapacity & availability
EvidenceProof of play & yield
Research direction

Explore the system

The claims are only the overview.
The documentation carries the detail.