# Muhammad Ahmad > Muhammad Ahmad is an AI Product Engineer and software engineer based in Lahore, Pakistan. He works at RipeSeed shipping LLM features, agents and evals in production, alongside MLOps and DevOps work, and holds a BS in Software Engineering from NUST. - Role: AI Product Engineer - Location: Lahore, Pakistan - Website: https://mahmadmanzoor.com/ ## About I'm an AI product engineer at RipeSeed in Lahore. I build LLM features, agents and evals that hold up in production, plus the full-stack product and infrastructure around them. Lately that means a lot of roofing-industry software, from reading roof reports to quote-to-order workflows. ## Experience - **Software Engineer II, RipeSeed** (Aug 2026 – Present, Lahore, Pakistan): AI product engineering on an AI-enabled B2B roofing platform (Brava Roof Tile): OpenAI and Gemini pipelines that extract, validate and normalise roof measurements from PDF reports, AI recommendations, executive analytics, platform-wide audit logging, and quote, pricebook, proposal and order workflows. Next.js, React, TypeScript, Django REST, PostgreSQL, Node.js, AWS. Also contributing to a multi-tenant healthcare platform for skilled nursing facilities. - **Software Engineer I, RipeSeed** (Sep 2025 – Aug 2026, Lahore, Pakistan): Full-stack features on the roofing platform and RipeSeed's own website (Next.js + Strapi): document generation, analytics, notifications, integrations, S3 and CloudFront media delivery, HLS video streaming. Promoted to Software Engineer II in August 2026. - **Software Engineer, TechFabbier** (Jan 2025 – Aug 2025, Remote · London, UK): Web and mobile apps with React, TypeScript, Flutter, AWS Lambda, S3 and Firebase. API and data-layer work across MySQL, PostgreSQL, MongoDB and Redis. Standardised delivery with GitHub Actions CI/CD. - **Associate Full Stack Developer, TechFabbier** (Dec 2023 – Dec 2024, Remote · London, UK): Web and mobile features with React, TypeScript, Flutter, AWS and Firebase, across MySQL, PostgreSQL and MongoDB data flows. - **Full-stack Developer (freelance), Upwork** (Apr 2020 – Present, Remote): Freelance full-stack work alongside study and full-time roles. - **ReactJS Developer (contract), Grayhat** (Sep 2020 – Mar 2021, Islamabad, Pakistan): React front-end development on contract. - **Information Technology Intern, Fatima Group (FFC)** (Jul – Aug 2021, Lahore, Pakistan): React and Material UI CRUD interfaces, plus browser test automation with Python and Selenium. ## Education - BS Software Engineering, National University of Sciences and Technology (NUST) (2019 – 2023, Islamabad, Pakistan) ## Publications - [Copies in the Benchmark: A Row-Level Audit of the UCR and UEA Time Series Classification Archives](https://doi.org/10.5281/zenodo.23845369) (Preprint on Zenodo, not peer reviewed, 2026): Compares every row in both benchmark archives. On the default split, test rows also appear in the training data of 17 of 128 UCR datasets and 3 of 30 UEA datasets. Removing the copies lowers scores, but none of the 105 pairwise results changed among the 15 classifiers that could be tested on clean scores. PDF: https://mahmadmanzoor.github.io/archive-audit/paper.pdf. Code: https://github.com/mahmadmanzoor/archive-audit. ## Open source - [Vercel AI SDK: Emit File Search and RAG document sources when streaming](https://github.com/vercel/ai/pull/24724) (@ai-sdk/google, PR open, 2026): Found and fixed a bug where streamText dropped the Gemini File Search / RAG citations that generateText returned. The fix emits those document sources in the stream, removes duplicates by title and filename, and adds regression tests. Maintainers confirmed the bug in triage. ## Skills - **Languages:** TypeScript, JavaScript, Python, SQL, HTML, CSS, Bash - **Frontend:** React, Next.js (App Router), Vite, Tailwind CSS, shadcn/ui, Radix UI, TanStack Query, TanStack Table, React Hook Form, Zod, Zustand, Framer Motion, Recharts, Tiptap, dnd-kit, three.js / React Three Fiber, Storybook - **Mobile & Desktop:** React Native, Expo, Flutter, Electron - **Backend:** Django, Django REST Framework, FastAPI, Node.js, Hono, tRPC, REST APIs, OpenAPI / drf-spectacular, WebSockets / Django Channels, Celery, Background jobs & queues - **Databases & ORMs:** PostgreSQL, MySQL, MongoDB, Redis, SQLite, Neon, Upstash, Prisma, Drizzle ORM, SQLAlchemy, Mongoose - **AI & LLMs:** OpenAI API, Google Gemini, Anthropic Claude API, Vercel AI SDK, LangChain, Pinecone, RAG / vector search, OCR + LLM document extraction, Langfuse, Claude Code, Codex - **Auth & Payments:** NextAuth, Clerk, Kinde, JWT, Firebase, Stripe - **Cloud & DevOps:** AWS (S3, Lambda, ECS, EC2, CloudFront), Docker, Vercel, Nginx, GitHub Actions, Coolify, Sentry, OpenTelemetry, Cloudinary, Mux - **Testing & Quality:** Playwright, Vitest, Jest, Testing Library, Pytest, Selenium, ESLint, Prettier, Lighthouse - **Documents & Data:** PDF parsing (PyMuPDF, pdf.js), PDF generation (WeasyPrint, pdf-lib), Pandas, Excel / CSV import - **Integrations:** Salesforce, Google Maps API, Resend, Discord webhooks, Web Audio API ## Projects - [ClaimLayer](https://mahmadmanzoor.com/projects/claimlayer): Field-first roof evidence and supplement recovery. private product, 2026. Stack: Next.js 16, React Native / Expo, tRPC, TypeScript, Monorepo. (live: https://claimlayer-web.vercel.app) - [Yardline](https://mahmadmanzoor.com/projects/yardline): Jobsite delivery handoff for roofing contractors. private product, 2026. Stack: Next.js, TypeScript, PostgreSQL, CSV import. (live: https://web-indol-pi-25.vercel.app) - [CredibleAI](https://mahmadmanzoor.com/projects/credible-ai): AI social media manager for roofing contractors. client work @ RipeSeed, 2026. Stack: Next.js 16, PostgreSQL, AI, Playwright, Docker. (live: https://credibley.com) - [Pro Portal · Brava Roof Tile](https://mahmadmanzoor.com/projects/pro-portal): Roof automation platform for contractors and distributors. client work @ RipeSeed, 2025. Stack: Next.js, TypeScript, Django REST Framework, PostgreSQL, AWS, OpenAI / Gemini. - [Signal Tank](https://mahmadmanzoor.com/projects/signal-tank): Voice-generation lab for testing TTS before you ship it. personal project, 2026. Stack: TypeScript, Web Audio, CSS. (live: https://www.signaltank.site; source: https://github.com/mahmadmanzoor/signal-tank) - [Roofing Sales Assistant](https://mahmadmanzoor.com/projects/roofing-sales-assistant): WhatsApp-first sales workflow for roofers. personal project, 2026. Stack: Next.js 16, React 19, TypeScript, PDF generation. (source: https://github.com/mahmadmanzoor/roofing-sales-assistant) - [Kote Automation System](https://mahmadmanzoor.com/projects/kote): Offline armoury system in use by a Pakistan Army unit. private product, 2025. Stack: Electron, React 19, Vite, SQLite, TypeScript. - [PulsePanda](https://mahmadmanzoor.com/projects/pulsepanda): Real-time event monitoring SaaS. personal project, 2025. Stack: Next.js 14, Neon PostgreSQL, Prisma, Clerk, Stripe, React Query. (live: https://pulsepanda.vercel.app; source: https://github.com/mahmadmanzoor/pulsepanda) - [Blistro](https://mahmadmanzoor.com/projects/blistro): Chat with your PDFs, as a full SaaS. personal project, 2025. Stack: Next.js 13, tRPC, Prisma, OpenAI, Pinecone, Stripe, Kinde. (live: https://blistro.vercel.app; source: https://github.com/mahmadmanzoor/Blistro) - [ChronoCraft](https://mahmadmanzoor.com/projects/chronocraft): Luxury watch e-commerce. personal project, 2025. Stack: Next.js 14, MongoDB, Stripe, Cloudinary, shadcn/ui. (source: https://github.com/mahmadmanzoor/ChronoCraft) - [FlexTube](https://mahmadmanzoor.com/projects/flextube): Full-stack video streaming platform. personal project, 2025. Stack: Next.js 15, React 19, tRPC, PostgreSQL, Mux. (source: https://github.com/mahmadmanzoor/flextube) - [GPT-Bot](https://mahmadmanzoor.com/projects/gpt-bot): Chat UI for OpenAI models. personal project, 2023. Stack: Next.js, TypeScript, OpenAI, Tailwind. (live: https://gpt-bot-cyan.vercel.app; source: https://github.com/mahmadmanzoor/GPT-Bot) - [EDU-ORB](https://mahmadmanzoor.com/projects/edu-orb): Outcome-based assessment reports. personal project, 2022. Stack: React, Material UI, Node.js, Express, MongoDB. (live: https://eduorb.netlify.app; source: https://github.com/mahmadmanzoor/edu-orb) - [GoGrow](https://mahmadmanzoor.com/projects/gogrow): Graduate-to-employer training platform. private product, 2024. Stack: Django REST Framework, React, PostgreSQL, Redis, WebSockets, AWS EC2 / S3. - [PvP Shooting Game](https://mahmadmanzoor.com/projects/pvp-shooting-game): Multiplayer FPS in Decentraland. personal project, 2024. Stack: Decentraland SDK, Colyseus, PlayFab, TypeScript. (source: https://github.com/mahmadmanzoor/pvp-shooting-game) ## Blog - [Atmee V2 vs Seedance: How Causeur and a Real-Time Avatar Model Render in Seconds](https://mahmadmanzoor.com/blog/atmee-v2-vs-seedance-real-time-ai-avatar.md): Atmee V2 by Atmanity turns one photo and ten seconds of voice into a live video avatar. How Causeur and the V2 renderer work, two side-by-side clips against Seedance 2.5, the API, pricing and what is unverified. (2026-11-08; HTML: https://mahmadmanzoor.com/blog/atmee-v2-vs-seedance-real-time-ai-avatar) - [I built a Claude Code skill that makes video ads without a video model](https://mahmadmanzoor.com/blog/claude-code-skill-video-ads-no-video-model.md): reel-studio turns a brief into a finished Instagram Reel or TikTok ad: scripts and images from ChatGPT, voices from ElevenLabs, and every frame of motion drawn in code with Playwright and ffmpeg. How it works, with the real code. (2026-11-05; HTML: https://mahmadmanzoor.com/blog/claude-code-skill-video-ads-no-video-model) - [Weight-Space Programming: how GPT-6 Astra edited Qwen's weights and took MATH-500 from 7.9% to 48.1%](https://mahmadmanzoor.com/blog/weight-space-programming.md): MIT CSAIL let GPT-6 Astra open Qwen3.5-0.8B and change 0.016% of its weights with no training. Math accuracy went from 7.9% to 48.1%. What the edit was, why it worked, and how to try it. (2026-11-04; HTML: https://mahmadmanzoor.com/blog/weight-space-programming) - [GLiNER2 vs an LLM: I tested both on 640 labelled examples](https://mahmadmanzoor.com/blog/gliner2-vs-llm-extraction-test.md): GLiNER2 ran in about 80 ms on my laptop CPU and got every easy invoice right. On notes that needed judgment it got 9 of 20, against 20 of 20 for Claude Haiku 5.5. (2026-11-02; HTML: https://mahmadmanzoor.com/blog/gliner2-vs-llm-extraction-test) - [How to check an ML benchmark for train/test copies](https://mahmadmanzoor.com/blog/check-ml-benchmark-train-test-copies.md): 37% of the test rows in PowerCons are also in its training set. A short hash check finds copies like these in any benchmark. Here is the code, the real output and what to do once you find them. (2026-11-01; HTML: https://mahmadmanzoor.com/blog/check-ml-benchmark-train-test-copies) - [LLMs vs Jev vs CDMs: three ways a model can answer](https://mahmadmanzoor.com/blog/llms-vs-jev-vs-cdms.md): Autoregressive LLMs, TypeSafe's Jev decision model and ScaleDown's CDMs compared: inference, cost, latency, benchmarks, critiques and code. (2026-11-01; HTML: https://mahmadmanzoor.com/blog/llms-vs-jev-vs-cdms) - [Agent loops for product features: budgets, errors, stops and checkpoints](https://mahmadmanzoor.com/blog/agent-loops-for-product-features.md): Build an LLM agent loop for a product feature in TypeScript: tool design, step and token budgets, recoverable errors, stop rules, approvals and tracing. (2026-10-31; HTML: https://mahmadmanzoor.com/blog/agent-loops-for-product-features) - [Cutting LLM inference cost and latency without making the feature worse](https://mahmadmanzoor.com/blog/cut-llm-inference-cost-latency.md): Cut LLM API cost and latency in TypeScript: prompt caching with a stable prefix, a model per route, streaming for time to first token, batches and cost logs. (2026-10-30; HTML: https://mahmadmanzoor.com/blog/cut-llm-inference-cost-latency) - [Top 10 skills a software engineer needs in 2027](https://mahmadmanzoor.com/blog/software-engineer-skills-2027.md): Directing coding agents, skills files, context, verification loops, evals, MCP, prompt injection, cost, system design and product judgement, with exercises. (2026-10-28; HTML: https://mahmadmanzoor.com/blog/software-engineer-skills-2027) - [Caveman mode for Claude Code: fewer output tokens, same facts](https://mahmadmanzoor.com/blog/caveman-mode-claude-code.md): Install the caveman plugin for Claude Code, switch between /caveman, /ultracave and /megacave, read its published numbers honestly, and know when to turn it off. (2026-10-27; HTML: https://mahmadmanzoor.com/blog/caveman-mode-claude-code) - [Harness engineering: the skill that took over from prompt engineering](https://mahmadmanzoor.com/blog/harness-engineering-ai-agents.md): The agent loop, tool_use and tool_result, PreToolUse and Stop hooks, allow/ask/deny rules, context loading, subagent routing and JSONL transcripts. (2026-10-26; HTML: https://mahmadmanzoor.com/blog/harness-engineering-ai-agents) - [Setting up REA for agent-driven reverse engineering in Claude Code](https://mahmadmanzoor.com/blog/rea-reverse-engineering-mcp-claude-code.md): Install REA (rea-agents) as an MCP server for Claude Code, route binaries, Electron bundles, APKs, firmware and web pages to the right tool, and stay in scope. (2026-10-26; HTML: https://mahmadmanzoor.com/blog/rea-reverse-engineering-mcp-claude-code) - [Structured outputs that do not break: schemas, Zod and a repair retry](https://mahmadmanzoor.com/blog/llm-structured-outputs-zod-repair.md): Reliable JSON from an LLM in TypeScript: schema-constrained output, Zod checks for meaning, one repair retry with the errors fed back, and a human fallback. (2026-10-25; HTML: https://mahmadmanzoor.com/blog/llm-structured-outputs-zod-repair) - [Evals before prompts: a small eval harness for an LLM feature](https://mahmadmanzoor.com/blog/llm-evals-before-prompts.md): A small eval harness for an LLM feature in TypeScript: golden cases, exact checks, an LLM judge with a pass/fail rubric, a CI gate and a tracked score. (2026-10-25; HTML: https://mahmadmanzoor.com/blog/llm-evals-before-prompts) - [Make coding agents prove their work](https://mahmadmanzoor.com/blog/make-coding-agents-prove-their-work.md): A verification loop for coding agents: typecheck, lint, build, bundle budgets in CI, Playwright screenshots and a Stop hook, so done means proven. (2026-10-25; HTML: https://mahmadmanzoor.com/blog/make-coding-agents-prove-their-work) - [Agent instructions that actually change behaviour](https://mahmadmanzoor.com/blog/agent-instructions-claude-md-skills-hooks.md): What belongs in CLAUDE.md or AGENTS.md, what belongs in a skill and what has to be a hook. Plus the kinds of rule agents ignore, and how I test that a rule works before I trust it. (2026-10-25; HTML: https://mahmadmanzoor.com/blog/agent-instructions-claude-md-skills-hooks) - [SEO for a React SPA without Next.js, and without giving up the 3D homepage](https://mahmadmanzoor.com/blog/seo-react-spa-vite-without-nextjs.md): My portfolio opens on a Three.js scene, which a crawler sees as an empty div. Here is how build-time prerendering, a server-rendered blog on Vercel functions and JSON-LD got it to a Lighthouse SEO score of 100. (2026-10-25; HTML: https://mahmadmanzoor.com/blog/seo-react-spa-vite-without-nextjs) - [No-login magic links for field crews: hashed, scoped, revocable, and usable offline](https://mahmadmanzoor.com/blog/magic-links-field-crews-offline.md): Crews receiving deliveries on a jobsite will not create accounts. Here is how Yardline gives them a single link that only opens one delivery, can be revoked, and keeps working without signal. (2026-10-25; HTML: https://mahmadmanzoor.com/blog/magic-links-field-crews-offline) - [How to evaluate text-to-speech voices before you ship them](https://mahmadmanzoor.com/blog/measure-text-to-speech-latency.md): Signal Tank is a small lab for comparing TTS voices on your own scripts. It measures time to first byte and time to complete, keeps the API key on the server, and records clean reference audio for voice cloning. (2026-10-25; HTML: https://mahmadmanzoor.com/blog/measure-text-to-speech-latency) - [Grounding AI-written marketing posts in real weather data, without letting the model make things up](https://mahmadmanzoor.com/blog/grounding-llm-content-real-data.md): A daily pipeline that turns National Weather Service forecasts into social posts for contractors. The hard parts were expiry, idempotent runs, a stuck stream, and one rule in the prompt. (2026-10-25; HTML: https://mahmadmanzoor.com/blog/grounding-llm-content-real-data) - [An offline outbox for photo evidence in React Native, and the bugs it taught me](https://mahmadmanzoor.com/blog/offline-first-react-native-outbox.md): Roof inspectors work where there is no signal. This is the capture-first, sync-later design behind ClaimLayer's field app, the status codes that decide a retry, and three contract bugs worth avoiding. (2026-10-25; HTML: https://mahmadmanzoor.com/blog/offline-first-react-native-outbox) - [Building desktop software for a network that never touches the internet](https://mahmadmanzoor.com/blog/offline-electron-sqlite-air-gapped.md): Kote is an armoury and asset custody app in use by a unit of the Pakistan Army. No server, no cloud, no updater. Here is how Electron, SQLite and some paranoia make that work. (2026-10-25; HTML: https://mahmadmanzoor.com/blog/offline-electron-sqlite-air-gapped) - [An activity log for Django that knows who really clicked, even under impersonation](https://mahmadmanzoor.com/blog/django-audit-log-impersonation.md): How we built one audit and activity log for every module of the Brava Roof Tile Pro Portal: the real actor under impersonation, logging from Celery, readable sentences and honest gaps. (2026-10-25; HTML: https://mahmadmanzoor.com/blog/django-audit-log-impersonation) - [Extracting roof measurements from PDFs with LLMs, and why the model is the smallest part](https://mahmadmanzoor.com/blog/llm-pdf-extraction-roof-reports.md): How we turned EagleView, RoofScope and Hover PDFs into quote-ready numbers for Brava Roof Tile, and why parsing, validation and fallbacks mattered more than the prompt. (2026-10-25; HTML: https://mahmadmanzoor.com/blog/llm-pdf-extraction-roof-reports) ## Contact and profiles - [Portfolio](https://mahmadmanzoor.com/) - [Portfolio (3D room)](https://mahmadmanzoor.com/3d) - [GitHub](https://github.com/mahmadmanzoor) - [LinkedIn](https://www.linkedin.com/in/mahmadmanzoor2/) - [X](https://x.com/2000tillnow) - [DEV](https://dev.to/ahmad_dogar_7d098f5e48f72) - [Hashnode](https://mahmadmanzoor.hashnode.dev) - [Instagram](https://www.instagram.com/ahmadwydd) - Email: ahmaddogar2246@gmail.com ## Optional - [Full text of every blog post](https://mahmadmanzoor.com/llms-full.txt) - [RSS feed](https://mahmadmanzoor.com/feed.xml) - [Sitemap](https://mahmadmanzoor.com/sitemap.xml)