dhaga. blog
Two kinds of writing: deep engineering dives on the hardest problems we solved, and practical guides on how Dhaga fits the way real professionals manage relationships — real estate, finance, sales, recruiting, and more.
Deep dives on the hardest problems we solved building Dhaga — each opens with a plain-language summary, then drops into the real engineering, with links to the exact code that shipped.
14 postsHow Dhaga fits specific lines of work — the daily relationship problems each one faces, and how capture, the knowledge graph, natural-language recall, and proactive intelligence map onto them.
10 postsPractical, step-by-step guides to networking and running a personal CRM — how to capture people, keep relationships warm, follow up on time, and turn scattered notes into a knowledge graph you can actually query.
21 postsThe story behind Dhaga and the ideas that shape it — why an AI-native personal CRM, and what we believe about who should own their relationship data.
2 postsTenant isolation is one indexable equality on every table, and that uniformity is the whole value. Widening it with an OR so colleagues can share records gives away every column on the row, costs you the index on your hottest predicate, and ships a change no feature flag can hold back. Publish a projection instead.
Light mode was audited to WCAG AA and the palette itself turned out to be the bug. On a light ground a colour's contrast as a fill and its contrast as text multiply to a fixed constant — ours is 16.78 — so no single value can clear 4.5:1 at both jobs. Why every accent in the system is now a pair.
Duplicate detection collapsed unrelated people into one contact. The helper it called was not buggy — it was a community-tag suggester that groups by surname on purpose, and it is still shipping unchanged. Why the types could never have caught this, and why making the shared helper smarter was the wrong fix.
Business-card scans were coming back confident, well-formed and wrong. The obvious fix was more pixels. The same 408px image read perfectly on a stronger model — so the fix was the model, and upscaling would have cost more to change nothing.
We rebuilt our public build timeline by summarising 847 commits with language models, then audited every line against git and the live code. The audit turned up no invented features — and a worse failure underneath: sentences that were true when written, and a code path described as shipped that no user could reach.
An AI that tells you things about your friends is worthless unless you can check where it got them. Why every fact Dhaga derives carries a receipt, and why deleting the note takes the fact with it.
Covve vs Dhaga compared — a world-class business-card scanner now built for trade-show teams, versus an AI-native personal CRM that turns your own notes into a private graph.
folk vs Dhaga compared honestly — folk's Strongest connection tells you which teammate knows a prospect; Dhaga tells you what you know about them. Pricing, export, and graph depth.
Mesh (formerly Clay) vs Dhaga compared honestly — Mesh maps the people in your network across the globe; Dhaga records what you know about them and what you promised. Pricing, capture, and provenance.
Orvo vs Dhaga compared — career relationship intelligence with a hand-drawn Network Map, versus an AI-native personal CRM whose graph is derived from the notes you already write.
A full personal CRM comparison for 2026 — Dhaga, Dex, folk, Mesh, Covve, Orvo and Monica across capture, AI, relationship graphs, platforms, privacy and price.
The rule that should have stopped it — one message goes in exactly one place — existed only as a sentence in the prompt. Nothing in code checked it. On the fix we rejected, why a Zod refinement was the wrong lever, and why we repair a bad plan instead of failing it.
A capture came back four fifths shorter than what was sent, and nothing reported it. It wasn't a token limit and it wasn't summarisation — the model was filtering to fit the schema. Why a structured-output schema is a filter as much as a contract.
Twenty and Dhaga look similar on a checklist, but they solve different jobs. Compare capture, pipelines, AI, privacy, teams, and what full feature parity would really take.
Six keyword sources under one Promise.all, each awaiting its own scoped tenant connection, against a pool of three. Search returned HTTP 500 with a single user on it. Why Promise.all is a concurrency multiplier, not a performance tool, when every read checks out a connection.
Turns notes and cards into a searchable network — the best AI networking tools in India for 2026.
The best personal CRM apps in India for 2026 — privacy-first, AI, and free options compared so you can choose in five minutes.
OCR accuracy, offline scans, and CRM sync compared for Android and iPhone.
Dex vs Dhaga compared — automatic LinkedIn/email sync vs privacy-first data ownership and a free tier that actually works. Which personal CRM fits?
Louisa AI vs Dhaga — enterprise, firm-owned relationship intelligence vs a private personal CRM you own. Different buyers, compared honestly.
Monica vs Dhaga — a mature manual relationship journal vs an AI-native personal CRM, compared on AI, capture, features, and data ownership.
OpenVC vs Dhaga — a fundraising investor database vs a private relationship graph you own. Complementary tools for founders raising a round.
YourPond vs Dhaga — a polished iOS relationship app vs an AI-native personal CRM whose data you actually own. Which remembers your network best?
Founder-tested tips on events, warm intros, and follow-through that compounds.