RAG · Agents · Workflows

Working AI agent and workflow systems you can inspect.

Each build shows the problem, what we shipped, and the architecture underneath. Voice agents, document intake, structured capture, and engagement agents—portable to your cloud, on-prem, or hybrid. Interactive demos are spun up on request.

Reference build · Conversational AI

Voice agent connected to workflow

Problem: After-hours and overflow calls become voicemails. Intent never reaches a system of record.

What we built: An Amazon Connect reference path that answers, captures intent, stores structured records, applies business rules, notifies staff, and supports human handoff.

Outcome: A call path that writes a record and pages someone—while the caller is still talking.

  1. Call answeredBranded greeting after hours or on overflow.
  2. Intent capturedStructured fields instead of a vague voicemail.
  3. Record persistedOptional summarization; durable data for CRM or ops tools.
  4. Notify or escalateStaff alerted while the caller is still engaged.
Architecture

Inbound calls hit Amazon Connect; a Lambda handler persists the lead, notifies staff, and optionally asks Bedrock for a short summary. Persistence and the alert are guaranteed—the model never blocks the record.

CallerPSTN / claimed DID
Amazon ConnectInbound contact flow
LambdaCapture + rules
DynamoDBStructured lead record
SNS alertStaff / CRM inbox
BedrockOptional summary
  • IaC: AWS CDK → CloudFormation
  • Runtime: Node.js Lambda
  • Observability: CloudWatch

Interactive demos for this build are offline by default. We bring them back online for scheduled walkthroughs—request a consultation to see a live run.

What we refused to skip

Talking is the easy part

Connect answers the call. Rules and storage own the outcome. The model pulls intent and maybe a summary. If language is not required for a step, we do not burn tokens on it.

Narrow tools

Greet, collect, classify, escalate. No inventing appointments or advice outside scope. Low confidence → human. Logs so you can replay the turn later—same governance habit as our multi-agent work, on a phone channel.

Write the ticket

Contact, urgency, reason land in something CRM/FSM/email can read. Alerts fire on create. A recording that never becomes a ticket is the failure mode we designed against.

Call-path traces

Latency, confidence, rule hits, handoff reason. When something goes wrong you should know if it was speech recognition, classification, or the integration.

Reference build · Document intelligence

Secure document request pipeline

Problem: Source documents bounce around email. Status is unclear; staff find out late.

What we built: A secure one-time request link. The recipient verifies by email code, uploads files, and staff receive alerts on progress.

Outcome: Document intelligence wired into an auditable workflow with private storage.

  1. Request createdRecipient email + checklist of required files.
  2. Verified accessSingle-use link; email code before upload.
  3. Private storageShort-lived upload URLs; no public bucket.
  4. Staff notifiedAlerts on create, each upload, and completion.
Architecture

Staff create a one-time request; the recipient verifies by email code, uploads through short-lived URLs into private object storage, and operators get alerts on create, each upload, and completion.

Staff requestChecklist + recipient
Secure linkSingle-use invite
Email verifyCode challenge
Presigned uploadShort-lived URL
Private S3No public bucket
Staff alertsCreate / upload / done
  • API + Lambda
  • DynamoDB request state
  • SES notifications
  • IAM least privilege

Interactive demos for this build are offline by default. We bring them back online for scheduled walkthroughs—request a consultation to see a live run.

How files get in without the inbox mess

Collect first, model later

One-time link, email code, checklist, private uploads with short-lived URLs. Extraction or RAG indexing only makes sense once you have a complete, attributable pile of files.

No public bucket

Prove identity, then write. URLs expire. Staff get notified; they do not browse S3 for “did it land?” Same access discipline as production RAG.

Models stay optional

Summarize or completeness-check if it helps. Completeness itself is a checklist and rules. Embeddings come after the intake spine works.

Keep it operable

Alerts on create / upload / done. Retention is explicit. Same pattern for tax packets, matter files, vendor docs—wherever missing files stall the next step.

Reference build · Structured intake

Capture context before it hits the inbox

Problem: Web and phone requests arrive incomplete—no urgency, context, or next step—so they stall before a system of record.

What we built: A structured intake agent: contact and urgency, situational context, reason checklist, and routing—then an immediate staff alert with a durable record.

Outcome: One pattern deploys for service desks, professional intake, and operational queues—with CRM or FSM handoff when you are ready.

  1. Contact + urgencyWho, where, and how fast a response is needed.
  2. Situational contextStructured fields instead of free-text chaos.
  3. Reason checklistCommon request types captured consistently.
  4. Route + alertStructured notification to the right queue or owner.
Architecture

Web or phone intake captures contact, urgency, context, and a reason checklist; validation runs before persistence; routing and alerts follow urgency—CRM or FSM handoff when the capture contract is stable.

ChannelWeb form or voice
Intake agentStructured fields
ValidateSchema + rules
PersistDurable record
RouteQueue by urgency
NotifyOwner alert
  • HTTP API + Lambda
  • DynamoDB
  • SNS / email
  • Optional model classify

Interactive demos for this build are offline by default. We bring them back online for scheduled walkthroughs—request a consultation to see a live run.

Design notes on structured intake

Fields beat free text

Contact, urgency, context, reason checklist. Same shape every time. A model can classify leftover prose; it does not get to invent the schema.

Same spine, different queues

Service desk, professional intake, ops overflow—they all fail by dropping incomplete requests. Capture → validate → persist → route → alert. Field names change; the spine does not.

Urgency drives the queue

High-urgency paths notify immediately. Lower-urgency paths can batch. Wrong-fit requests get a recorded decline instead of sitting in a shared inbox.

CRM later is fine

Email or a store is a valid first ship. Wire CRM/FSM when the capture contract is stable. Watch validation failures and notification delivery the same way we watch RAG stages.

Reference build · Engagement agent

Qualify, score, and route inbound interest

Problem: Form fills land in a shared inbox. Qualification is inconsistent; high-intent requests cool off.

What we built: Validate submissions, apply clear qualification rules, persist a durable record, and notify the owner with grade and summary.

Outcome: Owner gets a graded alert with a durable record. Reference pattern. Not a claimed client case study.

  1. Submission validatedRequired fields and basic integrity checks up front.
  2. Qualification rulesDeterministic scoring; model assist only when it earns its place.
  3. Durable recordReady for CRM or workflow handoff.
  4. Owner notifiedImmediate alert with grade and summary.
Architecture

A form POST hits an HTTP API; Lambda validates, applies deterministic qualification rules (optional model assist), writes a durable record, and emails the owner with grade and summary.

Visitor formStatic frontend
HTTP APIAPI Gateway
LambdaValidate + score
Rules engineDeterministic grade
DynamoDBLead record
SES emailOwner inbox
  • IaC: AWS SAM → CloudFormation
  • Optional Bedrock assist
  • CRM-webhook ready

Interactive demos for this build are offline by default. We bring them back online for scheduled walkthroughs—request a consultation to see a live run.

Engagement agent notes

Rules grade; models summarize

Prompt-only scoring is inconsistent and hard to audit. Validate fields, run deterministic rules, optionally summarize. The owner should see why a lead ranked where it did.

Notify the owner, not a shared inbox

Persist first, notify with grade and summary, CRM later if the path holds. Same pattern for sales or internal desks—labeled as a reference build on our infra.

Operational output

What a reference run produces.

Redacted staff notification from a reference intake run—the same capture → route → alert path used in production deploys.

Where to start

Match capability to the constraint.

  • Knowledge trapped in files — start with RAG development when answers must use your corpus. See the detailed architecture.
  • Requests that never become records — start with voice agents or structured intake when calls and forms die before systems of record.
  • Inbound interest without ownership — start with the engagement agent when qualification and follow-up are inconsistent.
Contact

Request a technical walkthrough.

We can walk a reference build on a call and outline a first production path for your environment.

Request consultation