In Force · Chicago

Cheap Hours · version 1

Cheap Hours

Publish one small JSON file on your own domain and In Force reads your hours directly. The point is not convenience. What a venue states about itself is first-hand evidence, which outranks anything anyone can lift off a page. And when your hours change, ours change.

The file lives at /.well-known/cheap-hours.json on your own domain. Nothing to sign up for, no key, no fee. In Force fetches it, reads it, and links back to it as the source.

No-code first file

Make the source you own

Nothing is submitted here. This instrument writes a file in your browser for you to place on your domain.

Days
Complete the fields to make a file.

The whole format

Copy this, change it, put it at /.well-known/cheap-hours.json. The live copy is at cheap-hours.example.json.

{
  "cheap_hours": "1",
  "venue": {
    "name": "Scofflaw",
    "neighborhood": "logan-square",
    "address": "3201 W Armitage Ave, Chicago, IL 60647",
    "url": "https://scofflawchicago.com"
  },
  "offers": [
    {
      "id": "happy-hour",
      "title": "$8 happy hour cocktails",
      "summary": "Every cocktail on the list is $8",
      "constraints": "Bar and lounge only, not the patio",
      "kind": "item_price",
      "price": 8,
      "categories": ["bar"],
      "days": ["MO", "TU", "WE", "TH"],
      "start": "17:00",
      "end": "19:00",
      "until": "2026-12-31"
    },
    {
      "id": "anniversary",
      "title": "Free punch, one afternoon only",
      "kind": "free",
      "price": 0,
      "categories": ["bar", "free"],
      "starts": "2026-09-14T14:00",
      "ends": "2026-09-14T17:00"
    }
  ]
}

Every field

  1. Required. The string "1".
  2. Required. The name a person reads on the door.
  3. Required. A plate on the field, such as logan-square. The clock lists them all.
  4. Optional, and the fastest way for us to place you correctly.
  5. Optional. Defaults to your domain.
  6. Required. Lower case letters, digits and dashes. Stable across edits, so an offer keeps its history.
  7. Required. What a person gets, in their words, with the price in it if there is one.
  8. Required. percent, amount, item_price, bogo, free or other.
  9. Optional. A number of dollars. Used for a price ceiling, so an offer without it is never assumed cheap.
  10. Weekly offers. MO TU WE TH FR SA SU.
  11. Weekly offers. 24 hour times as HH:MM. Both required.
  12. Optional. YYYY-MM-DD. The last day the weekly offer runs.
  13. Dated one-offs. Full ISO date and time. Both required.
  14. Optional. Defaults to the title.
  15. Optional, and the most useful field here. Bar only, dine in, one per person.
  16. Optional. coffee, restaurant, bar, shop, grocery, popup, free, entertainment, chain.

What gets refused

Three rules do most of the work, and each one exists because breaking it puts something on the clock that cannot be checked.

  1. An offer with a start and no end can never go out of force, so it can never light. Every window ends.
  2. A neighborhood we do not carry is refused rather than invented. Ask and we will add it.
  3. A price, if you give one, is a number. Cheap is never a word here.

A file still goes stale. We re-read yours on the same sweep as every other source, and what we cannot confirm shows on the desk rather than quietly staying up.