01 · Purpose and capabilities

What this system is for.

Product Resolver exists so a comparison can say “same exact product,” “different product,” or “not yet known,” and can show why. This chapter stays above the schemas.

The problem

Merchant pages describe offers. They do not describe a stable product identity. Titles drift. A URL is one seller’s page. A pack of two is not the same item as a larger single unit. A model can notice a heatsink and still be wrong. Stock that was true at dawn is a different fact by afternoon.

The people who need the answer are buyers of the comparison, operators who correct a bad match, and engineers who have to explain a change months later. The design keeps those jobs apart.

Business outcomes the design aims at

  • Keep the original bytes and the time they were seen, so a later correction can be checked.
  • Separate the exact product from each merchant’s offer, including packs and variants.
  • Let a person decide when the evidence is not deterministic, and keep that decision.
  • Show the public only an authorized release that the product service has applied.
  • Keep recurring service spend inside the one confirmed ceiling: USD 50 a month.

Human review time is a separate proposal. The worked example imputes 7.84 hours a month. That is effort, not cash, and it is not confirmed.

Figure

Who is outside Product Resolver, and which part of the system serves them?

Who is outside Product Resolver, and which part of the system serves them? Collectors only acquire evidence. The resolution service is the only place that accepts facts. The product service only presents an authorized, applied release. Source sites and feeds are external. Collectors fetch them with their own egress. Collectors submit captures to the resolution service and stop there. Operators send human decisions to the resolution service. The resolution service emits accepted-change events to the product service. Public readers query the product service, never the resolver database. fetch capture accepted events released read decisions EXTERNAL Source sites Stores, APIs and feeds SERVICE Collectors Acquire evidence only SERVICE Resolution service Interpret and accept SERVICE Product service Apply and present PERSON Public readers Released answers only PERSON Operators Review and release

Takeaway. Collectors only acquire evidence. The resolution service is the only place that accepts facts. The product service only presents an authorized, applied release.

Text equivalent

  1. Source sites and feeds are external. Collectors fetch them with their own egress.
  2. Collectors submit captures to the resolution service and stop there.
  3. Operators send human decisions to the resolution service.
  4. The resolution service emits accepted-change events to the product service.
  5. Public readers query the product service, never the resolver database.

Status. Proposed service boundaries (ADR-001). Not implemented. Workbench pages demonstrate the split; they are not a production deployment.

Capabilities, and where they live

Each row is a capability already in the workbench design. Status words match that design. Nothing in the table is a deployed service.

CapabilityWhoOwnsConnectionStatus
Fetch a source without letting the resolver browse itCollectorLocal cursor onlySource fetchEstablished in design
Store bytes once and return a receiptIntake, inside the resolverArtifact, capture, receiptUpload, captureProposed flow
Parse with a versioned adapter before any modelExtraction moduleClaims and unmapped fieldsResolution jobEstablished order
Propose or advise without decidingLLM extractor and reviewer, as actorsNothing of their ownExtract, reviewProposed calls
Accept a fact and remember the decisionReview and identity modulesItems, mappings, outboxDecisionProposed transaction
Apply that fact for readersProduct serviceProjections onlyAccepted changeEstablished shape
Release it in publicOperator, then product servicePublication recordPOST /v1/publicationsIn the OpenAPI contract
Refuse to guess shippingPolicy moduleVersioned policiesShippingProposed evaluator
Stay inside the monthly ceilingAdmission gateReservations and forecastBudgetCeiling confirmed. Bands proposed.

Authoritative write-ups live in the local reference: ADR-001 through ADR-010, the decision ledger, the budget controls, and the unapproved implementation plan.

What is in scope, and what is not

In scope for the design: one tenant’s catalog, collectors that only acquire, a resolution service that accepts facts, and a product service that presents an applied release. Local development is proposed with no recurring fee. A hosted shape is proposed and not authorized.

Out of scope until Jonathan decides: a second real source, shared catalogs, which model provider to pay, which database host to pay, and whether the launch is two scrapers. This guide does not pick those.

Principal limitations

  • Only USD 50 per month of recurring services is confirmed.
  • Workbench screens are prototype demonstrations. They are not production.
  • PostgreSQL concurrency, identity-provider cryptography, live source access, invoices, and rendered browser layout were not established.
  • Pantry & Pour, including cap_pp_feed_1011, is a fictional fixture. It does not prove a source can be collected.
  • The plan is unapproved. The architecture baseline remains 0.4.0.

Follow one product