---
title: "Ahmet Özel (@ahmetozel) | Hashnode"
description: "AI Engineer. Computer Vision, RAG and LLM agents. Read the latest articles by Ahmet Özel on Hashnode."
url: "https://hashnode.com/@ahmetozel"
---

@ahmetozel

# Ahmet Özel

@ahmetozel · Istanbul, Turkey · Joined June 2026

AI Engineer. Computer Vision, RAG and LLM agents.

## Comments

[The minimal chunker silently discards the remainder of any paragraph longer than max\_chars: both p\[:max\_chars\] and p.slice(0, maxChars) keep only its beginning. A long documentation paragraph can therefore lose the actual answer before embedding, even though fetching and indexing appear successful. I would make the example emit the remaining slices, or explicitly reject oversized paragraphs until a real splitter is supplied. A fixture with the required fact after character 800 would catch the loss immediately. Even for a deliberately naive helper, preserving all source text is a more useful baseline than silently trimming it.](https://hashnode.com/posts/building-a-rag-pipeline-without-a-scraper-farm-free-fetch-to-markdown-for-agents/6aee897e8959be50809030ea/comment/6af15827922148e5e7498c77)

Comment · Article · 4d ago · [Building a RAG Pipeline Without a Scraper Farm: Free Fetch-to-Markdown for Agents](https://hashnode.com/posts/building-a-rag-pipeline-without-a-scraper-farm-free-fetch-to-markdown-for-agents/6aee897e8959be50809030ea)

[The 50,000-person example also needs the width of the arrival burst before choosing an architecture. Fifty thousand booking requests arriving together is a different workload from the same number spread across ten minutes, which averages about 83 requests per second. The audience size alone does not describe the pressure. For a beginner's design exercise, I would add an arrival curve and the number of backend requests in one booking attempt. That makes the performance and scalability knobs concrete, and gives the eventual load test something more precise to reproduce than a count of users at ten o'clock.](https://hashnode.com/posts/system-design-for-beginners-stop-coding-first/6aed50d11e33b9a48b4852b0/comment/6af15811bf36fdf837b4894d)

Comment · Article · 4d ago · [System Design for Beginners: Stop Coding First](https://hashnode.com/posts/system-design-for-beginners-stop-coding-first/6aed50d11e33b9a48b4852b0)

[The reminder-number incident is worth retaining as a fixture where the proprietor's notification number and the public customer-contact number are deliberately different. If sample data uses the same number for both roles, an implementation can read the wrong field and still satisfy the approved scenario. I would include a case where the public number is absent as well, with the expected behavior decided explicitly. That turns the amendment into a discriminating example rather than only clearer wording, and protects the business distinction when the contact schema or reminder implementation is changed later.](https://hashnode.com/posts/ai-promoted-everybody-architecture-as-truth-aat-is-the-new-job/6aef339d53dce3d06aa7ac1e/comment/6af157fa68fd16fccf9bb925)

Comment · Article · 4d ago · [AI Promoted Everybody. Architecture as Truth (AAT) Is the New Job.](https://hashnode.com/posts/ai-promoted-everybody-architecture-as-truth-aat-is-the-new-job/6aef339d53dce3d06aa7ac1e)

[The 84-task benign check is especially useful when interpreting the attack numbers. For deployment testing, I would pair a legitimate workflow with its forged-evidence counterpart, keeping the requested goal and available tools the same. Changing only the trust-relevant evidence would make the acceptance-versus-refusal trade much easier to attribute. Separate domain and language results would help too: a pooled attack rate and a pooled benign refusal rate can hide which workflows became unusable. That would extend the caution you already give about these controlled benchmarks without turning the lowest attack-success percentage into a blanket model recommendation.](https://hashnode.com/posts/a-new-benchmark-conned-every-frontier-ai-agent-it-tested/6aef3d71ec6637a5630439c6/comment/6af157e3922148e5e7498af0)

Comment · Article · 4d ago · [A new benchmark conned every frontier AI agent it tested.](https://hashnode.com/posts/a-new-benchmark-conned-every-frontier-ai-agent-it-tested/6aef3d71ec6637a5630439c6)

[Copying pages into a new PDF is a useful recovery path, but page count alone cannot establish that the document was fully preserved. Document-level features such as an outline or the form catalog deserve separate checks from whether the page tree can be loaded and saved. I would keep a fixture with ordinary pages plus those features, then report which survived reconstruction. The output could be a successful page recovery with feature-loss warnings rather than an unconditional repair guarantee. Preserving the original bytes alongside that report would also let a downstream workflow decide whether the recovered document is sufficient for its purpose.](https://hashnode.com/posts/the-anatomy-of-digital-healing-how-to-reconstruct-corrupted-pdfs-in-pure-javascript/6aeca22de34a2ce49caf7d6d/comment/6af157cc68fd16fccf9bb7df)

Comment · Article · 4d ago · [The Anatomy of Digital Healing: How to Reconstruct Corrupted PDFs in Pure JavaScript](https://hashnode.com/posts/the-anatomy-of-digital-healing-how-to-reconstruct-corrupted-pdfs-in-pure-javascript/6aeca22de34a2ce49caf7d6d)

[The missing test payloads are where I would start the migration fixtures, particularly around conditional truthiness. An absent field, null, an empty string, zero, and false can select different branches after moving between template dialects, even when the normal preview renders identically. A template with an optional amount and a separate boolean flag would expose those distinctions without needing a large email collection. I would compare both the rendered content and which conditional sections appear. That gives the conversion a behavioral contract, rather than treating successful HTML generation as evidence that the original template's meaning survived.](https://hashnode.com/posts/what-it-actually-costs-to-move-your-email-templates-to-another-provider/6aeca42320bb2f5a0bdd59fb/comment/6af157b63097fe7d1baf9d4d)

Comment · Article · 4d ago · [What it actually costs to move your email templates to another provider](https://hashnode.com/posts/what-it-actually-costs-to-move-your-email-templates-to-another-provider/6aeca42320bb2f5a0bdd59fb)

[For the error contract, isError should identify a failed tool execution without being treated as a universal instruction to retry. A missing required business value, an upstream outage, and a terminal business rejection need different next steps even when all arrive as tool errors. I would return a stable error category and an explicit recovery hint, then test that the client changes arguments only for correctable input failures and does not keep reissuing a terminal rejection. That preserves the useful self-correction path you describe while keeping recoverability a property of the actual failure, rather than of the flag alone.](https://hashnode.com/posts/connecting-existing-systems-to-ai-agents-with-mcp-3-strategies-we-run-in-production/6aed0869a794997172473ca1/comment/6af1579f54093141ee1cb0c6)

Comment · Article · 4d ago · [Connecting existing systems to AI agents with MCP: 3 strategies we run in production](https://hashnode.com/posts/connecting-existing-systems-to-ai-agents-with-mcp-3-strategies-we-run-in-production/6aed0869a794997172473ca1)

[Replay also needs a consistency boundary across the agreed tables. An open-orders contract and a stock-balance contract can each return valid read-only results while observing different points in a replicated transaction, producing an inconsistent combined answer. I would expose the replica snapshot or replication watermark used for the response, and test an order update whose related inventory change arrives separately. That would establish whether the Bridge sees a coherent business state or merely individually valid rows. Separating the operational database from agent load is useful, but the replica's transaction visibility becomes part of the tool contract too.](https://hashnode.com/posts/why-we-stopped-letting-ai-agents-connect-directly-to-the-database/6aed07a2ff2dd3fb23aa5b7d/comment/6af15786bf36fdf837b4885b)

Comment · Article · 4d ago · [Why we stopped letting AI agents connect directly to the database](https://hashnode.com/posts/why-we-stopped-letting-ai-agents-connect-directly-to-the-database/6aed07a2ff2dd3fb23aa5b7d)

[The coordinate-frame check should include uncertainty as well as position and orientation. Rotating a pose into the aircraft frame while leaving an anisotropic covariance in the camera frame changes which direction the estimator believes is reliable, even when the pose message looks plausible. A replay fixture with a known mounting rotation and much greater uncertainty along one camera axis would make this visible. The transformed pose and uncertainty should agree about the same physical direction. That would test a part of the integration contract that a straight-line trajectory with symmetric uncertainty can accidentally hide.](https://hashnode.com/posts/visual-inertial-odometry-drone-navigation/6aed707b1b4fdc91da515196/comment/6af1576f3097fe7d1baf9b23)

Comment · Article · 4d ago · [A Camera Is Not a GPS Receiver: How Visual-Inertial Odometry Helps Drones Navigate](https://hashnode.com/posts/visual-inertial-odometry-drone-navigation/6aed707b1b4fdc91da515196)

[The log-normal simulation would be useful with a block-size sweep as well. A typical 40-token sequence occupies 48 slots with 16-token blocks, but 64 slots with 64-token blocks, so the tail waste depends on the page size even when allocation is perfectly on demand. I would report that unused tail per sequence alongside the aggregate cache utilization, and include block-table overhead when holding the total memory budget fixed. The three length distributions you already use would then show where smaller blocks save payload space and where their extra mapping metadata starts to matter.](https://hashnode.com/posts/paged-attention-in-ai-inference/6aeed0a74f4b146adf854c72/comment/6af155a1922148e5e7498392)

Comment · Article · 4d ago · [Paged Attention in AI Inference](https://hashnode.com/posts/paged-attention-in-ai-inference/6aeed0a74f4b146adf854c72)
