From a Blue Cubes export to a completed auction in Odoo: contact reconciliation with
typed validation, a verified push, and the new lot reconciliation stage that imports hammer
prices against live auction lots. The Odoo demo and Bidder Evaluation run on synthetic data;
the Reconciliation app is currently connected to the realistic April dataset behind a
restricted login.
● Live · public
1 · Contact Reconciliation
Cleans post-auction Blue Cubes exports against the live Odoo contact list: normalisation-aware
matching with a transparent Match score, typed dropdown validation (an invalid county can
never push silently — it flags, explains, and suggests the fix), human approval, then a gated push
where every record is verified by read-back.
Try in 2 minutes
- Log in → the KPI cards are the filters — click Manual review
- Open Karen Namesake: see why review is needed + the match breakdown
- Approve → open Ready for Odoo → 🚀 Push → each record “✓ verified in Odoo”
Currently connected to the realistic April dataset (13,652 contacts,
162 lots) — login is restricted while client data is loaded; credentials are issued
directly by Cimelium.
● New · stage 2
2 · Lot Reconciliation — auction results
The same import continues into the auction: lots are located in Odoo by lot number (never
title), hammer prices import from the winning bids with per-lot verification, and every buyer
carries its contact-engine match score. Missing lots and duplicates become explicit exceptions —
nothing is ever created or overwritten silently. Buyer assignment and Sold status are LIVE on the demo — the import completes the
auction in one pass (hammer → buyer → sold, each verified), and uncertain buyers are never
assigned. Imports can be scoped to a single auction; suffix lots (25A/78B) match correctly.
Try in 2 minutes
- Open the Lots stage (button below) — 11 ready · 1 missing lot · 1 duplicate
- 👁 Preview: the exact plan — hammer, buyer and Sold per lot
- 🔨 Import → “11 written · 11 ✓ verified” → the lots are Sold with buyers in Odoo
Same login as Reconciliation · lots seeded in “deVeres Demo Auction — July 2026”
● Live · public
3 · AI Bidder Evaluation — now on live Odoo data
Scores every known bidder against the upcoming September auction on six deterministic dimensions —
reading lots and bidding history live from Odoo (sor.lot / sor.bid), the pilot's declared
end-state. Ranks prospects per lot, explains each score, drafts outreach.
Try in 2 minutes
- Log in as admin → Run evaluation
- Open a bidder: per-lot scores, rationale, score breakdown
- Open ⚖ Weights, shift the sliders, re-run — watch rankings change
Login admin@deveres.ie / Admin2026! · viewer: viewer@deveres.ie / View2026
● Live · public
4 · Odoo 19 — the system of record
Both ends of the loop live here: contacts are fetched live from this Odoo, and approved changes
and hammer prices are pushed back — exact-id writes, idempotent, dry-run first, fully audited.
The SOR auction modules are installed (contacts with roles, artworks, events, lots, bidding).
Watch the imports land
- Open Odoo → menu → Contacts: 216 synthetic clients with Contact Types
- Menu → Lots: the demo auction’s 50 live lots — hammer prices appear as you import
- Edit any matched contact here, then press ⟳ Refresh contacts in Reconciliation
Odoo login demo@deveres.ie / DemoView2026! · Odoo 19 + PostgreSQL 15 + SOR auction modules
1 · Import
Blue Cubes CSV
auto-detects buyers / sellers exports; binary files explained, never mis-read
2 · Reconcile
Match + validate
match score per field · typed dropdown validation · namesake & conflict rules
3 · Approve
Human decision
contextual actions per view · manual review is one-at-a-time by design
4 · Push
Contacts → Odoo
staging is the only payload · dry-run first · verified by read-back
5 · Lots
Locate by number
missing = exception (never auto-created) · duplicates → review
6 · Hammer
Winning bid → price
estimates & reserves untouched · idempotent re-runs
7 · Complete
Buyer + Sold
LIVE — buyers assigned at ≥90% match only; lots marked Sold; verified per lot
Always
🕘 Audit
append-only trail: user, timestamp, old→new values, verification
May 2026
Bidder Evaluation platform
Six-dimension deterministic scoring, artist-first per-lot aggregation, AI rationales with template fallback, outreach drafter, review dashboard. Plus the 1953 catalogue digitisation dataset.
1–2 July
Contact Reconciliation engine
Blue Cubes → system-of-record preprocessing: normalisation-aware matching, classification, review workflow, SQLite staging as the only push payload, explainable matching, RBAC, append-only audit. Found 2,813 duplicate groups and 1,258 misfiled Eircodes in the client master.
3 July
Odoo becomes the master
The reconciler fetches the contact list live from Odoo and pushes back by exact database id. Four data-quality guards added from live testing with the real April dataset.
6 July
Assembly install · verified push · Refresh
SOR auction modules installed from the Assembly profile (9 + 12 auto-bridges, zero dependency errors); every contact field verified editable via UI, ORM and API; ⟳ Refresh contacts (session-preserving re-pull); 🚀 push with per-record read-back verification; sync status bar; public demo hub.
7 July (am)
Metadata-aware validation · enterprise UX
Typed res.partner schema from Odoo; dropdown validation with suggestions (invalid counties can never push silently); missing-contacts root cause documented — no data was ever lost; full UX redesign: KPI-card filters, Match score breakdown, contextual actions, activity timeline, light enterprise theme.
7 July (pm)
Lot Reconciliation pipeline
50 live lots seeded in a demo auction; lots located by number; hammer prices imported from winning bids with per-lot verification and idempotent re-runs; missing-lot and duplicate exceptions; buyer matching reuses the contact engine (90% floor); buyer assignment & Sold status implemented behind feature flags pending the Odoo auction setup. 224 automated tests.
8–10 July
Review-driven refinements
Client review actioned: the match panel is now a plain-language checklist (✓ Match / ≈ Close /
✗ Different) instead of raw percentages; postcode similarity is binary ("there's no spectrum"); the Lots stage
gained its own ⟳ Refresh.
13 July (am)
Full auction completion · real-data rehearsal · launch simulation
Buyer assignment & Sold status enabled (one pass: hammer → buyer → sold, verified per lot;
uncertain buyers never assigned); suffix-lot matching and single-auction scoping; post-sale documents module
installed (post-sale advice + vendor settlements); a clean environment rebuilt strictly from the client
Assembly YAML with 38 automated parity checks; and a full production rehearsal on the real April dataset —
83 contacts reconciled converging in a single approve→push pass, 131/131 lots completed with zero errors,
on the local sandbox only.
13 July (pm)
Demo parity · checklist register · one-click reset
This demo now runs the exact client module stack on the latest code — the lot form shows
Lot Title, Lot Description and Buyer (below Hammer Price, once Sold) precisely as on the client's instance.
The register dropped percentages for a ✓/✗ field checklist. And the whole demo dataset reverts to its
original unreconciled state with one click (↺ Reset demo data), so the full pipeline — contact
reconciliation and sales reconciliation — can be tested from scratch, repeatedly. Verified live:
reset → contacts push → sales push → reset. 247 automated tests.