FLOORING PLANNER — READABLE PLAN URL GUIDE Planner: https://www.lejnel.com/tools/flooring/ Purpose: turn user-provided measurements into a shareable, bookmarkable plan URL. This imports measurements and settings; the browser calculates suggested cuts. No API key, account, Base64 conversion, or server-side plan storage is needed. HOW TO CREATE THE LINK 1. Gather board dimensions, pack size, room measurements, laying direction, edge preference, cutting-tool kerf and manufacturer installation requirements. 2. Ask for missing information. Do not invent product requirements. Explicitly agreed example settings may be used, but explain them as assumptions. 3. Create JSON matching the example below. Numbers must be finite JSON numbers, with decimal points, not commas or unit suffixes. Booleans are true or false. 4. Serialize JSON compactly, then percent-encode it as a query parameter value (JavaScript encodeURIComponent or Python urllib.parse.quote with safe=''). Encode once. In particular encode &, #, +, %, and Unicode room names. 5. Return a clickable link: https://www.lejnel.com/tools/flooring/?plan=ENCODED_JSON 6. Explain the settings and assumptions; ask the user to open and review the link. Planner validation may reject impossible sizes or installation constraints. EXAMPLE JSON (illustrative settings, not installation advice) { "v": 2, "settings": { "length": 1522, "width": 228, "pack": 6, "gap": 5, "kerf": 0, "minPiece": 250, "stagger": 250, "minWidth": 80 }, "optimize": true, "rooms": [ { "id": "r1", "name": "Living room", "length": 3.25, "width": 6, "direction": "width", "widthMode": "optimized" } ] } EXAMPLE READY-TO-OPEN LINK https://www.lejnel.com/tools/flooring/?plan=%7B%22v%22%3A2%2C%22settings%22%3A%7B%22length%22%3A1522%2C%22width%22%3A228%2C%22pack%22%3A6%2C%22gap%22%3A5%2C%22kerf%22%3A0%2C%22minPiece%22%3A250%2C%22stagger%22%3A250%2C%22minWidth%22%3A80%7D%2C%22optimize%22%3Atrue%2C%22rooms%22%3A%5B%7B%22id%22%3A%22r1%22%2C%22name%22%3A%22Living%20room%22%2C%22length%22%3A3.25%2C%22width%22%3A6%2C%22direction%22%3A%22width%22%2C%22widthMode%22%3A%22optimized%22%7D%5D%7D SCHEMA AND UNITS v: 2. All settings below are required. settings.length: board length in mm, 200–3000. settings.width: board width in mm, 50–600. settings.pack: integer boards per pack, 1–100. settings.gap: gap at EACH outside wall in mm, 0–30. settings.kerf: material removed per cut in mm, 0–10. Board thickness is NOT kerf. settings.minPiece: minimum end-piece length in mm, at least 50 and at most half the board length. settings.stagger: minimum joint stagger in mm, 0 to half the board length. settings.minWidth: minimum edge-row width in mm, at least 10 and at most half the board width. optimize: true to search room order, false to keep the entered order. Compatible offcuts can be shared in either case. rooms: 1–12 rooms, each with: id: unique r1, r2, ... (r followed by 1–6 digits, no leading zero). name: plain text, at most 45 characters. length, width: wall-to-wall dimensions in METRES, 0.3–20 each. direction: "length" for boards running along the length (x axis), or "width" for boards running along the width (y axis). Ask if unknown. widthMode: "optimized" (less waste) or "symmetric" (equal opposite edge rows). Do not add firstRowWidth or use the legacy custom mode. NON-RECTANGULAR ROOMS Add optional sections to that ONE room, not separate rooms. Use v:2. sections: 1–6 rectangles with x, y, length, width, all in METRES. x increases rightwards; y increases downwards in the sketch. Coordinates must refer to a shared origin. Rectangles must not overlap and must be connected along edges, not just at a corner. They represent a union of floor areas. Room length and width must describe the overall bounding box, not the area. An L-shaped example (replace the example room, retaining all board settings): {"id":"r1","name":"Kitchen / hall","length":3,"width":4,"direction":"width","widthMode":"optimized","sections":[{"x":0,"y":0,"length":1,"width":4},{"x":1,"y":0,"length":2,"width":2}]} Dimensions alone do not determine the room shape: ask which edges connect, where they align, or request a sketch. Do not silently invent section offsets. SAVING AND LIMITATIONS The complete URL stores inputs. Bookmark it or copy it to reopen those inputs later or on another device. After edits, save the updated URL for that version. Anyone with the link can see the room names and dimensions; avoid private data. Cuts are recalculated on opening; future planner improvements may change the suggestions. Print a full plan to retain a fixed copy of the cutting instructions. Legacy Base64url plan links remain supported, but new AI links should use JSON. Keep decoded JSON under 16,000 characters. Very large plans may be rejected to keep browser calculations practical. The tool suggests cuts, not a guaranteed mathematical optimum. Users must check measurements and product requirements.