I design and ship production agentic AI systems end to end — multi-agent and multitool looping architectures,
RAG over structured and unstructured context, cloud-native AWS pipelines, and the React/Next.js frontends that
put them in front of people. I wrote all of the agent code for LoomIQ at DAVTEQ, and I built
Klenny Code, KlennyBrain and AnyChar myself, from scratch.
I'm a Full Stack Agentic AI Engineer in the San Francisco Bay Area with 2+ years building production-grade AI —
from multi-agent architectures to multitool looping agents to cloud-native AWS pipelines and React/Next.js
frontends. At DAVTEQ I've delivered multiple revenue-generating products: an AI invoice processor, a data
analysis agent and a building-management report generator. I'm AI-native, experienced with Cursor and Claude
Code, and I wrote my own open-source coding harness that I now use to accelerate every phase of development.
July 2024 — Present
DAVTEQ, Inc.
LoomIQ — architected and wrote all of the agent code: the original LangGraph multi-agent v1/v2, the v3 multitool looping agent (higher data grounding and answer completeness at ½ the cost of v2), its data-verification and memory tools, and a full Python backend rewrite with feature parity.
AI-powered invoice processing — delivered end-to-end automation from development to first paying customer: PDFs in any format → Claude Sonnet + Bedrock Data Automation → structured JSON → Postgres, with a persistent sequential job queue and automatic error correction.
Building-management dataset QC — an AI agent system that generates 60-page quality-assessment reports across 17 configurable checks (each running up to 5 SQL queries), orchestrated by 5 Node.js Lambdas and 2 Step Functions.
January 2026 — Present
Personal work · github.com/DanTahir
Klenny Code — open-source desktop coding agent for hundreds of models, written from scratch.
KlennyBrain — permission-aware company brain on a HydraDB knowledge graph; 2nd place at the TechEquity AI hackathon.
AnyChar — multi-user, multi-character AI roleplay platform for Discord, concept to deployment.
An agentic AI data analyst for transportation and infrastructure data.
Agency analysts ask complex, multistep questions in plain English and LoomIQ answers them against
multi-gigabyte datasets — California crash records (CCRS), 511 Bay Area transit, Caltrans PeMS freeway
traffic and more — with every figure verified in code and every claim grounded in the Highway Capacity
Manual (HCM) and the Transit Capacity and Quality of Service Manual (TCQSM).
I wrote all of LoomIQ's agent code myself. I architected the original LangGraph multi-agent design, then the multitool looping agent that powers LoomIQ today, including its data-verification and memory tools.
½
the cost of the previous generation with higher scores on real-data grounding and answer completeness.
A single-prompt agent built directly on Claude via Amazon Bedrock's streaming Converse API. It thinks, fires up to six tool calls in parallel per round, and loops until the question is fully answered, with time, round and tool budgets that end gracefully.
Live “show your work” streaming
Thinking, tool calls, arguments and results stream to the browser as they happen over Server-Sent Events. Every event is persisted, so a refresh mid-answer rebuilds the exact state, and Stop cancels the running Athena query.
Verified figures & citations
The agent records each number with record_calculation: a formula plus its inputs. Code recomputes every figure as verified, mismatch or unverifiable. Answers cite figures and manual pages inline, and a Figure Check flags anything uncited.
Key-document RAG
Semantic search over the HCM and TCQSM with Pinecone and Cohere Embed v4 returns passages with document IDs and page ranges, fed by a RAG pipeline that indexes 5,000 pages in under an hour.
Metadata-first SQL
Before writing SQL the agent searches table instructions, columns and enumerated values, then pulls schemas and sample rows. Large Athena results are summarized in code (per-column stats over every row plus sampled rows), so context stays small and nothing is hidden.
Visible plans & an answer gate
A live, updatable query plan shows up in the UI as a checklist. A final-answer gate retracts any draft whose plan steps are unfinished, or that skips a chart for chartable data, and sends the agent back to finish the job.
Charts, maps & clarifying questions
Bar, line, area, pie and scatter charts; maps built from latitude/longitude fields; and an ask_question tool that pauses the turn for user input, without that wait counting against the time budget.
Self-improving memory
When the agent fixes a failed query, it can record a reusable lesson, such as a SQL dialect quirk or a canonical value format, but only by citing a verified failed-then-fixed query pair. Memory is versioned, lock-protected and admin-rollbackable.
Cost-aware & tenant-isolated
Prompt-cache breakpoints on the static prefix plus Athena and vector-search result caching keep costs down. Hard tool allowlists, structured retryable errors and org-scoped IAM keep every tenant's data isolated, and a conversation → job → step log view tracks tokens and cost.
A LoomIQ analysis: narrative findings and recommendations backed by generated charts.
The agent's toolbelt
10 tools, gated per conversation
run_athena_queryRead-only SQL over the data lake
search_structured_contextVector search over table metadata
get_table_infoColumn types & sample rows
search_unstructured_contextHCM & TCQSM passages
query_planLive, updatable plan
record_calculationCode-verified figures
edit_memoryLearned lessons
generate_chartFive chart types
generate_mapGeospatial points
ask_questionPause & clarify
Built withTypeScriptNode.js on AWS LambdaClaude on Amazon BedrockAthena & GlueDynamoDBPineconeCohere Embed v4Next.js & ReactServer-Sent EventsTerraformPython
02Personal project · Open source
Klenny Code
An open-source desktop coding agent that runs on hundreds of models.
Klenny Code is a Windows, macOS and Linux coding harness that brings any OpenRouter model (Claude, GPT,
Gemini and hundreds more) into a real agentic workflow: plans, approvals, memory, skills, subagents, a
built-in browser and terminal, and a personal-assistant platform. Beneath its cheerful corgi persona sits
some seriously rigorous engineering.
I wrote Klenny Code myself, from scratch, from inception to every release: caching, compaction, parallelism, planning, checklists, memory, atomic multi-write tools, skills, subagents, Pawprints and more. It's now my primary development tool, and this site was built with it.
Pick Claude, GPT, Gemini or hundreds of other models through a single OpenRouter key, and switch per tab mid-conversation. A cheaper utility model handles background work like summarization.
Plan mode & diff approvals
Klenny researches read-only and proposes a reviewable plan before touching code. Every edit and command is a diff you can accept or reject, with per-tab Manual, Command or Auto modes, checkpoints you can revert to, and live progress checklists.
Fabrication guard
The harness checks what the agent claims against a verification ledger of tool calls that actually ran, plus the clock, the filesystem and the checklist. Unsupported claims are flagged as disputed and forced into self-correction, with zero extra model calls.
Pawprints
Klenny writes small single-file React apps that run sandboxed in their own desktop windows. Nothing runs until you approve the source, the npm packages and the network domains, and the window gets no API key, shell or filesystem access.
Caching & compaction
Hand-tuned prompt-cache breakpoints and a frozen system prompt cut session costs in half. Compaction that resists summary poisoning, with automatic resume, keeps long autonomous tasks on track.
Parallel everything
Klenny reliably fires 3–10 tool calls from one message, batches edits with atomic all-or-nothing multi_edit/multi_write, and generates independent files concurrently with parallel_write.
Memory, skills & subagents
Project and global memory notes persist across sessions, and other projects can be read for reference. Reusable SKILL.md workflows and subagents run in isolated context windows, and Klenny can write all of them itself.
Personal assistant & scheduler
Assistant tabs read and send Gmail, answer Discord mentions, and run cron-scheduled tasks unattended in the background, sharing one auto-compacting memory pool.
Browser, terminal & media
A Playwright browser Klenny can drive and resize to check mobile layouts, a real PTY terminal it can read back, image and video generation, surgical .docx editing, and optional semantic code search.
Agent tabs with live tool cards, inline diffs and per-call cache savings.
Built withTypeScriptElectronReactBunOpenRouterPlaywrightnode-ptyesbuildVector searchGitHub Actions CI/CD
03Personal project · Hackathon
🥈2nd place · TechEquity AI Company Brain Hackathon
KlennyBrain
Your company's brain, with receipts.
KlennyBrain connects Slack, email, docs, meetings, tickets and GitHub issues into a HydraDB knowledge
graph. Ask anything and get cited, permission-aware answers, so the CEO and the intern provably see
different things. It also reads everything proactively to catch contradictions and stale docs, then has
an agent fix them once an owner approves.
I designed and wrote KlennyBrain myself, from scratch, for the TechEquity AI company brain hackathon, where it took second place.
A tool-calling agent (search_knowledge, explore_entity, find_experts and more) streams cited answers with numbered source cards and a live trace of how it found them.
“Why this answer” graph
A force-directed evidence graph built from HydraDB's graph context shows exactly how the sources connect: people, events, concepts and the tickets blocking each other.
Permission-aware by construction
Identity is resolved on the server, and every knowledge search must carry an ACL or it throws. An audited “View as” lets admins confirm what each persona can and can't see.
Insights engine
A two-pass pipeline extracts decisions and action items, groups claims across sources and verifies conflicts with a stronger model. The result is contradiction and stale-doc insights that cite both sides.
Approval-gated, self-correcting
“Fix it” proposes a corrected doc, a Slack message and a GitHub issue. Nothing runs until an owner or admin approves. Then the brain files the issue, posts the update, rewrites the doc and resolves the insight.
Slack-native, with redaction
A Slack bot answers @Brain mentions, DMs and /brain with the same permissions as the web app. Live ingestion strips credentials, card numbers, SSNs and phone numbers before anything is indexed.
“What is blocking the Atlas launch?” A synthesized answer with numbered citations on every claim.
AnyChar is a multi-user, multi-character AI roleplay platform for Discord. Design rich character personas
on a web dashboard and drop them into any server or DM. They stay in character, remember your history,
recognize the people they talk to, and can even see the images you share.
I designed and wrote AnyChar myself, from scratch, from concept to production deployment: the Python Discord bot, the Next.js dashboard and the AWS infrastructure.
A name, a description, “should do” and “should never do” rules, and four reply styles, from one-liners to 500-word novella replies, all edited on the web dashboard.
Prunable two-tier memory
Short-term summaries are written after every exchange and automatically compacted into long-term memories within a token budget. Users can browse and prune them from the dashboard.
Known Users
Teach a character about up to five specific people, each with a description and optional photo, so it recognizes them and treats them consistently.
Vision & auto-appearance
Upload a portrait and a vision model writes a detailed appearance description. Characters can also see and react to images posted in chat.
Multi-character scenes
Up to three characters can be active in a server at once, replying in turn. Each knows who else is in the scene, and the bot's nickname syncs to match.
Per-server, per-DM & metered
Each server can have a different active character, and each user has a personal DM character. Admin approval provisions an encrypted per-user OpenRouter key with usage and cost tracking.
anychar.bot: sign in with Discord and start building characters.
Profiles, reply styles, memory, Known Users, vision and per-server setup.
Built withPythondiscord.pyTypeScriptNext.js & ReactAuth.js (Discord OAuth)DynamoDBS3EC2OpenRouter
05Contact
Let's build something agentic.
I'm always happy to talk about agent architectures, LLM tooling, RAG, or whatever you're building. The best way to reach me is on LinkedIn.