A Chinese-Indonesian dentist at work in a modern operatory — the operation Flash Dental serves
Forward Deployed Engineering · Case Study · Reydi Sutandang

Turn Years of Documents
into Decisions

Operations → Boardroom

Flash Dental's scattered after-sales records → a measured, C-suite-steerable cockpit — in weeks, at minimal cost, on their real data.

Flash Dental a real operation — Flash Dental after-sales
Panel · Hardik & Mohit Google Cloud–native Live demo inside →
The roadmap

Five acts, operation to boardroom

I

The Problem

The operation today, on their real data — the maintenance cycle, the quantified cost, and why it's stayed broken.

II

The Vision

One engine, three layers — and where AI should automate, augment, or stay out of the way.

III

The Architecture

How the mess becomes signal — GCP-native, and right-sized to the scale, not over-built.

IV

The Product

The cockpit on desk and phone, one record → two truths, and the copilot running live.

V

The Plan

v1 in a week or two, the trade-offs, and the ask.

Why this operation

The brief said "a process you know well." I built theirs.

Three reasons this is my case study — the exact three the brief asked for.

Worked with it

I built their ticketing system

I've been building Flash Dental's service-ticketing — which put me inside their after-sales operation, on the very documents you'll see next.

Ripe for it

Real mess, real money

Capital equipment, an archipelago, run on hand-typed sheets and WhatsApp. The friction is real and the leak is measurable — I've watched it happen.

Newly possible

What I'd explore next

The mess is exactly what modern document-AI is finally good at. This isn't the ticketing tool I built — it's how I'd modernize the whole process with AI.

A dentist in her operatory — the clinician whose treatment room goes offline when a Flash unit fails Who's on the other end — a clinician whose room goes dark when a unit is down. The operation runs for her uptime.
01 Flash Dental

The operation I know

Flash Dental sells and rents dental equipment across Indonesia, then services it for years. I've been building their ticketing system — so I know this operation from the inside; this case study runs on their real data.

Capital gear — sold or rentedDental units, sterilizers, compressors, imaging (Esay, DTE, Kuraray) — bought or rented from Flash's own fleet, its gear to track & service.
Nationwide, few handsJakarta to Ketapang, Tarakan, Medan — a lean field team (Yudi, Dedi, Febri, Arga…) covering the whole archipelago.
A lifecycle, not just repairsInstall → scheduled maintenance → breakdown service → survey → training; on-site and remote.
After-sales is the relationshipA unit down = a treatment room offline. Parts, speed, reliability are the recurring, high-margin business.
A Flash Dental technician servicing a dental chair unit on-siteA Flash technician on-site — the after-sales work that keeps a chair running
Medan Ketapang Surabaya Denpasar Tarakan Makassar Jakarta · HQ
West to east, one archipelago — a lean field team flies to the rest.
02

It's not a day — it's a cycle

A clinic reports a fault; the fix is rarely same-day. The unit waits — often days to weeks — while a spare part is checked, ordered, and shipped across the archipelago.

ClinicReport a fault
→
CoordinatorTriage & log
→
The waitCheck stock → order → ship part
→
DispatchAssign & travel
→
TechnicianOn-site fix
↻
ThenNext scheduled PM
7–8 days
avg · up to 17
Report-to-service gap, computed from their June log. Often it's a spare-part stockout — "check the warehouse first… cannibalize a hose from a new kit." That wait is inherent — not the problem I'm solving. The problem is that for those weeks, the whole operation is blind: is the part ordered? did it ship? is a scheduled maintenance now overdue? Nobody can see it.
03

It runs on hand-typed spreadsheets

Their real service log — a sample of the actual rows (translated from Bahasa). Machines, jobs and technicians all tracked by hand in Google Sheets, and the mess is right in the cells.

Doctor / ClinicCityReportedServicedGapSerialSpare partStatusTechnician
Dr. Lidya PBanjarbaru10 Jun27 Jun17 daysEX92026030251OtherDoneYudi
Dr. IffahSouth Jakarta19 Jun29 Jun10 daysEX92026030239Hose — out of stockDoneDedi
Dr. AnnisaTanjung Pinang15 Jun23 Jun8 daysTEALTH 2303PL-M4HandpieceDoneYudi
Dr. ZeddinTarakan19 Jun26 Jun7 daysEX92026030250FootcoverDoneYudi
Dr. RirisKetapang03 Jun11 Jun8 daysEX92026030188Suction motorDoneFebri
Dr. BillyKarawang21 Jun24 Jun3 daysEX92026030204Compressor filterDoneArga
RS FatmawatiSouth Jakarta24 Jun—6 days & countingEX92026030133Water hose — stockoutWaiting partDedi
Dr. CeciliaPIK Jakarta27 Jun28 Jun1 dayEX92026030176HandpieceDoneArman
Dr. KartiniSurabaya08 Jun20 Jun12 daysEX92026030090Panoramic adaptor — backorderDoneYudi
Dr. Andi IskandarNunukan—PM ~1 yr late—SI.2025.04.00016—Open—
Scattered — warranty lives in a second sheet, keyed to a sales-invoice number.
Blind — the technician arrives with no history; "3rd failure" is invisible.
Manual — "Gap" and every KPI is eyeballed at month-end, if ever.
Errors ship — one row's warranty ends before its purchase date. Nobody caught it.
04

What the mess costs Flash — every year

Modeled conservatively from their logs, in USD for scale (≈ Rp 16,000 / $1). This is Flash's loss — not the clinic's downtime — and their brief admits none of it is measured today.

$27kRp ~430M / yr
Idle & mis-routed technicians — paid while waiting on a spare part or sitting between hand-assigned jobs. ~5,800 idle hours a year.≈ 1,400 billable visits never made
$22kRp ~350M / yr
Missed preventive maintenance — due every 6 months with no automatic reminder, so it slips. Lost billable PM, and units fail more under warranty.PM columns mostly blank
$18kRp ~290M / yr
Warranty leakage, both ways — guessed from a separate sheet: honor an expired claim (margin lost) or deny a valid one (a dispute).2 machine yrs · 1 component yr, untracked
$100kRp ~1.6B / yr
Customer churn — clinics that walk over slow, unmeasured after-sales. The biggest, quietest loss.~5 clinics/yr × lifetime value
≈ $170k / Rp 2.7B
bleeding out every year — and, in the brief's own words, management has no standard measure of first-response or resolution time.
05

It runs on someone watching a spreadsheet

Not incompetence — the whole operation is one person babysitting a spreadsheet, and no tool could ever sit on top of the mess.

Hand-assigned

Someone eyeballs the sheet and picks who goes

A CS logs the ticket; a supervisor scans the list of un-done maintenance and hand-assigns a technician. That manual scan is the dispatch engine — there is no rule for who takes the next job.

No auto-reminder

The six-month clock rings for no one

Preventive maintenance is due every 6 months. Nothing fires at H-30, H-14, H-7 — miss the scan and Flash silently breaks the very promise in its own brief.

Unmeasured

First-response & resolution time aren't tracked

The brief admits it: management has no standard measure of response or resolution. You cannot manage — or improve — what nobody counts.

BI bounced

Every prior tool needed clean data first

BI and EPM want a modeled warehouse up front. The data was never clean, so the project died in cleanup. The mess defeated the tool.

Why the C-suite pays

An operation you can't measure quietly devalues the business.

Because it's manual and unmeasured, Flash silently breaks its own promises — the six-month maintenance, the honored warranty, the fast response — and can't see its service quality, its people, or its product reliability. That's the ~$170k a year from the last slide, plus the enterprise value a measured operation is worth. Incumbent BI & EPM assume clean data these operations don't have.

06

The modernized vision

One engine, three layers — from the operation up to the boardroom.

1

Guided & automated execution

The system auto-schedules the six-month PM, auto-notifies at H-30/H-14/H-7, and auto-assigns the next visit by region, load & SLA priority. A grounded copilot hands the technician the asset's history and the cited next step.

2

Automatic measurement

Every visit throws off structured signal → first-response & resolution time, first-time-fix, warranty status — computed in code, no manual re-entry. Exactly the SLA the brief says is unmeasured today.

3

C-level decision support

A live cockpit shows what's breaking and, crucially, why — too few technicians in a region, a spare part stuck at a supplier, or an underperforming technician — so the fix is obvious, not guessed.

What changes — and what doesn't

Modernizing isn't "AI does everything"

The value is drawing the line in the right place — and keeping people where judgment, hands, and trust belong.

Automate

Code does it, every time

  • Parse scanned invoices, logs & WhatsApp photos → fields
  • De-identify PII at the boundary
  • Compute every KPI, SLA & warranty date in code
  • Auto-schedule the 6-month PM & assign by region/load
  • Fire the H-30/H-14/H-7 & near-SLA-breach alerts
Deterministic, rules are clear — done cheaply and cited, never guessed.
Augment

AI proposes, human decides

  • Guided diagnosis — likely cause + the cited manual
  • Explain why a region misses SLA — too few techs, slow parts, or an idle one
  • "What needs you today" — ranked for the manager
  • The drafted, grounded, cited answer to any question
The model surfaces evidence and the likely cause; the person makes the call.
Keep human

On purpose, not by default

  • The repair itself — hands on the machine
  • The customer relationship & the coaching talk
  • The final call on a warranty dispute or a person
Judgment, hands, and trust stay human because they should.
07

Architecture — one backbone, six layers

Scattered documents flow left to right — parsed, indexed, reasoned over, served, measured, and governed. Every slide that follows zooms into one of these six.

01Ingest & parse
Document AICloud DLP
02Store & index
Vector SearchBigQuery
03Reason
Vertex AIGemini
04Serve
Cloud Run
05Measure & show
BigQueryPWA cockpit
06Trust & run
IAM · VPC-SCVertex Eval
the wedgeIncumbent BI assumes clean data. This is built for the mess — it reads the scattered documents and manufactures the clean signal BI needs. The messy data isn't the obstacle; it's the moat.
07a

Ingestion — turn the mess into signal

One pass over the raw documents produces both the searchable index and the KPI tables.

Sourcesscanned invoices, receipts, Excel, service logs, 1:1 notes
Document AIOCR + layout parse → text + structured fields
Cloud DLPde-identify PII at the boundary
Chunk + Vertex Embeddingssplit, enrich metadata, vectorize
→ Vector Searchsemantic retrieval index
→ BigQuerystructured fields → KPI tables

Extract → de-identify → chunk → embed. The unstructured half feeds retrieval; the structured half (dates, amounts, reps, statuses) feeds the computed KPIs — no clean warehouse required upstream.

Ingestion, made concrete

One scanned form → structured, computed, masked

SERVICE / FAKTURFlash Dental
Klinik: drg. Iffah — Darusyifa Mulia, Jaksel
Unit: Dental Unit DC-300 · SN EX92026030239
Keluhan: "Selang Air Lowspeed minta ganti, air
keluarnya bukan dari lobangnya"
Tgl beli: 02/06/2026 · Faktur NDM.SI.2026.06.00001
Teknisi: Dedi
✎ cek gudang dulu — stok? DITERIMA
OCR + layout parsehandwriting · stamp · Bahasa → text + boxes
Extract structured fieldsserial · model · dates · part · technician
De-identify PIInames, phones → [PERSON_1]
Chunk + embed · computetext → vectors · dates → warranty
Index + KPI storeVector Search + BigQuery
{
  "clinic": "drg. Iffah — Darusyifa Mulia",
  "city": "Jakarta Selatan",
  "unit_model": "DC-300",
  "serial": "EX92026030239",
  "complaint": "low-speed water hose — misrouted flow",
  "part": "water hose",
  "purchase_date": "2026-06-02",
  "warranty_end": "2028-06-02" // computed,
  "technician": "[PERSON_1]" // DLP-masked,
  "_confidence": 0.94, "_needs_review": false
}

A real row — Bahasa, handwritten, stamped — becomes typed, structured, warranty-computed, PII-masked signal in one pass. Low confidence would set _needs_review: true and route it to a human — never silently ingested.

07b

The request path — retrieve, ground, answer

User + rolea question, in plain language
RBAC scoperestrict what's retrievable, per role
Hybrid retrievalVector Search + keyword, reranked
Geminiground the answer, attach citations
Groundedness gateanswer · or "not in our records"
two outputs  The answer comes from Gemini, grounded + cited. The numbers come from BigQuery, computed deterministically — the model explains a KPI, it never calculates one. Wrong numbers would break the trust the cockpit depends on.
07c

System topology — where it runs

Data sources
SharePoint · invoices
service logs · sheets
HR / performance
stay outside; pulled in on a schedule
GCP project · asia-southeast2 (Jakarta) · data residency
Document AIparse + OCR
Cloud DLPde-identify PII
Vector Searchretrieval index
Vertex + Geminiembed + reason
BigQuerymeasurement store
Cloud Runapp + API
PWA cockpiton every phone
IAM · VPC-SCRBAC + isolation
Vertex Eval+ audit logs
Users · RBAC
Technician — assets, scoped
Manager — their team
C-level — everything
data never leaves the region
08

The tech stack

Google Cloud–native — the same six layers from the backbone, chosen for the mess, the residency, and the cost curve.

Ingest & parse
Document AICloud DLP
OCR + layout on scans/PDFs; de-identify PII before anything reaches a model or log.
Store & index
Vector SearchBigQueryCloud Storage
Semantic index for retrieval; structured KPI tables for measurement; raw docs archived.
Reason
Gemini (Flash → Pro)Vertex AI
Grounded generation + citations; route by difficulty. The model is a swappable seam — Flash by default, open-weights if cost demands.
Serve
Cloud RunAPI Gateway
Stateless app + API; scales to zero; the one integration point per client.
Measure & show
BigQueryPWA cockpit
KPIs computed in SQL (never by the model); the cockpit is the PWA — on every phone, role-scoped, no per-seat license.
Trust & run
Vertex EvalIAM · VPC-SCCloud Logging
Faithfulness eval, role-scoped access, data-residency perimeter, full audit trail.
v1 runs leanThis is the at-scale shape. v1 needs none of the heavy managed services — it's Cloud Run + a small Postgres/pgvector table + Gemini Flash + the PWA, AI-built in weeks by one engineer for low-thousands. Vector Search, BigQuery & the CRM/ERP integrations are added only when volume earns them.
09

One platform, not two products

Assets and people aren't two solutions — they're two data domains in one UI, for the same C-suite. RBAC decides who sees what.

Technician

Fix it, in the field

Sees the asset service history + guided diagnosis, scoped to their assigned jobs. No people data.

Service manager

Run the team

Sees their technicians' jobs, cycle time, first-time-fix, and outstanding backlog, scoped to their region. No other teams.

C-level

Steer the business

Sees everything rolled up — assets and people, both operations, one cockpit.

Same engine · same UI · one login — the role, not the product, decides the view.
The measurement layer, made concrete

One service record → two measured truths

one service-log row"Yudi closed FD-1042 · suction motor · Surabaya · reported 19 Jun, done 29 Jun" — plus the linked sales invoice
→
Asset truth3rd suction failure → reliability; invoice date → warranty status & age → maintenance due
Technician truthYudi closed it → jobs done, first-time-fix, cycle time, out-of-town load
why it mattersThe same record, parsed once, measures the machine and the technician who serviced it. Pull the sheets, WhatsApp updates, and invoices a business already has — no clean warehouse required.
10

The end product — the daily cockpit

Ops Cockpit · Field Service + People role: C-level
First-time-fix
80%
▲ 6 pts MoM
Avg cycle time
7.8d
▼ 1.2d faster
Warranties due 30d
12
FD-1042 expiring
Jobs closed · Jun
42
▲ 5 MoM
Outstanding
7
▼ 3 aging >2wk
First-time-fix by region
JKT
SBY
KLM
BDG
DPS
MDN
What needs you today
DC-300 units fail near warranty end
3 units, Kalimantan — review before renewals
5 jobs stuck on spare-part stockout
Selang & Footcover — 3 aging past 2 weeks
Yudi carries 38% of out-of-town jobs
concentration risk — balance the roster
Live job queue
UnitClinic · CityTypeTechAgeStatus
FD-1042Klinik Sehat · SurabayaServiceYudi2dOutstanding
EX92026030239drg. Iffah · JakselSparepartDedi4dWaiting part
SI.2025.04.00016drg. Andi · NunukanPM—12mo latePM overdue
EX92026030251drg. Lidya · BanjarbaruInstalasiYudi17dFinish
EX92026030250drg. Zeddin · TarakanFootcoverYudi7dFinish
Technician load · June · 42 jobs closed
Yudi
16 jobs
Dedi
10 jobs
Febri
8 jobs
Arga
5 jobs
Arman
3 jobs
ask Ask anything about your operation — "why is Kalimantan's first-time-fix low?"
Default view, not a blank chatbox — the numbers that matter, every day, without thinking what to ask.
Chat is one mode — the ask bar drills into any tile, grounded and cited (two slides on, live).
11

The cockpit, on every phone

The manager's dashboard and the technician's job — the same platform, scoped by role, on the phone they already carry.

9:41 5G
Cockpit C-level
First-time-fix
80%
▲ 6 pts
Cycle time
7.8d
▼ 1.2d
Jobs · Jun
42
▲ 5
Outstanding
7
▼ 3 aging
SLA
94%
▲ 2
Warr. due 30d
12
FD-1042
First-time-fix by region
JKT
SBY
KLM
BDG
DPS
MDN
What needs you today
DC-300 fails near warranty end — 3 units, Kalimantan
5 jobs stuck on stockout — Selang & Footcover
Yudi carries 38% of out-of-town jobs
Job queue
FD-1042 · SurabayaOutstanding
drg. Iffah · JakselWaiting part
drg. Andi · NunukanPM overdue
drg. Lidya · BanjarbaruFinish
9:41 5G
Field Teknisi · Yudi
FD-1042 · DC-300
Suction failure — 3rd
Klinik Sehat · Surabaya · 2 days ago
⚠ Warranty expired Jun 2024 — billable
Guided diagnosis
Recurring cause is a clogged suction filter — replace it with the motor, or it returns.
cited: manual DC-300 · §suction
BringSuction motor + filter kit · check warehouse stock before travel.
Service history
2025-01 suction motor · replaced
2024-09 hydraulic leak · sealed
2024-03 suction motor · replaced
Next PMDue Aug 2025 · combine with this visit.
One platform, scoped by role — the C-level's dashboard and the technician's job are the same system, different view.
The manager, in the pocket — live first-time-fix, cycle time, the outstanding backlog, and the day's alerts.
The technician, at the chair — the unit's history and warranty before the toolbox opens; no 45-minute invoice hunt.
Grounded, cited answers on both — the copilot proposes; the person decides and acts.
12

Drill into any tile — live

The same engine behind the cockpit. Pick a domain, ask — it runs entirely in this page.

— pick a question above, or type your own —
Real in this demoretrieval · grounding + citations · honest abstain · KPIs computed (not generated) · RBAC & PII refusal · live Jakarta API
Swapped in productionlexical TF-IDF → Vertex neural embeddings · extractive answer → Gemini grounded generation
Source, open to read: github.com/reydi/flash-dental-copilot — the FastAPI service behind this demo.
12

The same copilot, in the hand

The same engine and the same live API — inside the app the technician carries. Tap a question, or type your own.

The real copilot, in the field — the technician asks from the chair, on the phone in his hand, not a desktop.
Computed for numbers, cited for lookups — "how many overdue maintenances" is counted; "FD-1042 history" is grounded and cited.
It abstains rather than invents — ask something out of scope and it says "not in our records."
Live over the same API — this phone hits the Cloud Run copilot in Jakarta, exactly like the desktop console.
9:41 5G
Copilot Teknisi · Yudi
The honest part

How it fails — and the guardrail

A system the C-suite steers by has to fail safely and visibly, never silently. Every failure mode has a designed defense.

If it fails…
The guardrail
OCR misreads a scanned form
Low-confidence extractions are quarantined for a human — never silently ingested.
The model invents an answer
Answers are grounded & cited; it abstains — "not in our records" — when unsure.
A KPI comes out wrong
Numbers are computed by code in SQL; the model explains a number, never calculates one.
Wrong data reaches the wrong person
RBAC at the data layer + DLP de-identification + a full audit trail on every access.
Technicians won't adopt it
It's their fastest path — history + warranty before the toolbox, on the phone they already carry, offline.
13

The build path

Land one instance, prove it, generalize — never boil the ocean.

v1 · ~1–2 wk

Guided-execution copilot, one domain

Grounded, cited answers over one operation's scattered docs — the mess becomes answerable, the operator stops flying blind. Safe to ship this fast because low-confidence extractions route to a human. (The live demo.)

v2 · next

The measured cockpit

Execution signal → the live dashboard of KPIs and alerts, with no manual entry — the daily default view.

v3 · vision

C-level decision layer + integrations

Proactive "what to do" recommendations, RBAC across roles, the second domain — and API integration into their CRM / Sales / ERP so every system feeds one record per serial.

the trade-offsv1 is read-only, single-domain, and right-sized on purpose. A lean field team on one operation doesn't need Vector Search or BigQuery yet — v1 is the grounded copilot on a lightweight index. The heavy GCP stack is the destination if this scales, not the start. Earn trust first: dashboards before chatbots, one operation before the platform, no infrastructure until it's earned. The clock here is document access, not the build — value lands within days of getting the docs.
14

The delivery plan — value in week one

One engineer, AI-assisted. The build is days — the schedule is just honest about what actually gates it.

Phase
Days 1–3
Days 4–7
Week 2
v2 · weeks
v3 · quarter
Discovery & document accessthe real clock — outside the build
getting docs & access ⟵ critical path
Extraction pipelineOCR → structured → validated
build the mess-to-signal pipeline
Grounded copilotthe live demo — cited answers
answers on their real docs
★
Pilot & handoffone operation, human-in-the-loop
prove & train
v2 · Measured cockpitthe daily default view
KPIs & alerts
v3 · Decision layer+ CRM / Sales / ERP
integrations
★ value lands mid-week-1Grounded, cited answers on real docs before the build is "done." The critical path isn't engineering — it's document access. Outside that bureaucracy, value lands almost immediately.
Closing the loop — problem to payoff

What v1 changes in the first two weeks

Report → service wait
invisible until month-end
→
tracked live, aging jobs auto-flagged
Warranty at the door
guessed from a second sheet
→
computed & cited at the point of service
Technician performance
a month-end guess
→
live first-time-fix & cycle time
Outstanding jobs
pile up unseen
→
ranked "what needs you today"
The costs from the problem section — now measured numbers on the cockpit. That's the lift we prove before touching anything else.
15

What it costs — and what it returns

AI-built by one engineer, run lean — so the whole spend is a rounding error against the ~$170k a year the mess costs.

Build · v1
~1–2 weeks
one AI-assisted engineer · ≈ low single-digit $thousands, one-off
Cloud Run · a small Postgres/pgvector index · Gemini Flash · Document AI — no heavy managed services yet.
Run · v1 (pilot scale)
$100–300 / mo
scales to zero between jobs
Cloud Run + managed Postgres + per-page OCR + Gemini Flash tokens — grows only when volume earns it.
Payback in weeks
Against the ~$170k / yr the mess costs today. Recover even the idle-technician + missed-maintenance slice (~$49k / yr) and v1 pays for itself almost immediately — the risk isn't the spend, it's another year unmeasured.
honest caveatEstimates are conservative and pilot-scale; real run-cost tracks document & query volume. A swappable LLM seam — Gemini Flash by default, open-weights if cost demands — keeps it defensible as it grows.
Challenge the approach

The hard questions — answered head-on

Isn't this a one-off? Won't data go stale? Where's the CRUD?
Not one-off. The ticketing system I'm building is the live CRUD record (structured entry, audit trail, dedup), and the same pipeline backfills the history and ingests every new doc. The cockpit reads the live table — never a frozen snapshot.
Are we over-engineering it?
No — AI is used only where CRUD can't reach: reading the mess and measuring. Ongoing capture is plain forms; new data is structured at entry, so marginal extraction cost is ≈ zero.
A $100k AI agent for an SMB?
We don't build one. v1 is weeks + low-thousands of GCP (Document AI ~pennies/page, small index, scales to zero) — not six figures. The heavy stack is the destination if it scales.
Does it add headcount to run?
No. Serverless + managed (Document AI, Gemini); KPIs are computed by code — nothing to retrain, no re-ranking treadmill. Staff feed it via the forms; a few min/week reviewing flagged extractions replaces month-end eyeballing.
What's the cost of doing nothing?
The ~$170k/yr keeps bleeding — and compounds: the history gets costlier to migrate each year, missed-PM & churn scale with the install base, and an unmeasurable operation is worth less. Staying put is the priciest option.
Why not Salesforce / Mekari / SaaS?
Systems of record — they can't read 5 years of Bahasa, handwriting & WhatsApp, and you'd still pay to migrate the mess (the hard part). Per-seat, per-year, forever.
Why not just ChatGPT / Claude / Gemini?
A raw LLM invents numbers, can't cite, can't see private docs, no RBAC or residency. The value is the grounded, computed pipeline — it only explains a number it never calculated.
Customer portal? Auto-notify? CRM integration?
On the roadmap, deferred by design. ~3-mo: auto-notify H-30/H-14/H-7 & auto-assign. ~6-mo: customer portal, spare-part quotes, predictive reliability, and API integration into their CRM / Sales / ERP — each feeding the one-record-per-serial spine.
Why now · Why me

The tech finally reads the mess — and I already know the operation.

Why now — Gemini can finally read the mess (unstructured, Bahasa, cross-department documents) and manufacture the clean signal BI always assumed was already there; GCP's Jakarta region makes in-country data residency real. Neither was true two years ago. Why me — I've been building Flash Dental's ticketing system, so I know this operation from the inside, on its real documents — and a career of field-worker mobile tools (Invoice2go, Pawoon) and messy-data pipelines is this exact problem, over and over. Not a concept deck — the operation I know best, modernized.

Reydi Sutandang Forward Deployed Engineer Operations → Boardroom
The ask

Let's prove it on one operation — in a week or two.

v1 is a grounded copilot over one operation's real, messy documents. The mess becomes answerable, and we measure the lift — first-time-fix, cycle time, warranty leakage caught — before touching anything else. Three things to start:

1 · Access

One operation's document sources — the messier, the better.

2 · A GCP project

In the Jakarta region, for data residency.

3 · A design partner

One person on the business side to define "measured right."

The rest is the same engine you just watched run. Give me one messy operation and two weeks — and the shop floor starts speaking to the boardroom.