← Selected work

AI data engineering · Data migration · 2026

Procurement Data Modernization Workbench

A traceable migration and evidence-retrieval system built from public World Bank procurement records.

ProcurementEvidence Workbench
Verified run
One migration, fully traced

From fragmented records to retrievable evidence.

01Raw
02Validate
03Model
04Retrieve
Source records600

300 notices + 300 awards

759evidence chunks

Verified local prototype using public World Bank procurement records. Independent portfolio project, not a World Bank product.

01

The engineering question

How do fragmented records become trustworthy enough for analytics and AI?

Procurement notices and contract awards arrive through different structures, naming conventions, and levels of completeness. Moving them into one database is not enough. The migration must preserve lineage, reconcile meaning, and make every transformation reviewable.

I built the workbench to demonstrate the full path from bounded API ingestion to validated relational data, project features, and citation-grounded retrieval. The interface is a proof surface for the engineering beneath it, not a decorative dashboard.

02

Verified scope

A complete bounded run, not a scripted mockup.

The same artifacts drive the pipeline ledger, quality evidence, retrieval corpus, and recruiter interface.

600source records
159projects materialized
272feature rows
759evidence chunks
8documented controls
13 secbounded local run
03

Migration architecture

Five layers, each independently inspectable.

The design preserves the source before applying interpretation, then separates validation, modeling, feature engineering, and retrieval.

  1. 01
    Raw evidence

    Immutable API responses, retrieval timestamps, source URLs, and checksums.

  2. 02
    Standardized

    Normalized identifiers and dates with original values retained for audit.

  3. 03
    Curated SQL

    Nine relational tables with explicit grain, keys, joins, and run history.

  4. 04
    Project features

    272 project-level rows covering activity, suppliers, linkage, and quality.

  5. 05
    Evidence index

    759 source-linked chunks with metadata and deterministic vectors.

04

Record lineage

One award, traced from source value to curated field.

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

Data integrity

Uncertainty is recorded, not silently corrected.

Every control has a rule, severity, affected-record count, and recommended human handling. The source value remains available.

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

Responsible retrieval

Retrieve evidence, cite the source, or explicitly stop.

The browser demo searches the exported SQLite evidence index. Results are ranked from stored vectors and never composed from a hard-coded answer list.

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.

07

Production translation

Local proof, enterprise path.

ImplementedSQLite pipelineInstitutional targetDatabricks + Delta Lake
ImplementedBounded API ingestionInstitutional targetOrchestrated incremental loads
ImplementedCurated relational modelInstitutional targetSnowflake or managed PostgreSQL
ImplementedDeterministic vectorsInstitutional targetModel registry + managed vector store
What I learned
Reliable AI begins before the model. It begins with source lineage, explicit transformation rules, defensible joins, and the discipline to return no answer when evidence is insufficient.