[
  {
    "title": "BODACC Intelligence Pipeline",
    "dateStarted": "2026-01",
    "dateShipped": "2026-09",
    "oneLiner": "A deterministic ETL and scoring engine that turns France's public legal-announcement feed into prioritized, auditable leads.",
    "lens": [
      "systems",
      "signals"
    ],
    "stack": [
      "Python",
      "SQLite",
      "YAML",
      "pandas",
      "pytest"
    ],
    "status": "shipped",
    "repoUrl": "",
    "demoUrl": "",
    "coverImage": "",
    "confidential": true,
    "bestResult": "Batching database commits instead of committing per record turned a 977.5s production run into 58s on an identical re-run — a 17x wall-clock improvement, found by benchmarking rather than guessing.",
    "theme": {
      "mode": "light",
      "bg": "#FFFFFF",
      "surface": "#F4F5F2",
      "accent": "#1D4E89",
      "fg": "#14181D",
      "motif": "flow-ledger"
    },
    "metrics": [
      {
        "label": "wall-clock improvement from commit batching",
        "value": "17x",
        "quizOptions": [
          "1.7x",
          "17x",
          "170x"
        ]
      },
      {
        "label": "spec requirements traced at compliance audit",
        "value": "97.5% compliant",
        "quizOptions": [
          "81.5%",
          "97.5%",
          "100%"
        ]
      },
      {
        "label": "automated test count",
        "value": "~1,000 tests",
        "quizOptions": [
          "~100",
          "~1,000",
          "~10,000"
        ]
      }
    ],
    "url": "https://omarbounawara.dev/work/bodacc-intelligence-pipeline"
  },
  {
    "title": "CrawlViz",
    "dateStarted": "2025-09",
    "dateShipped": "2026-06",
    "oneLiner": "A focused web crawler that decides what's worth fetching before it fetches it, cutting a 600-second crawl to 15.",
    "lens": [
      "systems",
      "models"
    ],
    "stack": [
      "Python",
      "asyncio",
      "aiohttp",
      "sentence-transformers",
      "OpenRouter",
      "FastAPI",
      "WebSockets",
      "React",
      "D3",
      "SQLite",
      "Docker",
      "pytest"
    ],
    "status": "shipped",
    "repoUrl": "https://github.com/omarbounawarapy/CrawlViz",
    "demoUrl": "",
    "coverImage": "",
    "confidential": false,
    "bestResult": "Same 560-node benchmark workload: ~600s to ~15s wall-clock (~40x), by cutting LLM calls to about 1% of link volume instead of exhaustive traversal.",
    "theme": {
      "mode": "dark",
      "bg": "#050814",
      "surface": "#0A0F1F",
      "accent": "#5A7AFF",
      "fg": "#E6ECFF",
      "motif": "graph"
    },
    "metrics": [
      {
        "label": "wall-clock speedup, 560-node benchmark",
        "value": "40x",
        "quizOptions": [
          "4x",
          "40x",
          "400x"
        ]
      },
      {
        "label": "links identified in reference workload",
        "value": "50,828",
        "quizOptions": [
          "5,082",
          "50,828",
          "508,280"
        ]
      },
      {
        "label": "retained for downstream exploration",
        "value": "~1%",
        "quizOptions": [
          "~1%",
          "~10%",
          "~50%"
        ]
      }
    ],
    "url": "https://omarbounawara.dev/work/crawlviz"
  },
  {
    "title": "Invoice Intake Automation Tool",
    "dateStarted": "2026-02",
    "dateShipped": "2026-04",
    "oneLiner": "A CLI that turns semi-structured invoice PDFs into validated, typed records — no OCR, no LLM, no database, deliberately.",
    "lens": [
      "systems",
      "signals"
    ],
    "stack": [
      "Python",
      "pdfplumber",
      "Pydantic",
      "pandas",
      "openpyxl",
      "pytest"
    ],
    "status": "shipped",
    "repoUrl": "https://github.com/omarbounawarapy/invoice_intake_automation_tool",
    "demoUrl": "",
    "coverImage": "",
    "confidential": false,
    "bestResult": "200+ regression tests across table and paragraph invoice layouts and regional number formats, with zero external service dependencies.",
    "theme": {
      "mode": "light",
      "bg": "#EDE6D6",
      "surface": "#E3D9C2",
      "accent": "#2A2A28",
      "fg": "#1C1B18",
      "motif": "paper-stack"
    },
    "metrics": [
      {
        "label": "automated regression tests",
        "value": "200+",
        "quizOptions": [
          "20+",
          "200+",
          "2,000+"
        ]
      },
      {
        "label": "external service dependencies",
        "value": "0",
        "quizOptions": [
          "0",
          "2",
          "5"
        ]
      }
    ],
    "url": "https://omarbounawara.dev/work/invoice-intake-automation"
  },
  {
    "title": "IR Lab",
    "dateStarted": "2024-09",
    "dateShipped": "2026-01",
    "oneLiner": "Information retrieval built from first principles — analyzers, inverted indexes, and Boolean querying, not a wrapper around a search library.",
    "lens": [
      "models",
      "systems"
    ],
    "stack": [
      "Python",
      "inverted indexes",
      "Boolean retrieval"
    ],
    "status": "in-progress",
    "repoUrl": "https://github.com/omarbounawarapy/IR-lab",
    "demoUrl": "",
    "coverImage": "",
    "confidential": false,
    "bestResult": "A clean separation of ingestion, analysis, indexing, querying, and evaluation — each concern swappable without touching the others.",
    "theme": {
      "mode": "dark",
      "bg": "#05070C",
      "surface": "#0B1220",
      "accent": "#6C8CFF",
      "fg": "#D8DEEA",
      "motif": "index-tree"
    },
    "metrics": [
      {
        "label": "pipeline stages cleanly separated",
        "value": "5",
        "quizOptions": [
          "2",
          "5",
          "10"
        ]
      }
    ],
    "url": "https://omarbounawara.dev/work/ir-lab"
  }
]