Your codebase, explained to
every AI tool you use.
A deep scan of your repo that writes the context files your AI assistant is missing - CLAUDE.md, memory files, .cursorrules, AGENTS.md - done for you, delivered in days.
$ groundit scan ./your-repo
› mapping architecture ✓ 14 services, NestJS + Vue
› inferring conventions ✓ biome, vitest, trunk-based
› tracing domain flows ✓ auth, billing, settlement
› writing context files
CLAUDE.md ✓ .cursorrules ✓ AGENTS.md ✓ copilot-instructions.md ✓
› done. your AI now knows the codebase
Works with your stack
// the problem
Your AI is coding half-blind.
Every AI coding tool is only as good as the context it's given about your codebase. Almost nobody gives it good context - because doing it right is tedious, expert work that never reaches the top of the backlog.
/init is shallow
The built-in generators skim package.json and emit a few generic lines. Your AI still has no idea how your services talk, where the auth lives, or which patterns are sacred.
Nobody has time to write a good one
A genuinely useful context file takes hours of an engineer who already knows the codebase cold - exactly the person with no spare hours. So it never gets written.
And then it rots
Even a great CLAUDE.md drifts the moment the code moves on. Multiply that by .cursorrules, AGENTS.md, and copilot-instructions, and keeping them honest is a losing chore.
// what you get
A complete onboarding package for your AI.
A real CLAUDE.md + memory files
Architecture, conventions, domain model, gotchas, test/build commands - the context an experienced teammate would give a new hire, written from an actual deep read of your repo.
Every format, from one scan
.cursorrules, AGENTS.md, and .github/copilot-instructions.md generated alongside CLAUDE.md - so every tool your team uses is grounded, not just one.
A setup-optimization report
What's missing or misconfigured in your AI-coding setup - ignored files, absent conventions, structure that confuses agents - with concrete fixes.
A 5-minute walkthrough
A short Loom walking through what the scan found and why it matters, so the value is obvious to your team - not just a pile of files dropped in a PR.
// proof - real case study
Same repo. Two results.
We pointed Groundit at Excalidraw - a codebase you
already know. On the left, the CLAUDE.md
its maintainers hand-wrote. On the right, what Groundit produced from a deep scan.
Same repo; only one of them actually understands it.
# CLAUDE.md ## Project Structure Excalidraw is a monorepo with a clear separation between the core library and the application: - packages/excalidraw/ - React component library - excalidraw-app/ - the excalidraw.com web app - packages/ - common, element, math, utils ## Development Workflow 1. Work in packages/* for editor features 2. Always run `yarn test:update` before committing 3. Use `yarn test:typecheck` to verify TypeScript
# CLAUDE.md Excalidraw is a Yarn-workspaces monorepo split between a publishable whiteboard library (@excalidraw/excalidraw) and the excalidraw.com web app built on top of it. ## How it works The Scene class (packages/element) is the single source of truth for the live element list; scene.mutateElement() is the right call site to change an element and trigger a re-render. Geometry runs through @excalidraw/math, which uses branded coordinate types (GlobalPoint vs LocalPoint) for space safety. Collaboration is transport-agnostic at the library layer. ## Gotchas - firestore.rules allows read/write but hard-blocks `list` - on purpose, so users can't enumerate each other's drawings. - public/service-worker.js is a one-time shim that unregisters itself so CRA-era workers don't block the Vite PWA.
242
facts verified against the source - 39 flagged for human review, never guessed.
16
context files: a 10-file CLAUDE.md tree + 6 coding-rule files, not one generic page.
<20 min
unattended, on a 1,229-file monorepo. You get it back the same day.
// and the part /init can't do
Groundit also audited Excalidraw's existing CLAUDE.md against
the live code and corrected it: it dropped a dead vitest.config.mts
alias reference, flagged stale yarn scripts it couldn't verify, and
surfaced a published package the docs had missed
(@excalidraw/fractional-indexing). Every change cites the
file and line it came from - so your context stays true to the code, not the day it was written.
// the full scaffold
Not a file. A scaffold.
Groundit doesn't drop one CLAUDE.md and call it
done. One scan produces a complete, nested setup - a root file that maps the system and
@-imports a CLAUDE.md for every package, plus path-scoped coding
rules that load only where they apply. This is the real 16-file
output from the Excalidraw scan above.
CLAUDE.md
root: architecture, how-it-works, gotchas — @-imports the tree below
the tree · a CLAUDE.md per area
-
packages/element/CLAUDE.md
the Scene store + mutation pipeline
-
packages/math/CLAUDE.md
branded coordinate types
-
packages/excalidraw/CLAUDE.md
the embeddable editor library
-
packages/CLAUDE.md
workspace overview
-
excalidraw-app/CLAUDE.md
the excalidraw.com PWA
-
scripts/CLAUDE.md
esbuild builds, release order
-
examples/CLAUDE.md
embedding demos
-
dev-docs/CLAUDE.md
the docs site
-
.github/CLAUDE.md
CI / release workflows
.claude/rules/ · path-scoped
-
react-components.md
packages/**/*.tsx · excalidraw-app/**/*.tsx
-
tests.md
**/*.test.ts(x)
-
snapshots.md
**/__snapshots__/**
-
build-config.md
*.config.ts · vite/vitest.config.*
-
ci-workflows.md
.github/workflows/*.yml
-
type-declarations.md
**/*.d.ts
// one scan, every tool
Your team doesn't use one AI tool. Neither do we.
The same deep scan emits context in every major format at once. Anthropic will never write Cursor's files; Cursor will never write Claude's. We're vendor-neutral on purpose - one source of truth, every assistant grounded.
CLAUDE.md
Claude Code
.cursorrules
Cursor
AGENTS.md
Codex / agents
copilot-instructions.md
GitHub Copilot
// depth
The non-obvious things a quick scan misses.
An hour of deep scanning surfaces the tribal knowledge that usually lives only in senior engineers' heads - the stuff your AI most needs and is least likely to guess.
▸ Firestore rules hard-block `list` on purpose - so users can't enumerate each other's drawings
← read firestore.rules
▸ scene.mutateElement() is the one correct call site to change an element and re-render
← traced the Scene store in packages/element
▸ Geometry uses branded coordinate types (GlobalPoint vs LocalPoint) to prevent space-mixing bugs
← read the @excalidraw/math signatures
▸ build-version.js stamps the HEAD commit date, not wall-clock time
← scripts/build-version.js, lines 22-28
// pricing
Priced by the size of your codebase.
Pick the tier that matches your repo. Not sure? Count it in one line:
git ls-files | xargs wc -l | tail -1
// faq
Questions, answered.
Does my code leave my control? +
We work under NDA, and the scan runs against a read-only grant you can revoke the moment you have the files. Your code is never stored, resold, or used to train anything. Most clients add us as a temporary read-only collaborator, then remove us on delivery.
How long does it take? +
A few business days. The deep scan itself runs in about an hour; the rest is review and polishing so what you receive is genuinely good, not raw model output.
Which AI tools do you support? +
CLAUDE.md (Claude Code), .cursorrules (Cursor), AGENTS.md (Codex and other agents), and .github/copilot-instructions.md (GitHub Copilot) - all generated from the same scan and consistent with each other.
How do I know which tier I need? +
Tiers are by lines of code. Run `git ls-files | xargs wc -l | tail -1` in your repo for the total. If you are between tiers or on a monorepo, pick Enterprise and we will confirm scope before charging.
What if it's not useful? +
If the delivered package isn't materially better than what your tools produce on their own, you get a full refund. The whole pitch is depth you can see - if you can't see it, you don't pay.
Give your AI the codebase it's been missing.
One deep scan. Every tool grounded. Delivered in days.