G Gaia

Switch factory

CYTO-11 — Balakong Jaya CTSB CYTO-29 CTSB CYTOWELL-54 — Taming Jaya PIC/S CTWSB CYTOCNGZ-602 — Guangzhou CTCNGZ

Only factories you are granted appear here (Filament tenant menu).

Leo Lim

leo@navi.my · Owner / Admin

Profile settings Change password

Theme

Sign out
RetailSellR&DMakeBuyStockPlanItemsGMPAdminInsights

R&D requests

+ New R&D request

11

Active requests

3

Overdue deadline · deadline passed, not confirmed

2

Stuck (3+ trials) · not converging

5

Confirmed this month · incl. already promoted to BOM

R&D KPI · last 90 days

Avg days in development 18 Avg days awaiting feedback 9 customer clock Avg trials to confirm 3.2 Confirm rate 71%
Owner Confirmed Avg dev days Trials→confirm Downstream SO
Siti Aminah 5 16 2.8 RM 186,400
Lee Wei Ming 3 21 3.7 RM 94,200 · 1 n/a
12 requests · latest 10 shown
Request # Customer Product Raw mats Trial # Design (parallel) Deadline (the only priority) Status Last update PIC

Project Gaia — static mockup in Filament v3 idiom. No backend. Snapshot 2026-04-12. Continuity: RND-2026-00013 / 00007 / 00009 tie to quotes.html (Q-2026-034 / 033 / 031) and formulations F-0013 / F-0010 / F-0007; RND-2026-00011 opens the worked-example detail screen.

R&D requests — field manifest

FieldFilament componentTypeSourceFK target
Request #TextColumn (series RND-{yyyy}-{seq,5})stringstored: rnd_requests.code
CustomerTextColumn::url() → customer cardFKstored: rnd_requests.customer_id — Sales creates the request from the customer conversationcustomers.id
ProductTextColumnstring + enumstored: product_name, product_type (Sachet / Capsule / Gummy / Drink / Tea)
Raw matsTextColumn badgeenumstored: raw_material_status — Existing (all in item master) / Requesting (waiting supplier samples)
Trial #TextColumn (derived)intderived: max(progress_log.trial_no) — auto-increments on each log entry of type Trial. Green ✓ when Confirmed, amber at 3–4, red at 5+rnd_progress_log
DesignTextColumn dot + label (mini-badge)enumstored: design_track — design_status ((none) / Brief sent / Draft vN / Approved) + designer_user_id. Parallel side-track advanced by the designer concurrently — NOT a request status, never blocks the R&D flowusers.id
DeadlineTextColumn date + days chipdatestored: rnd_requests.deadline — the ONLY priority signal (founder decision: no priority field). Green ≥ 14d, amber 1–13d, red OVERDUE
StatusTextColumn badge + Advance-stage Actionenumenum simplified (founder decision): Requested → In development → Sample sent → Confirmed. Sample feedback FAIL loops back to In development (trial # increments). Cancelled = rejected / withdrawn — terminal, any point. Design is a parallel side-track (not a status); costing is a section within development (not a stage)
Last updateTextColumn (derived)relationderived: latest rnd_progress_log entry (text + date) — status changes are auto-logged, so this never goes stalernd_progress_log
PICSelectColumn → usersFKstored: pic_user_id — R&D lead assigns; designer is a separate field on the detailusers.id

Tabs & KPI queries

  • Tabs = Filament table tabs on status with live count badges (All / Requested / In development / Sample sent / Confirmed / Cancelled).
  • Active requests = status ∉ {BOM created, Cancelled}.
  • Overdue deadline = deadline < today AND status ∉ {Confirmed, BOM created, Cancelled}.
  • Stuck = trial_count ≥ 3 AND not Confirmed — flags formulations bouncing without convergence so the R&D lead intervenes.
  • Confirmed this month = status_history transitions into Confirmed in the current month — includes requests already promoted to BOM, hence 5 > the Confirmed tab's 2.

R&D KPI strip (last 90 days) — formulas

  • Two clocks, both from status_history (derived from auto-logged Status entries): internal clock = Σ of In-development durations per request (loops after a feedback FAIL included); feedback clock = Σ of Sample-sent durations — the customer clock, tracked separately so waiting on the customer is never counted against R&D.
  • Avg days in development = mean(internal clock) over requests active/closed in the window.
  • Avg days awaiting feedback = mean(feedback clock) — customer clock, reported separately (not R&D's fault).
  • Avg trials to confirm = mean(max trial_no) over requests confirmed in the window.
  • Confirm rate = Confirmed ÷ (Confirmed + Cancelled) among requests closed in the window.
  • Downstream SO value = request → BOM (bom.rnd_request_id) → first SO on that product for the customer; shown where known, "n/a" while no SO exists yet. Per-owner rows group by pic_user_id.

Engine notes

  • Customer-request-driven OEM pipeline: Sales/CRM creates the request (Requested, customer-tagged); everything R&D does — sourcing, trials, costing — happens inside In development as progress-log entries (logged, not stock-tracked); Sample sent awaits the customer; Confirmed unlocks Create BOM.
  • Design runs as a parallel side-track (Brief sent → Draft vN → Approved) advanced by the designer — it never blocks the R&D status.
  • Deadline is the whole prioritisation model — the list default-sorts by deadline ascending.