Practical guide · October 25, 2026 · Fictional worked example

Review building-purchase milestone dates before adding them to a calendar

A building-purchase calendar can look precise while containing dates no one has approved. A spreadsheet may combine an early conversation, a revised document, and a reminder someone created for their own convenience. Once those entries appear together in a calendar, readers can mistake them for a single agreed schedule. The first task is therefore to establish what each date represents and who is responsible for confirming it.

This guide explains how to organize dates explicitly supplied by the responsible transaction advisers. It does not calculate contractual deadlines, interpret a purchase agreement, or determine whether a notice is timely. The downloadable local review utility checks a small CSV for missing fields, invalid dates, repeated milestone identifiers, and conflicting recorded dates. A clear report can help you prepare questions, but a responsible person must resolve those questions before anyone relies on the schedule.

Use the fictional examples to learn the process. They are not transaction instructions and do not describe an actual building purchase. The tool deliberately produces a review report rather than a calendar import. That design leaves room to resolve uncertainty before creating appointments that look authoritative. A date can be technically valid and still be the wrong date for your transaction.

Separate transaction dates from building-work planning

A capital-project calendar organizes repairs, replacements, and improvements over an ownership period. A transaction milestone register organizes dated steps in the purchase itself. The two may affect each other, but they should not be collapsed into one undifferentiated list. A planned roof inspection, an adviser-confirmed document review, and a contractor's provisional installation window have different sources and different consequences when they change.

Start by stating the purpose of this register in its first note. For example: “Dates explicitly supplied for review by the purchase team; unresolved entries are not approved calendar instructions.” Keep the capital-project plan as a related document rather than duplicating its entire schedule. Link a transaction milestone to the relevant repair question when needed. This preserves the distinction between completing a purchase step and budgeting work that may occur after acquisition.

If you already have a transaction-management platform, the register can be a temporary reconciliation view. It should not become a second authoritative system maintained independently by a different person. Agree where approved corrections will be recorded. A beautiful exported calendar is less useful than a modest register that points to the current source and tells everyone who owns the next clarification.

Identify the people who can confirm a date

The owner of this administrative workflow may be an assistant, project coordinator, or buyer. That person can collect records and identify discrepancies without becoming the authority on their legal meaning. Before entering dates, identify the advisers responsible for interpreting the relevant documents and the person authorized to approve the operational calendar. Their roles may differ across financing, inspections, title matters, and closing coordination.

Avoid using a broad label such as “the team” in the reviewer field when several people could mean different things by approval. Use a recognizable reviewer name or an established role reference. The utility only checks that a reviewer is recorded; it cannot establish that the person has the right expertise or authority. Your operating process must determine what counts as a meaningful approval.

When someone supplies a date orally, ask how it should be documented and what source it refers to. A short confirmation that identifies the document version may be enough for your internal workflow, or your advisers may require something else. Follow their process. Do not treat an informal recollection, an AI-generated summary, or this guide as a substitute for the confirmation your transaction actually needs.

Use one identifier for each milestone question

The CSV expects milestone_id, milestone, approved_date, source_id, reviewer, and approval_status in that exact order. The template is intentionally small. It captures a date, the question the date answers, its source, and the state of review. It does not attempt to represent every contractual condition, notice requirement, or dependency that may affect a purchase.

Give a milestone a stable identifier such as M101. Keep that identifier when its description is clarified. If two sources provide different dates for the same question, record the same milestone identifier on both source rows so the conflict is visible. Do not assign a new identifier merely to hide disagreement. Conversely, two genuinely different tasks need different identifiers even if they happen on the same day.

Describe the milestone so a reviewer can identify its scope. “Review” is weak because it could refer to several documents. “Adviser review of the supplied survey package” gives the reader a concrete question to confirm. Avoid adding a legal conclusion to the description. The register should report the action and its source, while interpretation stays with the responsible adviser and the authoritative transaction documents.

Decide what approval states mean

The example accepts approved, pending, and superseded. Approved means your designated reviewer has confirmed that the supplied date may appear in the operational review list. Pending means the date or its use still needs confirmation. Superseded means the row is retained to explain an earlier version and should not become a current calendar entry. These are administrative conventions for the example, not legal categories.

A pending row may contain a perfectly valid date. It remains pending because syntax and authority are separate questions. Likewise, a superseded row may describe a date that was correct at an earlier stage. Do not erase it automatically if retaining the history helps the team understand why the calendar changed. The utility flags nonapproved rows rather than silently passing them into the reviewable-dates list.

Write down who may change a status and what supporting reference they should retain. A coordinator should not turn pending into approved simply because a meeting is approaching. If a date remains unresolved, the useful action is to obtain confirmation or identify a person responsible for doing so. A visible unresolved item is preferable to an invented certainty that later spreads through several shared calendars.

Normalize date notation without interpreting prose

The supplied tool accepts date-only values written as YYYY-MM-DD. It rejects alternatives such as 03/04/2026, because those can mean different dates to different readers. It also rejects impossible dates. This is a formatting and calendar-validity check. It does not establish when a business day ends, how holidays are treated, whether a notice was delivered, or how a contract counts time.

Do not transform prose such as “a certain number of days after receipt” into a calendar date with this utility. The trigger, counting method, exclusions, amendments, and evidence of receipt may all require interpretation. Ask the responsible adviser to supply the date explicitly and retain their source reference. The program has no rule engine for contractual timing and should never be described as one.

An exact appointment time needs more information than a date-only field. Before creating a timed event, confirm the intended time zone, location, participants, and whether the time is fixed or provisional. This guide's utility does not produce timed events. A calendar application may display an imported date differently depending on its settings, so a later import step needs its own review and test.

Establish a source-reference convention

A source_id should lead an authorized reviewer to the relevant record. It might identify a document version, an adviser message, or a transaction-system entry. It should not merely say “email” when the file contains hundreds of messages. Choose a convention that works in your actual document environment, and keep the underlying material in the system approved for the transaction.

Do not expose confidential purchase documents in a public spreadsheet or public AI conversation to make the source reference convenient. The review report can use a short internal identifier while the real document remains access-controlled. The tool reads local files and makes no network requests. That limits unnecessary transmission, but it does not decide who may access your laptop, backups, shared folders, or exported reports.

When a source changes, preserve the relationship between the old and new references. For example, D12 and D12-revision2 can make a version difference visible, provided that naming convention is documented. A timestamp alone may not prove which version someone reviewed. Ask the reviewer to identify the record they used rather than assuming the newest file is necessarily the controlling source.

Run the report on the fictional example

Place milestone_review.py and fictional-milestones.csv in a local folder. Run python3 milestone_review.py fictional-milestones.csv with an installed Python 3 interpreter. The program prints a JSON object containing the number of records, a reviewable_dates list, and findings. It does not write a calendar, amend a document, contact an adviser, or make changes to the CSV.

The fictional M1 entry describes a review with one supplied date, one source, a named reviewer, and approved status. It enters the reviewable list because it passes the example's mechanical rules. M2 appears twice with different dates. Both rows are withheld and flagged as conflicting_dates, including the row that otherwise appears approved. This conservative handling prevents a duplicate source row from creating a misleading appearance of certainty.

M3 has no supplied date and remains pending. The report preserves that uncertainty as missing_date and not_approved findings. It does not choose a date from the sequence of other milestones. This matters because a calendar-shaped output can tempt an organizer to fill every empty slot. An unresolved date is a question to take back to the responsible person, not a blank the program should complete.

Understand repeated identifiers and superseded rows

Two rows with the same milestone identifier and different nonsuperseded dates receive a conflict finding. Two rows with the same identifier and the same date receive a repeated-identifier finding. The second case may be harmless duplication, but the tool does not silently select a winner. A person should decide whether to merge source references, retain history elsewhere, or correct the identifiers.

A superseded row does not contribute its date to the active-date conflict comparison. Nevertheless, retaining multiple rows with the same identifier still produces a repeat finding. This deliberately simple policy requires the organizer to create a clean current input view after resolving the history. It avoids pretending that the program knows your version-control rules. Preserve historical rows in the authoritative system and export the current approved record when appropriate.

A date can also conflict with a different kind of milestone. The tool only groups identical milestone identifiers, so it cannot discover every dependency problem. If an inspection is recorded after a decision that depends on it, both rows might pass individually. The transaction team must review the overall sequence and dependencies. Mechanical checks improve the input; they do not replace a complete schedule review.

Resolve disagreements through the source owner

When two dates disagree, prepare a question containing the milestone identifier, both source references, the recorded dates, and the decision you need. Ask which date should appear in the operational calendar and whether either record has been superseded. Avoid telling the adviser which source must be correct based solely on its filename or creation timestamp. Your job is to make the disagreement easy to resolve.

Record the answer in the authoritative transaction system before updating your working CSV. If the date changes, check who already received an earlier calendar entry and who is responsible for correcting it. A revised spreadsheet does not automatically update an appointment someone copied into a personal calendar. This communication step needs an owner just as the original collection step did.

For unresolved matters, keep a separate clarification task with an appropriate review time supplied by the team. That task is not the same as the disputed transaction deadline. Label it clearly so a reminder to obtain confirmation cannot be mistaken for confirmation itself. The distinction is especially important when a coordinator uses an urgent internal reminder to ensure a question is answered promptly.

Review before any calendar import

The report's reviewable_dates list is a preparation aid. Compare it with the approved current register before creating events. Confirm the descriptions, supplied dates, source references, and audience. If your calendar supports notes, include an appropriate internal reference and the person responsible for changes. Avoid putting confidential transaction details into invitations that could be forwarded beyond the intended group.

A date-only event and a timed event are different calendar objects. The iCalendar standard describes these distinctions, but the standard does not determine which representation is correct for your transaction. Test the calendar application you actually use with fictional entries first. Check how it displays an all-day entry on another device and whether reminders behave as you expect. Do not infer correct delivery from a successful file import alone.

Plan updates as well as first publication. Who changes an event when a supplied date changes? How do attendees distinguish a cancelled appointment from a superseded reminder? What happens to a personal copy? Answer those workflow questions before distributing a schedule widely. A small number of clearly owned calendar entries is easier to maintain than several competing exports with no recorded update responsibility.

Keep the calendar separate from the document record

A calendar helps people remember actions. It should not become the sole record of what a document says or what an adviser approved. Retain the supporting record in the proper system and make the calendar a view of that information. If someone challenges a date, return to the source and responsible adviser rather than treating the calendar entry as independent evidence.

When the transaction ends, decide how the operational register will be archived and what information is relevant to ongoing ownership. Maintenance dates, warranty follow-ups, or supplier contacts may belong in a different operating system. Transfer only the information that has a clear ongoing purpose and preserve its source. Avoid carrying obsolete purchase-stage reminders into the building's long-term maintenance calendar without review.

This distinction also helps when using AI. An assistant can organize approved fields, suggest questions about missing references, or help compare two supplied versions. It should not invent legal interpretations or silently choose between conflicting dates. Require it to preserve unresolved fields and show the source of each proposed change. A smooth narrative summary is not an adequate replacement for a reviewed date register.

Frequently asked questions

Can this tool tell me the inspection or financing deadline?

No. It checks dates you supply explicitly. Ask the responsible adviser to determine the applicable deadline from the actual documents and circumstances. Enter their confirmed date and source reference according to your process. The tool cannot establish trigger events, notice requirements, amendments, holidays, delivery rules, or other details that may affect the answer.

Why not export directly to an ICS calendar file?

A direct export would make unresolved information easy to distribute prematurely. This example stops at a review report so the responsible people can confirm the entries first. A later calendar-export feature would need explicit decisions about date-only events, times, zones, identifiers, revisions, and cancellations, followed by tests in the target calendar application. Passing this CSV check would not validate those additional behaviors.

Does approved status mean a lawyer approved the date?

Only if that is what your documented workflow and actual record establish. The script does not verify credentials, authority, or approval evidence. It checks a text field. Define who may use the approved label and retain the confirmation in your source system. Do not make a broader claim about professional review than the supporting record warrants.

What if a date is intentionally unknown?

Keep it unknown and retain the pending status. Identify who will obtain confirmation and how the team will track that question. Do not use a placeholder that resembles a real deadline. If you need an internal follow-up reminder, label it as a clarification task and keep it separate from the unresolved transaction milestone so others cannot mistake one for the other.

Can multiple sources support the same approved date?

Yes, but decide how your current register represents them. The teaching tool flags repeated milestone identifiers instead of merging references automatically. A reviewed current row could point to a source package containing both confirmations, while the original history remains in the authoritative system. Document that convention so a future reviewer can find the underlying records rather than inheriting an unexplained combined reference.

What should I check after making corrections?

Rerun the report, compare the changed rows with the source owner's response, and review the sequence with the transaction team. Then verify any calendar entries already distributed. The final administrative check is whether the people responsible for acting have the current information and know where to seek clarification. A zero-finding JSON report alone cannot establish that operational outcome.

A small handoff checklist for the register owner

Before handing the register to another coordinator, explain the identifier convention, the location of source records, the approval vocabulary, and how changes reach calendar users. Show one resolved conflict and one unresolved item. A successor should be able to distinguish a missing date from a superseded one without reconstructing your personal filing habits. Record the handoff in the operating process so it survives a change of personnel.

Include a fictional test file with the handoff. Ask the successor to run the utility, identify the conflicting records, and explain what the program does not decide. This reveals whether the workflow depends on undocumented assumptions. If the output is confusing, improve the instructions before using it during a time-sensitive transaction. A short rehearsal with invented records is easier to correct than a misunderstood report in a live purchase.

Keep the program version alongside the report when the report supports an important review. If the validation rules later change, the team can identify which rules produced the earlier findings. A version reference does not prove the report is correct, but it makes the process reproducible. Avoid changing the code casually to suppress warnings that the team has not resolved in the source.

Finally, agree what completion of this administrative review means. It might mean every current supplied date has a source, reviewer, and confirmed status, while unresolved questions have owners outside the calendar. It should not mean the purchase itself is ready to proceed. That broader decision depends on information and professional judgment far beyond a date register. Clear boundaries make this small tool easier to trust for the limited task it actually performs.

What does a useful clarification request look like?

A coordinator might write: “M2 appears with November 3 in source D2 and November 4 in source D3. D2 is marked approved and D3 pending. Please confirm the current supplied date and the source we should reference before we create the calendar entry.” This fictional request reports the disagreement without deciding its meaning. It also makes the requested administrative action clear.

After receiving an authorized answer, record it through the agreed source process, update the current input view, and rerun the check. If the answer introduces a new condition rather than a fixed date, keep that distinction visible and obtain the necessary clarification. The purpose of the exercise is a reviewable schedule, not forcing every transaction question into a date-only column.

Download and reproduce the fictional example

python3 milestone_review.py fictional-milestones.csv

Use Python 3 in a local folder. The sample is fictional. The utility reads the supplied file and prints a report; it does not transmit data or change the input.

Primary sources and technical references

References were checked October 25, 2026. The workflow and sample rules are original examples; reference publishers have not endorsed the utility.