Decisions (ADR)
Who is this for
Section titled “Who is this for”Developers and the owner. Read the matching record before changing behaviour that looks odd — most of the odd parts are there for a reason that cost money or an evening to learn.
- Sixteen records. Each has the same shape: context, decision, alternatives considered, consequences, evidence.
- Records 1–6 are the product’s hard rules. Breaking one is a product decision.
- Records 7–11 explain the generation and delivery design; 12–13 the leads module; 14–16 the infrastructure and the landing page.
- The records were reconstructed on 2026-11-13 from
CLAUDE.md,HANDOFF.md,docs/RISKS.md,docs/LEADS_TZ.mdandgit log. They describe decisions already made; new decisions get a new numbered page.
The records
Section titled “The records”| # | Decision | Status |
|---|---|---|
| 001 | Two AI providers behind configuration | Accepted; fallback has no key yet |
| 002 | SQLite as the only database | Accepted for one station |
| 003 | The kiosk never waits for generation | Accepted |
| 004 | Consent in the bot, outfit choice on the tablet | Accepted |
| 005 | Photos live at most 72 hours; metadata only in the database | Accepted |
| 006 | One pack per Telegram account | Accepted |
| 007 | AI draws figures, code cuts and finishes them | Accepted |
| 008 | Consistency and likeness as switchable modes | Accepted as flags; default still open |
| 009 | Three sheets of four figures, at 2K | Accepted |
| 010 | Verified delivery; pack names never reused | Accepted |
| 011 | Cost guard rails | Accepted |
| 012 | Leads stored on our server, published through an outbox | Accepted |
| 013 | Shared requests group, product prefix, isolated guest flow | Accepted |
| 014 | No Docker: systemd, Caddy, git-archive deploy | Accepted |
| 015 | One polling bot process with a lock | Accepted for one station |
| 016 | Separate, lightweight landing page with scripted checks | Accepted |
How decisions relate
Section titled “How decisions relate”flowchart TD A3["003 Kiosk never waits"] --> A15["015 One bot process with worker"] A3 --> A10["010 Verified delivery"] A4["004 Consent in bot"] --> A5["005 Photo TTL"] A6["006 One pack per account"] --> A10 A1["001 Two providers"] --> A11["011 Cost guard rails"] A7["007 Figure mode"] --> A8["008 Consistency and likeness"] A8 --> A9["009 Layout 3x4 at 2K"] A9 --> A11 A2["002 SQLite"] --> A12["012 Leads outbox"] A15 --> A12 A12 --> A13["013 Prefix and isolation"] A14["014 systemd and Caddy"] --> A15 A16["016 Separate landing"] --> A12
Adding a record
Section titled “Adding a record”- Copy the shape of an existing page; use the next number.
- State the context as the problem that existed before the decision.
- List at least one real alternative and why it lost.
- Link the code, test or report that proves the decision is implemented.
- Add the row to the table above.
Where to go next
Section titled “Where to go next”- How to read the architecture section.
- Open decisions — choices not made yet.
- Code rules — the hard rules as a checklist.
Last verified: 2026-11-13 against ai-sticker-pack@b715418 and ai-stickers-landing@e350ff5.