The Complete AI Automation Tech Stack for 2026: Every Tool We Use and Why
After 40+ production AI builds, our AI Automation Tech Stack has converged on a set of tools that handles 90% of what we build reliably, cost-effectively, and with manageable operational overhead. This is it — every tool, every decision, every cost.
This is an opinionated guide. We'll tell you exactly why we choose each tool and what the trade-offs are.
The Stack at a Glance
| Layer | Primary Tool | Alternative | When to Switch |
|---|---|---|---|
| LLM (cloud) | GPT-4o-mini | Claude Haiku | Complex reasoning tasks → Claude |
| LLM (private) | Mistral 7B via Ollama | LLaMA 3 8B | Better reasoning needed |
| Embeddings | text-embedding-3-small | nomic-embed-text (local) | Privacy required → local |
| Vector DB | ChromaDB | Qdrant | >500k vectors or self-hosted perf |
| Orchestration (cloud) | LangChain / LangGraph | CrewAI | Simple content pipelines → CrewAI |
| Automation (no-code) | N8N (self-hosted) | Make.com | Non-technical team → Make |
| Backend API | FastAPI (Python) | Node.js/Express | Team prefers JS |
| Database | Supabase (PostgreSQL) | Neon | Need Firebase-like simplicity |
| Frontend | React + Tailwind CSS | Next.js | SEO needed → Next.js |
| Voice (TTS) | ElevenLabs Turbo | PlayHT | >200 calls/month → PlayHT |
| Voice (STT) | Deepgram Nova-2 | Whisper (local) | Privacy required → Whisper |
| Telephony | Twilio | Exotel | India DID needed → Exotel |
| Interakt BSP | WATI | Cost sensitivity → Interakt | |
| Deployment | Railway / DigitalOcean | AWS | Compliance/scale → AWS Mumbai |
| Monitoring | Langfuse | Langsmith | Open source → Langfuse |
Layer 1: LLMs
For Cloud API (95% of production workflows)
GPT-4o-mini is our workhorse. Fast (200–400ms), cheap ($0.15/1M input tokens), excellent JSON output, reliable function calling. Handles:
- Chatbot responses
- Classification and intent detection
- Data extraction from documents
- Email and content drafting
- WhatsApp bot logic
Claude 3.5 Sonnet when we need better reasoning:
- Complex multi-step agent tasks
- Long document analysis (200k context window)
- Code review and generation
- Tasks where instruction following must be near-perfect
Gemini 1.5 Flash when we need long-context at low cost:
- Processing entire books or document collections
- Multi-document comparison and synthesis
- Tasks requiring >128k context
# How we route between models
def get_llm_for_task(task_type: str):
routing = {
'chatbot': ('openai', 'gpt-4o-mini'),
'classification': ('openai', 'gpt-4o-mini'),
'extraction': ('openai', 'gpt-4o-mini'),
'complex_reasoning': ('anthropic', 'claude-sonnet-4-5'),
'long_document': ('google', 'gemini-1.5-flash'),
'code_generation': ('openai', 'gpt-4o'),
}
return routing.get(task_type, ('openai', 'gpt-4o-mini'))For Private/On-Premise Deployment
Mistral 7B Q4_K_M via Ollama. Our default for compliance-sensitive deployments (BFSI, healthcare, legal). Performance: GPT-3.5 equivalent on structured tasks.
LLaMA 3 8B when better reasoning is needed locally — noticeably stronger on complex instruction following.
Phi-3 Mini for high-volume, low-complexity tasks (classification, extraction, yes/no) where speed matters more than reasoning depth.
Layer 2: Embeddings
text-embedding-3-small (OpenAI) — Our default for cloud deployments. 1536 dimensions, excellent quality, $0.02 per million tokens. For a 10,000-document knowledge base: one-time ingestion cost ~₹15.
nomic-embed-text (Ollama) — For private deployments. Free, 768 dimensions, very good quality. Runs locally alongside Ollama with no API dependency.
Rule: If you're using Ollama for the LLM, use nomic-embed-text for embeddings. Everything stays local, zero API cost.
Layer 3: Vector Database
ChromaDB — Our default. Zero cost, zero infrastructure, embeds directly in Python. PersistentClient stores to disk. Handles up to ~500k vectors comfortably.
import chromadb
client = chromadb.PersistentClient(path='./vector_store')
collection = client.get_or_create_collection('knowledge_base')Supabase pgvector — When the project already uses Supabase. One database for everything — no separate vector store to manage.
Qdrant — When we need better performance than ChromaDB at high vector counts (>500k), but still need self-hosting. Better filtering, better performance at scale.
We deliberately avoid Pinecone for most projects: data goes to US servers, costs scale with usage, and ChromaDB/Qdrant cover 95% of use cases at zero incremental cost.
Layer 4: AI Orchestration
LangChain for simple chains and RAG pipelines — still the best for straightforward retrieval, prompt chaining, and simple tool-calling agents.
LangGraph for complex stateful agents — anything with loops, human-in-the-loop, conditional branching, or multiple agents. Our default for production agents.
N8N as the action layer for AI agents — when we need to take real-world actions (send emails, update CRMs, make API calls, post to social media), N8N nodes are faster to build than Python tool functions.
The combination: LangGraph decides what to do, N8N does it.
# LangGraph agent that triggers N8N webhooks as tools
from langchain_core.tools import tool
@tool
def send_follow_up_email(lead_id: str, template: str) -> str:
"""Send a follow-up email to a lead via N8N workflow"""
response = requests.post(
'https://n8n.yourdomain.com/webhook/send-email',
json={'lead_id': lead_id, 'template': template}
)
return f"Email queued: {response.json()['message_id']}"Layer 5: Workflow Automation (N8N)
N8N (self-hosted) is the backbone of almost every automation we build. The ₹800/month VPS cost covers unlimited workflow executions.
What we use N8N for:
- WhatsApp integrations (sending and receiving)
- CRM updates (HubSpot, Zoho)
- Google Workspace integrations (Sheets, Drive, Gmail)
- Scheduled data pulling and processing
- Webhook handling for external services
- The "pipes" between AI components
When we recommend cloud N8N instead: when the client doesn't want to manage a server. Cloud N8N (~$20/month) handles 2,500 executions/month — sufficient for smaller workflows.
Layer 6: Backend API
FastAPI (Python) — Our default for AI-heavy backends. Python is the language of AI libraries; FastAPI gives it a clean REST API with automatic documentation, async support, and Pydantic validation.
from fastapi import FastAPI
from pydantic import BaseModel
from langchain_openai import ChatOpenAI
app = FastAPI()
llm = ChatOpenAI(model='gpt-4o-mini')
class ChatRequest(BaseModel):
message: str
session_id: str
@app.post('/chat')
async def chat(request: ChatRequest):
response = await llm.ainvoke(request.message)
return {'response': response.content}Deployment: Railway for simple projects (one-click Python deploy, ₹1,000–3,000/month). DigitalOcean App Platform for more control. AWS EC2 Mumbai for compliance-sensitive production.
Layer 7: Database
Supabase (PostgreSQL) — See Blog 32 for the full case. Free tier for development, Pro ($25/month) for production. pgvector for RAG projects.
Google Sheets — For client-managed data and CRM-lite use cases. N8N has excellent Sheets integration. Not a database, but often the right tool for non-technical client teams.
Layer 8: Voice Infrastructure
ElevenLabs Turbo v2.5 (TTS) — Best quality, lowest latency (280–350ms). Use for <200 calls/month.
PlayHT 2.0 Turbo (TTS) — Unlimited plan wins at high volume. Also best for Hindi/Indian language.
Deepgram Nova-2 (STT) — Best accuracy for Indian English, lowest latency, good pricing.
Twilio (telephony) — Global numbers, reliable WebSocket streaming, excellent documentation.
Exotel (India alternative) — Indian DID numbers, rupee billing, local support. Better for India-only calling agent projects.
Layer 9: Monitoring and Observability
Langfuse — Open-source LLM observability. Self-hosted. Tracks every LLM call with latency, cost, tokens, input/output. Essential for production systems.
from langfuse.callback import CallbackHandler
langfuse_handler = CallbackHandler(
public_key='YOUR_PUBLIC_KEY',
secret_key='YOUR_SECRET_KEY',
host='http://localhost:3000' # Self-hosted
)
# Attach to LangChain/LangGraph
response = chain.invoke(input, config={'callbacks': [langfuse_handler]})Every production AI system we deploy has Langfuse monitoring. Without observability, debugging production issues is nearly impossible.
The Full Monthly Cost for a Typical Production AI System
For a mid-complexity system (WhatsApp AI chatbot + RAG knowledge base + N8N automation + basic dashboard):
| Component | Monthly Cost |
|---|---|
| VPS for N8N + FastAPI (Hetzner CX42) | ~₹1,250 |
| Supabase Pro | ₹2,100 |
| OpenAI API (GPT-4o-mini) | ₹1,500–5,000 |
| ElevenLabs Turbo (if voice) | ₹1,850–27,700 |
| Deepgram Nova-2 (if voice) | ₹800–3,000 |
| WhatsApp BSP (Interakt) | ₹2,500 |
| Langfuse (self-hosted) | ₹0 |
| Total (no voice) | ₹7,350–10,350 |
| Total (with voice, 100 calls/month) | ₹12,000–18,000 |
For a business replacing ₹30,000/month in staff time, or converting an additional ₹1 lakh/month in previously-lost leads — the ROI math is straightforward.
What's Coming in 2026 (Our Bet)
We're investing in:
- Voice AI quality will make phone calls indistinguishable — ElevenLabs and Cartesia are improving fast. Within 12 months, AI calling agents will pass most Turing tests on the phone.
- Computer use agents — AI that can browse websites, fill forms, and interact with any web interface. This will unlock automation of everything that currently requires a human browser session.
- Multimodal workflows — AI that processes images, audio, video, and text together. Already emerging with GPT-4o Vision — will become central to document and media workflows.
- Indian language AI — The next frontier for Indian SMBs. Hindi, Gujarati, Tamil, Marathi voice agents at GPT-3.5 quality. Happening faster than most expect.
We're Monk Media One Tech — AI automation agency, Ahmedabad, India. We've been building with this stack for 8+ years and know where it works, where it breaks, and how to make it deliver ROI.
Book a free discovery call: monkmediaone.tech/contact
📞 +91 88668 19349 | hello@monkmediaone.tech
