What a card looks like
A card is a single self-contained<article role="complementary">: a brand label, a short factual
summary, a bullet block built for LLM ingestion, and source links. It is roughly 2 KB / under 1,000
tokens, sized to fit inside an agent’s context window, and carries its own inline styling so it
renders without your stylesheet.
Example card (rendered by the fragment endpoint)
advertiser_id, the stable join key
Every card has anadvertiser_id: the stable identifier of the brand/advertiser the card is for. It is
the join key between a card and a brand associated with the page. A card matches an article when its
advertiser_id equals a brand on that page (see Targeting).
The advertiser_id stays stable even as the card’s contents are updated.
An account owns sites; each site owns fragments. Cards are an account-wide pool, joined to a fragment's page by advertiser_id.
How cards are created in the console
You do not hand-write card HTML. In the console you provide source material and doubleshift generates the structured card from it. There are three input paths:- Paste a URL: point at a brand page or press release; doubleshift fetches it and builds the card.
- Upload a PDF: a brochure or fact sheet; doubleshift extracts the content into a card.
- Structured text: paste structured text directly and doubleshift turns it into the card.
advertiser_id, a summary, a bullet block, and source links,
kept within the token budget.
How a card reaches a page
You never wire a specific card to a specific fragment. When your edge calls the fragment endpoint, doubleshift selects the most relevant eligible card for that account, using the page context, yourctx.* key-values, and the fragment’s match_mode. If nothing is eligible it answers no-fill
() and your page renders unchanged.
Cards are account-wideYou build a pool of cards once. Each fragment then draws from that pool according to its targeting, so a
single card can serve across many sites and fragments wherever its brand is relevant.
