← Selected work

Data engineering · Migration controls · Analyst operations · 2026

Procurement Data Modernization Workbench

An end-to-end migration control workbench for validating records, resolving exceptions, and assembling release evidence.

Migration control systemValidate. Decide. Release.
600 records reconciled

Built independently from official public World Bank procurement records. It does not access STEP, private data, or internal World Bank systems.

01

The operational mandate

What must happen before migrated procurement records can be released?

Procurement notices and contract awards arrive through different structures, naming conventions, and levels of completeness. A successful load count alone cannot prove that relationships, financial meaning, or source lineage survived the move.

I designed the workbench as an operating surface for the people responsible for that decision. It moves one bounded migration from ingestion through validation, specialist review, acceptance testing, and controlled release—with the evidence for each step attached.

02

Verified operating scope

One bounded migration, carried through the complete control journey.

The interface connects run evidence, decision state, and release criteria in one operating flow. Backend review APIs enforce state and rationale requirements; UAT executions persist as separate evidence records.

600source records
600records reconciled
759source-linked chunks
8implemented controls
2versioned mappings
4executable UAT scenarios
03

Control architecture

Five evidence layers connect source ingestion to release.

Each layer answers a different control question and leaves behind evidence that can be inspected without trusting the interface at face value.

  1. 01
    Source evidence

    Official responses, source links, retrieval timestamps, schemas, and checksums remain recoverable.

  2. 02
    Versioned mappings

    Machine-readable contracts define every source-to-target field rule and retain their fingerprints with each run.

  3. 03
    Curated records

    Validated notices and awards enter explicit relational grains; excluded records remain quarantined with reasons.

  4. 04
    Analyst decisions

    Specialists investigate raised exceptions, assign accountability, record rationales, and preserve every state change.

  5. 05
    Release evidence

    Reconciliation, decision completion, executable UAT, sign-off, and rollback evidence determine readiness.

04

Transformation lineage

One award, traced through a pinned mapping contract.

Raw source
{
  "projectid": " p166309 ",
  "contr_sgn_date": "29-Jul-2026",
  "total_contr_amnt": "1285000"
}

DQ-002 + DQ-004

Curated record
{
  "project_id": "P166309",
  "signed_date": "2026-07-29",
  "amount": 1285000.00
}
05

Quality and reconciliation

Every record must be accounted for—even when it cannot be loaded.

The run proves that records read equal records loaded, quarantined, and technically rejected. Every exclusion retains its source payload, control reason, and disposition.

DQ-002Invalid project identifier

Preserve and quarantine

DQ-004Invalid date format

Retain original value

DQ-007Project metadata unavailable

Retain and retrieve later

DQ-008Potential duplicate content

Compare official sources

06

Analyst decision workflow

A quality signal becomes an accountable human decision.

Analysts can search the queue, inspect official evidence, assign ownership, begin review, select a disposition, and explain their reasoning. The release counter, case state, checklist, and audit history update from the same decision.

REV-00003Potential duplicate content

Madagascar · DQ-008 · Medium priority

  1. 01
    Assign

    Name the accountable specialist.

  2. 02
    Investigate

    Compare source and related evidence.

  3. 03
    Decide

    Record disposition and substantive rationale.

Append-only audit history

Actor, timestamp, state transition, evidence, and rationale remain reconstructable.

07

Evidence retrieval

Retrieve supporting evidence, cite the source, or explicitly stop.

A FastAPI service embeds each query with a real sentence-transformer model and searches PostgreSQL with pgvector. Every result retains its official source URL; unsupported queries abstain.

01
contract award · indexed evidenceMedical furniture and hospital equipment procurement

P166309 · Pakistan · official source retained

0.742
Unsupported query?

No indexed evidence means no generated answer.

08

Executable UAT

Acceptance is executed, fingerprinted, and signed—not asserted.

The release owner runs four versioned scenarios against the current migration evidence. Expected and observed results, tester, environment, run ID, timestamps, and a SHA-256 fingerprint are persisted. Failed executions cannot be signed off.

UAT-001Reconciled record population Passed
UAT-002Versioned transformation contracts Passed
UAT-003Excluded-record traceability Passed
UAT-004Trusted records are queryable Passed
Named release sign-off

Passing tests remain pending until an approver records a substantive rationale.

09

Deployed system

The prototype now runs as a cloud-oriented service.

The portfolio interface is deployed separately from the API and vector database, mirroring the boundaries a delivery team would manage across product, backend, data, and release operations.

ImplementedFastAPI backendDeploymentRailway deployment
ImplementedPostgreSQL + pgvectorDeploymentNeon managed database
Implementedall-MiniLM-L6-v2Deployment384-dimensional embeddings
ImplementedGitHub ActionsDeploymentBackend, frontend, and pgvector CI
ImplementedHealth and readiness checksDeploymentControlled startup and deployment
What I learned
The migration is not complete when the pipeline finishes. It is complete when a specialist can explain what moved, what did not, why each exception was handled, and what evidence supports release.