The FDE as Paid Product Discovery
How field exceptions become platform primitives—without turning your product into a pile of client patches.
Extends Product of One — this piece assumes you already know that move: each engagement can leave deployed inventory, not only documents.
- Forward deployment is product discovery only when exceptions are captured, compared across deployments, and deliberately disposed—not merely “noted in Slack.”
- Use a field-pattern ledger and a five-way gate: local-only, configurable, internal primitive, supported platform, or reject.
- Recurrence nominates; it does not promote. “Paid discovery” is ethical only when the customer receives useful delivery now and learning rights are explicit.
The tension that does not show up in the backlog
The field team just shipped something that works. Approvals fire. Exceptions route. Someone in the client’s ops team stops re-keying the same form. On the product side, nothing is cleaner. You now have another special case, another “we should really productise that,” another fork that support will meet again in six months under a different industry noun.
That is the operational tension. Palantir’s own framing of the role is still the cleanest public contrast: product engineers optimise for one capability across many customers; forward-deployed engineers (their Deltas) optimise for many capabilities inside one customer.1,2 Someone still has to decide where intelligence belongs in that customer’s real work—and then ship software that carries operational responsibility.3
This article does not re-teach that role. It does not re-teach Product of One. The claim is narrower and harder:
Forward deployment becomes paid product discovery only when field exceptions are captured, compared across engagements, and deliberately disposed of—teaching the platform what should become reusable without turning the platform into a pile of client patches.
The market is already buying the shape of that loop. OpenAI’s Deployment Company describes a cycle of build, prove, generalise: field work that surfaces patterns which become product capabilities.4,5 AWS’s Forward Deployed Engineering organisation says each customer project compounds intelligence for the next, and that customers leave with solutions and engineering capability.6 AWS’s partner motion goes further on ownership: every partner-led FDE engagement should leave a reusable harness the partner owns—ontologies, eval frameworks, tooling, a context graph of choices and domain patterns—while the business outcome stays with the customer.7
What those announcements do not hand you is the boring governance object: a ledger row and a disposition decision you can audit six months later. Evidence gap No public primary source I can cite publishes a five-disposition field-to-platform gate with a longitudinal post-promotion dataset. The mechanism below is built for operators who need that gate—not as a claim that OpenAI, AWS, or Palantir run this exact artefact.
Gravel road and paved road are different jobs
Local delivery can be a gravel road: fast, situated, slightly ugly, correct for this workflow, this retention rule, this approval role. That is often the honest first move. The customer needed a working intervention, not a platform roadmap workshop.
Promotion is a paved road. It has a different burden: recurrence, strategic fit, measurable reuse, clean ownership, de-identification and contract clearance, operability, documentation and versioning, accountable support, and a plan to observe what happens after the promotion. Treating those as one job is how platforms become museums of client patches.
In the language of Experience Is Compressed Priors, the field produces two learning streams at once: domain priors (what tends to be true about systems like this) and process priors (how you discover what you still cannot specify).10 Product discovery fails when you only ship the local code and lose both streams—or when you promote domain noise as if it were a product invariant.
What an FDE must record besides the local intervention
If the only artefact is “we built a connector for Client X,” you have a services receipt. You do not have product discovery. For each candidate field pattern, the ledger should preserve enough to decide—and later audit:
- Deployment and workflow context — systems, roles, volume shape; anonymised if real, or explicitly synthetic.
- Local intervention delivered and customer value received now (not “value after we productise”).
- Domain prior learned and process prior learned.
- Exception / failure shape — how work fails, not only how it succeeds.
- Repeated invariant vs local variation — the split that prevents forks-as-features.
- Evidence / receipt pointers — claim, exhibit, resolvable pointer, confession of what was not verified (the Product of One evidence discipline applied to field learning).9
- Ownership, confidentiality, de-identification status.
- Recurrence across deployments.
- Strategic fit and reuse forecast (or observed reuse).
- Operability / support burden.
- Accountable promotion owner.
- Decision, reason, date/version, revisit trigger.
- Post-disposition evidence — including demotion if the paved road fails.
That is the field-pattern ledger. Not a mood board. A decision record.
The five dispositions (and how to tell them apart)
Every candidate ends in exactly one of these final dispositions. Ambiguous “maybe later” is not a disposition; it is a deferred decision with a revisit trigger.
1. local-only
Use when: the value is real only inside one client’s context; the pattern is unlicensed or unsafe to generalise; fingerprints cannot be removed without destroying meaning; or promotion would create a confidentiality/IP problem.
What ships: client-owned code, config, or process. Not a product promise.
What you still keep: the process prior (“how we found this”) and a rejection-of-promotion reason so the next FDE does not re-litigate blindly.
2. configurable
Use when: the capability is stable and shared, but legitimate variation belongs in data, policy, or configuration—not in forked codepaths per client.
Test: can two deployments share one implementation and differ only by config/policy tables without copy-paste modules?
Failure mode: “config” that is actually a programming language in YAML, with no owner and no tests.
3. internal primitive
Use when: the asset helps FDE/delivery teams repeatedly (harness, eval suite, discovery checklist, exception taxonomy, scaffold) but must not be sold or supported as a customer-facing product promise.
Why it exists: many of the most valuable field lessons are delivery infrastructure, not SKUs. Calling them “platform product” creates the wrong support contract.
4. supported platform
Use when—and only when—all of the following clear:
- Recurrence under local variation (nomination, not decision).
- Strategic fit with the product thesis.
- Measurable reuse forecast or observed reuse without fork.
- Clean ownership (product + ops).
- De-identification and contract clearance for any learning that left a client boundary.
- Operability: monitoring, rollback, on-call, known failure classes.
- Documentation, versioning, support commitment.
- Accountable promotion owner.
- Post-promotion observation plan.
- Counterfactual: would the next deployment actually be easier or safer because this was promoted?
If any of those are missing, you do not have a supported platform capability. You have hope with a release tag.
5. reject
Use when: the request or abstraction should not be built or promoted—wrong layer, unsafe, uneconomic, off-strategy, or a one-client vanity feature dressed as a platform need.
Critical: preserve the reject. Do not vanish it as a deleted backlog ticket. Rejected requests are learning: they teach domain boundaries and process priors (“we keep being asked for X; here is why X is a trap”).
Worked artefact: field-pattern ledger across three synthetic deployments
Candidate pattern under comparison
Candidate ID: FP-DOC-INGEST-01 — “Governed document intake with provenance, exception routing, and human approval before system-of-record write.”
| Ledger field | Deployment A Synthetic | Deployment B Synthetic | Deployment C Synthetic |
|---|---|---|---|
| Workflow context | Insurance claims attachments: PDF + email body; SharePoint + claims core | Manufacturer quality packs: mixed PDF/scan/Excel; PLM + QMS | Professional-services onboarding: contracts + ID docs; CRM + DMS |
| Local intervention delivered | Intake service + human approve before claim note update | Batch ingest + exception queue for unreadable scans | Per-matter folder watch + partner sign-off gate |
| Customer value now | Stops re-key; audit trail of who approved | Cuts lost packs at line; exceptions visible | Faster matter open; no silent writes to CRM |
| Domain prior | “Same as last time” is a first-class exception class | Scan quality dominates model error | Retention and privilege differ by matter type |
| Process prior | Shadow one claims clerk full day before schema design | Golden set must include partial scans | Map privilege rules before any extraction prompt |
| Exception / failure shape | Forwarded threads; dual attachments; informal prior approval | Illegible pages; multi-part packs; late revisions | Wrong matter folder; dual jurisdiction retention |
| Invariant (shared) | Provenance record + typed exception route + human gate before system-of-record mutation | ||
| Local variation | Claims schema; Slack approve | QMS codes; shop-floor tablet | Matter taxonomy; partner dual-control |
| Evidence / receipts | slot: A-eval-suite, A-run-log | slot: B-eval-suite, B-run-log | slot: C-eval-suite, C-run-log |
| Confidentiality / de-ID | Client-local PII; pattern only after strip | Plant photos restricted | Legal privilege — strict local-only on content |
| Recurrence | Seen once | Same invariant | Same invariant; new variation surface |
| Strategic fit | Core to product thesis: governed intake | Yes | Yes for invariant; privilege rules stay local |
| Reuse forecast | Unknown | Harness parts reusable | Platform candidate for invariant only |
| Support burden (forecast) | High if platformed early | Medium if config-led | High if privilege logic productised |
| Promotion owner | Platform PM + FDE practice lead (named seats, not “the team”) | ||
Disposition decisions for pieces of the same work
Designed / Synthetic One engagement produces multiple candidates. That is the point. Do not force a single disposition onto an entire deployment.
| Candidate slice | Disposition | Reason (audit line) | Revisit trigger | Post-disposition evidence (slots) |
|---|---|---|---|---|
| Client-specific claim codes / plant codes / matter types | local-only | Fingerprints; no shared meaning without client schema | If a multi-tenant ontology becomes a product bet | — |
| Approval role mapping, retention class, channel (Slack vs tablet vs dual-control) | configurable | Stable capability; variation is policy/data | If config becomes Turing-complete escape hatch | config_escape_rate |
| Exception taxonomy + discovery checklist + eval harness scaffolds | internal primitive | Speeds FDEs; not a customer SKU | Quarterly: is it still reducing time-to-oriented? | time_to_oriented, esc_by_class |
| Provenance object + exception router + mandatory human gate API | supported platform | Recurrence A/B/C + strategic fit + ownership + operability plan + counterfactual pass | First post-promotion deployment; 90-day support review | reuse_no_fork, defects, support_load, adoption |
| “Auto-post to system of record with no human gate for all document types” | reject | Irreversible risk class; fails placement judgment; customer asked, field correctly refused | If evals show a narrow, bounded document class with dual control and rollback | Preserve reject rationale in ledger forever |
Notice the structure: the same three deployments can yield all five dispositions. That is healthy. Product discovery is not a funnel that ends only in “ship to core.”
Premature-promotion counterexample
Suppose after Deployment A only, the loudest stakeholder demand—“just make it work like our Slack approval”—is promoted into the core platform as a hard dependency. Deployments B and C then inherit Slack-shaped approval, even where shop-floor tablets and dual-control legal gates are the real workflow. Teams fork the “platform” to escape it. Support now owns three approval runtimes. Recurrence of pain increases; recurrence of a clean invariant never gets a chance to surface.
That is not product discovery. That is importing one client’s interface politics into everyone else’s operating system. The gravel road was fine. The paving was premature.
Supported-platform gate checklist (printable)
- ☐ Recurrence of the invariant across ≥2 later deployments under different local variation
- ☐ Strategic fit stated in one sentence against product thesis
- ☐ Reuse forecast: next deployment can consume without fork (or observed reuse_no_fork)
- ☐ Ownership: product owner + on-call rotation named
- ☐ De-ID / contract: no client fingerprints; promotion rights explicit
- ☐ Operability: dashboards, failure classes, rollback
- ☐ Docs + versioning + support SLA class
- ☐ Accountable promotion owner signed the decision record
- ☐ Post-promotion observation plan with blank receipt slots
- ☐ Counterfactual: next deployment easier/safer? If no, do not promote
If any box is empty, disposition is not supported platform. Choose local-only, configurable, internal primitive, reject, or defer with a revisit date.
Post-promotion proof (measures, not fake numbers)
| Measure | Receipt slot | Proposed threshold (decision, not fact) |
|---|---|---|
| Later deployment cycle time / time-to-oriented | pm.cycle_time | Set baseline on pre-promotion engagements; require directional improvement on next like-for-like deployment |
| Reuse without fork | pm.reuse_no_fork | Target: default path is shared module + config; forks require ADR |
| Defects / failure categories | pm.defect_taxonomy | New classes must map to eval cases; unknown class → demotion review |
| Support load / on-call burden | pm.support_load | If on-call pages concentrate on the new primitive, reclassify or harden |
| Configuration escape-hatch usage | pm.config_escape | High escape rate ⇒ you shipped a false abstraction |
| Central specialist escalation by class | pm.escalation_by_class | Fossilised classes should fall; if not, write-back failed |
| Adoption / use in later deployments | pm.adoption | Unused “platform” is inventory theatre—demote |
Demotion and reclassification are first-class outcomes. A paved road that fails is allowed to return to gravel or to internal-only use. That is governance, not embarrassment.
The disposition council (make it concrete)
Do not leave disposition to the loudest account channel or a lonely product manager after midnight.
Who attends
- FDE / field lead who owned the local intervention (brings the swamp knowledge).
- Product / platform owner (owns coherence and support contract).
- Ops / support (vetoes unoperable promotions).
- Security / privacy / commercial as needed for de-ID and contract rights.
- Doctrine / architecture steward (optional but valuable when the candidate wants capability-kernel status).
What inputs they see
- Ledger rows for the candidate across deployments (A/B/C…), not a single slide of anecdotes.
- Receipt pointers and confessions of missing evidence.
- Support and escalation history if any related code already exists.
- Explicit “paid discovery” ethical checklist (below).
What comes out
- One of the five dispositions.
- Reason string a stranger can audit.
- Owner, date, version, revisit trigger.
- Post-disposition measurement plan (even if disposition is reject or local-only—reject still has a learning home).
Cadence can be lightweight—biweekly triage of nominations—as long as supported-platform decisions are never silent merges.
When “paid discovery” is a lie
Customers are not roadmap-research subjects. Discovery is only paid in an honest sense when the exchange is reciprocal.
Reject the “paid discovery” label when any of these are true:
- Local value is deferred or speculative (“you’ll benefit when we productise”).
- The engagement primarily benefits the vendor’s roadmap.
- Reuse rights or data/IP boundaries are unclear.
- Experimental burden is hidden (shadow production, unpaid pilot labour, silent model testing on live data).
- Production ownership and rollback are absent.
The honest exchange:
- Customer receives: a useful intervention now; transfer/operability; clear boundaries of what is local vs what might generalise.
- Vendor receives: de-identified learning only under agreed rights; human-gated promotion; no automatic climb of client exhaust into product.
If you cannot write those two sentences into the SOW, you are not running paid product discovery. You are either doing honest services, or you are socialising R&D cost onto a buyer who did not agree to fund it.
How this sits next to Product of One
Product of One is the per-engagement move: service economics with inventory left behind; context, inventory, and verification compounding together.9 This piece is the multi-engagement product-company move: when several inventories and field exceptions exist, how do you decide what becomes platform without losing coherence?
Related siblings if you need the surrounding architecture: placement judgment in the field, and the practice-scale write-back system (including the hard line that engagement two—not the case study from engagement one—is the transfer proof).8
Observed / Executed Those sibling URLs resolve live as static articles (verified at writing). That is not the same as claiming the synthetic ledger was executed in production.
A practical test (not an inspiration paragraph)
This week, run one nomination end-to-end:
- Pick one exception you already handled in the field (or one you are handling now).
- Fill a single ledger row—including domain prior, process prior, invariant vs variation, and receipt pointers (empty pointers are allowed if you confess the gap).
- Hold a 30-minute disposition council with at least field + product + ops.
- Force one of the five dispositions. If you choose supported platform, complete the gate checklist or admit you cannot.
- Write the revisit trigger and the post-disposition slots you will fill later—even if every number is still blank.
If you cannot dispose the candidate without inventing metrics or hand-waving ownership, that is the finding. The platform does not need another heroic customisation. It needs a decision record.
References
- Palantir. “Dev versus Delta: Demystifying engineering roles at Palantir.” — “You can think of a Dev’s focus as ‘one capability, many customers,’ while a Delta’s focus is ‘one customer, many capabilities.’” https://blog.palantir.com/dev-versus-delta-demystifying-engineering-roles-at-palantir-ad44c2a6e87
- Palantir. “A Day in the Life of a Palantir Forward Deployed Software Engineer.” — FDSEs “focus on enabling many capabilities for a single customer.” https://blog.palantir.com/a-day-in-the-life-of-a-palantir-forward-deployed-software-engineer-45ef2de257b1
- Scott Farrell / LeverageAI. “Someone Has to Decide Where Intelligence Belongs.” — Field placement of intelligence as the scarce act; operating map and Audit → Evals → Deploy loop. https://leverageai.com.au/wp-content/media/articles/163-someone-has-to-decide-where-intelligence-belongs.html
- OpenAI. “OpenAI launches the OpenAI Deployment Company.” — Learn faster, “generalize the most effective solution patterns,” and bring lessons to more organisations. https://openai.com/index/openai-launches-the-deployment-company/
- OpenAI Deployment Company (Deploy). Official site. — “This cycle—build, prove, generalize—connects deployment to product development…” https://deploy.co/en-US
- Francessca Vasquez / About Amazon (AWS). “AWS invests $1 billion to embed AI forward deployed engineers with customers.” — “Each customer project compounds intelligence for their next”; customers leave with solutions and engineering capabilities. https://www.aboutamazon.com/news/aws/aws-1-billion-forward-deployed-ai-engineers
- AWS Partner Network Blog. “Introducing Forward Deployed Engineering for Partners.” — Partner-owned reusable harness (ontologies, evals, MCP, context graph); “The delivery IP stays with the partner.” https://aws.amazon.com/blogs/apn/introducing-forward-deployed-engineering-for-partners-winning-the-future-of-enterprise-ai/
- Scott Farrell / LeverageAI. “Forward-Deployed Practice OS.” — Human-gated promotion; de-identify/abstract/transferability; engagement two as transfer proof. https://leverageai.com.au/wp-content/media/articles/167-forward-deployed-practice-os.html
- Scott Farrell / LeverageAI. “Product of One.” — Parent article; per-engagement inventory; evidence package and compounding context/inventory/verification. https://leverageai.com.au/wp-content/media/articles/129-product-of-one.html
- Scott Farrell / LeverageAI. “Experience Is Compressed Priors.” — Domain priors vs process priors; dual-stream compounding test. https://leverageai.com.au/wp-content/media/articles/150-experience-is-compressed-priors.html