Yesterday LogicSRC published OpenServer and four resource specs under it, so a hosting provider can serve one file about what it sells and a directory can read the provider instead of scraping an aggregator. The pattern is not about servers. It is about any niche where the source of truth has the data in a table and every site that lists it gets it second hand.
nichedb.dev has 37 collections. About a dozen of them are niches like that: the publisher could serve a file, and today nobody has told them what shape it should be. So we are going to write one small spec per niche, and here are the first two.
OpenCoupon
Every coupon site is a graveyard. A code is posted once, copied everywhere, and lives on for years after the merchant retired it, because no coupon site knows when a code died and the merchant has no way to tell them. Shoppers try five codes, four fail, and the one that works was for new customers only, which the listing did not say.
The merchant already knows exactly which codes work. Its checkout is the source of truth, and the promotion lives in a table with a start date, an end date and a rule. OpenCoupon is that table, exported, at /.well-known/opencoupon.json:
{
"merchant": { "name": "Northwind Outfitters", "web": "https://northwind.example", "currency": "USD" },
"coupons": [
{ "id": "fall15", "code": "FALL15", "title": "15% off everything for fall",
"kind": "percent", "value": 15, "min_order": 50,
"scope": { "excludes": ["gift-cards", "sale"] },
"ends": "2026-09-30T23:59:59Z", "regions": ["US", "CA"], "status": "active" },
{ "id": "summer10", "code": "SUMMER10", "title": "10% off summer",
"kind": "percent", "value": 10, "status": "expired" }
]
}
Six kinds: percent, amount, shipping, bogo, gift, other. Scope, minimum order, dates, per-customer and region limits. The rule that matters is the last row: an expired coupon stays in the file for as long as copies of it circulate, so a directory learns the code died from the one party that knows. A code fetched from the merchant's own origin is a code the merchant says works. That is the whole verification.
What is not in it: affiliate links, redemption, votes, badges. The merchant's URL is the merchant's. A directory that earns a commission does so in its own link, marked as its own, beside it. The first directory reading it is the deals collection on nichedb.dev.
OpenRecipe.md
A recipe on the web is four thousand words of memoir with the recipe at the bottom, and a block of JSON-LD in the head that search engines read and people never see. The two drift: the page says three eggs and the schema says two, because the author edited one and a plugin regenerated the other.
The form people actually write recipes in has not changed in a century, and it is Markdown already. OpenRecipe.md fixes where the file lives and which lines mean what:
# Shakshuka
- **Serves**: 4
- **Prep**: 10 min
- **Cook**: 25 min
- **Diet**: vegetarian, gluten-free
Eggs poached in a spiced tomato and pepper sauce. One pan, bread on the side.
## Ingredients
- 2 tbsp olive oil
- 1 onion, diced
- 800 g canned crushed tomatoes
- 6 eggs
## Steps
1. Heat the oil in a wide pan. Cook the onion until soft, about 8 minutes.
2. Pour in the tomatoes, season, and simmer 10 minutes until thickened.
3. Make six wells, crack an egg into each, cover, cook 5 to 8 minutes.
Ingredients as written, one per line. Steps in order. Nutrition per serving if you have it. It lives next to the recipe page as shakshuka.md, or the page points at it with rel="openrecipe", or a site lists them all at /.well-known/openrecipe.md.
Keep serving schema.org/Recipe for the search engines. Generate it from the Markdown on every publish. The Markdown is the canonical copy, and that one-way rule is the whole reason the spec exists.
What comes next
The same treatment for the niches where it fits: software listings, marketplace asks and offers, release calendars for games, music and books, extensions, status pages. Not for weather or crime or filings, where the publisher is an agency with a standard of its own and a spec of ours would only describe our output. Podcasts need nothing, because RSS already is the spec.
Both are at logicsrc.com/docs/opencoupon and logicsrc.com/docs/openrecipe, CC BY 4.0. Serve one, copy it, extend it.
Top comments (0)