All BlueprintsFintech

Currency exposure for an importer

A company that buys abroad and sells at home holds money in several banks and several currencies, and owes suppliers in dollars and euros. This is where its finance team uploads each bank's statement, sees every balance tied back to the lines it came from, and reads the net position in each currency at the rate of the day. It also shows what a fall in the naira would cost before it happens, and keeps each evening's position so the month can be read back.

L3–L5Level range
8Sprints
41Tasks
Backend and frontendBuilt as

What you’ll build.

By the last sprint

An importer's finance team opens the URL, signs in and uploads each bank's statement, and a file that is not one is refused with the reason. Every balance opens onto the statement lines it came from, and a statement that does not follow on from the one before is held at the line where they part. Cash reads per bank and per currency with a naira total at the day's rate, and supplier bills are counted at the rate of the day they fall due. Each currency's position shows what a 10, 20 or 40 per cent fall in the naira would cost, and every evening's position is kept so the month can be read back.

What you’ll learn.

Each sprint is built around one skill. You show you have it in a pull request your team reviews, then explain it in a walkthrough.

Authentication

You can register and sign in a user, keep a request authenticated without asking for the password again, and explain where the credential lives in the browser and why there rather than somewhere else.

File uploads

You can upload a file from the browser, store it somewhere the application does not own, and show it again on a later request — and say where the bytes travelled and what the database actually holds.

A ledger you can trust

You can record credits and debits and produce a balance that is the sum of them — and explain why the balance is not a column you update, and what happens when two movements land at once.

Statements that reconcile

You can generate a statement for a date range that adds up, downloads, and returns the same figures when it is generated again next month.

Background jobs

You can hand work to a worker, tell the user it is in progress, and show the result when it lands — and say what happens to that work if the process dies halfway.

Going live

Somebody who has never met you can open a URL and use the product — and you can say what is different about the copy running there, where its secrets come from, and what you do when a release turns out to be wrong.

The roadmap. 8 sprints, 41 tasks.

Every sprint has a goal and a set of tasks. Open a sprint to see the tasks you will pick up.

Sprint 01

The company's own door

A company has a finance team of its own: its people sign in, belong to that one company, and nothing any other company holds is ever in view.

5 tasks
  1. Somebody from a finance team can register their company and land inside it
  2. A finance team member stays signed in, and can sign out on the office machine
  3. A member can bring a colleague into the company by invitation
  4. The team can see who is in it, and somebody who leaves loses access at once
  5. No company ever reaches another company's pages
Sprint 02

Statements in

A bank's statement file is uploaded, read into lines exactly as the bank printed them, and anything that is not a statement is refused with the reason.

5 tasks
  1. The company's bank accounts are on record before any statement arrives
  2. A statement is uploaded and read into the lines the bank printed
  3. A file that is not a statement is refused with the reason
  4. The same statement uploaded twice is recognised
  5. The file the bank sent is kept, and can be opened again
Sprint 03

Every balance ties back

Every balance is derived from statement lines and opens onto them, and a statement that does not follow on from the one before is held at the line where they part.

5 tasks
  1. Every line's balance is worked out, not trusted
  2. A statement has to start where the last one finished
  3. Statements uploaded out of order still line up
  4. Every balance opens onto the lines it came from
  5. A held statement can be replaced by the corrected one
Sprint 04

Cash in every currency

Cash reads per bank and per currency on a chosen day, with a naira total at a rate that says which day it is from, and every total is the sum of the rows above it.

6 tasks
  1. The finance team enters the day's rates, and each one says who and when
  2. Cash reads per bank and per currency, as it stood on a chosen day
  3. A naira total that names the rate and the day that made it
  4. Every total is the sum of the rows above it
  5. A day with no rate says so, and never guesses
  6. The cash view goes out as a file that adds up the same way
Sprint 05

What is owed, and when

Supplier bills are held in the currency they were invoiced in and counted in naira at the rate of the day they fall due, and a figure that changes after the fact says what it was and why.

5 tasks
  1. Suppliers and the bills they send, in the currency they invoice in
  2. A bill is counted in naira at the rate of the day it falls due
  3. A payment on a statement settles the bill it paid
  4. A corrected rate or a late bill says what was reported and what it is now
  5. What is owed, soonest first, with overdue bills in plain view
Sprint 06

What a fall would cost

Each currency's net position is the cash held less the bills owed, opening onto both, and the finance team sees what a 10, 20 or 40 per cent fall in the naira would cost against it.

5 tasks
  1. Each currency shows what the company holds, what it owes, and the difference
  2. A position says whether a fall in the naira hurts or helps
  3. What a 10, 20 or 40 per cent fall in the naira would cost
  4. A fall of the finance team's own choosing
  5. Every scenario figure can be reproduced with a calculator
Sprint 07

The position, every evening

The position is taken on its own every evening, exactly once however many times the work runs, a missed or failed evening is visible rather than silent, and the month can be read back day by day.

5 tasks
  1. The position is taken every evening with nobody pressing anything
  2. Taking the evening's position twice keeps one
  3. A missed or failed evening is shown, not skipped over
  4. The month read back, evening by evening
  5. A kept evening stays what it was that evening
Sprint 08

Where the finance team works

The product runs at its own address on the internet, holding only figures a company put there, and a finance team who never met the builder can sign up, upload a statement and trust what it says.

5 tasks
  1. A finance team can reach the product at an address the builder chose
  2. The live product holds only figures a company put there
  3. Nothing the product needs to run is in the repository
  4. A release keeps every statement, and can be undone without losing one
  5. The evening position runs live, and somebody finds out when anything fails

Read before you build. The best engineers do.

Senior engineers read the docs before they touch the code. Every Blueprint comes with short documents on the product and its world, the kind a team hands a new hire. Read them well and you ask sharper questions and walk into every review prepared.

What you are building

The product, the finance team who uses it, and why every figure in it has to be reachable from a line a bank printed.

Build currency exposure for an importer.

Start your free week. Adaeze runs your kickoff, and Lars reviews every pull request.