Skip to content
Apsan Works

AI Agents

AI agents that do the work, not just the talking

Most “AI agents” are a chat box with a system prompt. We build the other kind — systems that hold context, call real tools, take real actions in your stack, and get evaluated on whether the work actually got done.

The problem

The demo works. Production is a different problem.

Getting an agent to work once, on a happy path, in a notebook, is an afternoon. Getting one that behaves on the thousandth run, with messy inputs, partial API failures, and a human who needs to trust the output — that is the actual engineering. Most agent projects stall in exactly that gap.

Sound familiar?

  • A prototype that impressed everyone and then never shipped
  • No way to tell whether a change made the agent better or worse
  • Costs that scale unpredictably with usage
  • Silent failures nobody catches until a customer does
  • An agent that can read your data but cannot act on anything

What we build

AI Agents, specifically

Tool-using agents

Agents wired into the systems you already run — CRM, database, billing, internal APIs, third-party services. Scoped permissions, typed tool schemas, and hard limits on what each agent is allowed to touch.

Research and analysis agents

Long-horizon work: gather sources, cross-reference, extract structured findings, produce a defensible answer with citations. Built for domains where a wrong answer has a cost.

Document and intake agents

Contracts, RFPs, applications, filings, claims. Parsed into structured data, checked against your rules, routed to whoever needs to act — with the reasoning attached.

Multi-agent orchestration

Where one model in a loop is the wrong shape: specialist agents with distinct tools and prompts, a coordinator that decomposes the task, and explicit handoffs you can trace.

Evaluation harnesses

A test suite for non-deterministic systems. Golden datasets, graded rubrics, regression runs on every prompt or model change, so 'is this better?' has an answer.

Guardrails and human handoff

Confidence thresholds, escalation paths, approval gates on irreversible actions, and full audit trails. The agent knows what it is not allowed to decide alone.

How we work

The sequence that makes this ship

Every engagement follows the same spine. The order matters more than any individual step.

  1. 01

    Find the decision

    We start from the judgement being made, not the technology. What decision is a person making today, on what inputs, and what does getting it wrong cost? That framing decides whether an agent is even the right tool.

  2. 02

    Build the eval set first

    Before any agent code, we assemble real examples with known-good outcomes. This is the single biggest predictor of whether an agent project ships, and the step almost everyone skips.

  3. 03

    Thin vertical slice

    One narrow path, working end to end against real data and real tools. Not a demo — a deployed slice you can put in front of someone whose opinion matters.

  4. 04

    Harden and instrument

    Retries, fallbacks, cost ceilings, timeouts, structured logging of every tool call and decision. Tracing so you can reconstruct any run after the fact.

  5. 05

    Widen the scope

    Extend to the edge cases the eval set exposed, measuring against the baseline each time. Scope grows only where the numbers justify it.

Stack

Tools chosen per problem, not per habit

What we reach for most often on this kind of work. The right answer changes with the problem, and we will argue for a different one when it fits better.

  • Claude
  • GPT
  • Gemini
  • Vercel AI SDK
  • LangGraph
  • MCP
  • pgvector
  • Temporal
  • TypeScript
  • Python

Questions

Straight answers

What actually separates an AI agent from a chatbot?

Agency over tools and state. A chatbot answers within a conversation; an agent decides what to do next, calls tools to do it, observes the result, and keeps going until the task is complete or it hits a guardrail. The engineering difference is that an agent takes actions with consequences, which means it needs permissions, error handling, audit trails, and evaluation.

How do you keep an agent from doing something destructive?

Layered constraints. Tools are scoped so the agent can only reach what it needs. Irreversible actions — sending, paying, deleting, publishing — sit behind explicit approval gates. Every run is logged with its full tool-call trace, and confidence thresholds route uncertain cases to a human instead of guessing.

Which model do you build on?

Whichever fits the task, and we keep that swappable. We build against a provider-agnostic layer so a model change is a configuration change, not a rewrite. In practice we mix — a frontier model for hard reasoning, a cheap fast one for classification and routing.

How long does an agent project take?

A working vertical slice in production typically lands in three to five weeks. Full rollout depends on how many edge cases the evaluation set surfaces and how many systems the agent has to integrate with.

Do you work with an existing prototype?

Often, yes. A prototype that stalled is useful — it usually means the hard problem is already identified. We generally keep the domain logic and rebuild the execution layer around evaluation and observability.

Tell us what is slowing you down

A short conversation is usually enough to tell whether this is a build, an automation, or something you should not do at all. We will tell you which.