{
  "name": "Adil Munawar",
  "alternate_names": [
    "AdilMunawarX",
    "Adil Khokhar"
  ],
  "headline": "Machine-learning engineer for agricultural remote sensing · full-stack developer",
  "summary": "I train segmentation and time-series models on satellite imagery to map fields and crops, and build the web products that put those maps in front of people.",
  "roles": [
    "Machine Learning Engineer — agricultural remote sensing",
    "Project Lead & Web Developer at Nexsus Orbits",
    "Database Administrator at AOS"
  ],
  "organizations": [
    {
      "name": "Nexsus Orbits",
      "url": "https://nexsusorbits.com"
    },
    {
      "name": "AOS",
      "url": null
    }
  ],
  "education": "Govt. Islamia Graduate College Civil Lines, Lahore",
  "location": {
    "city": "Lahore",
    "region": "Punjab",
    "country": "Pakistan",
    "countryCode": "PK",
    "timezone": "UTC+5"
  },
  "work_mode": "remote worldwide",
  "availability": "Available for new engagements; remote worldwide. Email is best; replies within a day.",
  "canonical_url": "https://adilmunawar.vercel.app",
  "same_as": [
    "https://github.com/AdilMunawar",
    "https://www.linkedin.com/in/adilmunawar/",
    "https://x.com/adilmunawarx",
    "https://dev.to/adilmunawar",
    "https://leetcode.com/u/AdilMunawar/",
    "https://www.instagram.com/adilmunawarx/"
  ],
  "specialities": [
    "Agricultural remote sensing on Sentinel-2 and high-resolution imagery (NDVI/EVI phenology, cloud masking).",
    "Crop-type classification from satellite time series (1D-CNN, LSTM, temporal attention).",
    "Field boundary delineation with an HRNet-W48 segmentation model for Zaraat Dost Private Limited (Kishtwar region), producing GIS-ready parcels.",
    "Farm digitization pipelines: imagery to clean vector parcels in PostGIS, with human-in-the-loop QA.",
    "Crop yield prediction with XGBoost and SHAP explanations.",
    "Enterprise RAG pipelines (pgvector, hybrid retrieval, rerankers, cited answers).",
    "Agentic systems and custom Model Context Protocol (MCP) tool servers with scoped permissions and audit logs.",
    "Full-stack products on Next.js/React + Supabase, deployed on Vercel."
  ],
  "services": [
    {
      "title": "Machine learning & remote sensing",
      "description": null,
      "deliverable": null
    },
    {
      "title": "RAG & agentic systems",
      "description": null,
      "deliverable": null
    },
    {
      "title": "Full-stack products",
      "description": null,
      "deliverable": null
    },
    {
      "title": "Data & cloud engineering",
      "description": null,
      "deliverable": null
    }
  ],
  "toolkit": [
    {
      "group": null,
      "items": [
        "PyTorch",
        "HRNet / U-Net",
        "Temporal CNN & LSTM",
        "scikit-learn",
        "XGBoost",
        "TensorFlow / Keras",
        "ONNX Runtime",
        "MLflow",
        "Google Earth Engine",
        "xarray"
      ]
    },
    {
      "group": null,
      "items": [
        "Python",
        "Node.js",
        "FastAPI",
        "PostgreSQL / PostGIS",
        "Supabase",
        "Redis",
        "pgvector",
        "GDAL / Rasterio",
        "GeoPandas / Shapely",
        "NumPy / pandas"
      ]
    },
    {
      "group": null,
      "items": [
        "TypeScript",
        "React",
        "Next.js",
        "Vite",
        "Tailwind CSS",
        "HTML & CSS",
        "Zod",
        "face-api.js",
        "jsPDF",
        "Framer Motion"
      ]
    },
    {
      "group": null,
      "items": [
        "Docker",
        "AWS",
        "Azure",
        "Vercel",
        "GitHub Actions",
        "Cron / Airflow",
        "RAG pipelines",
        "MCP servers",
        "LangChain",
        "QGIS"
      ]
    }
  ],
  "projects": [
    {
      "id": "hrnet-w48-kishtwar",
      "title": "HRNet-W48 Field Boundary Delineation, Kishtwar",
      "category": "Agri-Tech & Geospatial",
      "kind": "model",
      "client": "Zaraat Dost Private Limited",
      "domain": "Agri-Tech",
      "description": "Semantic segmentation of agricultural parcel boundaries from high-resolution satellite imagery of the Kishtwar region, using an HRNet-W48 backbone that keeps full-resolution feature maps so thin field edges survive downsampling. Trained with a boundary-aware loss on digitised reference parcels, with tiled and overlap-stitched inference, morphological cleanup and vectorisation of the boundary raster into GIS-ready polygons.",
      "tech": [
        "PyTorch",
        "HRNet-W48",
        "Rasterio",
        "GDAL",
        "GeoPandas",
        "QGIS"
      ],
      "spec": {
        "architecture": "HRNet-W48",
        "task": "Field Boundary Segmentation",
        "framework": "PyTorch"
      },
      "github": null,
      "live": null,
      "public": false,
      "highlight": true
    },
    {
      "id": "crop-type-timeseries",
      "title": "Crop-Type Classification from Satellite Time Series",
      "category": "Agri-Tech & Geospatial",
      "kind": "model",
      "client": "Private client",
      "domain": "Agri-Tech",
      "description": "Per-parcel crop-type mapping from Sentinel-2 time series, built on cloud-masked NDVI and EVI phenology stacks resampled to a regular temporal grid across the growing season. Compares 1D-CNN, LSTM and temporal-attention classifiers on the sequences, then aggregates pixel predictions to parcel level to produce a crop map with per-class confidence.",
      "tech": [
        "Sentinel-2",
        "PyTorch",
        "1D-CNN / LSTM",
        "Temporal Attention",
        "Google Earth Engine",
        "xarray"
      ],
      "spec": {
        "architecture": "Temporal CNN / LSTM",
        "task": "Crop-Type Mapping",
        "framework": "PyTorch"
      },
      "github": null,
      "live": null,
      "public": false,
      "highlight": true
    },
    {
      "id": "farm-digitization",
      "title": "Farm Digitization & Parcel Mapping Pipeline",
      "category": "Agri-Tech & Geospatial",
      "kind": "model",
      "client": "Private client",
      "domain": "Geospatial",
      "description": "End-to-end pipeline that turns raw satellite imagery into clean vector farm parcels: preprocessing and mosaicking, model-based boundary extraction, polygonisation, topology fixes and attribute joins. Includes a human-in-the-loop QA workflow for reviewing and correcting parcels, with outputs delivered as GeoJSON and Shapefiles and stored in PostGIS for downstream analytics.",
      "tech": [
        "PostGIS",
        "GeoPandas",
        "Shapely",
        "GDAL",
        "QGIS",
        "Python"
      ],
      "spec": {
        "architecture": "Imagery → Vector Pipeline",
        "task": "Farm Digitization",
        "framework": "Python + PostGIS"
      },
      "github": null,
      "live": null,
      "public": false,
      "highlight": false
    },
    {
      "id": "ndvi-monitoring",
      "title": "NDVI Change Detection & Field Monitoring",
      "category": "Agri-Tech & Geospatial",
      "kind": "model",
      "client": "Private client",
      "domain": "Agri-Tech",
      "description": "Multi-date vegetation-index monitoring over digitised parcels, computing NDVI and related indices per field on each clear Sentinel-2 acquisition and flagging significant deviations from the field's seasonal baseline. Change events and time-series charts are exposed through a lightweight dashboard so agronomists can prioritise field visits.",
      "tech": [
        "Sentinel-2",
        "Google Earth Engine",
        "Rasterio",
        "Pandas",
        "FastAPI",
        "PostGIS"
      ],
      "spec": {
        "architecture": "Index Time Series + Thresholding",
        "task": "Change Detection",
        "framework": "Python"
      },
      "github": null,
      "live": null,
      "public": false,
      "highlight": false
    },
    {
      "id": "cloud-shadow-mask",
      "title": "Cloud & Shadow Masking for Sentinel-2",
      "category": "Agri-Tech & Geospatial",
      "kind": "model",
      "client": "Internal R&D",
      "domain": "Geospatial",
      "description": "Pixel-wise cloud and cloud-shadow segmentation for Sentinel-2 scenes, trained on multispectral bands to produce cleaner masks than the standard scene-classification layer for agricultural time-series work. Used as a preprocessing step so that only valid observations enter the phenology stacks that feed the crop classification models.",
      "tech": [
        "PyTorch",
        "U-Net",
        "Sentinel-2",
        "Rasterio",
        "NumPy"
      ],
      "spec": {
        "architecture": "U-Net",
        "task": "Cloud / Shadow Segmentation",
        "framework": "PyTorch"
      },
      "github": null,
      "live": null,
      "public": false,
      "highlight": false
    },
    {
      "id": "crop-yield-xgboost",
      "title": "Crop Yield Prediction with XGBoost",
      "category": "Machine Learning",
      "kind": "model",
      "client": "Private client",
      "domain": "Agri-Tech",
      "description": "Gradient-boosted regression model for field-level yield estimation from tabular agronomic records combined with remote-sensing features such as seasonal NDVI statistics and phenology dates. Uses grouped cross-validation by season and region to avoid leakage, with SHAP values used to explain which features drive each prediction.",
      "tech": [
        "XGBoost",
        "scikit-learn",
        "SHAP",
        "Optuna",
        "Pandas"
      ],
      "spec": {
        "architecture": "Gradient Boosted Trees",
        "task": "Yield Regression",
        "framework": "XGBoost"
      },
      "github": null,
      "live": null,
      "public": false,
      "highlight": false
    },
    {
      "id": "cnn-landcover",
      "title": "CNN Land-Cover & Crop Classification",
      "category": "Machine Learning",
      "kind": "model",
      "client": "Internal R&D",
      "domain": "Geospatial",
      "description": "Patch-based convolutional classifier for land-cover and crop classes on multispectral satellite tiles, fine-tuned from an ImageNet-pretrained ResNet with the first convolution adapted to additional bands. Handles severe class imbalance with weighted sampling and focal loss, and reports per-class metrics rather than a single accuracy figure.",
      "tech": [
        "PyTorch",
        "ResNet",
        "Albumentations",
        "Focal Loss",
        "ONNX"
      ],
      "spec": {
        "architecture": "ResNet (multispectral)",
        "task": "Land-Cover Classification",
        "framework": "PyTorch"
      },
      "github": null,
      "live": null,
      "public": false,
      "highlight": false
    },
    {
      "id": "lstm-phenology",
      "title": "LSTM Sequence Models for Phenology & Anomaly Detection",
      "category": "Machine Learning",
      "kind": "model",
      "client": "Private client",
      "domain": "Agri-Tech",
      "description": "Recurrent models over per-field vegetation-index sequences that learn the expected seasonal curve and identify key phenological stages such as emergence, peak and senescence. A reconstruction-error variant flags irrigation gaps and other anomalies when a field's trajectory departs from its learned pattern.",
      "tech": [
        "TensorFlow",
        "Keras",
        "LSTM / GRU",
        "NumPy",
        "MLflow"
      ],
      "spec": {
        "architecture": "Bi-LSTM Autoencoder",
        "task": "Phenology & Anomaly Detection",
        "framework": "TensorFlow"
      },
      "github": null,
      "live": null,
      "public": false,
      "highlight": false
    },
    {
      "id": "mlops-inference",
      "title": "Model Serving & Scheduled Inference",
      "category": "Machine Learning",
      "kind": "model",
      "client": "Private client",
      "domain": "Geospatial",
      "description": "Deployment layer for the remote-sensing models: containerised FastAPI services for on-demand inference and scheduled jobs that pull new imagery, run segmentation or classification over areas of interest and write results to PostGIS. Includes model versioning, run logging and basic drift checks on input statistics.",
      "tech": [
        "Docker",
        "FastAPI",
        "ONNX Runtime",
        "PostgreSQL",
        "Cron / Airflow",
        "MLflow"
      ],
      "spec": {
        "architecture": "Containerised Inference",
        "task": "MLOps Deployment",
        "framework": "FastAPI + Docker"
      },
      "github": null,
      "live": null,
      "public": false,
      "highlight": false
    },
    {
      "id": "enterprise-rag",
      "title": "Enterprise RAG Pipeline",
      "category": "LLM & Agents",
      "kind": "model",
      "client": "Private client",
      "domain": "LLM Systems",
      "description": "Retrieval-augmented question answering over a private company knowledge base: document parsing and structure-aware chunking, embedding ingestion into pgvector, and hybrid dense plus keyword search with a cross-encoder reranker. Answers are grounded with inline citations to source passages, and an evaluation harness tracks retrieval recall and answer faithfulness across releases.",
      "tech": [
        "pgvector",
        "LangChain",
        "Claude / OpenAI API",
        "FastAPI",
        "Redis",
        "PostgreSQL"
      ],
      "spec": {
        "architecture": "Hybrid Retrieval + Reranker",
        "task": "Grounded Q&A",
        "framework": "LangChain"
      },
      "github": null,
      "live": null,
      "public": false,
      "highlight": true
    },
    {
      "id": "agentic-mcp",
      "title": "Agentic Workflows & MCP Tool Server",
      "category": "LLM & Agents",
      "kind": "model",
      "client": "Private client",
      "domain": "LLM Systems",
      "description": "Multi-step LLM agents that operate over internal APIs and databases through a Model Context Protocol server exposing typed, schema-validated tools and resources. Includes scoped permissions per tool, confirmation gates for side-effecting actions, and structured audit logs of every tool call for review.",
      "tech": [
        "TypeScript",
        "MCP SDK",
        "Zod",
        "Claude API",
        "PostgreSQL",
        "Docker"
      ],
      "spec": {
        "architecture": "MCP Tool Server + Agents",
        "task": "Agentic Automation",
        "framework": "TypeScript"
      },
      "github": null,
      "live": null,
      "public": false,
      "highlight": false
    },
    {
      "id": "satellite-dl",
      "title": "Satellite Imagery Deep Learning",
      "category": "Agri-Tech & Geospatial",
      "kind": "repo",
      "client": null,
      "domain": "Geospatial",
      "description": "Curated reference of deep learning architectures for Earth observation: classification, semantic and instance segmentation, and object detection on satellite and aerial imagery, organised by task and domain.",
      "tech": [
        "Deep Learning",
        "Segmentation",
        "Object Detection",
        "Remote Sensing"
      ],
      "spec": {
        "architecture": "U-Net / Mask R-CNN / YOLO",
        "task": "Earth Observation",
        "framework": "PyTorch"
      },
      "github": "https://github.com/Adilmunawar/Satelite-Imagery-Deep-Learning",
      "live": null,
      "public": true,
      "highlight": false
    },
    {
      "id": "jarvis",
      "title": "Jarvis Voice AI Assistant",
      "category": "Machine Learning",
      "kind": "repo",
      "client": null,
      "domain": "Product",
      "description": "Modular Python assistant built around speech-to-text and text-to-speech, with a central router that dispatches voice commands to automation, web, scheduling and computer-vision modules.",
      "tech": [
        "Python",
        "Speech Recognition",
        "OpenCV",
        "Selenium"
      ],
      "spec": {
        "architecture": "STT → Router → Skills",
        "task": "Voice Agent",
        "framework": "Python"
      },
      "github": "https://github.com/Adilmunawar/Jarvis",
      "live": null,
      "public": true,
      "highlight": false
    },
    {
      "id": "adigaze",
      "title": "AdiGaze Resume Intelligence",
      "category": "LLM & Agents",
      "kind": "product",
      "client": null,
      "domain": "Product",
      "description": "AI recruitment platform that parses unstructured resumes into structured candidate records and ranks applicants against job requirements, with MFA, external submissions and processing telemetry on Supabase edge functions.",
      "tech": [
        "React",
        "TypeScript",
        "Supabase",
        "AI Parsing"
      ],
      "spec": null,
      "github": "https://github.com/Adilmunawar/AdiGaze",
      "live": "https://adigaze.vercel.app",
      "public": true,
      "highlight": false
    },
    {
      "id": "adigon",
      "title": "AdiGon AI Assistant",
      "category": "LLM & Agents",
      "kind": "product",
      "client": null,
      "domain": "Product",
      "description": "Conversational assistant that understands multi-format inputs (PDF, code, documents), with built-in voice recognition, a developer mode and Markdown rendering on a Supabase backend.",
      "tech": [
        "TypeScript",
        "React",
        "Gemini",
        "Supabase"
      ],
      "spec": null,
      "github": "https://github.com/Adilmunawar/AdiGon-AI",
      "live": "https://adigon.vercel.app",
      "public": true,
      "highlight": false
    },
    {
      "id": "adihunt",
      "title": "AdiHunt SEO Content Intelligence",
      "category": "LLM & Agents",
      "kind": "product",
      "client": null,
      "domain": "Product",
      "description": "AI SEO platform generating long-form optimised articles with keyword research, competitor analysis and technical audits, plus content planning and team collaboration.",
      "tech": [
        "React",
        "TypeScript",
        "Gemini",
        "Supabase"
      ],
      "spec": {
        "architecture": "LLM Content Pipeline",
        "task": "SEO Generation",
        "framework": "Gemini"
      },
      "github": "https://github.com/Adilmunawar/AdiHunt",
      "live": "https://adihunt.vercel.app",
      "public": true,
      "highlight": false
    },
    {
      "id": "adiflux",
      "title": "AdiFlux Image Generator",
      "category": "Products",
      "kind": "product",
      "client": null,
      "domain": "Product",
      "description": "Text-to-image generation web app with no login required, built on Google's Genkit framework with a streamlined component-based Next.js interface.",
      "tech": [
        "Next.js",
        "Genkit",
        "Gemini",
        "Firebase"
      ],
      "spec": null,
      "github": "https://github.com/Adilmunawar/AdiFlux",
      "live": "https://adiflux.vercel.app",
      "public": true,
      "highlight": false
    },
    {
      "id": "adimage",
      "title": "AdiMage AI Photo Editor",
      "category": "Products",
      "kind": "product",
      "client": null,
      "domain": "Product",
      "description": "AI photo editing tool for object removal, background replacement and detail upscaling with template-based workflows, built on Google's GenAI SDK.",
      "tech": [
        "React",
        "TypeScript",
        "Google GenAI"
      ],
      "spec": {
        "architecture": "Generative Editing",
        "task": "Image Enhancement",
        "framework": "GenAI SDK"
      },
      "github": "https://github.com/Adilmunawar/AdiMage",
      "live": "https://adimage.vercel.app",
      "public": true,
      "highlight": false
    },
    {
      "id": "adify",
      "title": "AdiFy AI Resume Builder",
      "category": "LLM & Agents",
      "kind": "product",
      "client": null,
      "domain": "Product",
      "description": "AI-assisted resume builder with content refinement and professional templates, powered by Gemini through Genkit, including image cropping and export tooling.",
      "tech": [
        "Next.js",
        "Genkit",
        "Gemini",
        "Firebase"
      ],
      "spec": null,
      "github": "https://github.com/Adilmunawar/AdiFy",
      "live": "https://adifyai.vercel.app",
      "public": true,
      "highlight": false
    },
    {
      "id": "adicorp",
      "title": "AdiCorp HRMS Platform",
      "category": "Products",
      "kind": "product",
      "client": null,
      "domain": "Product",
      "description": "Modular human resource management system with admin dashboard and employee self-service, covering attendance, leave, overtime, payroll and events, with PDF and spreadsheet export.",
      "tech": [
        "React",
        "TypeScript",
        "Supabase",
        "jsPDF"
      ],
      "spec": null,
      "github": "https://github.com/Adilmunawar/AdiCorp",
      "live": "https://adicorp.vercel.app",
      "public": true,
      "highlight": false
    },
    {
      "id": "adinox",
      "title": "AdiNox OTP Authenticator",
      "category": "Products",
      "kind": "product",
      "client": null,
      "domain": "Product",
      "description": "Two-factor authentication app generating TOTP tokens with local persistence, QR scanning and face-api.js biometric access control.",
      "tech": [
        "React",
        "TypeScript",
        "Supabase",
        "face-api.js"
      ],
      "spec": null,
      "github": "https://github.com/Adilmunawar/AdiNox",
      "live": "https://adinox.vercel.app",
      "public": true,
      "highlight": false
    },
    {
      "id": "aditron",
      "title": "Aditron Social Chat",
      "category": "Products",
      "kind": "product",
      "client": null,
      "domain": "Product",
      "description": "Real-time social chat application with emoji support and OTP/QR utilities on a Supabase realtime backend.",
      "tech": [
        "React",
        "TypeScript",
        "Supabase",
        "Realtime"
      ],
      "spec": null,
      "github": "https://github.com/Adilmunawar/aditrondev",
      "live": "https://aditron.vercel.app",
      "public": true,
      "highlight": false
    },
    {
      "id": "nureh",
      "title": "NUREH E-Commerce Storefront",
      "category": "Products",
      "kind": "product",
      "client": null,
      "domain": "Product",
      "description": "Clothing storefront optimised for fast loads with LCP asset preloading and layout-shift prevention, featuring video reels, a cart drawer and product carousels.",
      "tech": [
        "React",
        "Vite",
        "Vanilla CSS"
      ],
      "spec": {
        "architecture": "Static Storefront",
        "task": "E-Commerce",
        "framework": "React + Vite"
      },
      "github": "https://github.com/Adilmunawar/Nureh",
      "live": "https://nureh.pk",
      "public": true,
      "highlight": false
    },
    {
      "id": "federals",
      "title": "Federals.live News CMS",
      "category": "Products",
      "kind": "product",
      "client": null,
      "domain": "Product",
      "description": "Production news CMS with a Markdown editor, SEO tooling, breaking-news ticker and a role-secured admin portal backed by Supabase row-level security.",
      "tech": [
        "React",
        "Vite",
        "Supabase",
        "PostgreSQL"
      ],
      "spec": {
        "architecture": "Headless CMS",
        "task": "Publishing",
        "framework": "React + Supabase"
      },
      "github": "https://github.com/Adilmunawar/Federals.live",
      "live": "https://federals-live.vercel.app",
      "public": true,
      "highlight": false
    }
  ],
  "case_studies": [
    {
      "title": "Delineating Terraced Field Boundaries in Kishtwar with HRNet-W48",
      "excerpt": "How we turned high resolution imagery of terraced farmland into a topology-clean parcel layer for Zaraat Dost, using an HRNet-W48 boundary model, overlap-stitched tiled inference, watershed instancing and shared-arc vectorisation.",
      "tech_stack": [
        "PyTorch",
        "HRNet-W48",
        "Rasterio",
        "GeoPandas",
        "QGIS"
      ],
      "challenge": "Kishtwar's terraced parcels are small, irregular and packed so tightly that neighbouring fields share crop, stage and texture; the only evidence of a boundary is a bund or riser one or two pixels wide. Zaraat Dost needed those boundaries as closed, non-overlapping polygons their GIS team could edit, not a probability raster, and standard encoder-decoder segmentation blurred the thin edges into merged strips.",
      "solution": "We trained an HRNet-W48 model whose full resolution stream never drops the detail, with a boundary channel, an interior mask and a distance-weighted loss that concentrates the penalty at edges. Inference runs over overlapping rasterio windows blended with cosine ramp weights so no tile seam survives, followed by hysteresis thresholding, skeletonisation, marker-based watershed, and a vectorisation step that simplifies shared arcs once before rebuilding faces, delivered as GeoJSON and GeoPackage with per-parcel confidence.",
      "url": "https://adilmunawar.vercel.app/#case-studies"
    },
    {
      "title": "Crop Type Classification from Sentinel-2 Time Series",
      "excerpt": "Per parcel crop mapping for Zaraat Dost Private Limited: cloud-masked Sentinel-2 index series resampled onto a regular grid, a bidirectional GRU with attention pooling, and scheduled district-wide inference delivered as a PostGIS layer.",
      "tech_stack": [
        "Sentinel-2 L2A",
        "xarray",
        "PyTorch",
        "XGBoost",
        "PostGIS"
      ],
      "challenge": "Label every parcel in a district with its crop from Sentinel-2 alone, in a region where the monsoon removes weeks of usable imagery, the scene classification layer misses haze and small shadows, survey labels carry spatial and temporal errors, and two major crops dwarf the minor crops the client most wanted mapped.",
      "solution": "We built per-parcel index series from L2A with a combined SCL and U-Net mask, resampled them onto a ten-day grid with explicit observed and age channels instead of smoothing over gaps, moved from an XGBoost baseline through a temporal CNN to a bidirectional GRU with attention pooling, validated with spatial block folds and a held-out season, and ran inference as idempotent scheduled stages that write a per-parcel prediction layer to PostGIS.",
      "url": "https://adilmunawar.vercel.app/#case-studies"
    },
    {
      "title": "Serving Remote Sensing Models: On Demand Inference and Scheduled Jobs",
      "excerpt": "The deployment layer behind the farmland models: ONNX export with a parity gate, a FastAPI service with a warm session and bounded concurrency, scheduled jobs that claim work by idempotency key and write versioned rows to PostGIS, and an MLflow promotion flow that rolls back by moving an alias.",
      "tech_stack": [
        "Docker",
        "FastAPI",
        "ONNX Runtime",
        "PostgreSQL",
        "Cron / Airflow",
        "MLflow"
      ],
      "challenge": "The segmentation and classification models lived as PyTorch checkpoints run by hand, so every new area of interest meant a person, a machine and a script. Serving them needed a runtime that does not silently change the model, a service that stays responsive under concurrent requests, scheduled runs that survive duplicate ticks and evicted containers, and a way to know which model version produced any row in the database.",
      "solution": "Models are exported to ONNX with dynamic axes and only registered after a parity check on held-out tiles; a FastAPI service holds one warm ONNX Runtime session per process behind a semaphore that rejects rather than queues. Scheduled jobs discover new scenes with a spatial query, claim each unit through a unique idempotency key, retry with backoff, and write outputs and run status in one transaction. MLflow aliases decide which version runs, every output carries that version, drift on input statistics is flagged on the run row, and rollback is the promotion procedure in reverse.",
      "url": "https://adilmunawar.vercel.app/#case-studies"
    },
    {
      "title": "An Enterprise RAG Pipeline That Can Say It Does Not Know",
      "excerpt": "Grounded question answering over a private knowledge base, built so that refusal is a designed outcome: structure aware chunking, hybrid retrieval fused by reciprocal rank, a cross-encoder reranker, verified citations, and an evaluation harness that existed before any prompt was tuned.",
      "tech_stack": [
        "pgvector",
        "PostgreSQL",
        "FastAPI",
        "Redis",
        "Claude API"
      ],
      "challenge": "The client wanted question answering over policies, manuals and support tickets, with one non-negotiable: a confident wrong answer about a policy or a safety procedure was worse than no answer. Fixed-window chunking split tables and lost section context, dense retrieval missed exact product codes, and without a measurement of retrieval and faithfulness there was no honest way to tune anything.",
      "solution": "Documents are parsed into trees and chunked along their own structure with heading paths attached. Dense pgvector search and BM25 run side by side and are merged with reciprocal rank fusion, a cross-encoder reranks the candidates, and a gate compares the best score with a calibrated threshold before generation. Every cited sentence is verified against its source span, unsupported answers are rejected, and a CI harness reports retrieval recall at k, faithfulness and refusal accuracy for every release, with content-hash, query and reranker caches keyed by index version.",
      "url": "https://adilmunawar.vercel.app/#case-studies"
    },
    {
      "title": "AdiNox: Building a TOTP Authenticator with a Biometric Gate",
      "excerpt": "How AdiNox parses otpauth QR codes, generates TOTP codes with WebCrypto, keeps secrets in an AES-GCM vault under a PBKDF2 key, and puts a face-api.js check in front of the code list without pretending a face is a key.",
      "tech_stack": [
        "React",
        "TypeScript",
        "Supabase",
        "face-api.js"
      ],
      "challenge": "An authenticator holds the one secret that can produce every future login code for an account, inside a browser where storage is readable by any script in the origin, screens are photographed, and devices get lost. AdiNox had to keep secrets encrypted at rest, keep codes off the screen when nobody is looking, survive device loss, and stay honest about what a webcam check can and cannot protect.",
      "solution": "We parse otpauth URIs with the platform URL class and normalise every field, generate codes over crypto.subtle with non-extractable HMAC keys, and seal the vault with AES-GCM under a PBKDF2 key that lives only in memory. The face-api.js gate sits in front of the rendered codes within an unlocked session, cold starts always ask for the passphrase, the encrypted vault doubles as the backup format, and Supabase holds the account and preferences but never a secret.",
      "url": "https://adilmunawar.vercel.app/#case-studies"
    },
    {
      "title": "Farm Digitisation and Parcel Mapping at District Scale",
      "excerpt": "Four disagreeing descriptions of the same fields, GPS tracks, scanned cadastral sheets, operator polygons and model boundaries, were georeferenced, conflated with confidence scoring and reviewed by people, then delivered as a versioned parcel layer to the client's GIS and to PostGIS.",
      "tech_stack": [
        "PostGIS",
        "GeoPandas",
        "GDAL",
        "QGIS",
        "Python"
      ],
      "challenge": "Zaraat Dost Private Limited needed one authoritative parcel layer for a district, but the parcels already existed in four incompatible forms: partial GPS survey tracks, scanned paper cadastral sheets with no coordinates, quickly drawn operator polygons in Web Mercator, and dense HRNet-derived boundaries that knew nothing about ownership. None was complete, none was fully trustworthy, and every downstream system would store whatever identifiers we issued.",
      "solution": "We reprojected everything into one metric CRS, warped the paper sheets with ground control points and a thin plate spline, and treated every input polygon as a scored candidate rather than as truth. A PostGIS conflation query clustered overlapping candidates by intersection over union, a confidence function picked a winner and kept alternates, and close calls went to a QGIS review queue where every decision wrote a new parcel version. Exports to GeoPackage, Shapefile and PostGIS carried stable identifiers with versions, and a field audit fed back into the source priors.",
      "url": "https://adilmunawar.vercel.app/#case-studies"
    },
    {
      "title": "AdiGaze: AI Recruitment Engine",
      "excerpt": "AdiGaze turns a batch of mixed-format resumes into structured, ranked candidate records, and it was built to keep finishing the batch when a provider throttles or a file takes minutes to parse.",
      "tech_stack": [
        "React (Vite)",
        "Supabase (Deno)",
        "Gemini 1.5 Pro",
        "pgvector"
      ],
      "challenge": "High-volume resume parsing runs into two hard limits at once: serverless functions time out long before a large batch completes, and hosted LLM APIs return 429s under sustained load. We needed throughput and resilience without a dedicated queue service or a bigger budget.",
      "solution": "We spread work across whatever API keys are configured using a bounded round-robin worker pool inside Supabase Edge Functions, streamed results over Server-Sent Events so the shortlist appears as each candidate lands, and added exponential backoff with a keyword-search fallback. A SQL pre-filter narrows the set before pgvector ranks it.",
      "url": "https://adilmunawar.vercel.app/#case-studies"
    },
    {
      "title": "The Agentic Blueprint",
      "excerpt": "A field guide to building AI systems that actually finish work: five patterns (structured cognition, parallel workers, self-healing reflexes, vector memory, and an input immune system) drawn from the recruitment engine, RAG pipeline, and MCP server.",
      "tech_stack": [
        "System Design",
        "AI",
        "Swarm Logic",
        "pgvector",
        "Resilience"
      ],
      "challenge": "Most teams treat a language model as a vending machine (prompt in, text out) and then struggle to make it act reliably, run concurrently, or recover from failure. The challenge is turning a passive model into a system that decides, uses tools, and heals itself.",
      "solution": "A five-part blueprint: constrain the model to a schema so its output is data, run a bounded pool of workers sized to the rate limit, add backoff and graceful fallback, give it vector memory paired with a cheap SQL pre-filter, and sanitize every input while the database enforces least privilege.",
      "url": "https://adilmunawar.vercel.app/#case-studies"
    },
    {
      "title": "The Supabase Sovereign",
      "excerpt": "How I keep Postgres-backed backends fast and secure on Supabase under serverless load: connection pooling, targeted indexing, edge compute, async webhooks, and Row Level Security, with the tradeoff behind each decision.",
      "tech_stack": [
        "Supabase",
        "Postgres",
        "System Design",
        "Resilience",
        "Edge Functions"
      ],
      "challenge": "Serverless frontends spawn thousands of short-lived functions, each wanting a database connection, and a modestly sized Postgres hits its connection ceiling long before it runs out of CPU. Left unmanaged, that pattern takes the whole backend down under a traffic spike.",
      "solution": "Put a transaction-mode pooler in front of the database, index for the queries actually run, keep heavy logic in Edge Functions off the shared database CPU, push slow side effects to async pg_net webhooks, and treat default-deny Row Level Security as the real authorization boundary.",
      "url": "https://adilmunawar.vercel.app/#case-studies"
    }
  ],
  "notes": [
    {
      "title": "What Actually Makes LLM Inference Fast: KV Cache, Batching and Speculative Decoding",
      "excerpt": "Why decode is bound by memory bandwidth rather than compute, how large the KV cache really gets, what paged attention and continuous batching recover, how speculative decoding speeds up generation without changing the output distribution, and the three numbers to measure before believing any serving benchmark.",
      "tags": [
        "LLM",
        "Inference",
        "GPU",
        "Systems"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    },
    {
      "title": "Tiled Inference on Large Rasters Without Seams",
      "excerpt": "How we ran a field boundary model over district-scale rasters: halos and overlap, Gaussian blending instead of averaging, test time augmentation, a rolling buffer for windowed writes, and a detector that flags seams before anyone opens the output.",
      "tags": [
        "Segmentation",
        "Raster",
        "PyTorch",
        "GIS"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    },
    {
      "title": "Inside HNSW: How Approximate Nearest Neighbour Search Trades Recall for Latency",
      "excerpt": "How the layered graph behind pgvector and hnswlib routes a query, what M, efConstruction and efSearch each change, why deletes and filters break the usual assumptions, how IVF and product quantisation compare, and how to measure recall against brute force before trusting an index in production.",
      "tags": [
        "Vector Search",
        "HNSW",
        "pgvector",
        "Algorithms"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    },
    {
      "title": "Boundary Aware Losses for Thin Structure Segmentation",
      "excerpt": "Why pixel cross-entropy and Dice fail on one to two pixel boundaries, how distance weighting and the signed distance boundary loss fix it, and why the boundary F score with a tolerance band is the metric to trust.",
      "tags": [
        "Deep Learning",
        "Loss Functions",
        "Segmentation"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    },
    {
      "title": "Where the GPU Memory Goes: Fitting a Large Model on One Card",
      "excerpt": "The memory budget of a training step: weights, gradients, the two Adam moments, activations and workspace. How bf16, loss scaling, checkpointing, accumulation, channels_last and fused optimisers move each term, and how to find the real peak with the PyTorch memory snapshot.",
      "tags": [
        "PyTorch",
        "GPU",
        "Training",
        "Systems"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    },
    {
      "title": "Designing MCP Tool Servers an Agent Can Actually Use",
      "excerpt": "What we changed in a Model Context Protocol tool server after the first week of real agent traffic: schemas as the real prompt, idempotency keys, budgets, an error taxonomy the model can act on, permission tiers, audit rows, and replay tests built from recorded traces.",
      "tags": [
        "MCP",
        "Agents",
        "TypeScript",
        "LLM"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    },
    {
      "title": "Row Level Security Done Properly: Multi Tenant Isolation in Postgres and Supabase",
      "excerpt": "Why tenant filters in application code leak, how USING and WITH CHECK are evaluated, where the tenant id comes from, the per row function and missing index traps and the InitPlan fix, a policy test script, service role discipline and migrations that do not lock everyone out.",
      "tags": [
        "PostgreSQL",
        "Supabase",
        "Security",
        "Backend"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    },
    {
      "title": "Build the RAG Evaluation Harness Before You Touch the Prompt",
      "excerpt": "How the evaluation harness for an enterprise RAG pipeline is put together: a golden set from real questions, recall at k, MRR and nDCG with their blind spots, a calibrated LLM judge for faithfulness and citation precision, cost and latency budgets, and the CI gate that caught a change which raised recall while quietly breaking grounding.",
      "tags": [
        "RAG",
        "Evaluation",
        "LLM",
        "Python"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    },
    {
      "title": "Streaming Model Output Without Leaking Resources: SSE, Backpressure and Cancellation",
      "excerpt": "Zenith streams every reply through a Next.js route handler. This note covers the transport choice, propagating AbortSignal upstream, backpressure with pull, heartbeats, resuming with Last-Event-ID, and stopping generation the moment nobody is reading.",
      "tags": [
        "Next.js",
        "Streaming",
        "TypeScript",
        "LLM"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    },
    {
      "title": "How a TOTP Authenticator Really Works: HMAC, Time Windows and the Mistakes That Break Them",
      "excerpt": "From the otpauth QR code to an accepted six digit code: HMAC-SHA1 over a counter, dynamic truncation, the thirty second step, verification windows, replay protection, constant time comparison and the base32 edge cases, with AdiNox as the worked example.",
      "tags": [
        "Security",
        "Cryptography",
        "TypeScript",
        "Authentication"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    },
    {
      "title": "Recon for Juicy Endpoints via URLScan Dorking",
      "excerpt": "A methodology for authorized testers: narrowing a huge in scope estate down to the few hosts worth a human's time through passive discovery, polite confirmation, and triage, plus the defensive mirror for asset owners.",
      "tags": [
        "URLScan",
        "Hacking",
        "Pentesting",
        "Bug Bounty"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    },
    {
      "title": "How Attackers Exploit Public WiFi to Sniff Decrypted Network Packets",
      "excerpt": "How public-WiFi attacks actually work (evil-twin access points, on-path interception, TLS downgrade) and why end-to-end encryption, HSTS preload, encrypted DNS, and a VPN make an attacker's position on the wire close to worthless.",
      "tags": [
        "WiFi Security",
        "Hacking",
        "Pentesting"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    },
    {
      "title": "Securing In-Game Economies Against Value Tampering",
      "excerpt": "Where game economies get tampered with (memory edits, forged packets, race conditions, injection) and how server-side authority, atomic transactions, and audit logging shut it down. A defensive guide.",
      "tags": [
        "Hacking",
        "Game Security",
        "Reverse Engineering"
      ],
      "url": "https://adilmunawar.vercel.app/#blog"
    }
  ],
  "certifications": [
    {
      "name": "Operationalising EU Space for Security",
      "issuer": "EUSPA",
      "description": "EU Agency for the Space Programme course on operationalising EU space services for border security and geospatial intelligence.",
      "issued": "Aug 2026",
      "credential_id": "6966612178c62e5fe0048a0f",
      "image": null
    },
    {
      "name": "MATLAB Onramp",
      "issuer": "MathWorks",
      "description": "Hands-on introduction to MATLAB for numerical computing and data analysis.",
      "issued": "Jul 2026",
      "credential_id": null,
      "image": "https://adilmunawar.vercel.app/certifications/matlab-onramp.jpg"
    },
    {
      "name": "Advanced CloudFormation: Macros",
      "issuer": "AWS",
      "description": "Extending AWS CloudFormation templates with macros for reusable infrastructure as code.",
      "issued": "Jul 2026",
      "credential_id": null,
      "image": "https://adilmunawar.vercel.app/certifications/aws-cloudformation-macros.jpg"
    },
    {
      "name": "Machine Learning with Python",
      "issuer": "MIT Professional Education",
      "description": "Supervised and unsupervised learning foundations implemented in Python.",
      "issued": "Jul 2026",
      "credential_id": "4b7ac91e0f3d82c56a19fe0332d8a17",
      "image": null
    },
    {
      "name": "Computational Probability and Inference",
      "issuer": "MIT Professional Education",
      "description": "Probabilistic modelling and inference methods for data-driven systems.",
      "issued": "Jun 2026",
      "credential_id": "e4ecfea7a7014b2483579dd1e7356c23",
      "image": null
    },
    {
      "name": "Web Analytics by Accenture",
      "issuer": "Accenture / FutureLearn",
      "description": "Web analytics for data-driven decisions, delivered by Accenture on FutureLearn.",
      "issued": "Apr 2026",
      "credential_id": "v6zgddz",
      "image": "https://adilmunawar.vercel.app/certifications/digital-skill-web-analytics_certificate_of_achievement_v6zgddz_page-0001.jpg"
    },
    {
      "name": "Certified Software Engineer",
      "issuer": "HackerRank",
      "description": "Verified software engineering and problem-solving proficiency.",
      "issued": "Apr 2026",
      "credential_id": "b6411a6e46da",
      "image": "https://adilmunawar.vercel.app/certifications/software-egeenier-hacker-rank.png"
    },
    {
      "name": "Agile Foundations",
      "issuer": "LinkedIn / PMI",
      "description": "Agile foundations in collaboration with the Project Management Institute.",
      "issued": "Apr 2026",
      "credential_id": null,
      "image": "https://adilmunawar.vercel.app/certifications/agile-foundation-by-linkedin.jpeg"
    },
    {
      "name": "SQL and Relational Databases 101",
      "issuer": "Cognitive Class / IBM Skills Network",
      "description": "Relational database design and SQL querying fundamentals.",
      "issued": "Mar 2026",
      "credential_id": "6acdbc63fde448e3a5d2304cd0333ea8",
      "image": "https://adilmunawar.vercel.app/certifications/sql-relational-databases.jpg"
    },
    {
      "name": "Claude in Amazon Bedrock",
      "issuer": "Anthropic",
      "description": "Integrating and optimizing Claude models on Amazon Bedrock, including the Model Context Protocol.",
      "issued": "Mar 2026",
      "credential_id": "wfq8d7zjnka8",
      "image": "https://adilmunawar.vercel.app/certifications/anthropic---claude-with-amazon-bedrock.jpg"
    },
    {
      "name": "Chronicle SOAR Developer",
      "issuer": "Google Cloud Skills Boost",
      "description": "Building security orchestration, automation and response playbooks on Google Chronicle SOAR.",
      "issued": "Feb 2026",
      "credential_id": "22073529",
      "image": null
    },
    {
      "name": "Building Language Models on AWS",
      "issuer": "AWS",
      "description": "Training and deploying language models on Amazon Web Services.",
      "issued": "Dec 2025",
      "credential_id": null,
      "image": "https://adilmunawar.vercel.app/certifications/building-language-models-on-AWS.png"
    },
    {
      "name": "Google Ads Apps Certification",
      "issuer": "Google Cloud Skills Boost",
      "description": "Building and integrating applications with Google Ads APIs.",
      "issued": "Dec 2025",
      "credential_id": "169263387",
      "image": "https://adilmunawar.vercel.app/certifications/Google-Ads-apps.png"
    },
    {
      "name": "Azure Cloud Computing",
      "issuer": "Microsoft",
      "description": "Architecting secure, scalable solutions on Microsoft Azure.",
      "issued": "May 2025",
      "credential_id": "AdilMunawar4765",
      "image": "https://adilmunawar.vercel.app/certifications/Microsoft-azure-professional.png"
    },
    {
      "name": "Application Modernization with Google Cloud",
      "issuer": "Google",
      "description": "Modernizing legacy architectures for performance, scalability and security.",
      "issued": "Mar 2025",
      "credential_id": "14164265",
      "image": "https://adilmunawar.vercel.app/certifications/application-modern.png"
    },
    {
      "name": "LinkedIn Content and Creative Design",
      "issuer": "LinkedIn",
      "description": "Technical content and creative design fundamentals.",
      "issued": "Mar 2025",
      "credential_id": "zn7dbp7a2cw3",
      "image": "https://adilmunawar.vercel.app/certifications/Linkedin-Content-and-creative-design.png"
    },
    {
      "name": "MLOps with Vertex AI",
      "issuer": "Google",
      "description": "Managing machine learning models at scale on Vertex AI.",
      "issued": "Feb 2025",
      "credential_id": "14116643",
      "image": "https://adilmunawar.vercel.app/certifications/MLOPS-with-vertex-AI.png"
    },
    {
      "name": "Machine Learning Operations for Generative AI",
      "issuer": "Google",
      "description": "MLOps workflows across the machine learning lifecycle for generative AI.",
      "issued": "Feb 2025",
      "credential_id": "14101465",
      "image": "https://adilmunawar.vercel.app/certifications/MLOPS.png"
    },
    {
      "name": "Advanced Webhook Concepts",
      "issuer": "Google Cloud",
      "description": "Advanced webhook concepts for real-time data synchronization between applications.",
      "issued": null,
      "credential_id": null,
      "image": "https://adilmunawar.vercel.app/certifications/advance-webhook-concepts.png"
    },
    {
      "name": "Advanced Performance Measurements",
      "issuer": "Google",
      "description": "Enterprise performance measurement for high-speed applications.",
      "issued": null,
      "credential_id": null,
      "image": "https://adilmunawar.vercel.app/certifications/advanced-performance-measurements.png"
    },
    {
      "name": "CCAI Frontend Integrations",
      "issuer": "Google Cloud",
      "description": "Contact Center AI frontend integrations with user-centric interfaces.",
      "issued": null,
      "credential_id": null,
      "image": "https://adilmunawar.vercel.app/certifications/CCAI-frontend-Integrations.png"
    }
  ],
  "badges": [
    {
      "group": "GitHub",
      "badges": [
        "GitHub Actions",
        "GitHub Admin",
        "GitHub Advanced Security",
        "GitHub Agentic AI Developer"
      ]
    },
    {
      "group": "LeetCode",
      "badges": [
        "Top SQL 50",
        "Algorithm Deconstructor",
        "Architecture Builder",
        "Data Navigator",
        "Mathematical Insight",
        "Introduction to Pandas",
        "100 Days 2025",
        "100 Days 2026",
        "50 Days 2025",
        "50 Days 2026"
      ]
    },
    {
      "group": "Microsoft & AWS",
      "badges": [
        "Azure Virtual Machines",
        "Azure Compute Resources",
        "Lakehouse with Microsoft Fabric",
        "MD-102 Endpoint Management",
        "Entra Identity Protection",
        "Azure Machine Learning Models",
        "Azure Core Data Concepts",
        "Azure Backup",
        "DAX Time Intelligence",
        "Microsoft 365 Defender",
        "Azure Storage Security",
        "AWS Generative AI Developer"
      ]
    },
    {
      "group": "Google",
      "badges": [
        "Android Studio User",
        "Firebase Studio Community",
        "Gemini CLI User",
        "Google Cloud & NVIDIA Community",
        "Google Cloud Innovator",
        "Google Developer Program Premium",
        "Google Generative AI Leader",
        "DOM Detective"
      ]
    }
  ],
  "recognition": [
    "LeetCode Top 5% Global Solver",
    "GitHub Achievement: Pull Shark (Gold)",
    "GitHub Achievement: Pair Extraordinaire (Gold)",
    "GitHub Achievement: Galaxy Brain (Silver)",
    "Google Ads Apps Certification (2025)",
    "AWS Building Language Models (2025)",
    "Microsoft Azure Cloud Computing (2025)"
  ],
  "activity": {
    "leetcode": {
      "solved": 1335,
      "easy": 315,
      "medium": 577,
      "hard": 443,
      "acceptance_rate": 89.5,
      "ranking": 12631,
      "url": "https://leetcode.com/u/AdilMunawar/"
    },
    "github": {
      "contributions_last_year": 8929,
      "url": "https://github.com/AdilMunawar"
    }
  },
  "contact": [
    {
      "channel": "Email",
      "handle": "adilmunawarx@gmail.com",
      "url": "mailto:adilmunawarx@gmail.com"
    },
    {
      "channel": "WhatsApp",
      "handle": "+92 324 4965220",
      "url": "https://wa.me/923244965220"
    },
    {
      "channel": "LinkedIn",
      "handle": "linkedin.com/in/adilmunawar",
      "url": "https://linkedin.com/in/adilmunawar"
    },
    {
      "channel": "GitHub",
      "handle": "github.com/adilmunawar",
      "url": "https://github.com/adilmunawar"
    },
    {
      "channel": "Telegram",
      "handle": "@adilmunawar",
      "url": "https://t.me/adilmunawar"
    },
    {
      "channel": "Instagram",
      "handle": "@adilmunawarx",
      "url": "https://instagram.com/adilmunawarx"
    }
  ],
  "links": {
    "site": "https://adilmunawar.vercel.app",
    "llms_txt": "https://adilmunawar.vercel.app/llms.txt",
    "llms_full_txt": "https://adilmunawar.vercel.app/llms-full.txt",
    "sitemap": "https://adilmunawar.vercel.app/sitemap.xml",
    "projects": "https://adilmunawar.vercel.app/#projects",
    "case_studies": "https://adilmunawar.vercel.app/#case-studies",
    "notes": "https://adilmunawar.vercel.app/#blog",
    "contact": "https://adilmunawar.vercel.app/#contact"
  },
  "last_updated": "2026-09-29"
}
