Final Presentation and Review
You have built a complete system. It works, it is tested, it is measured and it costs what you said it would cost.
And now comes the part that almost nobody prepares and that decides half the outcome: telling the story.
This is not decoration or an academic formality. It is an observation repeated in every technical hiring process: of two candidates with equivalent projects, the one who can explain in three minutes why they chose Cloud Run instead of GKE, how much it costs per month and what happens when the database goes down gets the job; the one who shows a URL and says "it is built with Google Cloud" does not. The technical work is the same. The difference is that one of the two did the work of communicating it.
There is a structural reason for this. In any organisation, technical decisions are taken by people who have not built the system: a manager who decides the budget, a colleague who is going to maintain it, an interviewer who has forty minutes. If your work exists only in your head and in the repository, for all of them it does not exist. Communicating is not selling: it is making the work usable by others.
This lesson covers the seven pieces: the three audiences and how the message changes for each one, the structure of the presentation slide by slide, how to show an architecture without losing anybody, the demo with its script and its plan B, how to talk about numbers, the deliverable documentation with templates ready to copy, the honest self-assessment against the 08-01 rubric, the questions you are going to be asked with model answers, the peer review and the final clean-up.
Contents
- Why communicating the work is part of the work
- The three audiences
- The structure of the presentation, slide by slide
- How to show the architecture
- The demo
- Talking about numbers
- The deliverable documentation
- The self-assessment against the rubric
- The questions you are going to be asked
- The peer review
- The final clean-up
- The RefugioReserva presentation script
- Why communicating the work is part of the work
The four technical communication mistakes
Before what to do, what to avoid. All four are extraordinarily common:
| Mistake | How it sounds | Why it fails |
|---|---|---|
| The catalogue | "I used Cloud Run, BigQuery, Pub/Sub, Cloud SQL, Secret Manager, Terraform, Cloud Build…" | Listing products does not demonstrate judgement. Anybody can read a list of services |
| The tutorial | "First I created the project, then I enabled the APIs, then…" | You tell the process instead of the result. Nobody cares about your order of work |
| Excessive modesty | "Well, it is only a small project, I am sure there are things wrong…" | It devalues your work before anybody has valued it. You can be honest without apologising |
| The exaggeration | "It is a scalable, robust, high-performance platform" | Adjectives with no numbers. The first specific question takes it apart |
The antidote to all four is the same: decisions and numbers. "I chose Cloud Run instead of GKE because a cluster cost €100 a month from minute one and I did not need anything from Kubernetes; the system costs me €10.20 and handles 100 concurrent users with a p95 of 634 ms" is not a catalogue, it is not a tutorial, it does not apologise and it does not exaggerate. It is verifiable.
What you are really demonstrating
You are not demonstrating that you know how to use Google Cloud. You are demonstrating five things, and only one of them is technical:
- That you take decisions and justify them. The most valued skill and the rarest.
- That you know the constraints. Cost, time, complexity. An engineer without constraints is not an engineer.
- That you finish things. One complete project, however small, is worth more than three half-finished ones.
- That you know what you do not know. Acknowledged technical debt is a sign of maturity.
- That you can work with others. Documentation, ADRs, runbook: all of that is for other people.
- The three audiences
The same architecture, three different presentations. It is not make-up: the three audiences need to answer different questions.
| Management / business | Technical team | Job interview | |
|---|---|---|---|
| Their question | Is it worth it? | How does it work and how do I maintain it? | Can this person think? |
| Real attention span | 5 min | 30-45 min | 10-15 min |
| What you start with | The problem and the result | The architecture | The problem and a decision |
| Diagram | The context one, and that is enough | All three | The component one |
| Cost | The lead role | As a design constraint | As a demonstration of judgement |
| Technical detail | None | As much as they ask for | Just enough, and in depth if they ask |
| What weighs most | The final number | The trade-offs accepted | The rejected alternatives |
| What sinks you | Untranslated jargon | Vagueness and "it depends" | The service catalogue |
Management: business and cost
Five sentences, zero jargon:
"The federation managed 12 refuges by telephone and with spreadsheets. They had seven overbookings a year and no data at all to decide where to invest. Now the bookings happen on their own, overbooking is impossible by design, and there is a dashboard with the occupancy of every refuge. It costs €10 a month and the whole thing can be switched off in five minutes if it stopped being of interest."
Notice what does not appear: no Cloud Run, no Terraform, no PostgreSQL. And what does: the problem in their terms, the result in their terms, the cost, and the reversibility — which matters to an executive more than it seems, because their fear is not that it will not work, it is being locked in.
Translating technical terms into business terms:
| You say | You translate to |
|---|---|
| "It scales to zero" | "We do not pay when nobody is using it" |
| "SLO of 99.5 %" | "At most it will be down 3 hours a month, and we will know about it" |
| "Infrastructure as code" | "We can rebuild the whole thing from scratch in 15 minutes" |
| "Least privilege" | "Each piece can only touch its own things; if one fails, it does not drag the rest down" |
| "Backup with a 22-minute RTO" | "If we lose the data, it is back in 22 minutes" |
| "Canary deployment" | "Changes are seen first by 10 % of people; if something fails, we undo it in a minute" |
Technical team: decisions and trade-offs
Here you do go into detail, but the axis is still why, not what. What a colleague wants to know: what trade-offs you accepted, what breaks first when something fails, where the debt is and how this is operated on a Tuesday at eight in the evening.
The section they value most, and that almost nobody prepares: "what I would do differently".
Interview: your judgement, not the catalogue
In an interview, the project is a pretext for talking about how you think. The interviewer is not going to audit your Terraform: they are going to ask you why, what you rejected, what happens if, and how much it costs.
The 90-second structure you must have memorised (they will ask for it literally: "tell me about a project of yours"):
"[Problem, 15 s] I built a booking platform for a fictional federation of mountain refuges, which managed 12 refuges by telephone and had overbookings.
[Architecture, 20 s] It is an application on Cloud Run against managed PostgreSQL with a private IP, with the photos in Cloud Storage, the events over Pub/Sub into BigQuery and a dashboard in Looker Studio. All in Terraform, deployed by CI/CD with no keys.
[The interesting decision, 30 s] The decision that made me think hardest was the database. Firestore was free and Cloud SQL cost me €8 a month out of a €12 budget. I chose Cloud SQL because the heart of the problem is capacity control, and I needed a transaction with a row lock: I wrote a concurrency test with twenty threads fighting over the last place, and with the naive implementation seven of them managed to book it. I offset the cost by shutting the database down overnight.
[The numbers, 15 s] It costs me €10.20 a month, it handles 100 concurrent users with a p95 of 634 ms, the whole thing is rebuilt from scratch in 14 minutes and I have rehearsed the rollback: 38 seconds.
[The honesty, 10 s] What I deliberately left out: there is no WAF, because the load balancer cost more than the whole project put together. It is documented as debt with its review condition."
Ninety seconds. Five blocks. Not a list of services, and yet seven of them are mentioned. Every claim is verifiable, and the last one invites a question instead of hiding.
- The structure of the presentation, slide by slide
Thirteen slides, 10-15 minutes. This is the full version (technical or mixed audience); for management you use slides 1, 2, 6, 7 and 12.
| # | Slide | Time | Concrete content |
|---|---|---|---|
| 1 | Cover and one-liner | 30 s | Name, your name, the project one-liner with no "and" |
| 2 | The problem | 1 min | Who has it, what they do today, what hurts. One concrete figure |
| 3 | Scope | 45 s | What it does and — importantly — what it does not, with the reason |
| 4 | Architecture | 1.5 min | The component diagram. Just one |
| 5 | Key decisions | 2 min | 3 decisions with their rejected alternative. The most important slide |
| 6 | Demo | 3 min | Live, timed, with a plan B |
| 7 | Measured results | 1.5 min | Latency, availability, capacity. Numbers |
| 8 | Cost | 1 min | Real breakdown and the cost decision you took |
| 9 | Reliability | 1 min | SLO, what happens when it fails, measured RTO |
| 10 | Security | 1 min | Identity, secrets, exposure, and what you found when auditing |
| 11 | What did not work | 1 min | Incidents, prioritised technical debt |
| 12 | Lessons learned | 45 s | 3 concrete things |
| 13 | Next steps | 30 s | What you would do with two more weeks |
The detail of the slides that decide
Slide 2 — The problem. It needs one concrete figure. "They managed bookings by telephone" is weak; "they managed bookings by telephone between 18:00 and 20:00, with one spreadsheet per refuge, and they had seven overbookings last year" makes the audience understand the pain in five seconds.
Slide 3 — Scope. Half the slide is what was excluded. Showing that you decided not to do payments, or a mobile app, or multiple languages demonstrates scope management, which is an engineering skill as valuable as writing code. And it defuses in advance the question "and why did you not do X?".
Slide 5 — Key decisions. Two minutes, three decisions, in table form:
| Decision | I chose | I rejected | Because |
|---|---|---|---|
| Compute | Cloud Run | GKE Autopilot | A cluster costs from minute 1 and I did not need anything from Kubernetes |
| Data | Cloud SQL | Firestore | Capacity control needs a transaction with a lock. Cost: +€8/month, offset with an overnight shutdown |
| Exposure | Cloud Run domain | Load balancer + CDN + WAF | The load balancer cost €18/month on a €12 budget. Module written, deployed for a week to measure it, then destroyed |
This is the most memorable slide. If you could only show one, it would be this one. The "I rejected" column is the one that proves there was thinking.
Slide 11 — What did not work. Counter-intuitive and very effective. It contains your real incidents with their post-mortem and your prioritised technical debt. The reason it works: everybody knows a real system has problems. A project presented as perfect reads as a project that was barely used or barely understood. And no other slide generates as many good questions.
Slide rules
| Rule | Reason |
|---|---|
| Maximum 6 lines of text | Any more and people read instead of listening |
| One message per slide | The title must be the message, not the category |
| Big, visible numbers | "€10.20/month" in 60-point type, not in an eight-row table |
| Zero screenshots of illegible code | If you need code, three highlighted lines |
| Zero animations | They distract and they fail |
The title of every slide must be the conclusion, not the topic. "Cost" is a topic. "€10.20/month, 62 % less than the initial design" is a conclusion: if the audience only reads the titles, they have already taken away your whole presentation.
- How to show the architecture
One diagram per level of detail
Never show all three at once, and never one that mixes levels. Choose according to the audience:
| Audience | Diagram | Time |
|---|---|---|
| Management | Context | 30 s |
| Interview | Components | 1.5 min |
| Technical team | All three, in order, as they ask | 5 min |
The rule of not reading the diagram
The most common mistake when presenting an architecture is walking through the boxes: "here we have Cloud Run, which connects to Cloud SQL, and also publishes to Pub/Sub, which in turn…". The audience can already see the boxes. They are reading while you talk, and you are competing with your own slide.
Instead of reading it, tell a journey. A user doing something:
"A hiker comes in and looks for places on 15 August. The request reaches Cloud Run, which queries PostgreSQL — that query is the one with the partial index, because it is the one that runs a thousand times. They book. At that point two things happen at once: the booking is written to the database inside a transaction with a lock, which is what prevents overbooking, and an event is published. The user already has their answer. The event goes on its way through Pub/Sub to BigQuery, and thirty seconds later the federation sees the booking in its dashboard. That separation is deliberate: the user does not wait for the analytics."
A minute and a half, zero lists, and the audience has understood the system and two design decisions.
The three things the diagram must convey in ten seconds
- What is exposed to the internet and what is not.
- Where the data comes in and where it ends up.
- What is synchronous (the user waits) and what is asynchronous (the user does not wait).
If your diagram does not make that clear without explanation, redo it before presenting.
- The demo
What to demonstrate and in what order
Three minutes. The order matters because the impact is cumulative:
| # | What | Time | Why at that point |
|---|---|---|---|
| 1 | The complete user flow | 60 s | Establishes that the system is real |
| 2 | The data appearing in the dashboard | 30 s | Connects the two halves of the system |
| 3 | One of the three moments (below) | 90 s | It is what they will remember |
The three moments that genuinely impress
None of the three is functionality. All three are operations, which is exactly what separates a project from a demo:
1. A complete deployment, live. You change a line, do a git push, and the pipeline appears on screen: tests → build → deployment → smoke test. Four minutes on the clock, so you launch it at the start of the demo and come back to it at the end. The effect is hard to overstate: most portfolio projects are deployed by hand.
2. An alert firing. You cause errors, wait, and show the email arriving with the first steps written in it. It proves that the system tells you, which is what separates observability from pretty graphs.
3. A rollback. It is the most impressive of the three and the quickest. You deploy a deliberately broken version, the audience sees the error, you run ./scripts/revertir.sh, and in 38 seconds the system is healthy. Stopwatch on screen.
Choose one. All three do not fit, and the third is the one that says most about you in the least time.
The timed script
Write it. Literally, with the timings:
# Demo script — 3 min
## 0:00 — Preparation (before you start talking)
- Tab 1: the application, already loaded
- Tab 2: Looker Studio, already open, with the filter set
- Tab 3: Cloud Build, history
- Tab 4: the Cloud Run console, service open
- Terminal: in the project directory, with the command already typed WITHOUT pressing Enter
- Phone: email open, ready to show the alert
- ❗ Backup video open in a minimised window
## 0:00-0:15 — Launch the deployment in the background
"I am going to launch a deployment now so it runs while we talk."
[Enter in the terminal: git push]
## 0:15-1:15 — The user flow
[Tab 1] "I look for a place at the Refugio de Cotiella for 15 August."
"20 places free. I book two." [fill in, submit]
"Confirmed. It took 180 milliseconds."
"And now there are 18 left. That number comes out of a transaction with a row
lock: it is what stops two people booking the last place at the same time."
## 1:15-1:45 — The dashboard
[Tab 2, refresh] "And here is the booking, 30 seconds later.
It has gone through Pub/Sub and BigQuery. The user waited for none of this."
## 1:45-3:00 — The rollback
[Tab 3] "The deployment from earlier has already finished: tests, image,
deployment, smoke. Four minutes, without touching anything."
"Now we are going to break it on purpose."
[deploy broken revision] [tab 1, reload → error]
"And this is what I do when it happens for real:"
[terminal] ./scripts/revertir.sh
[stopwatch] "38 seconds." [tab 1, reload → it works]
"I have rehearsed it three times. 36, 38 and 41 seconds."The three rules of a demo that does not fail:
- Rehearse it three times, the last one end to end without stopping. You will discover that one tab was slow to load and that the Looker Studio filter resets.
- Everything open and preloaded before you start. Nobody wants to watch you hunt for a tab.
- Never type a URL live. Nor write long commands. Everything ready, just press Enter.
The recorded plan B
Record the whole demo on video, with narration, and keep it open and minimised. It is not pessimism: it is that meeting-room wifi fails, a Google service has an incident, and your trial account expires on exactly that day.
And if you have to use it, say so naturally: "The wifi here will not let me; I have the demo recorded, it is exactly the same". Nobody penalises that. What does get penalised is spending three minutes fighting a loading screen.
- Talking about numbers
Why "this cost me €12 a month" is worth more than any adjective
An adjective is your opinion. A number is a verifiable fact, and it also proves three things at once: that you measured it, that you know where it comes from, and that you understand the constraint.
| Instead of… | Say… |
|---|---|
| "It is scalable" | "It handles 100 concurrent users with a p95 of 634 ms; the cap is max-instances=5, set deliberately so as not to go over €12" |
| "It is fast" | "p50 of 178 ms, p95 of 634 ms, p99 of 1.8 s. The p99 is cold starts" |
| "It is cheap" | "€10.20 a month. The biggest line is the database, €5.70" |
| "It is reliable" | "SLO of 99.5 % monthly. I have restored a backup and it took 22 minutes; the rollback, 38 seconds" |
| "It is secure" | "Zero JSON keys, zero primitive roles, database with no public IP. When auditing I found a public bucket that had been open for four weeks and I closed it" |
The last row is the one that works best, and it is counter-intuitive: admitting a fault found and fixed builds more trust than claiming there are none.
The numbers you must have on the tip of your tongue
| Category | Numbers you must know without looking |
|---|---|
| Cost | Monthly total · biggest line · what you cut and how much it saved |
| Performance | p50, p95, p99 · concurrent users tested · where the bottleneck is |
| Reliability | SLO and error budget · measured RTO · RPO · rollback time |
| Operations | Rebuild-from-scratch time · pipeline duration · number of incidents |
| Project scale | Hours invested · number of commits · lines of Terraform |
The cost slide
## €10.20/month — and how we got there
| Service | Cost | % |
| --- | --- | --- |
| Cloud SQL (with overnight shutdown) | €5.70 | 56 % |
| Domain | €1.00 | 10 % |
| Cloud Run | €0.30 | 3 % |
| Storage + Artifact Registry | €0.30 | 3 % |
| BigQuery, Pub/Sub, Functions, Logging | €0.00 | 0 % |
| Unused headroom | €2.90 | 28 % |
**Initial design: €34/month. Self-imposed limit: €12.**
Three decisions brought it down by 70 %:
1. No permanent load balancer (−€18) → ADR-006
2. Overnight shutdown of the database (−€2.30)
3. `max-instances=5` as a hard spending capThat slide demonstrates more engineering judgement than any diagram, because it shows decisions under constraint, which is what the real job consists of.
Honesty about the numbers
- If you did not measure it, do not say it. "I have not measured that" is a perfectly acceptable answer; inventing a figure you cannot back up is not.
- Give the context. "100 concurrent users" without saying against what configuration means nothing.
- Acknowledge what the number does not cover. "I tested 100 users; I do not know what happens with 1,000, although I can reason about it."
- The deliverable documentation
Five documents. None of them long, all of them useful.
7.1 The README that actually gets read
The rule: two minutes of reading and whoever arrives knows what it is, whether it is useful to them and how to start it.
# RefugioReserva Booking platform for a fictional federation of 12 mountain refuges. Final project of the Google Cloud Platform course. > ⚠️ **All the data is fictional.** Names, emails and bookings are > generated by `data/seed/generar.py`. This project has never contained > real data about people or organisations. 🔗 **Demo:** https://refugioreserva.example 📊 **Dashboard:** [Looker Studio](https://lookerstudio.google.com/...) 📐 **Architecture:** [docs/arquitectura.md](docs/arquitectura.md) 📋 **Decisions:** [docs/adr/](docs/adr/) 🛠️ **Operations:** [docs/runbook.md](docs/runbook.md) ## The problem The federation managed 12 refuges by telephone, with one spreadsheet per refuge. Seven overbookings last year and no occupancy data at all. ## The solution in one line Cloud Run (Python/FastAPI) → Cloud SQL PostgreSQL with a private IP · photos in Cloud Storage · events over Pub/Sub → BigQuery → Looker Studio · sentiment of reviews with the Natural Language API. All in Terraform, deployed by Cloud Build with Workload Identity Federation (no keys). ## Architecture  ## Numbers | | | | --- | --- | | Cost | **€10.20/month** | | Latency | p50 178 ms · p95 634 ms · p99 1.8 s | | Tested capacity | 100 concurrent users, 0 % error | | SLO | 99.5 % monthly (error budget: 3 h 36 min) | | Rebuild from scratch | 14 min 20 s | | Backup restore (RTO) | 22 min | | Rollback | 38 s | ## Bring it up from scratch
Google Cloud Platform (GCP) Course
Module 1: Introduction to Google Cloud Platform
- What is Google Cloud Platform?
- Setting Up Your GCP Account
- A Tour of the GCP Console
- Projects, Resource Hierarchy and Billing
- Regions, Zones and the Shared Responsibility Model
- Cloud Shell and the gcloud CLI
Module 2: Core GCP Services
- Compute Engine: Virtual Machines on Google Cloud
- Cloud Storage: Object Storage
- Cloud SQL: Managed Relational Databases
- App Engine: Platform as a Service
- Google Kubernetes Engine (GKE)
- NoSQL Databases: Firestore, Bigtable and Spanner
- How to Choose the Right Compute Service
Module 3: Networking and Security
- VPC Networks
- Cloud Load Balancing
- Cloud CDN
- Identity and Access Management (IAM)
- Cloud Armor
- Secrets and Encryption: Secret Manager and Cloud KMS
- Cloud DNS, TLS Certificates and Publishing Services Securely
Module 4: Data and Analytics
- BigQuery: The Analytical Data Warehouse
- Cloud Dataflow: Batch and Streaming Data Processing
- Cloud Dataproc: Managed Spark and Hadoop
- Cloud Pub/Sub: Asynchronous Messaging
- Cloud Data Fusion: Code-Free Data Integration
- Orchestrating Pipelines with Cloud Composer and Workflows
- Data Governance and Dashboards with Dataplex and Looker Studio
Module 5: Machine Learning and AI
- Vertex AI: The Machine Learning Platform on GCP
- AutoML: Custom Models Without Writing Code
- TensorFlow on GCP: Training and Serving Models
- Natural Language API
- Vision API
- Generative AI on Vertex AI: Gemini Models and Embeddings
- MLOps: From Model to Product with Vertex AI Pipelines
Module 6: DevOps and Monitoring
- Cloud Build: Continuous Integration on GCP
- Cloud Source Repositories and Source Code Management
- Cloud Functions: Serverless Functions
- Cloud Monitoring (formerly Stackdriver): Metrics, Dashboards and Alerts
- Cloud Deployment Manager and Native Infrastructure as Code
- Cloud Logging and Cloud Trace: Logs, Traces and Diagnostics
- Terraform on GCP: Infrastructure as Code in Practice
Module 7: Advanced GCP Topics
- Hybrid and Multicloud with Anthos
- Serverless Computing with Cloud Run
- Advanced Networking: Shared VPC, Peering and Hybrid Connectivity
- Security Best Practices
- Cost Management and Optimization
- Reliability: SLOs, High Availability and Disaster Recovery
- Governance at Scale: Organization, Policies and Auditing
