How Numero Prepared for Google CASA AL1
A transparent account of how Numero turned a security questionnaire into code changes, repeatable tests, and requirement-by-requirement evidence.

Numero asks people to authorize access to financial messages in Gmail. That access creates a duty to show how the application protects authentication, sessions, authorization, communications, inputs, and production configuration. A privacy policy can describe those protections, but a security assessment asks for proof.
Google's Cloud Application Security Assessment, or CASA, uses requirements based on the OWASP Application Security Verification Standard. Numero prepared for the Application Layer 1 process by reviewing the website and API against 48 applicable assessment rows, fixing implementation gaps, strengthening tests, and assembling evidence for each control.
This is a transparency report about that work. As of August 30, 2026, the application controls and portal evidence described here have been prepared and tested. We are not using the words certified, approved, or passed because the repository does not establish final assessor acceptance.
Key takeaways
- The assessment covered the Numero website and API, not the undisclosed mobile application surface.
- An initial review produced real remediation work across secrets, sessions, logging, retention, headers, rate limits, and deployment validation.
- Reviewer feedback repeatedly improved the evidence: file references became complete control paths, regression tests, and live behavior checks.
- Authenticated OWASP ZAP scans and targeted black-box scripts were run on August 30, 2026, and portal-ready evidence sets were prepared.
- Prepared evidence is not the same as final assessor acceptance, and Numero does not claim CASA certification on that basis.
Why this assessment matters to Numero customers
Numero is built around a narrow promise: turn authorized financial messages into useful structured facts without becoming a permanent email archive. Customers should not have to accept that promise solely because it appears on a marketing page. Security controls need to be inspectable, testable, and tied to the product that is actually deployed.
CASA gives that work a consistent frame. Its requirements examine the areas where an application can lose control of sensitive data: weak authentication, long-lived or replayable sessions, missing authorization boundaries, unsafe transport, injection, vulnerable dependencies, debug exposure, and careless logging. For Numero, the value was not a badge. It was the discipline of proving each claim against the same defined scope.
We fixed the scope before evaluating the controls
The assessment scope was the production website and API at hellonumero.com and api.hellonumero.com. Mobile-specific endpoints and terminology were deliberately excluded because the mobile application had not been disclosed in the assessment portal. That boundary matters: evidence is misleading when it mixes controls from a product the assessor was not asked to review.
We also tied evidence to concrete source versions and deployed behavior. Code excerpts were pinned to a commit, scan configurations recorded their own hashes, and live transcripts identified the target and date. This made it possible to distinguish a control that existed in source from one that was operating in production.
The initial review led to concrete remediation
The first readiness review did not produce a ceremonial pass. It found places where production should fail closed and where privacy protections needed stronger enforcement. The remediation report tracked each finding to a disposition, implementation, and verification step.
Production configuration now rejects weak JWT secrets, known development encryption keys, non-TLS PostgreSQL settings, and debug logging. OAuth transaction cookies use a dedicated encryption key. Logout writes token fingerprints to a server-side revocation store so access and refresh tokens can be rejected immediately. Password login and public support requests are rate-limited. Account deletion is connected to the product, and temporary extraction-comparison data expires after 90 days.
Logging was tightened so restricted Gmail content, AI context, recipients, model output, and extracted fields do not enter application logs. Security headers were rebuilt around a per-request Content Security Policy nonce, strict framing restrictions, HSTS, MIME protections, and narrow third-party origins. These changes were useful independently of the assessment because they reduced the consequences of configuration mistakes and future regressions.
- Secrets and cryptographic keys are validated at startup instead of trusted implicitly.
- Session invalidation is enforced server-side, not left to cookie deletion alone.
- Data deletion and retention are implemented product behaviors, not policy-only promises.
- Restricted content is excluded from operational logs and production debug mode is refused.
- Dependency, static-analysis, and dynamic-analysis checks are version-controlled and repeatable.
Reviewer rejection improved the quality of the proof
Several controls were implemented correctly but still came back because the evidence was too narrow. A database column did not prove how passwords were hashed. Naming a redirect-validation helper did not show its implementation. A source search over the API did not cover the browser application. An unauthenticated baseline scan did not prove what happened inside a real session.
We treated those responses as evidence defects, not paperwork friction. Complete functions replaced path-only citations. Searches were widened to the declared application scope. Missing regression tests were added for algorithm confusion, cryptographic failure behavior, directory browsing, storage clearing, and provider-specific OAuth paths. Authenticated scans and black-box lifecycle scripts replaced assumptions about runtime behavior.
That distinction became one of the most valuable outcomes of the process: correct code and reviewable evidence are separate deliverables. A control is easier to trust when another person can see what enforces it, reproduce the relevant test, and understand the result without relying on the author's interpretation.
Where the work stands today
By August 30, the evidence pack covered authentication, session management, access control, communications, data validation, and configuration. Authenticated OWASP ZAP runs and companion scripts had been executed for the rows requiring live verification, and per-item image sets were prepared for portal submission or resubmission.
Some evidence necessarily lives outside source control. Provider-side contractual terms, managed database encryption evidence, selected Cloudflare dashboard settings, and proof of production secret rotation require operator-supplied artifacts. The remediation report calls those dependencies out rather than treating code as proof of a provider control.
Security assessment is also a point-in-time activity. New dependency advisories appeared only thirteen days after an earlier scan, which led to another toolchain update and documented residuals. Numero therefore treats scanning, patching, and evidence refresh as continuing work, not something completed forever by one review cycle.
Read the complete CASA transparency series
Continue with Numero's protection architecture and the evidence process used to verify it.
Continue readingFrequently asked questions
This article does not make that claim. As of August 30, 2026, Numero had prepared and tested its application controls and requirement-level portal evidence. Final assessor acceptance is a separate status that must be stated only when formally confirmed.