AI & Automation: The Tools I Use and Why
I work with the leading AI platforms and automation frameworks to build systems that actually run in production. Not toy demos. Not chatbot wrappers. Real pipelines that process data, talk to customers, scrape the web, and connect your business tools through intelligent automation. Here is a breakdown of the specific technologies I use and when each one makes sense.
LLM Integration: OpenAI and Claude APIs
Large language models are the engine behind most of what I build. I work directly with the OpenAI API and Anthropic's Claude API, not through third-party wrappers that add latency and cost. Direct API integration means I control the prompts, the token usage, the retry logic, and the response handling. That matters when you are running thousands of requests per day and need predictable performance.
OpenAI offers the broadest ecosystem for AI integration. Its lineup spans a flagship model for general work, cheaper mini and nano tiers for cost-sensitive high-volume tasks, and dedicated reasoning models that think through a problem before answering. Function calling makes it straightforward to connect the model to your APIs and databases — if a customer asks a question and the answer lives in your CRM, the model fetches it mid-conversation without custom middleware. I cover my full AI integration service on a dedicated page.
Anthropic's Claude is what I reach for when precision, instruction-following, and extended reasoning are critical. In my experience it hallucinates less on factual questions and holds complex multi-step instructions more reliably. The Opus, Sonnet, and Haiku tiers trade capability against speed and cost, and the large context windows mean I can feed entire codebases, contracts, or document collections into a single prompt instead of chunking them. Extended thinking lets the model reason step by step before responding, which measurably improves accuracy on hard tasks.
I deliberately describe these by tier rather than by version number, because the version that is current when you read this will not be the one that is current six months from now. What matters is the selection logic, and that logic is stable: use the cheap fast tier for high-volume conversational work, the flagship tier for accuracy-critical analysis, and the reasoning tier when the problem genuinely requires multi-step thinking.
In practice, I usually use more than one. A chatbot might run on a mini tier for fast responses while a background pipeline uses a flagship model to analyze uploaded documents with higher accuracy. I pick the model that fits the task rather than defaulting to one provider, and I keep the integration layer abstracted so swapping models later is a configuration change, not a rewrite.
LangChain: Chaining AI into Real Workflows
A single API call to an LLM can answer a question. But real business automation requires chains of operations: retrieve data, process it, make a decision, take an action, log the result. That is where LangChain comes in.
LangChain is an orchestration framework that lets me chain together multiple AI calls, database queries, API requests, and conditional logic into a single coherent workflow. Instead of writing custom glue code for every integration, LangChain provides a structured way to build these multi-step pipelines.
I use LangChain for several patterns that come up constantly in production AI systems:
- Retrieval-Augmented Generation (RAG) -- the AI searches your documents, knowledge base, or database before answering, so responses are grounded in your actual data instead of general training knowledge
- Multi-step agents that break a complex task into subtasks, execute each one, and combine the results into a final output
- Tool-use chains where the LLM decides which external tools to call (search, calculator, database lookup) based on the user's question
- Memory and context management for long conversations that need to reference earlier messages without blowing through token limits
LangChain is not always necessary. For a simple chatbot that answers questions from a single prompt, direct API calls are cleaner and faster. But the moment your AI needs to touch multiple data sources, make decisions, or execute multi-step logic, LangChain saves significant development time and keeps the codebase maintainable.
VAPI: Voice AI Agents That Handle Phone Calls
VAPI is the platform I use to build AI-powered phone agents. It handles the hard parts of voice AI: real-time speech-to-text, natural language processing, text-to-speech, and telephony integration. I configure the conversation flow, connect it to your business systems, and deploy agents that answer calls, qualify leads, book appointments, and handle routine inquiries.
What makes VAPI practical for production is the latency. Voice conversations need sub-second response times or they feel broken. VAPI is optimized for this. The caller speaks, the AI processes, and the response comes back fast enough to feel like a natural conversation. I have built agents that handle hundreds of inbound calls per day with response times that callers do not notice.
I connect VAPI agents to your existing infrastructure. When a caller wants to book an appointment, the agent checks your calendar in real time. When they ask about an order, it pulls from your database. When a call needs to be escalated, it transfers to a human with full context of what was discussed. The agent is not an island. It is wired into your business.
Voice AI is particularly valuable for businesses that miss calls. Missed calls are missed revenue. An AI agent that picks up every call, at any hour, and either resolves the issue or captures the lead is a direct revenue driver. If your business gets more than 20 calls a day and some of them go to voicemail, this is worth exploring.
Web Scraping at Scale
Sometimes the data you need is not available through an API. It lives on websites, in public directories, in competitor listings, or scattered across dozens of sources that do not offer structured exports. I build web scraping systems that collect this data reliably and at scale.
I use a combination of tools depending on the target. For static pages, server-side HTTP requests with parsing libraries are fast and efficient. For JavaScript-rendered content, I drive a real headless browser with Playwright or Puppeteer, which loads the full page, runs its scripts, and waits for the actual content before extracting anything. Playwright is my default of the two: it drives Chromium, Firefox, and WebKit from one API, handles authentication flows and multi-step navigation reliably, and its auto-waiting removes most of the flakiness that makes homegrown scrapers fail at 3 AM. For sites with anti-bot protections, I implement rotating proxies, request throttling, and browser fingerprint management to stay within acceptable use limits.
The same Playwright setup does double duty as an automation tool, not just a data collector. When a vendor or government portal has no API — which is most of them — a scripted browser session can log in, submit a form, download a report, and file it exactly the way a person would, on a schedule, without the person. That is frequently the fastest path to eliminating a recurring manual task that everyone assumed was permanent.
The scraping itself is only half the job. Raw scraped data is messy. I build the cleaning, normalization, and validation layer that turns raw HTML into structured, usable data. Duplicate detection, format standardization, and data quality checks run automatically before anything hits your database.
- Competitor price monitoring and product catalog extraction
- Lead generation from public business directories and listings
- Market research data collection from industry sources
- Real estate, job board, and listing aggregation
- Scheduled scraping with change detection and alerting
I build these systems to be resilient. Websites change their layouts, add new protections, or restructure their pages. My scrapers include monitoring that detects when a source changes and alerts me before your data pipeline breaks. Maintenance is part of the deal, not an afterthought.
Data Pipeline Automation
Data pipelines are the plumbing that moves information between your systems. I build automated pipelines that extract data from one source, transform it into the format another system needs, and load it where it belongs. The backend architecture behind these pipelines is just as important as the AI layer. ETL (Extract, Transform, Load) is the formal term. In practice, it means your data stops living in spreadsheets and starts flowing automatically.
Common patterns I build include:
- API-to-database sync -- pulling data from third-party services on a schedule and storing it in your database for reporting or analysis
- Multi-source aggregation -- combining data from your CRM, email platform, ad accounts, and website analytics into a single dashboard-ready dataset
- Event-driven processing -- when a new order comes in, automatically update inventory, notify fulfillment, generate an invoice, and send a confirmation email
- AI-enhanced pipelines -- using LLMs to classify, summarize, or extract structured data from unstructured inputs like emails, PDFs, or customer messages
I design pipelines with monitoring and error handling built in. Every step logs what it processed and what failed. Retries happen automatically for transient errors. If something breaks in a way that needs attention, you get an alert with enough context to understand the problem without digging through logs.
The goal is always the same: remove manual data entry, eliminate copy-paste workflows, and make sure your systems stay in sync without someone babysitting them. If your team spends hours every week moving data between tools by hand, a pipeline pays for itself in the first month.
RAG, Embeddings & Vector Databases
Retrieval-Augmented Generation is the single most useful pattern in applied AI, and it is what most businesses actually want when they say they want "an AI that knows our stuff." A general model has never seen your pricing sheet, your service manuals, your policies, or last quarter's support tickets. RAG fixes that without training a custom model.
The mechanics are straightforward once you have built a few. Your documents get split into meaningful chunks and converted into embeddings — numeric vectors that capture what the text means rather than which words it contains. Those vectors live in a vector database. When a user asks a question, the question is embedded the same way, the database returns the passages closest in meaning, and those passages are handed to the model as context along with an instruction to answer from them. The model is no longer recalling; it is reading.
That distinction is the whole point. Because answers are grounded in retrieved text, the system can cite its sources, and it can say "I don't know" when nothing relevant comes back. Hallucination stops being an unpredictable risk and becomes a bounded one. When your policy changes, you re-index a document — no retraining, no fine-tuning bill, and the change is live in minutes.
For storage I usually reach for pgvector first, because it lives inside the PostgreSQL database you already run — one backup strategy, one set of credentials, and the ability to filter by permissions and metadata in the same query as the similarity search. When scale or hosted convenience justifies it, Pinecone, Qdrant, Weaviate, and Chroma are all solid choices.
The engineering that separates a demo from a system people trust is in the details: chunking on semantic boundaries instead of arbitrary character counts, overlapping chunks so context is not severed mid-thought, hybrid search that combines keyword and vector matching so exact part numbers still work, reranking the top results before they reach the model, and enforcing document-level permissions so an employee never retrieves a file they could not otherwise open.
What Businesses Use This For
- Support assistants that answer from your actual documentation, with citations
- Internal knowledge search across policies, contracts, and historical tickets
- Sales tools that quote your real pricing and product specifications
- Onboarding assistants that answer new-hire questions from your handbook
- Document review that pulls relevant clauses out of long agreements
Model Context Protocol (MCP)
The Model Context Protocol is an open standard, introduced by Anthropic and now adopted across the industry, that defines how AI applications connect to external tools and data. It is the most consequential piece of AI plumbing to appear recently, and it solves a problem that quietly wastes a lot of money.
Before MCP, every AI feature needed custom glue. Your chatbot needed one integration to reach your CRM, your internal agent needed a different one for the same CRM, and the coding assistant your developers use needed a third. Three clients times three data sources means nine bespoke integrations, each with its own auth handling, error paths, and maintenance burden. Change providers and you rewrite all of them.
MCP replaces that with one contract. You build an MCP server that exposes your system's capabilities — tools the model can call, resources it can read, and prompts it can reuse — and any MCP-compatible client can use it. Write the connector to your CRM once, and your chatbot, your internal agent, and your developers' tooling all speak to it through the same interface.
For a business, the practical value is that your AI integration work stops being disposable. Model providers will keep changing, and the assistant you deploy this year may not be the one you use in two years. An MCP server outlives all of that. It is also better security architecture: the server holds scoped credentials and enforces what is permitted, so the model asks for an action rather than being handed your API keys.
I build MCP servers over the systems a business already runs — a CRM, an order database, an internal document store, a reporting warehouse — with proper authentication, permission scoping, and audit logging on every call, so you can answer the question "what did the AI actually do?" with a log rather than a guess.
AI Agents, Tool Calling & LangGraph
An AI agent is a model that has been given tools and the authority to decide which ones to use. Instead of only producing text, it can look up an order, check inventory, create a ticket, send an email, or query a database — and then decide what to do based on what came back. The gap between a chatbot and an agent is the difference between a system that talks about your business and one that operates in it.
The mechanism underneath is tool calling. I describe each available function to the model — its name, what it does, and the exact shape of its arguments — and the model responds with a structured request to call one. My code executes it, validates the result, and hands it back. The model never touches your systems directly; it asks, and my layer decides whether the request is legitimate before anything happens.
Simple agents can run as a single loop. Real business processes usually cannot, because they branch, they need approval steps, and they have to survive failure. That is where LangGraph earns its place. It models the workflow as an explicit graph of states and transitions rather than hoping a prompt keeps the model on track. State persists between steps, so a workflow can pause for a human approval and resume hours later. Failures retry at the failed node instead of restarting the whole process. And because the graph is explicit, you can see exactly what path a run took when something goes wrong.
I am deliberately conservative about autonomy, because that is where these projects fail publicly. Anything that spends money, contacts a customer, or deletes data goes behind an explicit approval step. Every tool call is logged with its inputs and outputs. Agents get the narrowest permissions that let them do the job. An agent that can read your calendar and draft a reply is enormously useful; one that can send email unsupervised is a liability waiting for a bad day.
Agent Workflows I Have Built Patterns For
- Support triage that reads a ticket, retrieves history, and routes or drafts a reply
- Lead qualification that enriches an inbound form and writes structured notes to the CRM
- Document processing that extracts fields from invoices and flags exceptions for review
- Research agents that gather data from multiple sources into one structured report
- Internal assistants that answer questions by querying live systems, not stale exports
Gemini & Open Models
Two providers are not enough coverage for every project, and sometimes the right answer is not a hosted API at all.
The Gemini API from Google is the third frontier option and is genuinely strong at multimodal work — reasoning over images, video, audio, and long documents in a single request. It is also the natural fit when a business already lives in Google Cloud or Workspace, because the data stays inside an environment they have already approved and paid for. For document-heavy and video-heavy workloads it frequently comes in cheaper than the alternatives at comparable quality.
Open-weight models — Meta's Llama, Mistral, and the rest of that ecosystem — solve a different problem entirely: the data that legally or contractually cannot leave your building. Run through Ollama for straightforward deployments or vLLM when throughput matters, they run on your own hardware with no outbound API call, no per-token bill, and no third-party data processing agreement to negotiate.
For healthcare practices handling PHI, addiction treatment centers under 42 CFR Part 2, law firms with privileged material, and financial services under strict data residency rules, that is often the difference between an AI project being possible and being a compliance non-starter. The honest tradeoff is that open models still trail the frontier on the hardest reasoning tasks, and you take on the GPU cost and the operational responsibility.
The architecture I reach for most in regulated environments is hybrid: a local model handles anything containing protected information, while general work that carries no sensitive data goes to a hosted frontier model. Because I keep the model layer abstracted behind one interface, that routing is a policy decision you can change later, not a rebuild.
Whisper & ElevenLabs: Speech In and Out
Voice is the interface people reach for when their hands are busy or a keyboard is in the way, and two components make it work. Whisper converts speech to text with accuracy that holds up against accents, background noise, and industry jargon, and it can run on your own hardware for sensitive audio. ElevenLabs handles the other direction, producing speech natural enough that callers stop performing for the robot and just talk.
Together with the VAPI layer above, that is the full loop for a voice agent. But the pieces are just as useful separately, and the standalone uses are often where the immediate money is.
Transcription turns recorded audio into searchable, structured text: sales calls summarized into CRM notes, client meetings turned into action items, dictated field reports converted into written records, podcast episodes into show notes and captions. For a practice or agency that runs on conversations, transcription plus summarization eliminates hours of after-hours writing every week.
Generated speech covers the reverse: appointment reminders that sound human, accessibility narration for written content, IVR prompts that can be changed without booking a studio, and training material that can be updated by editing a script rather than re-recording a session.
Two engineering details decide whether voice feels good or awful. Latency is one — a natural conversation tolerates roughly a second of silence, so the transcription, model, and speech steps have to be streamed and overlapped rather than run end to end. Interruption handling is the other: a person who starts talking over the agent expects it to stop immediately, and a system that keeps talking over them reads as broken no matter how good the voice sounds.
Choosing the Right AI Platform
Every project starts with a platform decision. Here is how I evaluate the three main options for most business use cases:
| Criteria | OpenAI | Anthropic Claude | Open-Source (Llama, Mistral) |
|---|---|---|---|
| Best for | Coding, agentic workflows, function calling, broad ecosystem | Document analysis, extended reasoning, precise instruction-following | Data-sensitive industries, on-premise requirements, full control |
| Speed | Mini and nano tiers for high throughput; reasoning models trade speed for depth | Sonnet tier is fast; Opus tier is slower but most capable with extended thinking | Depends on your hardware; can be very fast with proper GPU setup |
| Context window | Very large — whole codebases and document sets fit in one prompt | Very large on the Opus and Sonnet tiers, at standard pricing | Varies by model (8K to 128K typical) |
| Cost | Per-token, billed by tier; mini and nano are dramatically cheaper | Per-token, billed by tier; Haiku and Sonnet cost well below Opus | Infrastructure costs only; no per-token fees |
| Data privacy | API data not used for training (with enterprise terms) | API data not used for training by default | Complete control; nothing leaves your servers |
| Reasoning | Dedicated reasoning models for deep problems; flagship for general tasks | Extended thinking built into Opus and Sonnet for step-by-step reasoning | Limited reasoning capabilities compared to frontier models |
| When I recommend it | Coding-heavy projects, broad API integrations, cost-sensitive high-volume | High-accuracy tasks, long documents, complex analysis, regulated industries | Healthcare, finance, legal, or any business that cannot send data to third parties |
In many projects, I use more than one. The comparison table is a starting point for conversation, not a final answer. During our discovery call, I walk through your specific requirements and recommend the approach that balances capability, cost, and compliance for your situation.
How I Approach AI Projects
Every AI project I take on follows the same pattern. First, I identify the specific bottleneck or manual process that AI can improve. Then I build a minimal working version, test it with real data, and iterate until it handles your actual edge cases. Only then does it go into production.
I do not build AI for the sake of building AI. If a simple script or a well-configured existing tool solves your problem, I will tell you that. AI adds value when the task involves unstructured data, natural language, decision-making at scale, or connecting systems in ways that rigid rule-based logic cannot handle. For everything else, simpler solutions are better solutions.
Because I am a solo developer, you work with me directly throughout the project. No project managers relaying messages. No junior developers learning on your dime. When you have a question about how your AI system works, you talk to the person who built it. That means faster decisions, fewer misunderstandings, and a system that actually matches what you asked for.
Ready to Add AI to Your Business?
Book a free discovery call to explore how AI can automate your workflows and cut costs.
Book a Call