Staging status — Stages 1–4 + materials catalogue
Independent project and database. RELEASE NO-GO: publication is currently PUBLIC; owner restriction or unpublish is required. Not launch-ready. All orders, quotes, payments and deliveries are DEMO records.
Worldwide enquiries & official contact
- Worldwide country/territory selection and country-code phone validation; overseas purchaser remains separate from a named Sierra Leone recipient. Delivery and services require individually confirmed Sierra Leone zones, not worldwide shipping.
- Official WhatsApp +23288786725 used in footer, enquiry and recruitment links. Four public routes' destinations and phone enquiry layout verified; country/recipient payload checked with an intercepted request, not a saved enquiry.
- Worldwide page titles/descriptions updated. Staging noindex remains deliberately enabled; search-engine discovery activation requires release approval. No ranking or indexing claim.
- 52 automated tests passed; 12 password-dependent integrations remain blocked. Signed-in checkout and real enquiry read-back were not tested this round.
- Factory base-price source code located, not current approved records. Approved ten-SKU export and embedded-delivery disclosure required; no base prices imported or published.
Approved block delivery rule v1
- SLE 3 per purchased block across ten 4/5/6/8/9-inch solid/hollow SKUs, effective 6 November 2026, flat regardless of zone. Other materials/services not charged. Delivery coverage still requires confirmation.
- Separate per-SKU delivery breakdown on cart/checkout and quote; saved immutable rule and approval snapshots; exact approved revision accepted by customer. Base prices stay on quotation. Issued invoices remain unbuilt; staff editor shows invoice proposal total only.
- Delivery goes once to category T. Partial payments do not recalculate fees; returns/cancellations use separate approved adjustments, no automatic refund or historical rewrite. Additional transport needs manager-approved quotation and customer acceptance.
- 61 automated tests passed, 12 password-dependent tests blocked; 15 rollback database assertions passed for fee, revisions, partial payments and refunds. Phone cart: 100 blocks → SLE300 verified. Signed-in quotation and Accounts browser checks remain blocked.
Stage 2 — works now
- Quotation list (cart): add, change and remove quantities; kept on the device for guests and saved to the account after sign-in.
- Request formal quotation with unique reference, site recipient, address, directions, instructions, optional contact, notes, and separate overseas payer.
- Customer project page: items, progress timeline, quote, payment status and balance, files, delivery code and proof of delivery.
- Sales prepares editable quote lines with transport and taxes shown separately; a different manager approves; customer accepts the exact version.
- Approved quote versions are locked; changes create a new version.
- Payment instructions appear only after acceptance, and only for channels the CEO has switched on (fake DEMO channel).
- Payment evidence upload is labelled 'submitted / awaiting Accounts verification' and never marks paid.
- Accounts Officer records receipt reference, amount, date, method and reconciliation note; duplicate references and over-payment are refused; part payments show the balance.
- Manager authorises dispatch only after full verified payment; dispatch records loading and proof of delivery with recipient name, typed signature, customer's delivery code and optional photos.
- Supplier purchase order drafts for partner-sourced items, approved by a different person — no live supplier link.
- Every step is checked by the database and written to a permanent audit trail.
Stage 1 — works
- Homepage, materials catalogue with search and category/sourcing filters, product pages (sample data).
- Sourcing labels describe sample divisions only; stock and partner availability are unconfirmed. No prices or live stock shown.
- Block estimator: house/room/fence, floors, size prompts, optional dimensions and openings, transparent assumptions; no number without measurements.
- Enquiry, quote, estimate-review and Build at Home requests saved to the database (with named site recipient).
- Consent-aware campaign attribution (UTM saved only when the visitor ticks consent).
- Sign in / sign up; dashboard with role-scoped enquiry list, status updates and audit log (permissions enforced in the database).
Mocked / not yet built (next stages)
- WhatsApp click-to-chat uses the official number; no messages or automated notifications are sent.
- Payments are fake: no real collection, bank or mobile-money connection. Official receipts are DEMO records, not tax documents.
- No Factory inventory deduction — a Factory stock bridge needs separate CEO approval.
- Supplier POs are not sent anywhere; delivery code is shown on screen (no SMS).
- Drawn signatures, email/SMS notifications, PDF quote/receipt documents.
- Marketplace: in-platform messaging and consent-based contact sharing, job progress photos, refund/cancellation rules (policy pending), real payouts.
- Editable SEO landing pages, UK/US/EU pages, additional dedicated UK/US/EU pages. CEO, Sales, Manager and Accounts screens already exist.
Materials catalogue & vendor price control (works now, DEMO)
- 97 SAMPLE products / 161 size variants from the CEO's inventory list plus common Sierra Leone materials; flagship 4–9 inch blocks kept. ZERO approved prices; handwritten prices were not imported.
- Public catalogue: category, type and sourcing filters, search across names, types and SKUs; product pages list sizes, SKU and sold-per unit (bag, piece, length, kg, tonne, cubic metre…). Default 'Price on quotation' and 'Availability to be confirmed'; specifications marked UNVERIFIED.
- Items needing clarification are flagged: 'goat-head tools' and 'concrete plastic accessories'.
- Synthetic/illustrated product images and the generated homepage block image removed. All 97 products (including ten 4/5/6/8/9-inch solid/hollow blocks) await exact approved photographs: 'Actual product photo coming soon'. Zero exact SKU photos verified so far.
- Staff Materials & vendors (/materials): add/edit/archive products and variants, SEO fields, reorder threshold; every change audited with who and what.
- CSV bulk import with template, preview, validation, duplicate-SKU checks; price columns refused; imports arrive as hidden drafts.
- Private vendors, vendor quotes with cost, expiry, source document and negotiation notes (Sales/Manager/CEO enter; Accounts can view).
- Two-stage prices: Sales proposes; a different Manager/CEO approves. Rejects zero/negative prices, unit mismatches, overlapping periods and expired vendor quotes. Approved prices locked; withdraw takes effect immediately. Public sees only approved, in-date price, unit, SLE, validity, location and tax/delivery exclusions — never cost, vendor or margin.
- Photos (/materials → Photos): camera/file upload, gallery, rotation, optional 3:2 crop (off by default), compression, alt text, source, creator, licence/permission, attribution, exact active SKU mapping. Genuine-photo and matching confirmations required. Independent reviewer must record licence/SKU checks before approval; cover selection and audited revocation.
- 12 Commons photographs downloaded and hosted with individual licences, attribution, original SHA-256 and visual QA records; available only as staff review references, not assigned to products. Solid/hollow/size/brand matches remain unconfirmed. Cement/roof tile/heritage door/distant gravel/wall-tile sources rejected for product display. BY-SA adaptations retain their photo licence; no source is represented as IBNET stock.
- Photo QA: 47 automated checks passed; 12 password-dependent integration checks blocked. Public mobile catalogue and quotation-list checks passed without browser errors. Source manifest and database guard/grant checks recorded in docs/product-photography-qa.md. Signed-in camera upload/reviewer browser checks remain blocked: DEMO_PASSWORD unavailable and no managed session for the requesting account. Sign in in preview for staff UAT; supply the demo test secret privately for full regression.
- Real checkout/payment remains disabled.
Stage 3 — works now (DEMO)
- Build at Home workspace (/projects): milestones, planned vs delivered materials, approved site photos, proof of delivery, balances separating verified payments from unverified uploads, site-contact grant/revoke with billing consent, deletion request. Retention 6 years is PROPOSED pending legal review; no automatic deletion.
- CEO dashboard (/dashboard/ceo), Manager oversight (/dashboard/manager) and Sales leads (/dashboard/sales), each with registration activity (counts and queue only — no applicant contact, address, ID or references).
- Least privilege: Accounts sees only payment-stage orders; Dispatch only authorised deliveries; neither sees enquiries or projects. Order details now use role-redacted reads: Accounts has no recipient, payer or address; Dispatch has delivery information only, without payer or recipient phone. Raw private-column reads are denied.
- Sales staff see only enquiries assigned to them; managers and CEO see all and can assign.
Unified Accounts ledger — works now (DEMO, /dashboard/accounts)
- Category-coded immutable allocation lines: A IBNET blocks (Factory division, NOT synchronised with official Factory books), B other materials (Build Mart Materials), C services, T transport & taxes (pass-through).
- Each verified receipt must be split so parts equal the receipt; per-category caps prevent over-allocation and double counting.
- Separate figures: quote value, verified collections, unverified uploads (excluded), approved refunds, outstanding, vendor liabilities; indicative margin is CEO-only. Invoicing not built.
- Refunds/adjustments: Accounts requests, CEO/Manager (not the requester) approves; exception queue; DEMO-watermarked CSV export logged to audit.
- Not built: live Factory/Management Hub bridge (design only), real supplier payments.
Branding + installable app (staging)
- Navy / orange / green / blue palette sampled from the supplied official PNG and applied site-wide.
- Supplied official logo appears in header and footer. CEO can upload a replacement at /branding (PNG/WEBP, max 5 MB, audited).
- App icons (192, 512, maskable), Apple touch icon and favicon use the exact supplied logo, padded without stretching. Source is 368 × 170 pixels; higher resolution is preferable.
- Manifest, install button (Android/desktop), iPhone Add to Home Screen guide at /install, update notice.
- Service worker caches only static files and allowlisted public pages; never accounts, orders, payments, documents, dashboards or backend responses. Never runs in the editor preview, so install/offline is UNTESTED on real Android/Windows/iOS devices; preview registration was verified disabled.
- Not a native APK or App Store app. No offline payments or transactions. No email templates exist yet to rebrand.
Test results (this round)
- Latest automated suite: 47 passed, 12 password-dependent integrations skipped and explicitly BLOCKED. No approved sign-in session or DEMO_PASSWORD is available.
- Latest rollback database exercise: 36 assertions, 35 passed initially; the apparent quote-mutation failure was a test assumption (UPDATE affected zero rows). Recheck confirmed total and status unchanged. Additional recheck: 10 passed, one overbroad test failed because approved published portfolio photos are intentionally public; private applicant documents remain reviewer/owner-only. These are not authenticated browser UAT.
- Rollback-only database Stage 2 regression completed this sprint: order → quote → manager approval → exact-version acceptance → evidence (not paid) → Accounts part/full verification with duplicate reference refused → manager dispatch → delivery code → delivered.
- Browser-based signed-in tests are BLOCKED: they need the DEMO_PASSWORD secret, which has not been added.
Stage 4 — workers & professionals marketplace (works now, DEMO)
- Find workers page with search by trade, location, availability, individual/team, and Help Me Choose.
- Public profiles show only safe details; identity, trade-experience and licence checks shown separately and only when staff record them. Indicative rates hidden until IBNET approves.
- Provider workspace: onboarding with private phone/email/address/ID, trades, service areas, experience, availability, job types, rate, certificates, licences, references and portfolio uploads.
- Manager verification (cannot verify own profile) and CEO-only publication.
- Customer job request (optionally for a chosen provider), staff matching/invite, provider quote (fixed, day rate, project, team) with separate transport/materials/taxes, manager approval, customer accepts exact version.
- Assignment blocked until quote accepted AND full Accounts-verified payment; duplicate receipt references refused; precise address shared only after assignment; customer contact never shared.
- Progress updates, completion report, customer confirmation, disputes (refund outcomes disabled pending policy), cancellation only before verified payment, moderated feedback.
- Per-provider CEO fee agreements: IBNET-managed split (default proposal 50/50) applies only to professional service fees; independent trades get no split unless a referral fee is agreed.
- Settlement ledger separating receipts, managed fees, referral fees, worker payables, materials revenue, transport and taxes; Accounts requests payout, CEO approves (DEMO — no funds move).
Registration portal (works now, DEMO)
- Public page /professionals/register linked from the home page and the Find workers page. Free to apply.
- Applicant portal /work (sign-in required): application reference, save draft and resume, submit, live status, respond to information requests, update profile, team members for crews/contractors, publish/unpublish once approved, withdraw, request deletion, appeal a rejection or suspension.
- Required vs optional fields marked; consent to privacy notice required; uploads limited to JPG/PNG/WEBP/PDF up to 10 MB in a private store; ID upload only possible after a reviewer asks for it.
- Staff queue: start review, request info (optionally allowing ID upload), evidence checklist (identity separate from experience, references, licence), duplicate phone/email flag that must be cleared, reject with reason, suspend, immutable history.
- Manager recommends → CEO final approval (the recommender can't approve) → applicant consents to publish. Only published profiles appear in the directory or can be requested or matched.
- No email or SMS: no sending domain is configured, so updates show in the portal only.
UAT checklist — registration
- Sign up as a new test user, open /professionals/register → Start application. Save a draft, reload, confirm it resumes with the APP- reference.
- Try uploading a .txt or a file over 10 MB — refused. Confirm there is no ID upload option yet.
- Submit. Manager: Staff → Workers marketplace → Start review → Request more info with 'allow ID upload'. Applicant: respond, upload ID, resubmit.
- Manager: try Recommend without ticking identity — refused. Tick identity and recommend. CEO: give final approval. Confirm a manager account cannot.
- Applicant: publish; confirm the profile appears on Find workers without phone/email. Unpublish; confirm it disappears.
- Apply again with the same phone from another account — the application shows a possible-duplicate flag.
- Reject an application; the applicant sees the reason and can appeal.
UAT checklist — Stage 4
- Public: open Find workers, tick 'Build walls' in Help Me Choose, pick Mason; open the DEMO mason profile; confirm no phone/email shown.
- Customer: request the DEMO mason; Sales/Manager: in Staff → Workers marketplace open the job, invite, enter a quote; Manager approves (sales cannot).
- Customer: accept version; confirm job says 'payment needed before assignment'; Manager: confirm no Assign button.
- Customer: submit DEMO payment; Accounts: verify; try the same receipt reference again — refused. Manager: assign.
- Manager posts progress and completion; customer confirms; Staff ledger shows separate lines; Accounts requests payout, CEO approves (demo).
- CEO: record an IBNET-managed agreement on a tradesperson — refused (professionals only). QS DEMO job shows 50/50 split of service fee only.
- Customer 2: confirm customer 1's jobs cannot be opened.
UAT checklist — earlier stages
- Search '6-inch' in Materials and filter by the sample blocks division.
- Open a block product and press Request a quote — confirm the form pre-fills.
- Estimator: choose House + Medium with no measurements → confirm no number is shown.
- Estimator: Fence, 10m length, 2m height, 6-inch → confirm range 240–250 and assumptions list.
- Submit an enquiry and a Build at Home request; confirm the thank-you message.
- Sign in as a staff test user and confirm both requests appear; change a status.
- Sign in as a user with no role and confirm other people's enquiries are hidden.
- Customer: add 6-inch blocks to the list, change quantity, remove an item, request formal quotation; note the IBM-DEMO reference.
- Sales: open the order in Staff workspace, enter DEMO prices plus transport, save and submit. Confirm sales cannot approve.
- Manager: approve. Confirm the customer now sees version 1 and no payment instructions until they accept.
- Customer: accept, upload sample evidence; confirm status reads 'awaiting Accounts verification' and balance is unchanged.
- Manager: confirm there is no Authorise dispatch button yet.
- Accounts: verify a part amount (balance shown), then try the same receipt reference again — it must be refused.
- Accounts: verify the remainder. Manager: authorise dispatch. Customer: note the delivery code.
- Dispatch: mark dispatched, try a wrong code (refused), then the right code with a photo. Customer sees proof of delivery.
- Second customer: confirm the first customer's order cannot be opened.
Demo login guidance
- DEMO accounts exist for each role: demo-ceo, demo-manager, demo-sales, demo-accounts, demo-dispatch, demo-customer and demo-customer2, all @ibnet-buildmart-demo.test. No password is shown or available to this test run. CEO must add the existing DEMO account password as DEMO_PASSWORD in Project Settings → Secrets, then request a rerun. Do not paste it into chat.
- New accounts can sign up normally; staff roles are granted only by the build team or the CEO, never self-assigned.
Launch blockers
- CEO approval for publishing, domain shop.ibnetsl.com, and any payment method.
- Higher-resolution official logo, WhatsApp number, real product photography, approved prices and confirmed stock process.
- Legal review: terms, privacy policy, professional agreements, tax handling.
- Remaining stages built and UAT signed off.
Estimated recurring costs (indicative)
- Hosting + database: included in the Lovable plan at low traffic; usage-based above that.
- Custom domain: around US$10–20 per year.
- Email sending and WhatsApp Business API: usage-based, only if enabled later.
