Shamim Shams Shamim Shams

Tag

#anthropic

Build a Laravel Package for Reusable AI Features Across Projects
· 7 min read

Build a Laravel Package for Reusable AI Features Across Projects

Three apps is when the copy-paste strategy breaks down. Not because the Anthropic client setup is complicated — it isn't — but because the three copies drift. App A's client retries on 529 errors; app B's doesn't. App C still has a model name from three months ago when you were testing. By the time you need to upgrade the SDK, you're hunting through three codebases and hoping you got them all.

Laravel Job Queue for Async AI Processing at Scale
· 8 min read

Laravel Job Queue for Async AI Processing at Scale

The first time I shipped a feature that called an AI API synchronously from a web request, I wasn't thinking about load. I was thinking about whether the output was good enough. Three days later, a batch of users hit the feature simultaneously, and the dashboard went from responsive to a spinning wheel. Every user sat there waiting 8–12 seconds for a response the server was holding a thread for. The queue existed. I just hadn't used it.

Automate Bug Triage with AI: Classify GitHub Issues Using Python
· 8 min read

Automate Bug Triage with AI: Classify GitHub Issues Using Python

Come back to a side project after three months away and you'll find it waiting for you: a backlog of 40, 80, sometimes 200+ open issues, none of them labeled, none of them prioritized. Someone reported a crash. Someone else asked how to configure the timeout. A third person opened a feature request that's really a duplicate of an issue from last year. You can't tell which one to touch first without reading every single one. That's the problem. Not the bugs themselves — the triage debt. No labels means no filters, no filters means everything looks equally urgent, and everything equally urgent means nothing gets fixed.

Build a Laravel AI Writing Assistant with Streaming Responses
· 8 min read

Build a Laravel AI Writing Assistant with Streaming Responses

You're demoing the writing tool you just built. You paste in a paragraph, click "Adjust Tone," and wait. The output field stays blank. Six seconds pass. Eight. The client glances at you. "Did it freeze?" Then 380 words appear at once, already formatted, already correct — but the damage is done. The wait felt like an error. Streaming fixes this. Instead of waiting for the model to finish before sending anything, you send tokens as they're generated. The user sees text appearing word by word within a fraction of a second of hitting submit. Same total latency, completely different feel.

Automate LinkedIn Outreach Messages Using AI and Python
· 8 min read

Automate LinkedIn Outreach Messages Using AI and Python

Cold messages fail for a simple reason. They're not actually cold — they're warm in theory and cold in execution. You've researched the person, found something interesting, written what you think is a relevant opener. Then you send the same structure to 150 people and wonder why three reply. The bottleneck is drafting. Personalization takes time: reading a profile, finding a hook, writing an opener that references it, keeping the message short enough that someone actually reads it. Ten minutes per person, 200 people, do the math.

Build a Slack Bot That Answers Questions from Your Internal Docs [Part 2]
· 9 min read

Build a Slack Bot That Answers Questions from Your Internal Docs [Part 2]

If you ran the bot from Part 1, you probably hit the timeout within the first few minutes. Someone typed `/ask`, got "This app didn't respond in time" in red, and trust died a little. Claude was still thinking. Part 1 treated the Slack app as a prerequisite — configured and ready. This part actually builds it. We'll create the app in the Slack dashboard, wire both tokens, fix the timeout with background threading, format answers with Block Kit so they look like a real bot response instead of a text dump, and add a `/reindex` command so the docs stay current without restarting the process. You'll need the code from Part 1 and a Slack workspace where you have permission to install apps.

Building an AI-Powered Document Summarizer with Python and Claude API
· 8 min read

Building an AI-Powered Document Summarizer with Python and Claude API

I have about twelve PDF tabs open right now that I haven't read. A vendor comparison, two research papers, a spec doc from last week. At some point I'll get to them. Probably. Rather than actually reading them, I built a summarizer. This tutorial walks through the same thing: a Python script that takes any `.txt` or `.pdf` file from the command line and returns a clean summary using the Claude API. You'll need Python 3.10+, an Anthropic API key, and basic Python familiarity. No prior LLM experience required.

Choosing the Right AI Model: GPT-4, Claude, Gemini, or Llama?
· 5 min read

Choosing the Right AI Model: GPT-4, Claude, Gemini, or Llama?

The question comes up constantly. Someone wants to build a product or add AI to an existing one, and the first thing they hit is: which model? The advice online is mostly useless — half of it is sponsored, the other half is from someone who tested the models for two hours on their laptop.

RAG (Retrieval-Augmented Generation) Explained with Real-World Examples
· 7 min read

RAG (Retrieval-Augmented Generation) Explained with Real-World Examples

LLMs have a memory problem. Ask Claude or GPT-4 about your internal documentation, this quarter's pricing changes, or a contract signed last week — and you'll get one of two outcomes: "I don't know," or something confidently wrong. RAG fixes this. Not by retraining the model. Not by fine-tuning. By handing the model the documents it needs, right before it answers.