- All
- Riteangle 17
- Decision systems 10
- Agent architecture 8
- Operations 8
- Context engineering 6
- Guardrails 6
- Data platform 5
- Agent evals 4
- Agentic architecture 3
- Advertising 2
- Marketing 2
Agent architecture — 8 posts
What LangGraph buys over a hand-wired agent pipeline, and the one-line reducer that stops two parallel branches from clobbering each other
Say your pipeline has a threat-scoring agent and a coalition-modelling agent, and both append their findings to the same warnings list on a shared state object. Neither depends on the other, so a for-loop wastes time running them back to back — but fire them off concurrently and both read the old list, both write their own copy back, and one agent's findings silently vanish. A plain loop makes you choose between slow and wrong. A graph runtime solves exactly this, and nothing more exotic — I built two engines on it (a Game of Thrones strategy oracle and an intelligence-operations oracle), each eight to ten nodes over one shared typed state, where a one-line rule declaring that a field merges by appending rather than replacing lets two agents write the same list safely, and a gate kills a broken run before the expensive model step. If your pipeline is honestly a straight line — fetch, then compute, then summarize, each step waiting on the last — you have nothing to parallelize and nothing to merge; write the for-loop and move on.
16 min read
When to use a vector database, when a SQL table, and when a graph, and what it costs to pick wrong
For decades we modelled data so a human could read it, which is why tabular won. The first consumer now is an agent, and an agent's binding constraint is not legibility but token cost. If context were free you would hand a frontier model all 1,100 documents and ask; it is not, so the job becomes retrieving the smallest correct slice. An agent that drafts outreach kept quoting 600 calls a week from a summary someone wrote once, when the tracker said about 1,850. The fix was to split the archive by shape into three local stores, an embedding index for prose, DuckDB for spreadsheets and a graph database for relationships, with a rule deciding where each question goes before anything is searched. Eight lookups that would have cost a million tokens of reading now cost sixteen thousand. This is what each store is good at, what picking the wrong one costs, and the measured results.
29 min read
Nine attribute vectors instead of embeddings, and the pure scoring function that makes counterfactuals exact
An embedding can tell you two people are close and cannot tell you which of five hundred axes did the work, because the axes mean nothing individually. When the output is a ranking that decides who someone meets, the question that matters is not who is similar but what would change the answer. Hand-designed dimensions with a pure scoring function make that exact rather than plausible — and let sensitive attributes be excluded by a weight pinned to zero instead of by a promise.
9 min read
Data, prompt, context, loop and harness engineering: the tooling, cost and failure mode of each layer
Most failed agent projects are a data problem with an orchestration budget: a team buys a framework, builds an elaborate loop, and discovers the underlying data was six hours stale and nobody owned the definitions. These five disciplines arrived in sequence, each because the previous ran out of road, and each has a different unit of work, cost profile and characteristic failure. The last one is the only one whose purpose is to make the system smaller.
12 min read
Kafka to MCP in twenty-four months: what the agentic wave added to the data stack, and what it left untouched
The story everyone tells is that AI replaced the data stack. Two years of attending India's data and AI conferences says something more useful: Kafka, Spark, Airflow, dbt and Iceberg run unchanged from May 2024 to May 2026, four new floors were built on top of them, and the layer that actually got displaced was business intelligence. If you are deciding whether to rebuild your platform to do AI, the evidence says the work is above your serving layer, not below it.
8 min read
Event-time partitioning in Iceberg, and the retrieval filter that refused its own answer
An agent reading a governed warehouse has no equivalent of a human analyst's instinct to double-check a number before repeating it, and that gap is not hypothetical. I built the reference data-and-retrieval architecture end to end on a real public feed and partitioned the lakehouse by each record's own event time rather than by the date it arrived, which is the one choice that lets a governance layer measure how unsettled a count still is. Asked an ordinary question, the retrieval pipeline's filter step used that measurement to drop two of six documents outright and label the rest with how many times each had already changed — including one drop that had been perfectly safe to cite forty-eight hours earlier.
13 min read
pgvector and Neo4j sitting on top of Postgres, and the multi-hop question neither alone can answer
A team building past prototype asked how to stand up a proprietary small language model, and the advice I gave back — try vector and graph retrieval instead, cheaper to build — undersold what was actually being decided. Each layer buys immunity from a different failure, not a discount on the same one. I grounded the claim in three systems I've actually run: a dating app's relational core in production, a graph demo that models that same app's match-and-handoff chain in Neo4j, and a governed lakehouse fusing pgvector with a lineage graph. Stacked in the right order, the three answer a question — why did a specific connection go quiet — that no single layer can answer alone, and the order you add them in is not interchangeable.
12 min read
Min-cost max-flow picks the match, and the confidence multiplier that keeps an unproven claim at 30% of its weight
A generative model cannot be regression-tested, cannot explain a specific past output, and cannot be told apart from its own drift — which makes it the wrong thing to put in charge of who two people meet. So the models here read evidence and write messages, and a weighted dot product plus a flow solve makes the actual call. The payoff is that any ranking can be re-derived exactly by changing one input and running it again.
12 min read