Why your RAG pipeline fails on tables — and the chunking fix
Fixed-size chunking cuts a financial table in half and your retriever returns a column of numbers with no header. Here's how we chunk structurally instead.
// software & ai engineering studio
RAG pipelines, voice agents, and the FastAPI backends that hold them up. We work with founders and engineering leads who need the thing running in production under real load — not a notebook that demos well.
// selected work
Three of them are live and public. Click through and use them.
01
TroikaBot · Professional networking
Group scheduling collapses because everyone gets every message. TroikaBot talks to each guest on their own thread, reads plain-English replies, settles time and venue by ranked vote, and chases the people who go quiet.
60–80% less time scheduling, per TroikaBot’s own published figure
Read the case study02
Handman · Home services, Switzerland
Switzerland has four national languages and they are geographic. A tradesperson who covers your canton but cannot talk to you is not a match — so language sits in the matching engine, not in a header dropdown.
4 languages, 11 trade categories, nationwide coverage
Read the case study03
DietApp · Health & nutrition
People on GLP-1 medication were running four apps that each knew a quarter of the picture. Nutrition trackers die when logging gets boring, so the primary interaction is a camera shutter.
1 tap to log a meal, shipped on iOS and Android
Read the case study04
Real estate · Voice AI
A property lead that reaches voicemail calls the next agent on the page. These agents pick up immediately, qualify on budget, timeline and area, and write the lead into GoHighLevel before the caller hangs up.
0 enquiries lost to an unanswered phone
Read the case study// what we build
We turn work down that sits outside these. It's the reason the ones inside go well.
01
Retrieval that survives contact with real documents — tables, scans, 200-page PDFs, contradictory versions. We build the eval set first, then the pipeline, so "is it better?" has an answer other than a vibe.
02
Agents that answer the phone, hold a real conversation, call your systems mid-sentence and know when to give up and fetch a person. Interruption handling and latency budgets are the whole job.
03
The service layer between your model and your product: streaming responses, request queuing, GPU-aware batching, and the boring reliability work — timeouts, retries, structured logs — that decides whether it holds at 3am.
04
Getting messy source data somewhere queryable, on a schedule, with backfills that don't corrupt what's already there. Idempotent writes, typed schemas, and alerts when a source silently changes shape.
05
The internal processes your team runs by hand and hates. We map them, automate the deterministic parts, put a human approval step on the rest, and leave an audit trail you can hand an accountant.
06
When the AI part is one feature inside a product that still needs auth, billing, dashboards and an admin panel. React and Vite on the front, Python or Node behind it, shipped as one team rather than two.
// proof
Three of the four are public products you can open right now. That is a harder claim to make than a testimonial, and an easier one to check.
01
AI group scheduling that runs entirely over email. Start a meeting without creating an account, and neither do your guests. Live in public beta.
02
A marketplace matching Swiss homeowners with vetted tradespeople across the whole country, in German, French, Italian and English.
03
GLP-1 medication tracking, photo-based food logging, macros and meal planning in one app. Shipped on both the App Store and Google Play.
// journal
Written by the engineers doing the work, usually right after something broke.
Fixed-size chunking cuts a financial table in half and your retriever returns a column of numbers with no header. Here's how we chunk structurally instead.
Humans notice a pause at about 500ms and start talking over you at 1.2s. Here is the whole budget, hop by hop, and where we actually found the time.
One synchronous tokenizer call inside an async endpoint took a service from 400 requests per second to 12. A short tour of how to find and fix that.
// start here
Two minutes of questions, then pick a time. You'll talk to the engineer who'd lead the build — not a salesperson. If it isn't a fit we'll say so on the call and point you somewhere better.
Book a callOr email hello@devcrunch.tech