Back to the build library
Financial services
Advanced

Compliance Document Renewal

Every document with an expiry date held in one register, chased ahead of time, checked by a person and evidenced.

Industry
Financial services
Build effort
Advanced
Typical time to launch
3–5 weeks
On this page
The problemWhat gets builtHow it runsAutomations in detailWhat changesBefore you start
Want this built for you?

Bring your stack to a call and we will scope it against how your business actually runs.

Book a call
01

The problem

A financial services firm runs on documents that expire. Client identification and proof of address go stale. Verification and ongoing due diligence have a refresh cycle. Powers of attorney, trust deeds and authority letters need periodic confirmation that they are still the current version. On the firm's own side, adviser qualifications and competence records, professional indemnity cover, regulatory permissions and registrations, data protection registrations, third-party and introducer agreements, and the firm's own policy documents all carry renewal dates. None of these are difficult individually. Collectively they are a hundred or more dated obligations with no single owner.

So the expiry dates live in the worst possible place: a spreadsheet one person maintains, plus the memory of whoever happened to set each item up. The spreadsheet is accurate on the day it is updated and decays from then on. Nobody opens it on a Tuesday to see what is due in sixty days, because nothing prompts them to. What actually happens is that expiries are discovered, not anticipated. Someone goes to do something and finds they cannot, because an item lapsed three weeks ago and nobody noticed. Then there is a scramble: an urgent request to a client who is on holiday, a rushed renewal, a gap in cover that has to be explained.

The cost shows up in three places. The first is operational: work stops. A case cannot proceed, a transaction cannot be processed, an adviser cannot act. The second is the quality of the scramble itself, because a document chased in a panic is a document chased badly, and clients read urgency as disorganisation. The third is the one that hurts longest. When a reviewer asks to see the renewal history of a given item, the firm has to reconstruct it from emails. There is no record of when the renewal was requested, how many times it was chased, who checked the replacement, whether it was accepted or rejected and why, or what the firm did during any period when it had lapsed. The document may have been renewed perfectly. The firm just cannot show the process behind it, and in a regulated business an unevidenced process is treated as an absent one.

02

What gets built

The register comes first

Nothing in this build works without one decision made up front: every document with an expiry or review date becomes a record, and that record is the only authority on when it expires. Not a spreadsheet, not a folder name, not a date in someone's head. Each record carries a document_type, a holder, an expiry date and a named responsible person. The build is then a set of workflows that read that register. If the register is incomplete, the automation is confidently wrong, which is worse than being absent.

Pipeline and stages

One pipeline, Document Renewals, with one opportunity per document per renewal cycle. A document that has been renewed six times has six closed records, which is the renewal history a reviewer wants to see.

  • Renewal Due - expiry is inside the horizon for this document_type, nothing requested yet.
  • Request Issued - the request has gone to the holder or the responsible person.
  • Awaiting Submission - request acknowledged, replacement not yet supplied.
  • Received - Pending Check - a replacement is in, not yet verified.
  • Query Raised - the checker rejected or questioned what was supplied. This is a real stage, not an edge case; a meaningful share of submissions fail first check.
  • Renewed and Filed - replacement accepted, filed, new expiry date written, next cycle scheduled.
  • Escalated - past the point where the standard ladder will fix it.
  • Lapsed - expiry passed with no valid replacement. A recorded, visible state with containment attached, never a silent one.
  • Waived or Not Applicable - a documented decision by an authorized person that this item is no longer required, with a reason.

Custom fields

These sit on the document record. Every workflow condition below reads them.

  • document_type - dropdown, the backbone of the whole build. Client identification, Proof of address, Due diligence refresh, Source of funds evidence, Power of attorney, Trust deed, Authority letter, Client agreement, Adviser qualification, Competence record, Professional indemnity cover, Regulatory permission, Firm registration, Data protection registration, Introducer agreement, Third-party service agreement, Firm policy document, Other.
  • owner_category - dropdown: Client, Adviser, Firm, Third party. Determines who gets chased and how hard.
  • document_holder - reference to the contact, adviser or entity the document belongs to.
  • responsible_person - the named individual inside the firm accountable for this item being current. Never a team, never blank.
  • document_issue_date, document_expiry_date - dates. expiry is the field every scan reads.
  • review_frequency_months - number, for items with a review cycle rather than a hard expiry.
  • renewal_lead_days - number, how far ahead this document_type needs chasing. A client proof of address might be 45; professional indemnity cover might be 120.
  • lapse_impact - dropdown: Blocks advice, Blocks new business, Blocks this client only, Administrative only. This single field decides the entire escalation posture and should be set with whoever owns compliance, not guessed.
  • regulatory_driver - text, a short note on why the firm holds this item. Invaluable eighteen months later when someone asks whether it is still needed.
  • document_reference and document_store_link - text and link to the authoritative stored copy.
  • renewal_requested_date, renewal_received_date, renewal_checked_date, renewal_filed_date - the four dates that make up the audit trail.
  • renewal_checked_by - the person who verified it. Required before filing.
  • query_reason and query_count - why a submission was rejected and how many times. A high query_count on one document_type means the request wording is unclear.
  • escalation_level - number, 0 to 3.
  • lapse_date, lapse_containment_note, lapse_resolved_date - the record of what the firm did while an item was not current.
  • waiver_reason and waiver_approved_by - a waiver without a named approver is not a waiver.
  • support_needs_flag - switch, human-set, which softens client-facing chasing.
  • preferred_contact_window, preferred_language.

Tags

  • Horizon: doc-expiry-120, doc-expiry-90, doc-expiry-60, doc-expiry-30, doc-expiry-14, doc-expiry-7, doc-expired.
  • State: renewal-requested, awaiting-submission, pending-check, query-raised, renewed, waived.
  • Owner: owner-client, owner-adviser, owner-firm, owner-third-party.
  • Impact: blocking-advice, blocking-new-business, blocking-client, admin-only. These drive the containment workflow.
  • Escalation: escalated-l1, escalated-l2, escalated-l3, lapse-incident.
  • Handling: needs-human-now, support-needs-review, sms-opted-out, email-unsubscribed.

Forms

  • Document Upload - the client-facing and adviser-facing submission form. Accepts multiple files, states exactly what is acceptable for the document_type requested in plain language, and captures the document's own issue and expiry dates as fields rather than leaving a human to read them off later.
  • Document Check - internal only, completed by the verifier. Structured: is it the right document type, is the name and address an exact match, is it within the acceptable age, is it legible and complete, is the expiry date correct as captured. Accept or Query, with query_reason mandatory on Query. This form is what turns checking from a judgment nobody recorded into a dated, attributable act.
  • New Document Registration - how anything enters the register. Used at client onboarding, at adviser onboarding, and whenever the firm takes on a new obligation. Required fields include responsible_person, lapse_impact and renewal_lead_days, so no item can join the register without an owner and a chase horizon.
  • Waiver Request - internal, routed for approval, writing waiver_reason and waiver_approved_by.
  • Lapse Incident Record - internal, completed when anything reaches Lapsed. Captures what lapsed, from when, what was contained and by whom, and when it was resolved.

Calendars

  • Document Verification Appointment - 20 minutes, in person or video, for items that require sight of an original or a face-to-face check.
  • Compliance Clinic - a recurring internal slot, weekly, where the responsible people work the current exception list together. Having this in the calendar is the difference between a register that is maintained and one that is merely monitored.
  • Renewal Review - 30 minutes, monthly, for the practice manager and whoever owns compliance to walk the escalation and lapse report.

BO's role and guardrails

BO's job here is narrow and almost entirely clerical: ask for a document, explain what will satisfy the request, confirm receipt, and chase. It is a courier and a checklist. It has no authority over whether anything is acceptable.

BO may: tell the holder which document is due and when it expires; explain in factual terms what kinds of document the firm accepts for that document_type and how recent it must be; send the upload link; confirm that files were received; say what happens next and roughly how long a check takes; book a Document Verification Appointment; answer questions about format, file size and how to get a scan; and tell the holder who to speak to.

BO must never: say that a submitted document is valid, accepted, sufficient or approved - only a named human checker does that, and only through the Document Check form; interpret the contents of any document, including a trust deed, a power of attorney or anything of that nature; advise on whether the holder needs a document, should obtain one, or what to do if they cannot; give tax or legal guidance of any kind; explain why the firm is required to hold something beyond reading back the regulatory_driver note; comment on consequences for the client beyond the factual statement that the firm cannot proceed without it; or waive, extend or vary a requirement.

Hard handoff triggers, applying needs-human-now, notifying responsible_person and removing BO: the holder says they cannot provide the document, or do not have one; any question starting do I need, is this enough, will this do, or what if I do not; any mention of a trust, an estate, a deputyship or a power of attorney in substance rather than as a file name; any mention of bereavement, serious illness, capacity, financial difficulty or being unable to get to a bank or post office, which also raises support-needs-review; any complaint, ombudsman or regulator reference; any request to talk to a person. BO's line: "I will not be the one checking this, so let me pass you to [responsible_person_first_name] who can give you a proper answer. In the meantime, is there anything I can make easier about sending it over?"

On receipt, BO's acknowledgement is deliberately neutral: "Thanks, that has arrived safely and is with our team to check. We will confirm either way within [standard]." It never implies acceptance, because a client who believes a document was accepted and then gets a rejection two weeks later is a client who has been misled by the system.

Numbers and channels

  • Email as the primary channel for every owner_category, because document requests need to carry detail and the holder usually needs the message to still be there when they get to a scanner.
  • SMS on a registered messaging number for the short nudges and receipt confirmations only, never for the initial request. Opt-out language on the first message of each renewal cycle, keyword handling live.
  • An internal notification channel carrying every exception, escalation and lapse, separate from general operational noise so it does not get muted.
  • Outbound call tasks for escalation level 2 and above and for anything with lapse_impact of Blocks advice. A blocking item is a phone call, not a reminder.
  • Adviser and staff items route to the internal channel and task list rather than to client-facing email, so a qualification renewal never reads like a client communication.
  • Optional printed letter for holders flagged as preferring post, logged on the record so the trail is complete regardless of channel.
03

How it runs, step by step

One document, one cycle. A client's proof of address, document_type Proof of address, renewal_lead_days 45, lapse_impact Blocks this client only, responsible_person the client services administrator.

  1. Detection. The nightly scan reads the register. document_expiry_date is 12 May; renewal_lead_days is 45; today is 28 March. The scan creates an opportunity in Renewal Due, applies doc-expiry-45 and owner-client and blocking-client, and notifies responsible_person. The clock started a month and a half before anything could go wrong, which is the entire point.
  2. Request issued. The next morning the request goes out by email: which document is due, when the current one expires, exactly what the firm accepts for this type and how recent it must be, the upload link, and a named person to contact. renewal_requested_date is written, the opportunity moves to Request Issued, and renewal-requested is applied. No SMS at this stage; a document request needs room.
  3. Acknowledged, not supplied. The client replies saying he will sort it this week. BO recognizes an acknowledgement rather than a submission, moves the opportunity to Awaiting Submission, and the chase ladder arms.
  4. First nudge. Nothing arrives. 10 days after the request, a short SMS naming the one item and carrying the link. BO handles the replies: he asks whether a cell phone bill counts, and BO answers factually from the accepted-document list for Proof of address without expressing any view on his particular bill.
  5. A harder question. He then asks whether he really needs this given the firm already has his passport. BO does not answer. It applies needs-human-now, notifies the administrator, and says it will get him a proper answer. The administrator calls him the same afternoon and explains. Both the handoff and the call are logged on the document record.
  6. Submission. He uploads a bank statement through the Document Upload form, entering its own statement date as a field. renewal_received_date is written, the opportunity moves to Received - Pending Check, pending-check applied, and he gets a deliberately neutral acknowledgement: it arrived, it is with the team, confirmation either way within the stated standard. Nothing in that message says accepted.
  7. Check, and a query. A verification task appears for the administrator with the Document Check form. The statement is the right type and recent enough, but the address shown is his previous one. She selects Query, writes query_reason, and the opportunity moves to Query Raised with query_count now 1.
  8. Query communicated specifically. The client gets a message that names the actual problem rather than saying rejected: the statement shows his old address, so the firm needs one issued since he moved, and here are three things that would work. Vague rejections are the main cause of a second failed submission, so the copy is specific by design.
  9. Second submission, accepted. He uploads a utility bill two days later. The verifier runs Document Check again, selects Accept, and renewal_checked_by and renewal_checked_date are written. Only a named human can reach this point; no automation accepts a document in this build.
  10. Filed and the register updated. The accepted file is written to the document store, document_store_link and document_reference are updated, document_issue_date and document_expiry_date are set from the new document, and renewal_filed_date is written. The opportunity moves to Renewed and Filed and all horizon tags clear.
  11. Next cycle scheduled automatically. The scan will now pick this item up again at the new expiry minus 45 days. The firm did not have to remember to re-diarise anything, which is how a register stays alive rather than decaying after the first round.
  12. Confirmation to the client. One short message confirming the document is now on file and current, and that nothing further is needed. This is the only message in the cycle that confirms acceptance, and it is sent only after a human check.
  13. A contrasting case, running in parallel. The same scan picked up the firm's professional indemnity cover at 120 days, lapse_impact Blocks advice, responsible_person the principal. That one never touches a client channel: it goes to the internal channel and task list, escalates to the principal at 60 days and to the board or governance forum at 30, and has a call task rather than an email at every level. Same register, same workflows, completely different posture, driven entirely by owner_category and lapse_impact.
  14. What happens if something does lapse. On the morning after any expiry, the item moves to Lapsed, lapse_date is written, lapse-incident is applied, and the containment workflow fires according to lapse_impact: blocking the affected client's cases, blocking new business, or in the Blocks advice case notifying the principal immediately with a required written containment note. A Lapse Incident Record must be completed. The lapse is loud, dated and documented, because the one thing worse than a lapse is a lapse nobody recorded.
04

Automations in detail

Nine workflows. Two reusable conditions sit at the head of every client-facing one and should be built once: the suppression check (if sms-opted-out skip SMS and substitute email; if email-unsubscribed send only what the firm classifies as a service communication and log it; if needs-human-now pause all automated sends until a human clears it), and the owner routing switch (owner_category of Client routes to the holder's own channels; Adviser, Firm and Third party route to the internal channel and task list and never to a client-facing template).

1. Register Scan and Horizon Detection

Trigger: scheduled nightly at 01:30, across every register record not marked Waived or Not Applicable.

Condition: document_expiry_date minus renewal_lead_days is today or earlier, and no open opportunity exists in Document Renewals for this record's current cycle.

Actions in order:

  • Create an opportunity in Renewal Due, named with document_type, holder and expiry date. Owner = responsible_person.
  • Apply the horizon tag matching days-to-expiry, the owner tag from owner_category, and the impact tag from lapse_impact. Set escalation_level to 0 and query_count to 0.
  • Notify responsible_person with the expiry date, the lapse_impact and the accepted-document list for that type.
  • Add the item to the weekly Compliance Clinic list.

Branches: items with review_frequency_months rather than a hard expiry calculate the due date from document_issue_date plus the interval. Items with lapse_impact of Blocks advice get double the configured lead time, because those must never go to the wire. Records missing document_expiry_date, responsible_person or lapse_impact do not create a cycle; they raise a register-integrity exception in workflow 9 instead, because a silently skipped record is how a register lies to you.

Exit: cycle created, or an integrity exception raised.

2. Renewal Request Issue

Trigger: opportunity created in Renewal Due.

Actions in order:

  • Wait until the next business morning, so nothing goes out at 01:30.
  • Run the owner routing switch. Client branch: email to the holder, subject "We need an up to date [document_type] for your file". Body: "Hello [first_name]. The [document_type] we hold for you expires on [document_expiry_date], so we need a current one before then. Any of the following will do: [accepted_document_list]. It needs to have been issued within the last [acceptable_age]. You can upload it here, it takes a minute: [upload_link]. If anything about that is awkward, reply or call [responsible_person] on [direct_dial] and we will sort it out with you."
  • Adviser, Firm or Third party branch: internal task to responsible_person with the document_type, expiry date, lapse_impact, regulatory_driver and renewal route, plus a notification in the internal channel. No client-facing template ever fires for these.
  • Write renewal_requested_date. Move to Request Issued; apply renewal-requested.
  • Wait 3 business days. If no reply and no submission, move to Awaiting Submission, apply awaiting-submission, and arm workflow 3.

Branches: if document_type requires sight of an original, the request offers a Document Verification Appointment instead of an upload link. If support_needs_flag is on, the request is issued as a call task first and in writing afterwards. If the holder replies acknowledging the request, BO classifies it as an acknowledgement, not a submission, and the stage moves to Awaiting Submission immediately.

Exit: submission received, or workflow 3 takes over.

3. Client Chase Ladder

Trigger: opportunity in Awaiting Submission with owner_category of Client.

Actions in order, each conditional on no submission having arrived:

  • Request + 10 days: SMS. "Hi [first_name] - still need that [document_type] for your file before [document_expiry_date]. Upload here: [upload_link]. Reply STOP to opt out of texts."
  • Request + 20 days: email repeating the accepted-document list and adding one line of practical help, such as where a statement can be downloaded from, plus the offer of a 20 minute Document Verification Appointment if it is easier to do together.
  • Request + 30 days, or 15 days before expiry, whichever is sooner: call task for responsible_person, respecting preferred_contact_window. Automated sends pause for 3 business days while that task is open. Apply escalated-l1 and set escalation_level to 1.
  • 14 days before expiry: email stating plainly what happens on the expiry date in factual terms - the firm will not be able to proceed with the matters that depend on it - with no speculation beyond that and no pressure language.
  • 7 days before expiry: SMS plus a second call task, and notify the practice manager. Apply doc-expiry-7.
  • On the expiry date with nothing valid on file: hand to workflow 6.

Branches: if support_needs_flag is on, drop all SMS, lengthen every interval by half, and bring the first call task forward to request + 10 days. If lapse_impact is Blocks advice or Blocks new business, compress the whole ladder: nudge at 5 days, call task at 10, daily internal visibility from 14 days before expiry. If the holder replies at any point, pause the ladder for 3 business days and task responsible_person.

Exit: submission received, cycle waived, or expiry reached.

4. Receipt, Human Check and Query Loop

Trigger: Document Upload form submitted, or a file logged against the record by staff.

Actions in order:

  • Attach the file to the record. Write renewal_received_date. Move to Received - Pending Check; apply pending-check; remove awaiting-submission. Stop the chase ladder immediately.
  • Send the neutral acknowledgement within 2 minutes: "Thanks [first_name] - that has arrived safely and is with our team to check. We will confirm either way within [check_standard]. Nothing else needed from you right now." This message must not say accepted, approved, or all done.
  • Create task "Check [document_type] - [holder_name]" for responsible_person with the Document Check form attached, due within the firm's stated check standard. Notify the internal channel.
  • On Accept: write renewal_checked_by and renewal_checked_date. Proceed to workflow 5.
  • On Query: query_reason is mandatory. Increment query_count. Move to Query Raised; apply query-raised. Send the holder a message that names the specific defect rather than a generic rejection: "Thanks for sending that over. Unfortunately we cannot use it because [query_reason]. What we need is [specific_fix]. Any of these would work: [accepted_document_list]. Upload here when you have it: [upload_link]. Sorry to ask again - and do call [responsible_person] on [direct_dial] if it would be easier to talk it through."
  • Re-arm the chase ladder at a compressed cadence: nudge at 5 days, call task at 10.
  • If query_count reaches 2: stop all automated chasing and create a mandatory call task for responsible_person. Two failed submissions is a sign the request itself is unclear, and a third templated message will not fix it.
  • If query_count reaches 3: raise an exception for the Compliance Clinic to review the accepted-document list and the request wording for that document_type.

Exit: Accept recorded, or escalation takes over.

5. File, Update Register and Reschedule

Trigger: Document Check completed with Accept.

Actions in order:

  • Write the accepted file to the document store and update document_store_link and document_reference. Retain the superseded version according to the firm's retention rule rather than overwriting it.
  • Update document_issue_date and document_expiry_date on the register record from the new document's own dates, as captured on the upload form and confirmed by the checker. Where the type has no printed expiry, calculate it from document_issue_date plus review_frequency_months.
  • Write renewal_filed_date. Move the opportunity to Renewed and Filed; apply renewed; clear every horizon, escalation and state tag from the cycle.
  • If the record was previously Lapsed, write lapse_resolved_date and close the lapse incident, retaining the record.
  • Client branch only: send the single confirmation message. "That is all checked and on file, [first_name] - thank you. Nothing further needed. We will be in touch nearer [new_expiry_date] when it is next due." This is the only message in the entire build that confirms acceptance.
  • Internal branch: update the internal channel and remove the item from the clinic list.
  • Take no further scheduling action. Workflow 1 will detect the new expiry on its own at the new date minus renewal_lead_days, which is what makes the register self-sustaining rather than something a person has to re-diarise every cycle.

Exit: cycle closed.

6. Lapse Detection and Containment

Trigger: scheduled daily at 06:00, on any register record where document_expiry_date is in the past and no accepted replacement is filed.

Actions in order:

  • Move the opportunity to Lapsed. Write lapse_date. Apply doc-expired and lapse-incident.
  • Create a mandatory Lapse Incident Record task for responsible_person, due same day, and notify the practice manager and whoever owns compliance regardless of impact. Every lapse is visible, including the administrative ones.
  • Containment branch by lapse_impact. Blocks this client only: apply a hold on that client's open cases, notify their owning adviser, and block progression on anything that depends on the document. Blocks new business: apply the same plus a block on new case creation for the affected scope, and notify the principal. Blocks advice: notify the principal immediately by call task and message, suspend the affected activity, and require lapse_containment_note to be written before the day closes. Administrative only: notify responsible_person and the practice manager, add to the clinic list, no operational block.
  • Client-facing message, for client-owned items only, factual and short: "[first_name], the [document_type] we hold for you has now expired, so we are not able to progress [affected_matter] until we have a current one. It is quick to fix: [upload_link]. Or call [responsible_person] on [direct_dial] and we will help." No implied blame, no consequence beyond the factual one.
  • Daily internal reminder while the lapse is open, naming the item, the days open and the containment in place. Daily, deliberately, so an open lapse cannot become background noise.
  • Weekly, add every open lapse to a standing report for whoever owns compliance, with days open and containment status.

Exit: replacement accepted and filed, or a documented waiver approved. lapse_resolved_date is written either way.

7. Escalation Ladder

Trigger: scheduled daily, reading escalation_level, days to or past expiry, and lapse_impact.

Conditions and actions:

  • Level 1 - 30 days into a chase with no submission, or any first query unresolved after 10 days. Notify responsible_person with the full contact history. Apply escalated-l1.
  • Level 2 - 15 days before expiry on a Blocks item, or 14 days after level 1 with no movement. Reassign the task to the practice manager, create a call task, and move the opportunity to Escalated. Apply escalated-l2. Automated client messaging reduces to one final written approach; from here it is a person's job.
  • Level 3 - expiry reached on any Blocks item, or 7 days after level 2 with no movement. Notify the principal and whoever owns compliance, add to the monthly Renewal Review agenda with the complete history, and require a named decision recorded against the record: chase further, waive with approval, or accept and manage the lapse. Apply escalated-l3.
  • Overload check. If any single responsible_person holds more than the firm's threshold of items at level 1 or above, raise that as its own exception. A person drowning in renewals is an allocation problem, not a performance one, and the register will quietly rot around them.

Exit: renewal filed, waiver approved, or a recorded decision at level 3.

8. Waiver and Decommission

Trigger: Waiver Request form submitted.

Actions in order:

  • Route to the authorized approver for that document_type. Nothing is waived by the person requesting it.
  • On approval: write waiver_reason and waiver_approved_by; move the opportunity to Waived or Not Applicable; apply waived; stop all chasing; exclude the record from future scans while keeping it in the register with its history intact. A waived item is retired, never deleted.
  • On rejection: return to the previous stage with the approver's reason on the record, and resume the ladder from where it paused.
  • Set a review date on every waiver, so an item waived for a reason that was true in March is revisited rather than permanently forgotten.
  • Monthly, report all waivers granted with approver and reason to the Renewal Review.

Exit: waiver approved and recorded, or rejected and the cycle resumed.

9. Register Integrity Audit and Reporting

Trigger: scheduled weekly for integrity, monthly for reporting. Internal only; this workflow never contacts a holder.

Weekly integrity exceptions, each becoming a dated task for a named person:

  • Any register record with document_expiry_date, responsible_person, lapse_impact or renewal_lead_days empty. These are the records that silently fall out of workflow 1 and they are the single biggest risk in the build.
  • Any record with a document_expiry_date in the past and no opportunity in Lapsed or Waived.
  • Any Received - Pending Check item older than the firm's check standard, which is internal latency rather than a holder problem.
  • Any Query Raised item with no client-facing message logged within 1 business day of the query.
  • Any Renewed and Filed record where document_store_link or renewal_checked_by is empty - filed without evidence of who checked it.
  • Any client or adviser on the books with no register records at all, which usually means an onboarding that skipped New Document Registration.
  • Any waiver past its review date.

Monthly report to the Renewal Review, retained as evidence that the firm monitors its own register: items due in the next 90 days by owner_category, items renewed on time, open lapses with days open and containment, escalations by level and by responsible_person, first-time acceptance rate by document_type, and the integrity exception count and how long exceptions took to clear.

05

What changes

The first change is that expiries are anticipated instead of discovered. The firm stops learning about a renewal at the moment it needs the document and starts learning about it weeks ahead, when there is time to do it calmly. That single shift removes most of the operational cost, because almost all of the pain in document renewal comes from the lateness rather than from the work.

The second is that the register becomes real. Because the scan reads it and the workflows write back to it, the register is exercised every single night. A wrong expiry date gets noticed; a missing responsible person blocks registration; a document that has been renewed updates itself. Registers maintained by discipline alone decay. A register the automation depends on cannot.

The third is that checking becomes an act with a name and a date on it. Before, somebody looked at a document and formed a view. Now renewal_checked_by and renewal_checked_date exist, query reasons are recorded, and rejection is a visible stage rather than an email nobody kept. That is both better practice and the evidence a reviewer actually wants.

The fourth is that a lapse becomes an event rather than a silence. It is dated, tagged, contained according to its impact, escalated to a named person and written up. A firm that can show it detected a lapse within a day, contained it, and resolved it in a week is in a wholly different position from one that cannot say when a gap started or what it did about it.

Metrics to watch

  • Register coverage - the count of expiring obligations the firm believes it has versus the count of register records with a populated expiry date, responsible_person and lapse_impact. Start here, because every other metric is meaningless until this is close to complete.
  • Items renewed before expiry, as a share of all items due. The headline number. Target is everything, and anything less than everything on a Blocks advice item is an exception to be explained.
  • Current lapse count, by lapse_impact, plus the longest open lapse in days. Report this one weekly to whoever owns compliance, every week, including the weeks it is zero.
  • Median days from request issued to renewal_filed_date, split by document_type and owner_category. Client items and internal items behave very differently and averaging them hides both.
  • First-time acceptance rate, and query_count distribution by document_type. A document_type where most submissions fail first check does not have a client problem, it has a request-wording problem, and the fix is in the copy.
  • Chase touches per completed renewal. If this is climbing, the lead time is too short or the request is going to the wrong person.
  • Days from renewal_received_date to renewal_checked_date - internal checking latency, which is the one delay entirely within the firm's control and the first thing to fix.
  • Escalations reaching level 2 and level 3, by responsible_person, watched for a single overloaded owner rather than treated as individual failures.
  • Waivers granted, with approver, reviewed monthly. A rising waiver count is usually a sign the register has items on it that the firm no longer actually needs, which is worth knowing.
  • Repeat lapses on the same document_type or the same holder, which indicates a structural problem rather than an incident.
06

Before you start

Decisions to make before building

  • Build the register first, and budget real time for it. Someone has to list every document the firm holds that expires or needs review, with its expiry date, holder, responsible person, lapse impact and lead time. This is the hard part of the project and it is not a technical task. Automating an incomplete register produces false assurance, which is the worst possible outcome.
  • Agree lapse_impact per document_type with whoever owns compliance. It drives every escalation and containment decision in the build. Guessing it is how a genuinely blocking item ends up on a gentle email ladder.
  • Set renewal_lead_days per document_type from experience, not convenience. Items that depend on a third party, an insurer, a regulator or a professional body need far longer than items a client can produce in an afternoon.
  • Name a responsible person for every item. Not a team, not a shared inbox. The build will not let a record exist without one, and that constraint is deliberate.
  • Decide what the accepted-document list is for each type, in plain language, and have it signed off. BO and every request template read from it, so it has to be right once rather than improvised per client.
  • Decide who may accept a document and who may approve a waiver, and whether those can be the same person. Write it down before building the permissions.

Integrations and provisioning

  • Document storage as the authoritative repository, with the register holding the link rather than a second copy. Two copies of a compliance document in two systems is a guarantee that one of them is wrong.
  • Secure upload for client and adviser submissions, with access limited to those who need it and an audit of who viewed what where your storage supports it.
  • Identity or verification service integration if you use one, with the result written back to the register as a dated field rather than left in the provider's portal.
  • Calendar connection for Document Verification Appointments, and the Compliance Clinic and Renewal Review as standing recurring entries.
  • Client and staff data sync from whichever system is authoritative, so document_holder and responsible_person are never maintained twice. Decide which system wins on conflict before go-live.
  • SMS registered before launch. In the United States and Canada that means A2P 10DLC brand and campaign registration describing your use case accurately; it takes days to weeks and unregistered traffic is filtered, so start it before anything else. Elsewhere, confirm the local registration and sender-ID requirements.
  • Opt-out handling live from day one, writing sms-opted-out and suppressing automatically, with every send checking suppression first. Note that a client who has opted out of SMS still needs their document chased, so the fallback to email and ultimately to a phone call must be built, not assumed.
  • Quiet hours configured to your jurisdiction and honoured by every scheduled send, including the escalation nudges, which are the ones most likely to be scheduled carelessly.
  • Email authentication (SPF, DKIM, DMARC) on the sending domain, with replies routed onto the document record.

Compliance and record-keeping posture

Financial services messaging is regulated, and a document renewal build touches that in a particular way: the messages are mostly administrative, but what they imply about validity, obligation and consequence is not. Three constraints shape the build.

  • Nothing automated decides that a document is acceptable. Acceptance is a judgment with regulatory weight and it belongs to a named, competent person recorded in renewal_checked_by. So BO and every templated message confirm receipt only, in neutral language; Received - Pending Check exists as a stage precisely so there is somewhere for a document to sit that is neither rejected nor accepted; and the only message that confirms acceptance is sent after the Document Check form is completed. Equally, no automated message should tell a holder why the firm is required to hold something beyond reading back the recorded regulatory_driver, and none should advise them on what to do if they cannot produce it. That conversation is a human one.
  • Record-keeping is the deliverable, not a side effect. The four dates - requested, received, checked, filed - plus the checker's name, the query reasons, the escalation history and the lapse record together are the audit trail. Build so that trail assembles itself from the workflow rather than relying on anyone to write it up, and keep closed cycles rather than overwriting one record per document.
  • Suitability and advice stay out of this build entirely. A document renewal conversation can drift fast: a client mentions a trust, or asks whether they should put a property in joint names, or raises a power of attorney. The BO guardrails and hard handoffs above exist so that drift always terminates in a qualified person rather than in an automated reply. An automation must never interpret a legal document, comment on a client's arrangements, or recommend any course of action.

On data, this build concentrates identity documents and financial evidence in one place, which raises the stakes on retention, access and deletion. Decide your lawful basis, how long you keep superseded versions of a document, who can open an uploaded file, and how you handle an access or deletion request where the document is also something you are required to retain. Those last two can pull in opposite directions and the answer needs to be yours in advance, not improvised when the request arrives.

What binds your firm depends on your jurisdiction, your permissions, your sector and your own policies, and it changes. Nothing above is regulatory or legal advice, and the document types, horizons and impact ratings listed in this guide are illustrative rather than a compliance checklist. Take the register design, the accepted-document lists, the message templates, the BO guardrails, the acceptance and waiver permissions, the escalation thresholds and the retention settings to your own compliance function, compliance consultant or legal counsel. Have them confirm what you must hold, for how long, and what your lapse-handling obligations are; get the templates signed off; and keep a dated record of that sign-off. Re-review whenever your permissions, your client base or your regulatory obligations change.

To scope this build for your firm, book a call at bookings.appbo.io.

Field notes

Build it with us.

Every build on this page is something we configure, test and hand over with the SOPs your team needs to run it.

Book a call