Meharban Singh · AI systems architect · India

I don't prompt AI to write code.
I run a factory that AI works inside — with inspectors.

One person, several AI agents, and a process that does not take the agent's word for anything: written blueprint before build, hooks that block instead of advise, gates that read evidence files not summaries, a different model for review, and a sentinel that watches every system after it ships. Every failure the sentinel or a gate catches becomes a row with a root cause. No closure without a second pair of eyes.

55projects in the factory registry
888issue rows, each with a state
543closed with verifier ≠ fixer
19production sources polled every 10 s
15,849events collected by the sentinel
the systems behind these numbers run continuously — Pehredaar polls every 10 s under its own watchdog, the tracker is written to by agents as they work, the Tower reads both live. this page is a snapshot of that running system, taken 2026-08-31 (evening IST); the counts have moved on since. where a capture differs from a query by a row or two, the caption says why. nothing is projected.
Part 1The machinehow work moves from a requirement to production, and what watches it after
01 · The complete loop

From a requirement to production — and back again

Two lanes, one closed loop. The build lane turns a requirement into a delivered, reviewed system. The run lane watches it in production, turns every failure into a tracked row, and feeds the learning back into the rules the next build runs under.

Build lane · requirement → delivery
B1

Requirement

One paragraph from the client or from me. No number, no path — the factory allocates the project, its repo and its phase file.

human
B2

Research + trade-offs

Domain research, options, explicit out-of-scope list. Prior learnings for this domain are injected automatically.

Claude orchestrates
B3 · gate

Blueprint → adversarial review

Measurable spec, contracts, task decomposition. Reviewed by a second model until it scores ≥95 or is sent back.

Codex reviews · human gate
B4

Build · TDD waves

RED → GREEN per file. Code is written by external code workers; the orchestrator validates, never types the spec out itself.

Codex / Kimi / Sonnet write
B5 · gate

Hooks + evidence gate

Hooks block bad actions before they run. done_gate reads the test file the run wrote — a "done" claim without it is a BLOCK.

shell hooks · deterministic
B6 · gate

Independent QC + break test

Security gate, quality gate, a different model tries to break it, visual UAT in a real browser.

Kimi + Codex in parallel
B7

Deliver

Branch → PR → merge. Merging is the deploy. Nothing reaches production unless the exact commit is already on online main.

git · enforced by hook
Run lane · production → learning → rules
R1 · watch

Pehredaar polls

Every registered system reports errors to the sentinel; uptime and API health are polled every 10 s with a watchdog over the pollers.

Pehredaar daemon
R2

Fingerprint + alert

New error pattern or a spike over threshold → Telegram / email / webhook, with the source name so I know which system.

Pehredaar rules
R3

Issue row, not a note

Every defect becomes a row in the tracker with kind, severity, source and state. A bullet has an opinion; a row has a state.

issue_cli · SQLite
R4

RCA required

Root cause and the new requirement it implies are fields, not prose. Symptom-only fixes are rejected at the gate.

agent that fixes
R5 · gate

Verified by someone else

The database refuses closure unless verified_by ≠ resolved_by and a TEST or REPRO evidence row exists.

different agent · DB trigger
R6

Close with evidence

Resolution, verification command, fix commit and a full audit timeline stay on the row forever.

Tower shows it
R7 · feedback

Learning → rules → hooks

Recurring patterns enter the learning catalogue; the worst become invariants and hooks. The next requirement starts under stricter rules.

back to B2
agent workgate — does not open on the agent's say-soproduction watchfeedback into the next build
Closed loop: requirement, build under gates, deliver, Pehredaar watches, issue row, RCA fix verify, learning ledger, rules and hooks back to requirement Requirementblueprint · review Build under gateshooks · evidence · 2nd model Delivermerge = deploy Pehredaar watches19 sources · alerts Issue rowkind · severity · state RCA → fix → verifyverifier ≠ fixer, by DB Learning ledger274 catalogued · voted Rules · hooksinjected at next task no step reaches the next on the agent's word — a gate, a hook or a second model sits between them
← swipe the diagram sideways on a phone →
02 · How the agents are governed

An instruction is not a guarantee. So the process lives outside the model.

A rule written in a markdown file is still just a sentence the model has to remember three hours into a run. These five mechanisms make the rule true whether the model remembers it or not. Long-form write-up →

RRules

Machine-wide invariants every agent inherits: no destructive delete, tests must actually execute, never edit a test to make it pass, verify before claiming, no secret value in any output.

11 invariants · 12 policies · one global file, thin router

SSkills

How a kind of work is done — security, DB ops, integration tests, design tokens, observability, UAT — loaded automatically when the task matches. Each check is a shell command with an exit code.

25 global + 11 factory skills

HHooks

Run in code, outside the conversation, and can block a tool call before it happens: deploys that skip preflight, test tampering, issue lists written as files, spawns without a watchdog.

18 scripts · 8 wired events · exit 2 = blocked

GGates

A phase is done when the artefact exists and the test file says 0 failed — not when the agent says so. False-done, revert-and-refix and skipped-phase are blocking rules.

22 phase files · a BLOCK verdict needs a human override

MMany models

The model that writes never approves. Claude orchestrates and validates, Codex reviews and tries to break, Kimi runs QC gates, a local model is the PMO gatekeeper between phases.

24 provider routes in one config
# what a prompt looks like from the inside — a hook classified this very task and
# injected the three failure patterns most likely to recur, before I typed a line
UserPromptSubmit → §7.3 auto-watchdog · classified=NEW_PROJECT · top-3 prior issues from catalog:
  [R1] false 'done' claim            — recurred 4× in similar tasks
  [R9] wrong scope/project targeted  — recurred 2× in similar tasks
  [R3] mobile/browser compat broken  — recurred 2× in similar tasks

# and what a closed row looks like in the database itself (query run 2026-08-31)
$ sqlite3 factory.db "select resolved_by, verified_by, verification_method from issue_tracker where ref='P39-0005'"
p39-plist-fix-sonnet-subagent | claude-opus-5-orchestrator | Independent re-run, not self-reported: … pytest = 3 passed; RED/GREEN probe reverting cli.py = 2 failed, restore = 3 passed
02b · My global Claude Code setup — the operating system

Every project on this machine inherits the same law, the same inspectors, the same memory

Nothing here is exotic — plain text files in ~/.claude/, wired into Claude Code's own extension points. What matters is how they are used: the global file is a thin router that stays in context, detail is loaded on demand, enforcement runs in shell, and memory persists across sessions.

~/.claude/                          # applies to EVERY project on the machine
├── CLAUDE.md                       # v2.8.0 · 560 lines · thin router, versioned, changelog
│     INV-0.001 … INV-9              # 11 invariants (BLOCK on violation)
│     §0.4 … §0.15                   # 12 policies: scope, deploy, claims, issues-as-rows…
│     §7 task intake                 # keyword → task class → skills auto-route
│     ORCHESTRATOR ROLE LOCK         # orchestrate · validate · git — delegate the rest
├── dac/                            # 10 detail files, ~1,400 lines, loaded ON DEMAND
│     0_policies  1_invariants  1_5_audit_protocol  2_agent_modes
│     3_ccp  4_mcp  6_email  7_task_intake  8_orchestrator_spawn  9_external_llms
├── settings.json                   # hooks wired to 4 events (see table)
├── hooks/                          # 18 shell scripts · exit 2 = the call is blocked
├── skills/                         # 25 skills — each check is bash + exit code
└── projects/<repo>/memory/         # 103 memory files for the factory alone
      feedback 49 · project 38 · reference 8 · user 1

<repo>/CLAUDE.md                    # adds, never replaces. Points at global by VERSION;
                                    # preflight P-06 FAILS the build if the two drift.
eventhook → what it does, mechanically
UserPromptSubmitclassifies the task, queries the learning catalogue, injects the top-3 recurring failures for this task class; arms a watchdog; emits a heartbeat to the Tower
PreToolUse · Bashguard_deploy_scope — blocks rm, blocks any production deploy unless the exact commit is on online main with a clean tree; fails closed
PreToolUse · Write/Editguard_test_integrity — refuses edits that weaken a test to make it pass · guard_issue_docs — refuses ISSUES.md / BUGS.md files: defects are rows
PreToolUse · Agent/Bashguard_spawn_ledger — records every sub-agent / external CLI spawn so an unwatched one surfaces in preflight
Stopruns the evidence gate on what the turn claims it finished; a "done" with no test output is a BLOCK verdict, and BLOCK is final
PostCompactre-injects the governance context after the conversation is compacted — the rule survives the model's memory loss
How the global file is used, not just written: every rule carries a WHY block with the dated incident that created it, the version bumps with a changelog, and a preflight check fails if a project's pointer drifts from the global version. Memory files hold feedback ("what the operator corrected and why"), never restatements of the code — 49 such corrections so far, each one a rule the next session starts with.
03 · Factory Control Tower

One pane over every project, every issue, every agent

The Tower reads the same SQLite database the agents write to. Projects, the issue tracker with RCA and evidence, which CLIs are alive right now, which domains and sites are up — and a live link to Pehredaar.

Control Tower live dashboard KPI tiles: projects, issue tracker, domains, Pehredaar issue register, website status, CLI status
Live dashboard. 55 projects · 887 issue rows at capture (888 by the time this page was finished — the last row is an incident logged tonight, see §05) · 16 domains · the Tower's own 7-site check all up · 3 agent CLIs running.
Issue tracker table filtered to one project, showing ref, title, severity, status, raised-by, root cause and evidence columns
Issue tracker. Filtered to the Astro Rattan project. Rows are raised by humans, by agents, and by Pehredaar itself. Root cause and evidence are columns, not comments. The top row is a CRITICAL I logged against my own process during the making of this page.
Closed issue detail: root cause analysis, evidence with RED/GREEN probe, resolution and independent verification method
A closed row, end to end. RCA states why it shipped green; evidence is a RED/GREEN probe; the verification column says "independent re-run, not self-reported" — and names a different agent than the one that fixed it.
Audit timeline of the same issue: created by human, evidence comment, state changes by orchestrator and by a separate sub-agent, closed
Audit timeline. Created by a human · fixed by a Sonnet sub-agent · verified and closed by the orchestrator. Five events, three actors, 14 minutes.
Live CLI panel: three Claude Code sessions running, other agent CLIs offline
Who is working right now. Agent CLIs with PID and uptime. The factory routes work across Claude, Codex, Kimi, OpenCode and local models; this panel is how I see which of them are actually alive.
888issue rows · 556 closed
617with a written root cause
1,147evidence rows · 667 TEST · 434 REPRO
3,709audit events on the trail
543 / 556closures naming a verifier ≠ fixer
292rows that produced a new requirement
274catalogued learnings · 144 LLM votes
260agent sessions mined for patterns
Not a perfect record, on purpose: 543 of the 556 closed rows name a verifier different from the fixer; the other 13 carry a verifier but no recorded fixer. That gap is itself an open issue in the tracker (P0-0002 — "verify accepts an unresolved issue"), found by an agent, logged as a row, waiting for its fix. The system's own defects go through the same ledger.
04 · Pehredaar — the sentinel

What I ship stays watched after go-live

Pehredaar ("the one who keeps watch") is a daemon that polls every registered source — uptime, API health, and each application's own error webhook — persists events in SQLite WAL, fingerprints them, and alerts the moment a new pattern surfaces or a known one spikes. Its issues flow into the Tower as rows, so a production error and a build defect live in the same ledger.

Pehredaar website status board: 13 public sites monitored, all up
Website status. 13 public sites polled every 10 s; all 13 answering at capture (21:12 IST). One card is blurred — a client platform under NDA. One card is blurred — a client platform under NDA.
Pehredaar sources table: uptime sources, custom error webhooks per application, with status and smoke test action
Sources. Each application reports its own errors over an HMAC-signed webhook (*-errors); public URLs get an http_uptime source. One connector class per source type; adding a source is a config entry.
Pehredaar issue register rows: site not live incidents with first seen, last seen, count and resolved status
Issue register. Real incidents from August: a stretch when several sites stopped answering within 10 s — counted per occurrence (1,467 for one site), alerted, and auto-resolved when they came back.
19sources polled
15,849events stored · 34.5 MB WAL
16supervised pollers · 0 restarts
1,679watchdog checks since start
Next step, already built as a hackathon track (Pehredaar Sentinel): detect → diagnose → propose a repair in a sandbox → independent AI verifier → governance → close. Same principle as the tracker: the AI that changes production cannot be the AI that approves the change.
05 · The part most portfolios leave out

Things that went wrong — and what each one became

Every rule in my global setup has a WHY block with a dated incident behind it. Nothing below was designed on a whiteboard; it was paid for. This is the clearest picture of how I actually work: a problem, its real root cause, and the mechanism that makes it structurally hard to repeat.

2026-08-13
The orchestrator wrote 2,968 lines itself and reviewed its own work.

Its excuse: "delegation seemed unavailable". It was not — the operator said "use your sub-agents" and four spawned instantly. A bug in its own checker survived its own review and was caught only when a sub-agent refused to work around it.

root causean un-run probe treated as evidencebecameD-rules: unavailability needs a recorded failed attempt; every substitution disclosed in the same reply; the writer never validates its own output
one week, August
Three agents reported "done" on unfinished work.

Each had verified its own fix. Each was wrong. A fixer checking its own fix is not verification — and prose issue lists in markdown files were never reconciled by anything.

root causeself-verification + issues as bulletsbecame§0.13: issues are rows; the database refuses closure unless verified_by ≠ resolved_by and a TEST/REPRO evidence row exists
2026-08-17
A deploy could ship code that existed only on my laptop.

The deploy guard checked the target — project mapping, payload size, secret scan — but never whether the commit was merged and pushed. Unpushed work would have passed every check.

root causepreflight checked where, not whatbecame§0.14: nothing reaches production unless the exact commit is on online main, tree clean, no open PR — enforced by a PreToolUse hook that fails closed
one autonomous run
A hung code worker looked "alive" for 36 minutes.

The process existed, so pgrep said it was running. It had produced zero bytes for half an hour.

root causeliveness judged by process existencebecame§8.6: every spawn arms a watchdog in the same turn, heartbeating on output byte-delta, never on PID presence
2026-08-31 · today
I reset a demo login on the wrong server first.

Building the Eagle Tailors walkthrough for this page, I changed a PIN on one VPS and the live app still rejected it — the API runs on a different host than the one I'd assumed.

root causeassumed the deploy target instead of checking itbecameI didn't claim success on the first result — I logged in through the real app, saw it fail, traced the actual API host from the network tab, and fixed it there. "Verify before you claim" is a rule precisely because the confident-but-wrong version is so easy.
The pattern is always the same: the fix is never "be more careful". It is a mechanism that does not depend on anyone — human or model — remembering to be careful.
Part 2Delivered worktwo public products that went through the machine (links are live) — plus a personal project in progress
06 · Applied · a 58-year-old tailoring house

Eagle Tailors, Meerut

eagletailors.com

A bespoke men's tailor trading since 1968. Two different problems, two systems on one domain — the public site at / and the staff web app behind /dashboard — both built and shipped through the loop above.

Problem 1 · nobody could find the shop
what was wrongA 58-year-old tailoring house with no web presence; new customers arrived by word of mouth only, and could not even find the phone number.
what we builtA bilingual (English / Hindi) site whose only job is to convert to a WhatsApp or a call. Lead events fire into analytics; front-end and back-end errors report to Pehredaar — a broken button is found by the sentinel, not by a customer.
Problem 2 · decades of customers in paper ledgers
what was wrongEvery customer's measurements live in yearly ledger books, found by flipping pages. A regular customer on the phone means minutes of searching; a lost page means re-measuring; two "Sharma ji"s means guesswork.
what we builtA staff app (6-digit PIN) that photographs each bill and indexes it: customers with multiple phone numbers, ledger books by year, bills, measurements per bill, payments and pending balance, bill and customer photos — with an audit log of every change and soft-delete so nothing is ever truly lost. Search by phone, folio or name in seconds.
the principle"This system never replaces your book. It only helps you find it faster." The paper workflow stays exactly as the tailor knows it; the app is the index, not the master.
what's nextFree Hindi + English OCR over bill photos to auto-extract fields, duplicate detection with merge, and bulk digitisation of the old books.
11 tables · 25 commits between April and August 2026 · same tracker, same Pehredaar source as everything else. Nothing past the PIN screen is shown here — that is the client's customer data.
eagletailors.com public homepage on desktop
Public site, desktop.
eagletailors.com public homepage on a 390px phone
Same page, 390 px.
Eagle Tailors staff web app dashboard: bilingual, with customer / bill / pending / delivered counts, revenue and pending balance, and quick actions
Staff appeagletailors.com/dashboard, behind a 6-digit PIN. Every label is English + Hindi; the shop reads whichever it prefers. Live counters for customers, bills, pending vs delivered, revenue and outstanding balance — this replaces flipping through a ledger to answer "how much does Sharma-ji still owe?".
Bill upload form: photograph the bill, pick the ledger book and folio number, attach a customer, set bill and delivery dates
Capture a bill. Photograph it, tag the book + folio so it maps to the exact page in the paper register, attach a customer, set delivery date.
Books list showing the 2025 ledger register marked current, folios 1 to 500
The ledger books, by year and folio range — the digital index mirrors the physical shelf.

Captured live on 2026-08-31 with the demo owner login (PIN reset for this walkthrough). Counters read 2 customers / 1 bill because this is a seeded demo tenant — no real customer records are shown.

07 · Applied · a domain I did not come from
astrorattan.com homepage with free kundli form and a rendered chart wheel
astrorattan.com — live, bilingual, with a full kundli form and chart on the home page.

Astro Rattan

astrorattan.com

A Vedic astrology platform. I am not an astrologer. The question was whether the loop above could carry a domain I had to learn from scratch — with a practising astrologer as the acceptance tester, not me.

how the "training" actually workedNot machine-learning on a black box, and — checked in the code today — no LLM anywhere in the calculation path. The classical rules were codified into 11 machine-readable rule tables (762 entries: yogas, dasha effects, nakshatra predictions, ascendant profiles, transit vedhas, disease rules…) and 61 deterministic calculation engines over Swiss Ephemeris. AI did the heavy lifting in building it — reading texts, encoding rules, writing tests — but a prediction on the site is reproducible arithmetic, not a model's opinion.
acceptance by a human expertA working astrologer reviewed output in rounds; round two (09 Apr 2026) alone raised 12 concrete defects — date formats, a missing nakshatra pada, chart alignment against the desktop software they trust. Each became a tracked item, was fixed, and was re-checked by them, not by me.
size260 API endpoints · 1,871 test functions in 67 files · 1,402 commits · Jhora-style charts, Lal Kitab, Panchang, numerology, PDF reports.
watchedSite, API health and application errors are three separate Pehredaar sources. The August outage rows in the register above are this system.
07b · In progress · a hint of the third one

Robotic digital-twin simulation

in progresspersonal R&D · not a client projectstarted April 2026

A hobby project that got serious. A warehouse full of autonomous mobile robots is expensive to get wrong, so I am building the twin first: a simulated fleet you can plan, drive, break and replay before a single real robot moves. No client, no deadline — it is where I test what the loop can carry, and it is the largest thing it has carried so far. It is not finished, which is exactly why it belongs on this page.

scopeFleet simulation with physics-backed sensors (Gazebo LiDAR, occlusion filters) · path planning and traffic control with node reservations · model-predictive motion control in C++ · a pick-station state machine · a gRPC bridge between the C++ core and a Python service layer · a browser control room with teleoperation (joystick, gamepad, click-to-pose, e-stop) · multi-tenant SaaS shell with migrations and a replay engine.
how we are doing107 commits since 2 April 2026 · roughly 4,600 automated test cases across Python, C++ and TypeScript · a container running a 13-robot fleet locally · teleoperation layer audited three times by three different models before it was accepted. Status lives in one PROJECT_STATUS.md that every other document defers to — the project's own "single source of truth" rule.
the problem we are on right nowRobots on the 2D map still teleport between server updates instead of gliding. CSS transitions on 5 Hz updates were not enough; the fix is client-side interpolation between frames. I flagged it three times myself while watching the map — so it is logged as a defect, not argued with.
honestly not doneA 50-robot / 100-user load test · OPC UA integration · ISO 3691-4 documentation · a certified warehouse-management connector · security audit. Core platform is self-assessed at ~97%; the enterprise edge is where the remaining work is.
No screenshots yet, on purpose: the control room is mid-rework because of the movement problem above, and I would rather show it when the robots glide. What can be shown today is the shape of the work and the shape of the gaps.
Layers of the robotic digital twin: browser control room, Python service layer, C++ core, physics simulation Browser control room live map · teleop joystick / gamepad / e-stop · replay · per-tenant views Python service layer REST + WebSocket · safety zones · ML predictive engine · migrations · SaaS shell C++ core MPC motion control · pathfinding · node reservations · pick-station FSM · BTs Physics simulation Gazebo · LiDAR + occlusion · battery cycles · 13-robot fleet in a container WebSocket / protobufgRPC bridgesensor topics each layer has its own test suite · teleop audited by 3 models before merge
Part 3Position and directionwhy this way of working, and where it goes
08 · Why this, and not "a domain expert with ChatGPT"

Domain can be learnt with AI. Knowing how to make AI's output trustworthy cannot be prompted.

Anyone can generate code now.

The scarce skill is not writing the first draft — it is knowing which claims in the draft are false, and building the machinery that catches them before a client does.

I treat the model like a strong engineer with no memory.

So the memory lives in rules, hooks and a database. What the model forgets three hours in, the hook still enforces; what the team learnt last month, the next prompt is told.

Heavy-industry discipline, applied to software.

Explicit requirements, independent inspection and root-cause analysis are not process theatre where I come from — they are how nothing gets hurt. The factory is that discipline, automated.

not shownThe registry holds 55 projects. This page shows the two I chose to explain in full and one in progress; client platforms under NDA are deliberately absent.

08b · If you have data

How I build an agent around your knowledge or data

I don't know your data yet — that is step 1. What I do know is how to make an agent on top of it that you can trust, and that stays trustworthy after delivery.

01

Understand the knowledge, not the tool

Sit with the people who own the data; write down what gets asked, what a wrong answer costs, and what is out of scope.

proof · Astro Rattan (§07) — a field learnt from zero, with a practising expert as tester
02

Separate facts from opinions

Anything with a fixed right answer becomes rules or lookups the agent cannot improvise; the model only handles the fuzzy parts.

03

Blueprint before build

A written spec of what the agent must answer, how it refuses, and how it will be tested — reviewed by a second model before any code.

04

Build against real questions

Every answer is checked against a known-good answer; "it seems to work" is not accepted.

05

Someone else verifies

A different model tries to break it, and a human on the client side signs off.

06

Watched after delivery

Every wrong answer becomes a tracked row with a root cause, and the fix tightens the rules for the next version.

08c · The obvious worry

"Doesn't all this governance make you slow?"

The opposite — it is what lets me move at sprint pace without the two things that actually eat a delivery: rework, and finding out in production. The rigor is automated and parallel, so it costs wall-clock time close to zero.

208issues found, fixed, independently verified & closed inside a day
4–15 mintypical time for a defect to go from raised to verified-closed
14 minthe worked example above (§03) — three actors, fixed and signed off
parallelmultiple agent CLIs work at once (§03, Live CLIs) — not one prompt at a time
Speed comes from the machine, not despite it

Agents run in parallel, and the gates are shell checks that run in code — there is no human review queue to wait in. The slow parts of delivery are rework and production incidents; catching a defect at a gate in minutes is what prevents both. Governance buys velocity, it doesn't spend it.

It travels with a team, it isn't just mine

The rules, skills and gates are plain text files committed to the repo — a project layer that only adds to the global one. A new engineer inherits the same guardrails on day one; the process is the onboarding. Nothing here depends on me being in the room.

The rigor dials to the stakes

A throwaway prototype and a production payment path do not get the same gates. Which checks run is chosen by each project's profile, so the weight matches the risk — heavy where a wrong answer costs money, light where it is a demo. Fast when fast is safe.

Put plainly: the factory is a way to go fast and be able to prove it worked. Sprint cadence is the normal mode — the 55 projects and 888 tracked issues above were built at it.
09 · Where this is going

A sovereign software estate

Every system I currently run is watched, every caught failure is a row with a cause, every fix is verified by someone who did not write it, and every learning tightens the rules the next build runs under. Today that loop runs across the projects above. The direction is to close it fully — so the estate governs and repairs itself, and the human's job is judgement, not babysitting.

1Self-repair with a veto

Pehredaar Sentinel: from "alert me" to "propose a tested repair" — with an independent verifier and a human veto before anything touches production.

prototype built · hackathon track

2Learning that becomes law

The catalogue already votes on recurring failures across four models. Next: automatic promotion of a repeated pattern into a hook, with the evidence attached.

274 entries · promotion is manual today

3Same loop, more domains

A tailor's ledgers, a Vedic astrology engine, a robot fleet in a warehouse — the domain changes, the loop does not. That is the bet: the process, not my prior knowledge of the field, is what makes the output trustworthy.

55 projects in the registry · 2 delivered shown here · 1 personal project in progress