Platform design proposal · Companion to the investor proposal · July 2026
Veristate / design

What all Veristate can be — the design of a trust platform wearing a marketplace as its front door.

The investor proposal made the case: verification in Australian property is synchronous, duplicated, and — since 1 July 2026 — legally mandatory and legally reusable. This document designs the thing itself. One trust engine verifies parties and properties against official rails and keeps them verified. One trust graph holds the resulting objects — profiles, ticks, listings, buy-intents, loan cases, deals. Five surfaces — the branded webapp, co-branded white-labels, an API/MCP layer for AI assistants, an agent-harness plugin, and a broker workspace for verified finance — all sell the same underlying asset: portable, counterparty-visible trust, with downstream orchestration into contracts, duty, and settlement.

Written for both audiences: sections 01–11 are the product and platform design; sections 12–14 are the implementation appendix (stack, build plan, open questions). Hover dotted terms for plain-English explanations. Assumes the market context established in the investor proposal.
01 · Design principles

Six decisions that shape everything downstream

Every design choice in this document traces back to one of these. When two options tie, the principle breaks the tie.

P1Trust is the product

The marketplace, the compliance tooling, the API — all are interfaces onto one asset: a verified, continuously monitored claim about a party or property. We invest in the trust engine the way a bank invests in its ledger.

P2Asynchronous by default

No verification ever runs on the critical path of a deal moment. Everything verifiable in advance is verified in advance and kept warm by monitoring; the deal only consumes state, never waits on process.

P3The consumer owns the credential

Verification belongs to the person, not to the business that happened to pay for it. Consent is explicit, per relying party, revocable, and logged. This is the opposite of today's matter-scoped VOI — and the source of the network effect.

P4One graph, many surfaces

Webapp, white-labels, API/MCP and plugin are skins over the same trust graph. A profile verified inside one agency's co-brand is verified everywhere. Surfaces compete; the graph compounds.

P5Orchestrate, never replace

PEXA, practitioners, revenue offices, lenders and portals are rails and partners, not targets. Veristate's job is handing them cleaner inputs sooner — which is why they let us in.

P6Compliance is exhaust

Agents and practitioners never do "AML work" in Veristate. They do their ordinary work — onboarding a vendor, accepting an offer — and the evidence AUSTRAC requires falls out as a by-product: programs, screening logs, reliance records, reports.


02 · The platform at a glance

Five layers, one direction of dependence

Surfaces depend on services, services on the graph, the graph on the engine, the engine on the rails. Nothing reaches down more than one layer; nothing reaches up at all. Hover any element.

Surfaces
Branded webapp Co-branded tenants API / MCP Cowork plugin Broker workspace Badge embeds
Platform
services
Marketplace & matching Deal orchestration Legal panel Compliance reporting Events & notifications Panel pricing & BID
Trust graph
Parties Credentials Properties Buy-intents Deals Reliance pacts Broker practices Loan cases & consents
Trust engine
Verification orchestrator Monitoring Evidence vault Reliance ledger Badge service
Official rails
(adapters)
DVS Biometric IDV CDR Titles ASIC · ABR Sanctions / PEP Revenue offices ConnectID PEXA handoff Lender feeds
Adapters are swappable by design (P5): every rail sits behind an internal interface so a supplier change — or a new state — never touches the engine.

03 · Domain model

The objects the graph is made of

Sixteen objects carry the whole platform — the four finance objects get their own section (11). The two that make Veristate different from every incumbent are Credential (verification as a first-class, portable, monitored object) and ReliancePact (the legal agreement that lets other businesses consume it).

Core object graph
Solid arrows: ownership/containment. Dashed: reference. Hover any box.
Party person · company · trust Credential identity · funds · clean-party Tick V1 · V2 · V3 Property title-matched Pack living disclosure Listing on a surface BuyIntent budget · area · timing Offer tick-to-tick Deal offer → registered Organisation tenant · agency · firm ReliancePact legal reliance edge Practitioner panel member
ObjectKey design decisions
CredentialTyped (identity, clean_party, funds_capacity, firb_status, ownership); stores derived proofs by default, raw documents only where law demands; carries validity window, refresh policy, and per-relying-party consent grants. Modelled to map onto W3C verifiable credentials later without a rewrite.
TickComputed, never stored as fact. A roll-up function over live credentials: V1 identity-verified, V2 + funds capacity, V3 full (identity + clean-party + funds + FIRB). Any underlying credential lapsing instantly demotes the tick — the badge can never be stale.
ReliancePactOne executed agreement per relying Organisation, referencing AUSTRAC reliance provisions; every consumption event (who read which credential for which deal) appends to the reliance ledger. This ledger is the moat (investor proposal §08).
DealThe only object that crosses into other systems: it holds the orchestration state machine and the handoff records (practitioner appointment, duty pre-fill payloads, settlement references). Deliberately not a contract-of-record — the legal contract stays with practitioners (P5).
BuyIntentSellers see a verified summary band ("deposit verified · pre-approval current · no FIRB constraint"), never balances or documents. Privacy is what makes buyers willing to register capacity at all (P3).
Finance objects §11BrokerPractice, PanelAccreditation, FinanceConsent and LoanCase form the finance layer’s two many-to-many edges: consent (buyer ↔ broker) and accreditation (broker ↔ lender). Quotes are written against a frozen consented view; an accepted quote escalates to an AIP credential on the buyer — portable into offers like any other credential.

04 · The trust engine

Verification as a living state, not an event

The engine's defining behaviour: a check runs once, then monitoring keeps it true. Every incumbent re-runs checks per transaction because their result is a PDF. Ours is a state machine with subscriptions.

Party verification lifecycle

Registered
Profile created; nothing claimed yet
Verifying
Check plan runs in parallel; partial results visible to the user only
Verified ✓
Tick issued at earned level; credentials enter monitoring
Attention
Expiry near, or a monitor fired (e.g. sanctions delta) — tick shows level, flags pending item
Suspended / Revoked
Tick withdrawn; relying parties who consumed it are notified via the ledger

Attention is the state that matters most. Point-in-time systems have only "valid" and "expired"; the gap between those is where fraud and deal collapse live. Veristate surfaces degradation early — to the user, and (with consent, under pact) to any party currently in a deal with them.

The check plans

CheckRailRefreshFeeds tickReusable via
Identity (VOI standard)DVS + biometric IDV; ConnectID as alternative input2-year validity; re-verify on document expiryV1ARNECC 2-yr validity · Identity-Agent appointment
Clean-party screeningPEP / sanctions / adverse-media listsContinuous (delta feeds)V3AML reliance pact
Funds capacityCDR consent + lender pre-approval linkAuto-refresh ~30 days; pre-approval expiry trackedV2Consented summary band
FIRB statusCitizenship/residency screening; exemption-certificate pathwayOn change of circumstanceV3Status flag on intent/offer
Entity & beneficial ownershipASIC / ABR + BO mappingChange-monitoredV1–V3AML reliance pact
Ownership (property)Title search: proprietor ↔ verified identity matchDealing/caveat watch while listedProperty tickPack + public badge check
Disclosure pack itemsRegistry / council / water / body-corporate APIsPer-item staleness clocks (state rules)Property tickPack shared to buyer side
Settlement accountAccount-name verification (ConnectID / PayID rails)At deal open + before settlementDeal gateAnti-redirection check
Broker practiceASIC credit-licence register + aggregator accreditation + clean-party screeningChange-monitoredBroker tickAML reliance pact
Lender panel & pricingLender / aggregator product, policy & pricing feedsDaily (products) · versioned (policy — matches record the version used)Match inputsPanel pricing (§11)

Badge integrity — making the tick unfakeable

Computed, live

The tick is a function of current credential state, evaluated on read. There is no cached "verified" flag to go stale or be forged in a screenshot — every render hits the badge service.

Publicly checkable

Every badge carries a short code / QR resolving to verify.veristate.com.au, which confirms level, scope and freshness — without revealing anything else. Screenshots of ticks are worthless; the check is the badge.

Revocation propagates

When a credential lapses, the ledger knows every open deal and relying party that consumed it — all are notified within minutes. A revoked tick is loud, not silent.


05 · The consumer webapp

Surface one: where the tick earns its meaning

The flagship's information architecture is deliberately small — five areas — because the product's depth lives in states, not screens. These six wireframes seed the Phase 0 prototype; each maps to a use case from the investor proposal.

AreaWhat lives there
Verification hubThe onboarding spine: check progress, credential wallet, consent grants, renewal prompts. The first-run experience is this hub.
My profile / My propertyParty tick, buy-intents; seller's property, pack health, listing controls.
MarketVerified listings, match feed (intent ↔ listing), saved searches. Unverified browsing allowed; acting requires a tick.
FinancePer-listing broker offers, panel-pricing comparison, consent grants, quote threads, AIP status. Buyers reach several brokers at once; every consent is scoped, logged and revocable (§11).
DealsOffer threads and the deal room: milestones, parties, practitioner, documents, orchestration timeline.
PanelChoose/compare practitioners: state-eligible, fixed-fee menus, capacity and rating signals.
3 of 4 complete
Identity ✓
Screening ✓
Funds — bank consent…
FIRB — not needed
Connect bank securely
Runs in the background — close this tab; we'll notify you.
W1 · Verification hub (first run)
Onboarding as a checklist that fills itself. Async by design: the user leaves, checks continue, the tick arrives by notification. Feeds UC1.
✓ Verified · V2
Share status
Deposit verifiedPre-approval currentRenews 12 Aug
New buy-intent
W2 · Buyer profile & buy-intent
The tick with its level, the verified summary band a seller will see, and intents. Raw financials never render here — only bands (P3).
✓ Property verified
Title matchedPack complete1 item ages in 9 days
Disclosure pack · 12 documents · live freshness
Make verified offer
Check this badge
W3 · Verified listing & property pack
The seller-side moat on one screen: ownership matched to title, living pack with per-item freshness, and a badge anyone can independently check. Feeds UC2.
Offer · open
✓ Buyer V2✓ Seller ✓ title$ band verified
Accept & open deal
Counter
W4 · Tick-to-tick offer
Both parties' verification state is frozen into the offer. Accepting instantly opens the deal room with practitioners pre-matched — the 48-hour exchange from UC2.
On track · day 9 of 35
Offer ✓Practitioners ✓Exchange ✓Finance 14dDuty pre-fillSettlement
Next: lender valuation booked · nothing needed from you
W5 · Deal room & orchestration timeline
The consumer's view of section 09's state machine: milestone chips, who-holds-the-ball, and "nothing needed from you" as the default happy state.
Powered by Veristate
214 verified clients6 ticks expiring3 SMR drafts
Annual AUSTRAC report ↓
W6 · Agency console (white-label)
The tenant's back office under their brand: verified-client book, expiring ticks, compliance exhaust (P6). Feeds UC3 and section 06.

06 · Co-branded white-label

Surface two: their brand, the shared graph

The white-label's central design decision is what is tenant-scoped and what is network-shared. Get this wrong one way and there is no network effect; wrong the other way and no agency will sign.

ConcernScopeRationale
Credentials & ticksNetwork-sharedThe whole point (P4): a client verified under any tenant is verified everywhere. Consumers are told this plainly at consent time — "your verification belongs to you."
Client relationships & CRM dataTenant-scopedAn agency's book is its business. Veristate never leaks who a tenant's clients are to other tenants — only the portable credential travels, and only when the consumer uses it elsewhere.
ListingsTenant-scoped, opt-upTenants choose per listing: private to their branded surface, or syndicated to the flagship market. Syndication is the carrot that grows the flagship without threatening the agency.
Reliance pact & AML programPer tenantEach regulated entity holds its own pact and its own program state; the compliance service renders each tenant's obligations separately. Legally non-negotiable.
PanelConfigurableTenants may pin preferred practitioners or inherit the open panel; conflict-of-interest disclosure rules apply either way (section 10).
Theming & domainPer tenantDesign tokens (logo, palette, type), custom domain, email identity. The badge itself is never re-themed — the tick renders identically on every surface, because the badge is the brand that guarantees the others.

Technically the white-label is the flagship webapp with a tenant context: same code, tenant-resolved tokens, feature flags per plan. A lightweight embed SDK (badge widget, verified-offer button, pack viewer) lets tenants keep their existing website and bolt trust onto it — often the first step before a full co-branded deployment.


07 · API & MCP

Surface three: Veristate as something an AI can act through

The API is the platform's real boundary — the webapp and white-labels are its first two clients. The MCP server is a thin, opinionated projection of the same API for AI assistants, designed around one rule: an assistant may gather and prepare anything, but binding actions require a human ceremony.

Resource surface (REST, versioned, consent-scoped)

ResourceRepresentative operationsNotes
/partiesregister · get tick state · start verification · grant/revoke consentPII-minimal responses; credentials referenced by opaque IDs, evidence never leaves the vault via API
/credentialsstatus · summary-band presentation · renewalPresentations are scoped claims ("V2, valid, deposit band ✓"), not data
/properties · /listingsregister · title-match · pack status · list/syndicate · searchSearch is public; pack contents gated on buyer tick + seller grant
/buy-intentscreate · match feed · pauseMatching pushes events, not polling
/offers · /dealsdraft · present · accept (ceremony) · milestones · handoffsAccepting an offer and appointing a practitioner are ceremony-gated (below)
/paneleligible practitioners · fee menus · appoint (ceremony)State-eligibility rules enforced server-side
/brokers · /finance-consentsbroker search & profile · grant/revoke consent (ceremony) · consented-view readsEvery read of a band is ledgered; presentations are bands, never balances
/loan-cases · /quotesscenario · panel matches · quote · AIP status · BID packBroker-scoped; every scenario change appends to the case audit log (§11)
/orgs · /pactstenant config · pact execution · reliance ledger queries · compliance reportsB2B scope; the compliance-exhaust endpoints
/badgepublic verification of any tick codeUnauthenticated, rate-limited, reveals level + freshness only

The MCP server

Tools are named for intent, not for endpoints, and each declares whether it is read, prepare, or ceremony class. Ceremony-class tools never complete an action: they stage it and return a signed link where the human confirms inside a Veristate surface (webapp or white-label) with their verified session. The assistant's context receives reference tokens and summary bands — never documents, balances, or identity data.

MCP toolClassWhat it does
check_verification_statusreadTick level, pending items, renewal dates for the connected user
start_verificationprepareBegins the async check plan; returns hub link for biometric/consent steps
screen_firb_positionreadResidency-based eligibility summary (UC4's first step)
search_verified_listingsreadMarket search with tick/pack filters
get_property_pack_summaryreadPack table of contents + freshness; item access requires buyer tick grant
register_buy_intentprepareCreates/updates an intent from conversational parameters
draft_offerprepareAssembles a tick-to-tick offer with conditions; nothing is sent
present_offerceremonyStages the offer; human confirms via signed link before the seller sees it
appoint_practitionerceremonyStages a panel appointment at a fixed fee; human confirms
compare_broker_offersreadPer-listing broker pricing summaries for the connected buyer
grant_finance_consentceremonyStages a band share with chosen brokers — scoped, revocable; human confirms
get_panel_matches / reprice_scenarioprepareBroker scope: ranked lender matches for a LoanCase; every re-price appends to the audit log
generate_bid_packprepareBroker scope: drafts the Best Interests Duty evidence pack for review — never auto-filed
get_deal_status / subscribe_deal_eventsreadMilestones, who-holds-the-ball, next actions — the feed UC4's Claude narrates
generate_compliance_reportprepareB2B: tenant AML report drafts (plugin surface, section 08)

Why this matters strategically: as buying journeys move into assistants, the assistant needs a counterparty it can trust programmatically. Portals offer HTML to scrape; Veristate offers signed claims. The MCP surface is how "the trust layer for AI-assisted property" stops being a slogan and becomes an integration.


08 · Agent-harness plugin

Surface four: the professional's daily driver

The Cowork plugin composes the MCP server with packaged skills — prompts and workflows tuned to four professional teams. It ships no logic of its own beyond these compositions, so it inherits every platform improvement for free.

Buyer's agencies

Pipeline skills

/pipeline-brief — morning digest: expiring ticks & pre-approvals, new matches per client, pack changes overnight (the caveat flag from UC5).

/client-onboard — conversational intake that ends with start_verification and a buy-intent draft.

/offer-pack — comparable-listing analysis + drafted offer, staged for the client's ceremony.

Conveyancing & law firms

Matter skills

/matter-open — pulls verified party + pack into a new matter; VOI and CDD arrive as reliance records, not tasks.

/duty-prefill — assembles the EDR / Duties Online / QRO payload from deal data for practitioner review.

/settlement-ready — pre-settlement checklist against deal state, incl. account-verification gate.

Agency back offices

Compliance skills

/aml-health — program status, screening backlog, training gaps across offices.

/smr-draft — structures a suspicious-matter narrative from deal context for the compliance officer's review — never auto-filed.

/austrac-annual — drafts the annual compliance report from the ledger.

Broking teams

Finance skills

/lead-brief — morning digest: new consented leads with bands, expiring AIPs and consents, rate moves affecting open quotes.

/panel-reprice — re-runs a LoanCase scenario across the panel and drafts the client note; the quote itself stays a human send.

/bid-pack — assembles the Best Interests Duty evidence pack from the case log for the broker’s sign-off.

Design rule inherited from section 07: the plugin's agents read and prepare; humans confirm ceremonies. A morning brief can notice, draft, and stage — it cannot bind a client to anything.


09 · Downstream orchestration

From accepted offer to registered title, with the ball always visibly held

The Deal state machine is Veristate's answer to the fragmented downstream chain. It does not perform legal steps — it sequences them, pre-fills them, and makes their state legible to everyone entitled to see it.

Offer accepted → Deal opens
Deal room created; both parties' tick states and the offer terms frozen in; reliance records written for the agent under their pact. The buyer’s broker and their AIP credential join the room — the finance milestone opens pre-warmed.
Ball: platform · minutes
Practitioners confirmed
Pre-selected panel members appointed (ceremony); verified party data + pack flow to their systems; VOI arrives as a reliance record — no re-verification.
Ball: parties → practitioners · same day
Exchange prepared & executed
State-aware: NSW s66W certificate prepared if parties elect to waive cooling-off; QLD contract on the pre-disclosed Form 2 pack; contract itself signed in the practitioner's tooling (P5).
Ball: practitioners · target ≤ 2 days from acceptance
Conditions run
Finance (valuation-only — the AIP has been held via the buyer’s broker since search, and lender status webhooks straight into the milestone), building & pest bookings, FIRB where applicable — each a tracked milestone with expiry clocks and nudges.
Ball: buyer side · state-typical windows
Duty pre-filled
EDR / Duties Online / QRO payloads assembled from verified deal data; practitioner reviews and lodges — assessment stays theirs.
Ball: practitioners
Settlement handoff
Deal reference and account-verification results handed to the practitioners' PEXA workflow; settlement-account gate re-checked; PEXA Key recommended to consumers.
Ball: practitioners + banks · Veristate observes
Registered → Deal archived
Milestone confirmed from title data; deal record sealed; AML records retained per statute; consumer credentials remain live for the next transaction — the flywheel.
Ball: platform · retention clocks start

Failure paths are first-class: a crashed condition reverts the Deal to market-return with the pack and both ticks intact — relisting is hours, not weeks, which materially softens the cost of a fall-over for both sides.


10 · The legal panel

Practitioners as first-class citizens, not a referral afterthought

Today buyers find conveyancers via agent referral — late, opaque, and conflict-prone. The panel redesigns that relationship around three commitments.

Verified, both ways

Panel members are themselves VOI'd, licence-checked per state (solicitors-only in QLD/ACT), insurance-verified, and capacity-signalled. The trust engine runs on them too — a practitioner tick.

Fixed-fee menus

Published, structured fee menus (purchase/sale, state, complexity tiers) replace "from $X plus surprises". Comparison is native; disbursements itemised from live search pricing.

Early engagement

Parties select practitioners at verification time, not offer time — so the practitioner is warm when the deal opens (the 48-hour exchange depends on this). Switching remains one click until exchange.

Conflicts policy: tenants may pin preferred firms, but every recommendation surface discloses the relationship, and the consumer's own choice always outranks the pin. Referral economics are flat-fee per appointment — never a percentage — to keep incentives clean.


11 · The finance layer

Buyers, brokers, lenders — two many-to-many edges with pricing on top

Finance is the platform’s second marketplace. Buyers reach multiple verified brokers; each broker reaches multiple lenders through an accredited panel; lenders feed products, policy and pricing into the graph. Veristate owns the plumbing between them — consent, matching, comparison — and the evidence trail the law demands. It never touches the money: commissions stay between broker, lender and client, disclosed on every quote.

The finance topology
Solid: FinanceConsent (buyer ↔ broker, M:N). Dashed: PanelAccreditation (broker ↔ lender, M:N). Below: the LoanCase spine. Hover any node.
Buyers · verified bands Verified brokers Lenders · feeds Priya & Dan band ✓ to $1.4M R. Costa band ✓ to $1.6M J. Okafor band ✓ to $980k Harbourline Finance broker tick ✓ · 32-lender panel Aster Finance broker tick ✓ · 24-lender panel Macquarie Athena ING Suncorp CBA Scenario Panel match Quote AIP credential Deal milestone Drawdown The LoanCase spine — the broker’s working file; every transition and scenario change appends to its audit log.

The four finance objects

ObjectKey design decisions
BrokerPracticeAn Organisation subtype run through the same trust engine: ASIC credit licence, aggregator accreditation, clean-party — rolled into a broker tick the buyer sees. Carries response-time and settled-loan signals for comparison.
PanelAccreditationThe broker ↔ lender M:N edge. Snapshots the lender’s versioned policy parameters (LVR caps, serviceability buffer, income-type rules) and subscribes to its pricing feed — so a match can always name the policy version it ran against.
FinanceConsentThe buyer ↔ broker M:N edge, modelled exactly like credential consent (P3): scoped to a property or search, time-boxed (default 30 days), band-only presentation, every read ledgered, one-tap revocation that propagates like tick revocation. A buyer holds several at once — brokers compete, never queue.
LoanCaseThe broker’s working file: scenario (loan, security, LVR, repayment, rate type), the ranked match set including exclusions with reasons, quotes, AIP, and an append-only audit log. Quotes are written against the frozen consented view, so they cannot silently degrade; an accepted quote escalates to an AIP credential on the buyer. One buyer, several brokers, several LoanCases — by design.

Lender feeds

FeedContentsRefresh
Product catalogueProducts, features (offset, redraw, cashbacks), carded ratesDaily
Policy parametersLVR caps, serviceability buffers, income-type policies (incl. self-employed), security rulesOn change, versioned — every match records the version it used
Pricing outcomesAnonymised, aggregated discretion decisions → the discretion-outlook model ("−25 bp likely · 74% of similar requests approved")Continuous, aggregated
Application statusAIP → valuation → unconditional → drawdownWebhooks, straight into the deal’s finance milestone

Panel pricing — a pure function

Matching is deterministic, versioned and replayable: "why did it rank this way on 12 August" must be answerable forever, because a regulated adviser recommends from its output. No stored ranking — like the tick, matches are computed on read and logged on use.

match(scenario, clientFile, panel) → ranked product set

  # 1 · eligibility — policy filters (LVR cap, income type, security rules)
  #     exclusions are KEPT, with reasons: BID needs the considered set, not just winners
  eligible, excluded = screen(panel.policies@version, scenario, clientFile)

  # 2 · serviceability — income × policy factor ÷ lender buffer, vs loan
  for p in eligible: p.buffer_ratio = capacity(clientFile, p.policy) / scenario.loan   # pass / tight / fail

  # 3 · pricing — carded rate + scenario adjustments (LVR band, IO, fixed) − likely discretion
  for p in eligible: p.rate = card(p, scenario) − discretion_outlook(p, clientFile)

  # 4 · rank — 5-year true cost, tie-broken by client objectives (offset need, certainty, speed)
  return rank(eligible, by=true_cost_5yr, tiebreak=clientFile.objectives), excluded

Every scenario change a broker makes — a slider move, a repayment toggle — re-runs the function and appends the inputs, policy versions and output to the LoanCase log. That log is not overhead; it is the raw material of the next subsection.

Best-interests calculation and the BID evidence pack

Principle P6 applied to brokers: nobody "does BID paperwork". The Best Interests Duty demands the broker show the considered set, why the recommendation beats it, and how the client’s objectives were weighed — which is exactly what the LoanCase log already contains. The BID evidence pack renders it: considered products (including exclusions and their reasons), the scenario history, the ranking rationale verbatim from the model, the client’s stated objectives, and the commission disclosed on each quote. Generated per file, on demand, regulator-ready — compliance as exhaust.

What each side sees

The buyer sees

Broker ticks and comparison signals; each broker’s per-listing pricing; quotes with commission disclosed; who read their band and when. Never one broker’s quote shown to another.

The broker sees

The consented view only: band, target property, objectives — never balances, payslips or documents. Their own panel, matches and files. Reads are ledgered and visible to the buyer.

The platform holds

Consents, the match model and its versions, audit logs, AIP credentials, the reliance ledger. No commission flows through Veristate — ranking has nothing to sell (investor proposal §07).

Consented file · reads logged
LVR 80%
Passes ×1.18−25 bp likely
Passes ×1.24No discretion
Tight ×1.04−15 bp likely
8 products · 6 eligible · exclusions kept with reasons
Why ranked
Generate BID pack
W7 · Broker workspace — live panel matching
Scenario controls re-run the match function on every change; serviceability, carded rate and discretion outlook per row. Every re-price appends to the LoanCase log.
✓ Verified broker
from 5.49%AIP in 2 daysvs your bank: −28 bp
Request quotes
Share band · 2 brokers
Bands, never balances — consent scoped to this property, revocable
W8 · Buyer’s broker comparison & connect
Per-listing broker offers with the multi-broker consent grant (ceremony). Quotes arrive into a thread; proceeding with one broker releases the others politely.

Action classes follow section 07’s rule: reading a consented file and running matches are read/prepare; a buyer granting consent or proceeding with a broker, and a broker sending a quote, are ceremonies. The AIP attaching to an offer is automatic — it is a credential presentation, not an action.


12 · Security, privacy & compliance architecture

Designing for the honeypot problem we are choosing to have

A platform holding identity and financial verification for hundreds of thousands of people is a target. The architecture assumes breach attempts and designs so that success yields as little as possible.

Threat / dutyDesign response
Data honeypotProofs over documents. Where law permits, the vault stores the derived attestation (check outcome + hash + supplier reference), not the source document. Where statute requires document retention (AML, 7 years), those objects live in a separately keyed, access-ceremonied cold store. Field-level encryption; per-party keys; vault reads are themselves ledgered.
Payment redirection fraudAccount-name verification at deal open and again pre-settlement; bank-detail changes inside a deal trigger a mandatory re-verification and out-of-band confirmation. PEXA Key promoted for the final leg.
Seller impersonationThe property tick's proprietor-match plus dealing watch; any title change while listed suspends the listing automatically.
Consent & APP complianceA consent ledger parallel to the reliance ledger: every grant is purpose-bound, per relying party, expiring, revocable in the hub. Privacy-Act APP mapping maintained per credential type; data-minimal presentations by default (bands, not balances).
Insider riskNo standing human access to the vault; support access is time-boxed, purpose-logged, dual-approved.
Regulatory postureInsured Identity-Agent appointments under ARNECC rules; ISO 27001 program from Phase 1; independent AML program evaluation on the statutory 3-year clock; state-by-state legal review gates each market entry.
Tick liabilityThe badge asserts what was checked and when — never guarantees a counterparty's future conduct. Terms, badge-service responses, and marketing all carry the same bounded claim; this is a design constraint on copy as much as code.

13 · Implementation appendix

Stack, shape, and the path to Phase 0

Boring technology, deliberately: the risk budget is spent on the trust engine's correctness and the integrations, not on infrastructure novelty.

Proposed stack (Python-centred)

LayerChoiceWhy
BackendPython · FastAPI · PydanticOne language across API, engine and workers; typed schemas shared end-to-end; the team's home ground
Trust-engine workflowsTemporal (Python SDK)Check plans and deal orchestration are long-running, resumable, audit-heavy workflows — exactly Temporal's shape; Celery would reinvent it badly
DataPostgreSQL (+ append-only ledger tables) · Redis · S3-compatible vault storeThe reliance/consent ledgers are insert-only Postgres with hash chaining — auditable without exotic tech
EventsPostgres outbox → lightweight bus (NATS or SQS)Tick changes, pack staleness, deal milestones as events; webhooks + MCP subscriptions ride on it
FrontendNext.js/React, tenant design tokensOne codebase serves flagship + white-labels (section 06); the design system in this document's visual language
MCP serverPython MCP SDK over the public APIThin projection; tool classes (read/prepare/ceremony) enforced at this layer
DeploymentModular monolith first; extract services at proven seams (engine, badge, compliance)Twelve domain objects do not need twelve microservices on day one

Build plan mapped to the investor roadmap

PhaseBuildsMocked / deferred
0 · Prototype
weeks
Screens W1–W6 as a clickable Next.js app; real API shapes (/parties, /listings, /offers) served by a FastAPI stub with in-memory state machines — the same stubs later become the MCP demoAll rails mocked; no auth beyond magic links; single state (QLD narrative)
1 · Compliance wedgeTrust engine v1 (identity + screening + monitoring), evidence vault, reliance ledger + pact flow, agency console (W6), compliance reports; Temporal in productionMarketplace closed; CDR funds-capacity in pilot; panel manual
2 · Marketplace & badgeFlagship market with property search, property tick + packs, tick-to-tick offers, deal rooms, panel v1, public badge service; broker workspace with the panel-matching engine (pure-function library + lender-feed adapters), finance consents, quote→AIP workflow and the BID evidence generatorDuty pre-fill behind practitioner review flag
3 · PlatformPublic API GA, MCP server, Cowork plugin, embed SDK, duty pre-fill integrations, additional states/tenants

Team shape for Phases 0–1: two backend (engine + integrations), one frontend, one design, fractional legal/compliance counsel — the reliance-pact framework and Identity-Agent appointments are as much "build" as the code.


14 · Open design questions

Decisions this document deliberately leaves open

Custodial credentials vs consumer wallet

V1 is custodial (Veristate holds credentials, consumers hold consent). W3C verifiable credentials in a consumer wallet is the principled end-state (P3) and the ConnectID-convergence hedge — but wallets today cost conversion. The domain model keeps the migration path open; the trigger point is undecided.

How loud is "Attention"?

Surfacing credential degradation to a counterparty mid-deal protects them but could unfairly torpedo a party over a false-positive screening delta. Grace windows, human review before propagation, and what exactly counterparties see all need careful policy design with counsel.

Flagship vs tenant primacy in Phase 2

Does the marketplace open as the flagship brand, or do we let the first large tenant's co-brand be the consumer-facing debut and keep the flagship as the network's neutral spine? Cold-start strategy says seed via tenants; brand strategy says the tick needs one famous home. Sequencing TBD with the pilot partner.

Duty and FIRB integration depth

Pre-fill (practitioner reviews and lodges) is safe and shippable. Direct lodgment as a revenue-office CSP is deeper moat but a regulatory project per state. Phase 3 decision, informed by Phase 1 relationships.

Discretion-outlook modelling

Predicting likely pricing discretion from aggregated outcomes is genuinely useful and genuinely sensitive: lenders may resist publication, and a wrong estimate skews regulated advice. Options: lender-sanctioned ranges, aggregator data partnerships, or shipping without the column until confidence is proven. Needs lender conversations in Phase 1.

Ranking neutrality & audit

The match model orders products a regulated adviser then recommends. Who audits its weights, how objective-fit trades against raw cost, and whether brokers may tune defaults per client are open policy questions. The versioned, replayable log makes any answer defensible — but the defaults still matter.

Next step, as before: Phase 0. Wireframes W1–W6 (W7–W8 follow with the Phase 2 finance surfaces) and the API stubs in section 13 are specified precisely so the prototype can start from this document without another planning round.