KadraPractice

A Python FastAPI practice project inside a payments ledger

Ledgerly is a working FastAPI payments service. Transfers can overdraw an account, cents go missing to float rounding, and a retried request moves the money twice. You fix each bug in the real codebase and open a GitHub pull request. An AI teammate reviews it, and a hidden pytest suite decides whether it passes.

Real GitHub PRs · Graded by pytest · Free during beta

What you'll actually do

Three bugs that lose real money

Payments code has to be exact. Each Ledgerly ticket is a bug report with acceptance criteria, in a Python codebase you didn't write.

LEDG-201

A transfer can overdraw the account

A transfer bigger than the source account's available balance still goes through and leaves the account negative. To pass, that transfer has to be rejected while valid transfers keep working.

LEDG-208

Amounts lose cents to float rounding

Amounts are added as floating-point dollars, so sums like 0.1 + 0.2 drift and balances stop reconciling. To pass, every supported operation has to be exact to the cent and a series of transfers has to add up to the expected total.

LEDG-215

A retried transfer is applied twice

A retry with the same idempotency key creates a second transfer instead of returning the first one. To pass, the same key twice has to produce exactly one transfer, while different keys still create separate transfers.

How grading works

pytest decides whether the fix works

Each Ledgerly ticket has a hidden pytest file that's added to your branch at grading time. The result appears on your pull request as a check.

  • The hidden tests run with pytest on Python 3.13 in a clean sandbox. They check the acceptance criteria with amounts and retries a quick patch tends to miss.
  • An AI teammate reviews the diff in the PR thread and can request changes. That review is feedback; the tests decide pass or fail.
  • If a check fails, the test output is on the PR. Push another commit and it runs again.
  • Shipped tickets and tracked hours go on a certificate with a public link for your résumé or LinkedIn.
See exactly how the grading pipeline works →
Who it's for

Who the FastAPI track is for

Ledgerly assumes you can write Python and have seen a web API before. It tests whether you can fix a money bug without breaking the transfers that already work.

Python developers aiming at fintech or backend roles who want work that looks like the job.

Data and scripting folks moving into backend work who have never shipped an API fix.

Bootcamp grads and self-taught devs whose projects have never been reviewed.

Juniors who want to learn idempotency keys and decimal money before an incident teaches them.

Not for: people new to Python. Ledgerly is about debugging an existing API, so learn the language first.

FAQ

Questions about the FastAPI track

What do I need installed?

Python 3.13 and pip if you work locally. Every Ledgerly repo also opens in GitHub Codespaces with Python ready.

Who reviews my pull request?

An AI teammate reviews the diff in the PR thread and can ask for changes. Whether the fix is correct is decided by the hidden pytest suite.

What's an idempotency key?

A value the client sends with a request so the server can tell a retry from a new request. LEDG-215 is about honoring it, so a network retry doesn't move the money twice.

What happens if the tests fail?

The failing test output is on the pull request. Push a new commit and the check runs again.

Can I put it on my résumé?

Yes. Finishing the sprint gives you a certificate with the stack, the tickets you shipped and your tracked hours, behind a public link.

Does it cost anything?

It's free during the beta.

Take LEDG-201 and stop the overdraft.