Skip to content
Computese home
Legal services · Ottawa, Canada09Custom software01Website02Hosting03SEO10AI & automation

Minute Notary: a notary office on its own platform

Minute Notary is a notary office in Ottawa. We designed, built and run the platform behind it: booking and payment, secure documents, a workspace for notaries, and seals anyone can verify online.

Visit minutenotary.ca

Industry
Legal services
Location
Ottawa, Canada
Our role
Design, build and operation
Status
Live
Accessibility
WCAG 2.2 AA

Why it exists.

People come to a notary with one document and a deadline: a flight, an immigration file, a closing. Most have never done it before for that document, and most are on a phone.

  • Booking by phone and paying at the desk does not scale beyond one office.
  • Clients need to know before they arrive: what to bring, what it costs, whether it can be done today.
  • A notarized document is trusted by strangers, so the seal on it has to be checkable.

How a change ships.

One flow, from a risk lane at intake to production confirming the exact release it serves.

How a change reaches production. Intake gives every change a risk lane: tiny, normal or high-risk. A story sets its validation expectations, and high-risk work adds a design note and a decision record. A fail-closed quality gate runs type-checking, unit and UI tests, integration tests on a real database and cache, browser end-to-end tests and a structured-data check, and the first failure stops it. Security scans cover secrets, the code, API contracts, dependencies, the Dockerfile, the built image and the running container. The release is one image carrying its own release ID; its registry digest is read back, and the deploy counts only when production reports that exact release. Then metrics, traces, logs, synthetic checks and alerts watch it, with the prior image digest kept for rollback.

Fig. 1 How a change reaches production, simplified.

What we built.

  1. 01

    Public site

    Service pages with a flat price on each, and a blog written for the exact question someone searched late at night.

  2. 02

    Booking

    Online booking with card payment, email confirmations, and a dashboard for each client’s bookings and documents.

  3. 03

    Workspace

    For notaries: assigned bookings, availability, a register of notarial acts, one-click signatures with their seal, and earnings.

  4. 04

    Verification

    Every seal has a public page, so the office receiving a document can check it.

  5. 05

    Assistant

    An AI assistant that answers from the office’s own pages and FAQ, and a set of evaluations every model change must pass first.

  6. 06

    Delivery

    Every change starts with a risk lane (tiny, normal or high-risk), and high-risk work adds a design note and a decision record. A fail-closed quality gate runs type-checks, unit tests, integration tests on a real database and cache, browser tests on desktop and mobile, and a structured-data check. Security scans cover secrets, the code, API contracts, dependencies, the Dockerfile, the image and the running container. One command builds the release image, reads its digest back from the registry and waits until production reports that exact release.

  7. 07

    Fallbacks

    A planned answer for every outside dependency: payment events claimed once and reconciled on a schedule, emails and calendar updates sent from an outbox, the assistant failing over to a second model provider, a booking page that degrades instead of failing, and seals that fail closed without a trusted timestamp.

  8. 08

    Operations

    Admin for bookings, documents and content; two-factor sign-in; documents in private storage; failed jobs kept for review and retry; health alerts per dependency.

When a dependency fails.

Payments, email, the AI model, the cache, the database, documents, seals and releases: what each failure looks like, and what the platform does about it.

The rule: degrade where a visitor can still be served, and fail closed where trust is at stake.

  • Card payments

    When it fails: An event fails, repeats or never finishes

    RecoversEach event is claimed once. A failure goes back for redelivery, a reconcile job finishes stalled bookings, and a duplicate charge is refunded.

  • Email, calendar, Drive

    When it fails: A provider is slow, or a send cannot be confirmed

    RecoversEach action is queued in the same transaction as the booking and sent under a unique key. An unconfirmed send is retried once, not in a loop.

  • AI model provider

    When it fails: An outage, a rate limit or a billing error

    Fails overThe assistant fails over to a second provider before it starts answering. With nothing to cite, it offers the office’s email instead of guessing.

  • Cache

    When it fails: Unreachable

    DegradesReads fall back to the database and ordinary limits stay open. Admin step-up checks and the AI spending cap close.

  • Database

    When it fails: The schedule cannot be read

    DegradesThe booking page stays up and says slots are unavailable, instead of offering times it cannot check.

  • Document engine

    When it fails: A PDF job hangs, crashes or the queue is full

    RecoversThe worker is replaced after a timeout, and a full queue asks the client to retry instead of failing silently.

  • Seal signing

    When it fails: The key vault or a timestamp authority does not answer

    Fails closedA second timestamp authority is tried. Without a trusted time, no seal is issued.

  • A new release

    When it fails: A tab was open across the deploy

    RecoversThe last build’s files are still served, and the page reloads once onto the new release.

Watching every dependency

  • Readiness checks on the database and cache
  • Uptime, API and browser checks
  • Alerts at once for auth or billing faults, after repeats for blips
  • A watchdog on scheduled jobs
Fig. 2 A planned answer for each outside dependency, simplified.

The stack, by layer.

Capabilities rather than component names, because this platform is live.

01Application
  • Server-rendered React
  • TypeScript end to end
  • Mobile-first design system
  • WCAG 2.2 AA accessibility
02Booking and payments
  • Online booking engine
  • PCI DSS compliant card payments
  • Automated email notifications
  • Background job queue
03Security
  • Two-factor authentication
  • Role-based access
  • Bot and abuse protection
  • Rate limiting
  • Validated, token-signed uploads
  • HSTS and TLS everywhere
04Documents and seals
  • PKI digital signatures
  • Tamper-evident PDFs
  • Public seal verification
  • Private document storage
  • Data retention schedule
05AI
  • AI assistant grounded in the office’s own content
  • Retrieval-augmented generation
  • Evaluation gates before any model change
06Cloud and operations
  • Containerized deployment
  • Global edge network and CDN
  • Object storage
  • Hardened servers
  • Automated base-image updates
  • Metrics, traces and logs
  • Synthetic monitoring
  • Breach response runbook
07CI/CD and release
  • Risk-classified change intake
  • Architecture decision records
  • Fail-closed quality gate
  • Release ID in every image
  • Registry digest read-back
  • Readiness check on the exact release
  • Migrations applied before start
  • Version-skew protection
  • One-command release
08Quality and security testing
  • Unit tests
  • Integration tests on a real database and cache
  • End-to-end browser tests on desktop and mobile
  • Production smoke tests
  • Payment and provider integration tests
  • Secret scanning, including git history
  • Static code analysis
  • API contract checks
  • Container image scanning
  • Runtime container checks
  • Accessibility audit
  • API security audit
  • Adversarial business-logic review
09Resilience and fallbacks
  • Payment event reconciliation
  • Transactional outbox
  • Idempotency keys
  • AI provider failover
  • Graceful degradation
  • Fail-closed seals
  • Retries with backoff
  • Self-healing worker pool
  • Job watchdog
  • Per-dependency health alerts

The rules it follows.

Phone first
Most visitors are on a phone, often outside, so mobile is the design baseline.
Accessible to everyone
WCAG 2.2 AA, because clients include older people and people reading in a second language.
Plain, local, calm
A real address, hours and phone number on every page, and no pop-ups or fake urgency.
Sensitive documents
Private storage, two-factor sign-in for staff and a data retention schedule.
Released only when proven live
A deploy counts only when production reports the release that was just built, and migrations must pass before the new server starts.
Fail closed where trust is at stake
No trusted timestamp, no seal. Admin step-up checks stop when they cannot be verified, and the rest of the site degrades instead.

Where it stands.

  • Live at minutenotary.ca, booking and taking payment online.
  • Notaries work from one workspace instead of email and paper.
  • Seals anyone can verify from a link.
  • Each release traced from its commit to the image production reports.
  • Every outside dependency has a planned failure mode: recover, fail over, degrade or fail closed.

Questions this work answers.

How does a change reach production on Minute Notary?

Through intake, a quality gate and a verified release. Each change gets a risk lane, and high-risk work adds a design note and a decision record. The gate runs type-checks, unit, real-database integration and browser tests, and stops at the first failure. The release image carries its own ID, its registry digest is read back, and the deploy counts only when production reports that ID.

What happens when a payment webhook fails?

Each event is claimed once in the database, so a repeat is ignored and a failure is sent back to the payment provider for redelivery. A reconcile job re-fetches failed events and finishes stalled bookings, a duplicate charge is refunded automatically, and an event that keeps failing is set aside for a person.

Can a deploy break a booking in progress?

It is built not to. The previous build’s files stay served after a release, so a tab opened before the deploy keeps working and reloads once onto the new version, and database migrations must succeed before the new server starts.

Start with a conversation.

Tell us what you run and what is getting in the way. You get a reply within 24 hours.

Hours
Mon–Fri, 9:00–17:00 ET
Closed on statutory holidays
Office
110 Place d'Orléans Dr
Ottawa, ON K1C 2L9