Skip to main content

Receipts — resume claim verifier & codebase-grounded interview prep CLI

Project description

RECEIPTS

Your resume said it. Your code proves it.

Quick StartWhat It DoesHow It WorksProvidersSetup GuideDeep Dive


The anti-flattery resume tool. Most resume reviewers feed your bullets into an LLM and hand you back compliments. Receipts does the opposite — it embeds your actual codebase, searches it for evidence behind every claim you made, and tells you the truth. If the code doesn't back it up, you'll know before the interviewer does.


Quick Start

pip install codebase-receipts-cli
receipts check                                    # verify provider is working
receipts ingest ./my-project                      # index your codebase
receipts verify resume.tex ./my-project           # verify every claim
receipts verify resume.tex ./my-project --rewrite # + honest rewrites
receipts tui resume.tex ./my-project              # full-screen dashboard
receipts ama resume.tex ./my-project              # mock interview mode
receipts ledger                                   # token usage & costs

[!TIP] See SETUP.md for the full walkthrough — provider config, model setup, and first-run instructions. See LEARN.md for how every piece works under the hood.


What It Does

Claim Verification

Every bullet in your .tex resume gets broken into individual claims — percentages, counts, latency numbers, technology names — and each one is checked against the code.

Results: 5 verified, 3 plausible, 2 unsupported

UNSUPPORTED CLAIMS:
  [percentage] 40%
    bullet: Reduced API latency by 40% through query optimization...
    reason: No evidence of latency measurement or optimization in codebase

The rule: if the knowledge base has no relevant code for a claim, it's marked Unsupported without even asking the LLM. The model never gets a chance to talk itself into justifying something it can't find.

Honest Rewrites

Weak bullets get rewritten to be exactly as strong as what the code can actually justify. No invented numbers. No inflated language.

ORIGINAL:  Reduced API latency by 40% through query optimization
REWRITTEN: Optimized database queries in the API layer using indexed lookups

Keyword Gap Analysis

Paste a job description. Get back what's addable, what's ungrounded, and what's missing:

Can add (code supports it):
  + Docker — Dockerfile and compose config found in codebase

Ungrounded (resume claims, no code):
  ? Kubernetes — mentioned in resume but no k8s config in codebase

Gaps (JD wants, you don't have):
  - Terraform

Interactive TUI

A full-screen terminal dashboard with a file tree, sortable claims table, side-by-side rewrite diffs, live LLM activity log, and a running token counter.

Shortcut Action
c Claims tab
r Rewrites tab
l Log tab
q Quit

Mock Interview (ama)

An AI interviewer that targets your weakest bullets. Unsupported claims get asked about 3x more often than verified ones. For each bullet:

  1. Pointed technical question about the specific claim
  2. Your answer
  3. Natural follow-up based on what you said
  4. Your follow-up answer
  5. Assessment: did it hold up?

Ends with a summary of strengths, weaknesses, and overall readiness.

Token Ledger

Every LLM call is metered and logged — even when the provider is free. receipts ledger shows lifetime totals across all sessions.


How It Works

receipts/
  cli.py ........................ Typer CLI: check, ingest, verify, tui, ama, ledger
  config.py ..................... BYOK config (env vars / .env, never committed)
  ama/
    interviewer.py .............. Mock-interview loop, weighted toward weak claims
  ingest/
    scanner.py .................. Tree-style walk respecting .gitignore
    git_source.py ............... Clone remote repos to temp dir
    artifact_extractor.py ....... Tree-sitter extraction within a token budget
    secrets_scanner.py .......... Pre-embedding secrets scan + redaction
  ledger/
    token_ledger.py ............. SQLite-backed token/cost log
    pricing_table.py ............ $/1K-token rates per provider/model
  llm/
    provider.py ................. Abstract LLMProvider (complete, embed)
    factory.py .................. Reads config, returns the active provider
    ollama_provider.py .......... Local, free, no key needed
    gemini_provider.py .......... Free-tier Google AI Studio key
    anthropic_provider.py ....... BYOK adapter (paid)
    openai_provider.py .......... BYOK adapter (paid)
    fake_provider.py ............ Deterministic offline stub for tests
  resume/
    tex_parser.py ............... Parse .tex into structured sections/bullets
    claim_extractor.py .......... Extract numeric + technology claims per bullet
  tui/
    app.py ...................... Textual App with panelled layout
    widgets/ .................... StatusBar, ClaimsTable, DiffView
  verify/
    kb.py ....................... ChromaDB-backed vector store over code artifacts
    verifier.py ................. Classify: Verified / Plausible / Unsupported
    rewriter.py ................. Propose honest rewrites for weak bullets
    keyword_gap.py .............. JD keyword gap analysis grounded in code

[!NOTE] For a narrative walkthrough of every module — what it does, why it exists, and how to explain it in an interview — see LEARN.md.


Provider Support (BYOK)

Provider Default Key Install
Ollama Yes None Built-in
Gemini No Free Built-in
Anthropic No Paid pip install codebase-receipts-cli[anthropic]
OpenAI No Paid pip install codebase-receipts-cli[openai]

Zero bundled keys. Zero silent paid API calls. Ever.

[!IMPORTANT] Anthropic does not offer an embeddings API, so Claude needs a split config — chat via Claude, embeddings via a provider that has them: RECEIPTS_PROVIDER=anthropic + RECEIPTS_EMBED_PROVIDER=gemini (or ollama). The embed provider must match whatever embedded your knowledge base — re-ingest if you switch embedding models.


Development

uv sync --group dev          # install everything
uv run pytest -v             # 233 tests, fully offline
uv run ruff check receipts/  # lint
uv run black --check receipts/ tests/  # format check
uv run pre-commit install    # git hooks

The entire test suite runs with zero network access — a deterministic fake provider handles all LLM calls in tests.

Publishing

git tag v0.1.0
git push origin v0.1.0

GitHub Actions runs the full test suite on Ubuntu + Windows (Python 3.10 + 3.12), then publishes to PyPI via trusted publishing. No tokens in secrets.


License

MIT


Built by Ishaan Sharma

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

codebase_receipts_cli-1.0.1.tar.gz (569.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

codebase_receipts_cli-1.0.1-py3-none-any.whl (166.3 kB view details)

Uploaded Python 3

File details

Details for the file codebase_receipts_cli-1.0.1.tar.gz.

File metadata

  • Download URL: codebase_receipts_cli-1.0.1.tar.gz
  • Upload date:
  • Size: 569.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for codebase_receipts_cli-1.0.1.tar.gz
Algorithm Hash digest
SHA256 ca833edda856eed7392cb526ce335d2996709303eb1200e3d99d4ee679a491ac
MD5 c0f6a47d709fc4ffee78cf1049e0dabf
BLAKE2b-256 cc0d9fe900b2532095ba46b4e66dc817e97837a87eae8de9546074837c2a6871

See more details on using hashes here.

Provenance

The following attestation bundles were made for codebase_receipts_cli-1.0.1.tar.gz:

Publisher: publish.yml on Ishaan-1606/receipts-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file codebase_receipts_cli-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for codebase_receipts_cli-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0f5551514737cf5b9434217f23170fa44d61c907d5d31eecfd307359dab8ea14
MD5 fc0e47ade47491a605b7665c0361261b
BLAKE2b-256 28cd1eeb17abda82eb602a76ec13e8e244be23f2ac2be91118124a76b6d1f999

See more details on using hashes here.

Provenance

The following attestation bundles were made for codebase_receipts_cli-1.0.1-py3-none-any.whl:

Publisher: publish.yml on Ishaan-1606/receipts-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page