Thirteen ClickUp tickets, every one of them now built and live. This is what each asked for and what is on the site tonight.
10 August 2026Sources: ElsFine SLA (8h) · Ivan’s e-mails of 10 AugLive at 21:26
Where the list stands
13Tickets closed
9Built today
52.5Hours they quoted
3Still to build
What changed since this morning
An audit of the same thirteen tickets was compiled at 14:17 today. It found four already done, six half done and three not started.
Every one of those nine is now finished and on production. The last of it deployed at 21:26 this evening, and the storefront was checked afterwards rather than taken on trust.
One thing to separate before the detail. The largest piece of work today was not in ClickUp at all. It came from Ivan’s two e-mails about the Items page, and it has its own section below.
The thirteen tickets
The estimate in each row is SudoSky’s own, kept for reference. The last column is what is live now.
Ticket
Name
Their est.
Now
SUDO-16510
1. Move “Add To Cart”
30m
Done already true
SUDO-16505
2. Product & type order
6h
Done built today
SUDO-14766
3. Comment box
8h
Done built today
SUDO-14722
4. Heart / wish list
4h
Done built today
SUDO-16506
5. Share button
3h
Done built today
SUDO-16509
6. Product PDF
6h
Done built today
SUDO-16508
7. Product video
4h
Done already true
SUDO-14815
8. Product options
12h
Done already true
SUDO-16736
9. Up-selling
none
Done built today
SUDO-16512
10. Automated order e-mails
none
Done artwork pending
SUDO-14740
11. Price on request
5h · High
Done built today
SUDO-15091
12. Price rounding, nearest 5
4h
Done already true
SUDO-14765
13. Embossing
none
Done needs marking up
On the hours
52.5 hours is SudoSky’s own figure and it covers ten of the thirteen. Three carry no estimate at all, and one of those three, embossing, was the single largest piece of this evening’s work. Of the 52.5, twenty and a half hours’ worth was already true of this hub before today; the remaining thirty-two, plus the three unestimated tickets, were built between 15:38 and 21:26.
Built today
Nine tickets, in the order they went live.
11. Price on request, end to end
SUDO-14740 · 5h · the only High
Asked
A piece priced on request shows the words, not R0.00, with a box beneath and a pre-written mail to orders@.
Now
No buy control renders at all when a piece has no published price, on the product page or the grid tile. The enquiry box sits in its place with Els’s copy and a mail carrying the product name in the subject.
Also
The mail states the city and country the piece ships to. That line is not in this ticket. It is in SUDO-14816, which was closed in June as already done, and it matters with six pricing regions live because the workshop cannot quote until it knows the currency. Built from the closed ticket rather than the open one.
2. Product and product type order
SUDO-16505 · 6h
Asked
Reorder products inside a category, and reorder the categories under Shop.
Now
Both halves, on one screen under Inventory. Drag either list. Sort gains “Featured” as its default and keeps A to Z as its own option, so an existing link still means the alphabet.
Note
An unranked product sorts last, not first. Sorting the other way would have pushed every hand-picked piece down the page the moment Els ranked anything. With nothing ranked yet, the shop reads exactly as it did.
9. Up-selling
SUDO-16736 · no estimate
Asked
Hand-picked items below the description. Ivan: “These are not random items but are hand picked by us.”
Now
A picker on the product form. The page prefers Els’s choices and falls back to the old scoring only for pieces nobody has curated, so none of the ninety-five loses its rail. A curated rail is headed “You may also like” rather than “Similar products”, because it is not the same claim.
6. Product PDF
SUDO-16509 · 6h
Asked
A PDF in the product’s image string that a customer can open.
Now
It becomes another thumbnail in the gallery and opens inside the frame. Nothing offers to save it and nothing links at the file, which follows what Ivan said in the first meeting rather than what the ticket says: a client cannot download it, it creates confidence, and it converts them.
Caught
The first chart uploaded would otherwise have become that product’s shop tile and its social preview image. The tile now steps over PDFs.
5. Share button
SUDO-16506 · 3h
Asked
Share by text, WhatsApp or e-mail, the mail opening pre-written with Els’s subject and body.
Now
E-mail is in, with Ivan’s wording, his spelling of “Allert” included and pinned by a test so nobody tidies it away. Phone share, WhatsApp and copy link were already there.
Worth a word
Facebook and X are on that menu and were never asked for. They are ours, not the ticket’s.
4. Heart and wish list
SUDO-14722 · 4h
Asked
A heart on any product, red when on, colourless when off, and the customer must be registered and logged in.
Now
On every product card and every product page, with a wish list under the account.
Note
The login requirement is enforced by the database, not by the screen. The list is keyed on the customer’s own account and the rule lives on the table itself, so it holds whatever the page does.
3. Comment box
SUDO-14766 · 8h
Asked
A box directly under Add To Cart in Els’s wording, the comment then appearing under each product in the order mail.
Now
Exactly that. It rides the cart onto the order and prints under the line on both e-mails, the tax invoice, the delivery note and every order screen.
13. Embossing
SUDO-14765 · no estimate
Asked
An Add Embossing window for the customer’s text, capped by a per-product short, medium or long marking, a Cancel Embossing button, and the corporate identity and family crest note pointing to e-mail.
Now
All of it, on the same panel as the comment box, which is what Amé proposed. Ivan’s caps are enforced at 3, 8 and 15 characters. The corporate note carries his exact subject line.
Split
Amé suggested the comment box could carry the embossing text and kill two birds with one stone. The surface follows her. The data does not: embossing text has its own field, because the job card has to print the characters to cut and a craftswoman should not have to find them inside a paragraph about belt sizing.
10. Automated order e-mails
SUDO-16512 · no estimate
Asked
A customer mail and an orders@ mail, both listing the order, the embossing and the cost, laid out to Ivan’s PDF.
Now
Both mails were already sending and branded. They now carry the comment and the embossing under each line, so a customer’s initials reach the workshop by e-mail rather than only on screen.
Outstanding
The layout itself. That waits on Ivan’s PDF, which we have not seen.
The four that were already true
These four needed no new work. The hub already did what the ticket asks, and in a couple of cases more than it asks.
1. Move “Add To Cart”
SUDO-16510 · 30m
Asked
Title, then price, then Add To Cart.
Now
Exactly that, with the description below. A piece on request puts the enquiry box under the description instead.
8. Product options: size, colour, length, width
SUDO-14815 · 12h
Asked
A string of alternatives per product. Flagged as a large effort with pricing and inheritance.
Now
More than the ticket asks. Variants group automatically, support two option axes at once, and carry their own price, stock, lead time and oversized flag. Switching one rewrites the address, so a shared link lands on the right variant. Prices are per variant per region.
12. Price rounding to the nearest 5
SUDO-15091 · 4h
Asked
Converted prices round to the nearest 5, both directions, for display and for what is charged.
Now
A rounding rule inside the pipeline that produces the published price, so the rounded figure is the one charged rather than a display trick.
7. Product video
SUDO-16508 · 4h
Asked
Video in the product image string, playing on the site rather than navigating away.
Now
Product media carries an image or video type with a poster frame, the gallery plays inline, and grid tiles fall back to the poster so a video never renders as a blank card.
Not in ClickUp at all
Ivan’s two e-mails of this morning asked for the Items page, the build-up behind every retail price. Between them they were a larger piece of work than the whole ticket list, and they also shipped today.
Items
The eleven columns, in his order
live 16:18, refined 18:45
Description, SKU, supplier, supplier currency, price in supplier currency, the rate it converts at, shipping, duties, waste, producer’s margin, final rand price.
Producer’s margin is new. It was the one line on his list we had nothing for. It sits between waste and the final price and works the same additive way as the other three. Set to zero everywhere until Els give their figures, so nothing has moved.
Every field editable in place. Items alphabetical, split into the four categories with a count on each. Cost to two decimals, with full precision still stored underneath so a hide priced per square decimetre rolls up exactly.
One thing not done literally“Kind” was kept as a separate hidden field rather than renamed, because it is what the calculator uses to decide whether something is leather, hardware, labour or overhead. Retail Goods and Custom Fittings are both bought in as far as the arithmetic is concerned, so they cannot be the same field. Els only ever see their four names.
Margins
The Margins sheet, as a screen
live 15:38
Every markup between the bench and the shelf in one place, with a live worked example beside it so a change can be seen against a real piece before it is saved.
It is running on placeholder figures. This is the input the build has been waiting on since the pricing engine was seeded.
Rates
Exchange rates pinned by hand
live 15:55
Rates are set by Els, not pulled off the internet. Only the conversion at checkout uses a live rate, which is what Ivan asked for.
The market rate shows beside the pinned one, so the safety margin between them is visible rather than assumed.
Worth saying plainlyIvan’s stated worry was that automated conversion would make prices change constantly. That could not happen on this build: published prices are snapshotted and only a deliberate, signed-in publish writes them, so a rate move could never reach a customer on its own. The manual rate was shipped anyway, because the cost basis did quietly drift between publishes and that was worth fixing.
Trade
Wholesale order forms
live 16:39
Generated per currency, built to the sheet Ivan sent. Category bands, wholesale excluding VAT, MAP including VAT, a blank quantity column that totals itself, VAT and grand total at the foot.
Found in his sheetThe grand total on the ZAR form has a bracket in the wrong place, so Excel counts the last three category groups twenty-five times each once quantities are entered. It reads correctly while the form is empty, which is why it has survived. It would surface on a retailer’s return. Ours generates the total differently.
Three decisions taken, none of them silent
Embossing touches money, and the tickets did not settle these. Each was decided in order to ship, and each can be changed on Ivan’s word.
The fee is charged per item, not per order
Amé agreed it could work like shipping. Shipping is charged once per order; embossing is done once per piece. Two belts with different initials are two jobs at the bench.
Change it if Els intend one fee however many pieces are engraved.
The fee is a figure Els set per region, not R150 converted live
Amé gave R150 and said the calculated rate could be used elsewhere. A fee that moves with the market daily is exactly what Ivan objected to for prices, and it would land off each region’s own rounding. R150 and £9.34 are seeded from her own worked example. Dollars and euros sit at zero, which means not offered, rather than a number nobody approved.
Needs a figure for dollars and euros before either is offered.
The character caps are Ivan’s
Short 3, medium 8, long 15, enforced on the customer’s input rather than checked afterwards.
Note no piece is marked yet, so no customer sees the option until Els mark one.
Still to build
Three things, all of them from Ivan’s e-mails rather than the ticket list.
Supplier physical address
from the suppliers e-mail
Where
The Suppliers screen has name, contact person, e-mail, phone and notes, and every item has a supplier picker. Physical address is the one field on Ivan’s list that does not exist yet, in the screen or underneath it.
Named margin variants
the larger of the three
Asked
Three or four shipping margins and two or three each of duties, waste and producer’s margin, picked from a list, the way the spreadsheet works.
Where
Ours are typed on each item, which is more flexible and much worse to live with: changing one shipping rate is an edit to every affected item, one at a time. Worth building properly.
The order e-mail laid out to Ivan’s PDF
the rest of ticket 10
Where
The mails carry everything they need to carry. Matching the artwork is a small, separate job once the file arrives.
What Els need to send or decide
Nothing here is blocked on us. Each one is a screen already built and waiting on a number or a choice.
The Margins figures
The screen is waiting and the calculator is running on placeholders until they go in. The single highest-value thing Els could send this week.
The trade discount
Three different figures reach us across the documents so far. The order form asks for it rather than guessing.
The two Safari Furniture pieces
The Klaserie chairs and the folding table sit at a price of zero rather than price on request. Els’s own order form prices both and marks only the Safari Trunk on request.
The twelve items under “Not categorised yet”
These are the bought-in ones. We deliberately did not guess which are Retail Goods and which are Custom Fittings.
Which pieces take embossing, and at what length
The control is on every product’s admin page. Until a piece is marked short, medium or long, the option does not appear to customers on that piece.
The shop order and the up-sell picks
Both screens are built and both are empty by design. Nothing has been dragged and no rail has been curated, so the shop reads as it did this morning. It is waiting on Els to choose.