JashTechno is a one-person software studio. This is what one person shipped.

I spent three years automating one company.
This page is the receipts.

A property-management company across three states runs its daily operations on software I built alone: the AI that reads their documents, the agent that calls their leads, the memory that answers their questions. Everything below is in production, and you can test some of it from your phone.

yes, the whole company

3 yrsone company run day-to-day on systems I built
378,675records indexed into one searchable company memory
1,000/moreal phone calls placed by the voice agent
25×fewer model calls after one design decision

Here's one of them, running right now.

it works while I sleep
01Lead email in
02LLM extraction
03Property scrape
04LLM matching
05Calendar slot
06Voice agent
07Outbound call

A lead emails about a rental. Within minutes the system has read it, matched the property, found a calendar slot, and an AI voice agent is on the phone booking the showing. Nobody touches it. The full story is in case study 03.

The work, written to be verified

Three systems. One client. Three years.

From 2023 to 2026 I was the sole engineer for Value Real Estate Management, a multi-state residential portfolio across New Jersey, Pennsylvania, and Texas with roughly 203 scattered-site rentals plus 219 multifamily units. No platform team, no staging environment handed to me, no infrastructure to inherit. Every number below is a real measurement. No client records, addresses, or names appear anywhere.

Case study 01

It started with a flood of paperwork.

Property documents arrive constantly. Each one had to be read by a person who worked out which property it belonged to, what deadline it carried, and what needed to happen next. Across hundreds of properties in three states, that reading work never stopped, and a missed deadline costs real money.

PropFlow demo video preview
the 2-minute demo, real software

How it works

An incoming document hits an n8n webhook, goes through OCR and extraction, and lands in a Databricks Delta table. A structural pre-classifier runs before any model is called. A Microsoft Foundry agent then classifies the document, extracts the property, identifies the deadline, and determines the action, executing it through controlled MCP and API tools. Anything risky stops for human approval before it reaches the CRM, the tracker, or email. MLflow traces every run: token usage, cost, latency, extraction accuracy, tool-call success rate, and human overrides.

Document inn8n webhookOCR +extractionDelta tableDatabricksPre-classifierno model callFoundry agentclassify, extract, routeMCP / APIcontrolled toolsHuman approvalrisky actions onlyCRM · tracker · emailMLflow tracingcost, latency, accuracy, overridesthis box cut model calls 25x
tap any box in the sketch, it explains itself
The model interprets. Deterministic code decides what may change.

The decisions that mattered

Schema drift was the hard problem, so the schema became versioned

New document classes kept producing fields that did not exist in the Delta schema, and each one broke downstream agent and evaluation jobs. I stopped treating the extraction payload as one wide mutable table. Stable operational columns live separately from variable extracted attributes, the extraction schema is versioned, and only validated fields get promoted into the curated table. Schema evolution went from a recurring breakage to a predictable step.

A structural pre-classifier runs before any model call

Most routing questions can be answered from document structure alone. Putting a deterministic pre-classifier in front of the agent cut model invocations 25× and removed a recurring metered API cost entirely.

Agent config is versioned separately from the tools

The Foundry agent configuration and the MCP tool layer version independently, so a prompt or model change never touches the execution layer. I can promote a new agent version, compare it in MLflow against the old one on latency, cost, and task accuracy, and roll it back without redeploying a single tool.

Risk determines who approves, not convenience

The agent proposes; for anything that changes money, records, or outbound communication in a way that is hard to reverse, a person approves. Every override is traced, which turns human corrections into evaluation data.

What changed, measured

  • Model invocations cut 25×.
  • A recurring metered API cost removed entirely.
  • The operations dashboard went from about 120 seconds to under one second.

Case study 02

Then the company needed a memory.

The company's institutional knowledge lived in five email accounts, 35 chat groups, and thousands of photographed documents. Answering one operational question could mean forty minutes of inbox scrolling, and the answer's source was whatever someone remembered.

How it works

378,675 records indexed: 263,957 emails across five accounts, 114,718 chat messages across 35 groups, and 15,138 images OCR'd into 5.1 million searchable characters. Storage is PostgreSQL with weighted full-text ranking and mandatory source attribution on every row, returning sub-second ranked results on a 1 vCPU / 4 GB host. Twelve MCP servers expose controlled tools over the corpus, surfaced through a Claude-artifact dashboard and a NocoDB live view.

263,957 emailsfive accounts114,718 chats35 groups15,138 imagesOCR to 5.1M charsNormalize + dedupcharset checks, identityPostgreSQLweighted FTS, provenance12 MCP serverscontrolled toolsClaude artifact dashboardNocoDB live viewgmail lies about counts, dedup here
tap any box in the sketch, it explains itself
A confident wrong answer is the most expensive output an AI system produces.

The decisions that mattered

Deduplicate on message identity, because Gmail lies about counts

Gmail exports duplicate every message once per label. A naive import would have tripled the corpus and silently corrupted every downstream count. Import deduplicates on message identity before anything else touches the data. An integration that silently drops or multiplies records is worse than one that fails loudly.

Trust the bytes, not the declared charset

Mail that declared one character set while using another corrupted indexed text. An adversarial test archive, built to contain exactly these pathologies, caught it before production did.

Bind filters to real columns, not to text matching

The first version of the retrieval tool offered only full-text search, and it confidently returned plausible wrong answers. Binding filters to real enum columns fixed a correctness problem that no amount of prompt tuning would have. Three rules came out of it: expose real columns rather than text matching, ship a discovery tool so callers filter on values that exist, and make provenance mandatory in the response shape.

What changed, measured

  • A question that took a staff member forty minutes of inbox scrolling now takes seconds.
  • Every answer carries its source. Nothing is quotable without attribution.
  • Sub-second ranked retrieval on a 1 vCPU / 4 GB host.

Case study 03

Then the phone had to answer itself.

Rental leads go cold in minutes, not days. The team could not call every inquiry back fast enough, at any hour, in any volume. The fix was an outbound agent that calls within minutes of a lead arriving, and today it handles about 1,000 real conversations a month.

How it works

The agent runs live on Vapi, Twilio, and OpenAI. It parses an inbound lead, places a call within minutes, runs a three-question pre-screen with branch routing, reads live calendar availability, and books the appointment. Regulatory constraints and address pronunciation are encoded in the agent itself.

Inbound leadparsed from emailData routerlisting synced?Alert a humanno call placedOutbound callVapi · Twilio · OpenAIPre-screen3 questions, branchesCalendar + bookinglive availabilitybuilt the refuse-to-call branch first
tap any box in the sketch, it explains itself

The decisions that mattered

The first branch I built is the one that refuses to call

Source listings take hours to sync. If the agent dials a prospect about a property it has no data for, the call does damage. A router checks for data first, and when it is missing, alerts a human instead of dialling. It was tested against a real unsynced record before go-live.

Instrument before rewriting

A customer reported what looked like a 50% slot-delivery failure rate. I built a purpose-made tool to instrument the call API and traced every case: most were records with no availability by design, plus two real router misses. Without that instrumentation I would have rewritten a working pipeline to fix a problem that was mostly not there.

Encode the rules where the conversation happens

Calling regulations and the pronunciation of local street names live inside the agent configuration, not in a wiki nobody reads mid-call. The agent cannot drift from the rules because the rules are part of it.

What changed, measured

  • About 1,000 real conversations a month, in production.
  • Leads called back within minutes of arriving, at any hour.
  • Two real router misses found and fixed through instrumentation, not rewrites.

Don't take my word for any of this.

+1 888 260 6707
go ahead, it picks up

That's the voice agent from case study 03, live. Ask it about renting a place.

Nights and weekends

Twelve more systems, built to learn a field properly.

When I want to understand a domain, I build production-grade software in it: LLM evaluation, ML infrastructure, insurance, security, construction. These are engineering builds, not client work, and I'm glad to walk through any of them in as much depth as you want.

click any card, it flips over

The other half

The creative work is not a hobby line.

The same hands that write the pipelines also model, compose, and shoot. It's why the software doesn't just run, it feels finished.

Modeled it.

A navigable 3D café, every chair and cup built in Blender, running on Three.js in your browser.

Walk around it

Scored it.

The music in that room is original: composed, produced, mixed, and mastered in my own studio.

Shot it.

Real-estate photography and drone videography for the same properties the software manages.

Who's behind it

One studio. One builder. Zero handoffs.

JashTechno is run by Palleti Jashwanth, Jas. 5+ years of production engineering, including 3+ years at State Street on a secure financial analytics platform handling more than a million transactions a day, plus an M.S. in Computer Science.

When you hire the studio, the person you talk to is the person who designs, builds, ships, and maintains your system. No account managers, no outsourced team. Your problem goes straight to the person solving it.

What I reach for

  • AIClaude · OpenAI · LangGraph · MCP
  • DataDatabricks · Delta Lake · MLflow
  • Agentsn8n · Foundry · Vapi · Twilio
  • FrontendReact · Next.js · TypeScript · Three.js
  • BackendPython · FastAPI · PostgreSQL · pgvector
  • InfraAWS · GCP · Docker · Kubernetes

Have a workflow your team does by hand?

Tell me about it. The first conversation is free, and you'll leave with a plan either way.

jash@jashtechno.com

or jashwanthpalleti@gmail.com